zoukankan      html  css  js  c++  java
  • 单档——PK单号新增、修改时不允许编辑,PK单号自动生成

    由系统自动生成单号(日期+流水),用户新增、修改时不允许编辑单号;

    范例(cxmt631):

    1)在#单头栏位开启设定#中,即 cxmt631_set_entry(p_cmd)下:

       #add-point:Function前置處理 name="set_entry.pre_function"
    {
       #end add-point
       
       IF p_cmd = "a" THEN
          CALL cl_set_comp_entry("xmabucdocno",TRUE)
          #根據azzi850使用者身分開關特定欄位
          IF NOT cl_null(g_no_entry) THEN
             CALL cl_set_comp_entry(g_no_entry,TRUE)
          END IF
          #add-point:set_entry段欄位控制 name="set_entry.field_control"
    }
        
       IF p_cmd = "a" THEN
          CALL cl_set_comp_entry("xmabucdocno",FALSE)
          #根據azzi850使用者身分開關特定欄位
          IF NOT cl_null(g_no_entry) THEN
             CALL cl_set_comp_entry(g_no_entry,TRUE)
          END IF
          #end add-point 
       END IF
    

    a表示新增,  CALL cl_set_comp_entry("xmabucdocno",FALSE) 表示设定控件是否可输入;原先是true允许输入,被注释掉改为false;

    2)在#单头栏位关闭设定#,即 cxmt631_set_no_entry(p_cmd)下(以下代码原本就有,非客制):

       
       IF p_cmd = 'u' AND g_chkey = 'N' THEN
          CALL cl_set_comp_entry("xmabucdocno",FALSE)
          #根據azzi850使用者身分開關特定欄位
          IF NOT cl_null(g_no_entry) THEN
             CALL cl_set_comp_entry(g_no_entry,FALSE)
          END IF
          #add-point:set_no_entry段欄位控制 name="set_no_entry.field_control"
    
          #end add-point 
       END IF
    

    u表示修改;

    r表示复制;

    以上两个函数均为在cxmt631_input 中被调用;

    3)在cxmt631_input  中,置入当新增时,调用自定义函数生成单号的指令:

                #add-point:input開始前 name="input.before.input"
                
                IF p_cmd = 'a' THEN
                  call cxmt631_test_xmabucdocno()
                END IF
    
                #end add-point
    

      

    4)自定义函数 cxmt631_test_xmabucdocno()

    PRIVATE FUNCTION cxmt631_test_xmabucdocno()
        DEFINE 
          l_slip     LIKE type_t.chr30,
          l_yy       LIKE type_t.chr30,
          l_date     LIKE type_t.chr30,
          l_chr      LIKE type_t.chr30,
          l_verno    LIKE type_t.chr30,
          l_sql      string
          
          #LET l_slip = "cxm-"
          LET l_yy = g_today USING 'YYYY'
          let l_yy = g_today using 'mm'
          LET l_yy = g_today USING 'dd'
          LET l_date = g_today using 'yyyymmdd'
          LET l_chr = l_date CLIPPED
          
          LET l_sql = "SELECT MAX(SUBSTR(xmabucdocno,LENGTH(xmabucdocno)-2,3)) ",
                       "  FROM xmabuc_t ",
                       " WHERE SUBSTR(xmabucdocno,1,LENGTH(xmabucdocno)-3) = '",l_chr,"'"
          PREPARE t101_pr2 FROM l_sql
          EXECUTE t101_pr2 INTO l_verno
          
          IF cl_null(l_verno) THEN
             LET g_xmabuc_m.xmabucdocno = l_chr,"001"
          ELSE
             LET l_verno = l_verno + 1
             LET g_xmabuc_m.xmabucdocno = l_chr,l_verno USING '&&&'
          END IF
    END FUNCTION
    

      

  • 相关阅读:
    flume sink两种类型 file_rool 自定义sing com.mycomm.MySink even if there is only one event, the event has to be sent in an array
    为什么引入进程20年后,又引入线程?
    As of Flume 1.4.0, Avro is the default RPC protocol.
    Google Protocol Buffer 的使用和原理
    Log4j 2
    统一日志 统一订单
    网站行为跟踪 Website Activity Tracking Log Aggregation 日志聚合 In comparison to log-centric systems like Scribe or Flume
    Percolator
    友盟吴磊:移动大数据平台的架构、实践与数据增值
    Twitter的RPC框架Finagle简介
  • 原文地址:https://www.cnblogs.com/xiaoli9627/p/6840149.html
Copyright © 2011-2022 走看看