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表
1、2、3、4步都与之前一样。
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 查看要加栏位的作业对应的表
利用 azzi993 查询 aoos010,可知它对应的表是:ooaa_t
[](()2、azzi990 按需求添加一笔参数数据
记住它的参数编号 E-COMC0009(自动生成的)
[](()3、azzi993 设置作业参数

此时,再次打开 aoos010,参数产生完成。