T100资深高手开发功能完整的双档程序全过程

design by leezec 296066606

示例程序:深度定制的产品核价作业

单头表xmdtuc_t

单身表xmduuc_t

提供一下打包后的程序和表结构

T100双档开发程序样例-互联网文档类资源-CSDN文库

基本要求:

  • 单据要自动编码
  • 录入时带入单据日期,录单人,录单人部门
  • 状态控制:审核后不能作废,作废后不能审核
  • 功能控制:审核后不能更改,删除单据
  • 项次要自动递增

以上T100标准产出的模板都没有

开始

  • 建表: adzi140进入到作业中先创建单头表,再创建单身表,设计好之后执行异动,注意创建单身表要做外键,一定要做外键,不然画面产生器无法识别两表之间的关联,产生的模板有问题

  • 注册程序:azzi900录入程序号cxmt701

  • 开启T100设计器将规格与程序同时签出

  • 调整状态码:adzi150选择需要的状态码功能,调整顺序

  • 产生规格模板:adzp168画面生成器,设计规格样式

 样板类型选择维护作业,整页与列表模式

在字段设置页签,先添加单头表,再添加单身表,双表有外键的情况就会如图所示有层级关系,然后把需要的字段添加到右边的结构栏,然后生成画面

  • 设计器下载规格,调整长度,位置等美化工作,上传规格

  • 设计器下载程序,直接上传

  • 添加单据性质:azzi600查询系统分类码为24的资料,然后编辑,录入新的单据性质,单据性质与程序号保持一致

  • 注册作业号:azzi910录入,单据性质选择上一步录入的程序号,此时程序就可以执行了,但是关键功能缺失,需要自己补

  • 单据别设置:aooi199,编辑添加双档程序需要的单别

  • 单据别参数维护:aooi200,再次添加双档程序需要的单别

  • 处理单据自动编号功能
在全局变量客制区域定义数组:
DEFINE g_ooef     RECORD LIKE ooef_t.*

在cxmt701_init()函数添加取值
SELECT * INTO g_ooef.* FROM ooef_t WHERE ooefent = g_enterprise AND ooef001 = g_site 

在cxmt701_input(p_cmd)函数
  ON ACTION controlp INFIELD xmdtucdocno段添加开窗选取单别

            #開窗i段
            INITIALIZE g_qryparam.* TO NULL
            LET g_qryparam.state = 'i'
            LET g_qryparam.reqry = FALSE
 
            LET g_qryparam.default1 = g_xmdtuc_m.xmdtucdocno             #給予default值

            #給予arg 
            LET g_qryparam.arg1 = g_ooef.ooef004
            LET g_qryparam.arg2 = g_prog
            CALL q_ooba002_1()                                #呼叫開窗
 
            LET g_xmdtuc_m.xmdtucdocno = g_qryparam.return1              

            DISPLAY g_xmdtuc_m.xmdtucdocno TO xmdtucdocno              #

            NEXT FIELD xmdtucdocno                          #返回原欄位

  单头after input段添加编号
               #add-point:單頭新增前 name="input.head.b_insert"
               LET l_success = NULL
               CALL s_aooi200_gen_docno(g_site,g_xmdtuc_m.xmdtucdocno,g_xmdtuc_m.xmdtucdocdt,g_prog) 
                  RETURNING l_success,g_xmdtuc_m.xmdtucdocno
               
               IF NOT l_success THEN 
                  CALL s_transaction_end('N','0')
                  CONTINUE DIALOG
               END IF
               #end add-point
  • 处理程序录入时带默认值功能
在cxmt701_insert()函数的单头预设值添加
      #add-point:單頭預設值 name="insert.default"
      LET g_xmdtuc_m.xmdtucsite = g_site  #设置据点
      LET g_xmdtuc_m.xmdtucdocdt = cl_get_today() #单据日期
      LET g_xmdtuc_m.xmdtuc001 = g_user #申请人
      LET g_xmdtuc_m.xmdtuc002 = g_dept #申请人部门
      LET g_xmdtuc_m.xmdtuc004 = cl_get_today()  #生效日期
      #end add-point 
  • 处理单据状态码变动功能
在cxmt701_statechange()函数
MENU "" ATTRIBUTES (STYLE="popup")下方可编辑区域处添加:

      #add-point:menu前 name="statechange.before_menu"
      CALL cl_set_act_visible("open,valid,void",FALSE) #屏蔽所有的功能
      CASE g_xmdtuc_m.xmdtucstus  #判断单据状态
         WHEN "N"
            CALL cl_set_act_visible("valid,void",TRUE) #未审核时,可以作废和审核

         WHEN "X"
            CALL cl_set_act_visible("open",TRUE)  #作废时,可以取消审核
            
         WHEN "Y" 
            CALL cl_set_act_visible("open",TRUE)  #审核时,可以取消审核
      END CASE 
      #end add-point
  • 处理单据审核后的更改,删除功能
在cxmt701_set_act_visible()函数可编辑区域

   #add-point:set_act_visible段 name="set_act_visible.set_act_visible"
   CALL cl_set_act_visible("modify,delete,modify_detail",TRUE)  #开放更改,删除,单身更改功能
   #end add-point   

在cxmt701_set_act_no_visible()函数可编辑区域

   #add-point:set_act_no_visible段 name="set_act_no_visible.set_act_no_visible"
   IF g_xmdtuc_m.xmdtucstus NOT MATCHES "[NDR]" THEN #单据状态不为未审核状态时
      CALL cl_set_act_visible("modify,delete,modify_detail",FALSE)  #不允许更改,删除,单身更改功能
   END IF 
   #end add-point  
  • 处理单身录入时的项次递增功能
在cxmt701_input(p_cmd)函数的单身处BEFORE INSERT可编辑区域
            #add-point:modify段before insert name="input.body.before_insert"
            #項次
            SELECT MAX(xmduucseq)+1 INTO g_xmduuc_d[l_ac].xmduucseq FROM xmduuc_t
             WHERE xmduucent = g_enterprise AND xmduucdocno = g_xmdtuc_m.xmdtucdocno
            IF cl_null(g_xmduuc_d[l_ac].xmduucseq) OR g_xmduuc_d[l_ac].xmduucseq = 0 THEN
               LET g_xmduuc_d[l_ac].xmduucseq = 1
            END IF
            #end add-point  

程序预览:

 有想了解的方向和内容可以在评论区留言,有时间就发布

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值