本章节包含以下内容:
一、添加 性别[下拉框]、入职日期
1、r.t 数据表增加字段
2、设计器更新基础数据、重新产生基础数据
3、设计器修改界面并上传
4、重新下载程序代码,修改
azzi600系统分类码,设置下拉框
设置录入信息时显示的初值
5、修改完成,上传程序、执行程序
二、【整单操作】下加按钮 - 审核后修改身份证
1、规格上 - 新增项目
2、设计器 - 下载程序 - 检查产生Action代号,然后上传程序
3、azzi903 将Action从 弹出式菜单 移到 整单操作
4、azzi850 给新增的功能授权
5、程序中修改逻辑***
三、【整单操作】下新增【产生单据】按钮
四、在标准的参数作业下新增栏位
1、azzi993 查看要加栏位的作业对应的表
2、azzi990 按需求添加一笔参数数据
3、azzi993 设置作业参数
查询方案添加一列
一、添加 性别[下拉框]、入职日期
在 oozyuc_t 表里增加2个字段:
- 性别 – [下拉框,男女]
- 入职日期、用原来的ud字段即可
1、r.t 数据表增加字段
按要求增加字段(如果表里有符合数据类型的字段优先使用),修改完成后要【执行异动】,【DBA专用】执行前3个。
2、设计器更新基础数据、重新产生基础数据
3、设计器修改界面并上传
按要求修改后,必须【上传】
Label 下面几个必须记住要改
下拉框要改下面
4、重新下载程序代码,修改
azzi600系统分类码,设置下拉框
【常用工具】或 r.r azzi600 打开系统分类码维护作业,点击新增即可,系统会默认给一个系统分类码,不要自己修改。
系统分类码主要用于下拉框,给下拉框去赋值。
设置好系统分类码后,在代码中给其赋值。
给下拉框设置值:在xxxx_init的画面资料初始化代码区赋值。
# 性别分类码,在azzi600维护分类码的基础资料,主要用于【下拉框】
CALL cl_set_combo_scc(‘oozyuc007’, ‘18533’)
设置录入信息时显示的初值
在xxxx_insert 单头预设值 代码区赋值。
LET g_oozyuc_m.oozyuc017 = g_today # 将入职日期默认为当天
LET g_oozyuc_m.oozyuc007 = ‘1’ # 将性别默认为男性
5、修改完成,上传程序、执行程序
二、【整单操作】下加按钮 – 审核后修改身份证
在整单操作下面新增一个按钮,用来判断,审核状态下,可以修改身份证号码。
- 规格中 – 右边点击【新增项目】,在左边 Action设定 修改 Action代号,说明;然后上传画面
- 设计器 – 下载程序 – 检查产生Action代号,然后上传程序
- azzi903 将Action从 弹出式菜单 移到 整单操作
azzi903 – 查询 cooi666,双击整单操作,复制整单操作的上阶功能编号full-operator
azzi903 – 弹出式菜单下找到action代号,选择代号,将上阶功能编号修改成full-operator
保存,关闭azzi903,重新产生4ad - azzi850 给新增的功能授权
- 在4gl的 uidialog 的 meun段 找到 on actoin 代号,在里面写入逻辑即可
1、规格上 – 新增项目
右边点击【新增项目】,在左边 Action设定 修改 Action代号,说明;然后上传画面。
2、设计器 – 下载程序 – 检查产生Action代号,然后上传程序
3、azzi903 将Action从 弹出式菜单 移到 整单操作
原因是第1步中默认的【新增项目】其实会加到【弹出式菜单中】,我们需要将它放到【整单操作】中
①查询 cooi666,点击整单操作,复制整单操作的上阶功能编号 full-operator
②弹出式菜单下找到 Action代号,选择代号,将上阶功能编号修改成 full-operator
③保存,关闭azzi903,重新产生 4tm、4ad
此时重新运行程序,界面上已经有相应按钮,但是由于没有写逻辑代码,所以点击没有效果。
4、azzi850 给新增的功能授权
打开 azzi850,查询作业编号cooi666,给新增的Action进行功能授权。
5、程序中修改逻辑***
设计器中新增函数
不要忘记在 ui_dialog 里定义变量:
DEFINE l_success LIKE type_t.num10
在 ON ACTION modify_sfz 处添加代码:
#應用 a43 樣板自動產生(Version:4)
ON ACTION modify_sfz
LET g_action_choice=”modify_sfz”
IF cl_auth_chk_act(“modify_sfz”) THEN
#add-point:ON ACTION modify_sfz name=”menu2.modify_sfz”
#单据必须是审核状态才能执行这个功能
IF g_oozyuc_m.oozyucstus = ‘Y’ THEN
#因为修改画面上的身份证需要异动到数据表,所以需要开启事务
CALL s_transaction_begin()
#通过下面函数返回的l_success,判断事务是提交还是回滚
CALL cooi666_modify_sfz() RETURNING l_success
IF NOT l_success THEN
CALL s_transaction_end(‘N’, ‘0’) #回滚
ELSE
CALL s_transaction_end(‘Y’, ‘0’) #提交
END IF
ELSE #报错,单据状态不是审核,不能点此按钮
INITIALIZE g_errparam TO NULL
LET g_errparam.extend = “”
LET g_errparam.code = “coo-00667” #azzi920维护错误代码
LET g_errparam.popup = TRUE
CALL cl_err()
EXIT MENU #报错后退出MENU
END IF
#END add-point
END IF
然后去写 cooi666_modify_sfz() 函数的代码:
PRIVATE FUNCTION cooi666_modify_sfz()
DEFINE l_success LIKE type_t.num10 #返回值
#将返回值默认为TRUE,在下面如果有报错就默认为false,表示事务会执行回滚
LET l_success = TRUE
#先开启游标,找的是MAIN函数里面的for update的游标,目的是为了锁住这边资料不被其他人修改
OPEN cooi666_cl USING g_enterprise,g_oozyuc_m.oozyuc00
#这里是判断cooi123_cl这个游标对应得SQL语句有无报错
IF STATUS THEN #若报错,走下面的报错信息,并且关闭游标,直接返回FALSE
INITIALIZE g_errparam TO NULL
LET g_errparam.extend = “OPEN cooi666_cl:”
LET g_errparam.code = STATUS
LET g_errparam.popup = TRUE
CALL cl_err()
CLOSE cooi666_cl #关闭游标
LET l_success = FALSE
RETURN l_success #直接返回 FALSE
END IF
#通过input语法直接修改身份证号,如果不写input,不能在画面上输入字段的值
DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM)
INPUT BY NAME g_oozyuc_m.oozyuc005 ATTRIBUTE(WITHOUT DEFAULTS)
BEFORE INPUT
BEFORE FIELD oozyuc005
AFTER FIELD oozyuc005 #校验带值
IF NOT cl_null(g_oozyuc_m.oozyuc005) THEN
#写一些其他逻辑
DISPLAY BY NAME g_oozyuc_m.oozyuc005
END IF
ON CHANGE oozyuc005
ON ACTION controlp INFIELD oozyuc005 #如果是需要开窗写在下面
AFTER INPUT #input输入之后,直接更新到数据库
UPDATE oozyuc_t SET oozyuc005 = g_oozyuc_m.oozyuc005
WHERE oozyucent = g_enterprise
AND oozyuc001 = g_oozyuc_m.oozyuc001
IF SQLCA.SQLCODE THEN
INITIALIZE g_errparam TO NULL
LET g_errparam.extend = “”
LET g_errparam.code = SQLCA.SQLCODE
LET g_errparam.popup = TRUE
CLOSE cooi666_cl
CALL cl_err()
LET l_success = FALSE
END IF
END INPUT #input结束
ON ACTION controlf
CALL cl_set_focus_form(ui.Interface.getRootNode()) RETURNING g_fld_name,g_frm_name
CALL cl_fldhelp(g_frm_name, g_fld_name, g_lang)
ON ACTION controlr
CALL cl_show_req_fields()
ON ACTION controls
IF g_header_hidden THEN
CALL gfrm_curr.setElementHidden(“vb_master”,0)
CALL gfrm_curr.setElementImage(“controls”,”small/arr-u.png”)
LET g_header_hidden = 0 #visible
ELSE
CALL gfrm_curr.setElementHidden(“vb_master”,1)
CALL gfrm_curr.setElementImage(“controls”,”small/arr-d.png”)
LET g_header_hidden = 1 #hidden
END IF
ON ACTION accept
ACCEPT DIALOG
ON ACTION cancel #取消
LET INT_FLAG = TRUE
ON ACTION close #关闭,右上角的(X)
ACCEPT DIALOG
ON ACTION exit #离开
ACCEPT DIALOG
#交談指令共用ACTION
&include “common_action.4gl”
CONTINUE DIALOG
END DIALOG
RETURN l_success
END FUNCTION
三、【整单操作】下新增【产生单据】按钮
在整单操作下新增一个按钮【产生单据】
- 复制 oozyuc表 为 oozzuc表
- 在 cooi666 新增一个按钮【产生单据】
- 当单据状态为已审核时,点击【产生单据】,将此笔数据库产生到 oozzuc表
- 规格中 – 右边点击【新增项目】,在左边 Action设定 修改 Action代号,说明;然后上传画面
- 设计器 – 下载程序 – 检查产生Action代号,然后上传程序
- azzi903 将Action从 弹出式菜单 移到 整单操作
azzi903 – 查询 cooi666,双击整单操作,复制整单操作的上阶功能编号full-operator
azzi903 – 弹出式菜单下找到action代号,选择代号,将上阶功能编号修改成full-operator
保存,关闭azzi903,重新产生4ad - azzi850 给新增的功能授权
- 在4gl的 uidialog 的 meun段 找到 on actoin 代号,在里面写入逻辑即可
1、2、3、4步都与之前一样。
表格复制
复制完后,必须:
①执行异动
②左上角【DBA专用】,前3个选项都点一下
5、去程序中修改逻辑:
不要忘记在 ui_dialog 里定义变量:
DEFINE l_success LIKE type_t.num10
在 ON ACTION insert_oozzuc 处写调用函数的逻辑:
ON ACTION insert_oozzuc
LET g_action_choice=”insert_oozzuc”
IF cl_auth_chk_act(“insert_oozzuc”) THEN
#add-point:ON ACTION insert_oozzuc name=”menu2.insert_oozzuc”
IF g_oozyuc_m.oozyucstus = ‘Y’ THEN
#因为修改画面上的身份证需要异动到数据表,所以需要开启事务
CALL s_transaction_begin()
#通过下面函数返回的l_success,判断事务是提交还是回滚
CALL cooi666_insert_oozzuc() RETURNING l_success
IF NOT l_success THEN
CALL s_transaction_end(‘N’, ‘0’) #回滚
ELSE
CALL s_transaction_end(‘Y’, ‘0’) #提交
END IF
ELSE #报错,单据状态不是审核,不能点此按钮
INITIALIZE g_errparam TO NULL
LET g_errparam.extend = “”
LET g_errparam.code = “coo-00667” #azzi920维护错误代码
LET g_errparam.popup = TRUE
CALL cl_err()
EXIT MENU #报错后退出MENU
END IF
#END add-point
END IF
################################################################################
# Descriptions…: 将当前的资料产生到oozzuc表中
# Memo………..:
# Usage……….: CALL s_aooi150_ins (传入参数)
# RETURNING 回传参数
# Input parameter: 传入参数变量1 传入参数变量说明1
# : 传入参数变量2 传入参数变量说明2
# Return code….: 回传参数变量1 回传参数变量说明1
# : 回传参数变量2 回传参数变量说明2
# Date & Author..: 2021/1/15 By lzy
# Modify………:
################################################################################
PRIVATE FUNCTION cooi666_insert_oozzuc()
DEFINE r_success LIKE type_t.num10
DEFINE l_oozzuc RECORD
oozzucent LIKE oozzuc_t.oozzucent, #企业代码
oozzucsite LIKE oozzuc_t.oozzucsite,#营运据点
oozzuc001 LIKE oozzuc_t.oozzuc001,
oozzuc002 LIKE oozzuc_t.oozzuc002,
oozzuc003 LIKE oozzuc_t.oozzuc003,
oozzuc004 LIKE oozzuc_t.oozzuc004,
oozzuc005 LIKE oozzuc_t.oozzuc005,
oozzuc006 LIKE oozzuc_t.oozzuc006,
oozzuc007 LIKE oozzuc_t.oozzuc007,
oozzuc017 LIKE oozzuc_t.oozzuc017,
oozzucownid LIKE oozzuc_t.oozzucownid, #资料所有者
oozzucowndp LIKE oozzuc_t.oozzucowndp, #资料所属部门
oozzuccrtid LIKE oozzuc_t.oozzuccrtid, #资料建立者
oozzuccrtdp LIKE oozzuc_t.oozzuccrtdp, #资料建立部门
oozzuccrtdt LIKE oozzuc_t.oozzuccrtdt, #资料创建日
oozzucmodid LIKE oozzuc_t.oozzucmodid, #资料修改者
oozzucmoddt LIKE oozzuc_t.oozzucmoddt, #最近修改日
oozzucstus LIKE oozzuc_t.oozzucstus #状态码
END RECORD
LET r_success = TRUE
INITIALIZE l_oozzuc.* TO NULL #初始化数组
LET l_oozzuc.oozzucent = g_enterprise #企业代码
LET l_oozzuc.oozzucsite = g_site #营运据点
LET l_oozzuc.oozzuc001 = g_oozyuc_m.oozyuc001
LET l_oozzuc.oozzuc002 = g_oozyuc_m.oozyuc002
LET l_oozzuc.oozzuc003 = g_oozyuc_m.oozyuc003
LET l_oozzuc.oozzuc004 = g_oozyuc_m.oozyuc004
LET l_oozzuc.oozzuc005 = g_oozyuc_m.oozyuc005
LET l_oozzuc.oozzuc006 = g_oozyuc_m.oozyuc006
LET l_oozzuc.oozzuc007 = g_oozyuc_m.oozyuc007
LET l_oozzuc.oozzuc017 = g_oozyuc_m.oozyuc017
LET l_oozzuc.oozzucownid = g_oozyuc_m.oozyucownid #资料所有者
LET l_oozzuc.oozzucowndp = g_oozyuc_m.oozyucowndp #资料所属部门
LET l_oozzuc.oozzuccrtid = g_oozyuc_m.oozyuccrtid #资料建立者
LET l_oozzuc.oozzuccrtdp = g_oozyuc_m.oozyuccrtdp #资料建立部门
LET l_oozzuc.oozzuccrtdt = g_oozyuc_m.oozyuccrtdt #资料创建日
LET l_oozzuc.oozzucmodid = g_oozyuc_m.oozyucmodid #资料修改者
LET l_oozzuc.oozzucmoddt = g_oozyuc_m.oozyucmoddt #最近修改日
LET l_oozzuc.oozzucstus = g_oozyuc_m.oozyucstus #状态码
#插入数据库
INSERT INTO oozzuc_t(oozzucent, oozzucsite,
oozzuc001, oozzuc002, oozzuc003, oozzuc004,
oozzuc005, oozzuc006, oozzuc007, oozzuc017,
oozzucownid, oozzucowndp, oozzuccrtid, oozzuccrtdp,
oozzuccrtdt, oozzucmodid, oozzucmoddt, oozzucstus)
VALUES(l_oozzuc.oozzucent, l_oozzuc.oozzucsite,
l_oozzuc.oozzuc001, l_oozzuc.oozzuc002, l_oozzuc.oozzuc003, l_oozzuc.oozzuc004,
l_oozzuc.oozzuc005, l_oozzuc.oozzuc006, l_oozzuc.oozzuc007, l_oozzuc.oozzuc017,
l_oozzuc.oozzucownid, l_oozzuc.oozzucowndp, l_oozzuc.oozzuccrtid, l_oozzuc.oozzuccrtdp,
l_oozzuc.oozzuccrtdt, l_oozzuc.oozzucmodid, l_oozzuc.oozzucmoddt, l_oozzuc.oozzucstus)
#若SQL有错则展示错误
IF SQLCA.SQLCODE THEN
INITIALIZE g_errparam TO NULL
LET g_errparam.extend = “”
LET g_errparam.code = SQLCA.SQLCODE
LET g_errparam.popup = TRUE
CALL cl_err()
LET r_success = FALSE
END IF
RETURN r_success
END FUNCTION
四、在标准的参数作业下新增栏位
目标:在 aoos010 上新增一个栏位
1、azzi993 找到在哪个参数作业下新增栏位,然后双击选中的参数作业,可以知道对应的表是哪个
2、azzi990 中查询处对应的表,双击单身,点击录入,找到应用领域下,会自动产生一笔对应的资料,自己维护即可(根据需求选择录入限制数据形态,入勾选框选择1,Y/N)
1、azzi993 查看要加栏位的作业对应的表
利用 azzi993 查询 aoos010,可知它对应的表是:ooaa_t
2、azzi990 按需求添加一笔参数数据
记住它的参数编号 E-COMC0009(自动生成的)
3、azzi993 设置作业参数
此时,再次打开 aoos010,参数产生完成。
查询方案添加一列
注意!修改完规格必须做下面的事情!
①上传规格
②下载程序
③上传程序(无论改不改)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43734095/article/details/112986929
转载请注明:赫非域 » 【实习之T100开发】程序开发之添加修改功能