单档——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

  

 

转载于:https://www.cnblogs.com/xiaoli9627/p/6840149.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值