design by leezec 296066606
示例程序:深度定制的产品核价作业
单头表xmdtuc_t
单身表xmduuc_t
提供一下打包后的程序和表结构
基本要求:
- 单据要自动编码
- 录入时带入单据日期,录单人,录单人部门
- 状态控制:审核后不能作废,作废后不能审核
- 功能控制:审核后不能更改,删除单据
- 项次要自动递增
以上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
程序预览:

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


被折叠的 条评论
为什么被折叠?



