【实习之T100开发】T100 双档程序开发流程,java源码模拟面试解析指南

本文详细介绍了业务人员在使用开窗设计器时的操作,包括设置参考字段、使用全局变量传递参数、校验带值和开窗测试工具的应用。内容涉及程序下载、档案管理,以及如何根据单据别和税种动态获取相关信息。
摘要由CSDN通过智能技术生成

表头开窗、校验带值、设置参考字段

业务人员开窗

在这里插入图片描述

业务人员参考语系

在这里插入图片描述


交易条件开窗

在这里插入图片描述

交易条件参考字段 ******************

在这里插入图片描述

太多了。。直接抄 axmt500 。。。。。

表身开窗、校验带值、设置参考字段

开窗抄 axmt500,参考字段需要点击要添加的列,右键 Add Reference Field,然后抄 axmt500

9. 设计器 - 程序(下载程序)


【10】 设计器 - 档案 - 开启档案,直接上传程序(修改程序)


将刚下载的程序直接【上传】一下,确保设计器默认生成的没有问题,再开始修改。

单头部分

新增开窗①单号开窗需要传参数(参照表编号、程序编号)+ 开窗测试工具使用

下图中,在 adzi210开窗设计器中可以看到,单号的开窗识别码要求传2个参数,分别是 参照表编号程序编号 ,需要我们在代码里添加。

  • 参照表编号 在下面的【单据别建立流程】中有讲,aooi100 中可以查看

  • 程序编号在代码里是个全局变量g_prog,本程序中即 cxmt666

在这里插入图片描述

在这里插入图片描述

如何知道对应的数据表字段?

在 aooi100 中查询过后,可知参照表编号为 S01

并且,我们将鼠标放上去,可以看见它是在哪个数据库中进行维护的。

在这里插入图片描述

查看 ooef_t 表,发现 ooef004 的确是参照表编号。

在这里插入图片描述


开窗测试工具的使用

在 adzi210开窗设计工具中,查出了对应的开窗识别码后,点击【开窗测试工具】,然后将对应的参数输入,点击右边的开窗,即可查出对应的值。

如果没有查出来,按照【单据别建立流程】检查一遍流程。

在这里插入图片描述


ON ACTION controlp INFIELD xmzyucdocno,即点击单号开窗的位置,写代码:

#add by lzy #2021/1/27 根据当前的据点找到对应的单据别参照表号

LET l_ooef004 = ‘’

SELECT ooef004 INTO l_ooef004 FROM ooef_t

WHERE ooefent = g_enterprise #企业编号=当前企业编号

AND ooef001 = g_site #组织编号=据点

#給予arg

LET g_qryparam.arg1 = l_ooef004

LET g_qryparam.arg2 = g_prog #程序编号:cxmt666

注:l_ooef004 需要在前面定义变量,我们在 cxmt666_input() 开头定义:

DEFINE l_ooef004 LIKE ooef_t.ooef004 #add by lzy#2021/1/27 单据别参照表号

学会这个以后,再有开窗需要传参的,都是以此类推!

新增开窗①++ 将开窗要传的参数改为全局变量

在 ① 里我们是用 l_ 开头的局部变量的方式写的,但是有时候很多开窗要传的参数是一样的,如果每次都要重新写,那将很麻烦,不如直接改成全局变量,后需要用到都可以拿来用。

将变量声明到 MAIN 上面的全局区域:

#add-point:自定義模組變數(Module Variable) (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name=“global.variable”

DEFINE g_ooef004 LIKE ooef_t.ooef004 #add by lzy#2021/1/27 单据别参照表号

DEFINE g_ooef024 LIKE ooef_t.ooef024 #add by lzy#2021/1/27 供应商编号

DEFINE g_ooef019 LIKE ooef_t.ooef019 #add by lzy#2021/1/27 税区编号

#end add-point

xxxx_init() 的画面资料初始化区域写SQL查询:

#add-point:畫面資料初始化 name=“init.init”

LET g_ooef004 = ‘’

LET g_ooef024 = ‘’

SELECT ooef004,ooef024,ooef019 INTO g_ooef004,g_ooef024,g_ooef019 FROM ooef_t

WHERE ooefent = g_enterprise #企业编号=当前企业编号

AND ooef001 = g_site #组织编号=据点

#end add-point

最后在 ON ACTION controlp INFIELD xxxxx 处给参数赋值即可。

新增开窗②将单据日期默认为今天

xxx_insert() 中的单头预设值处填写代码:

#add-point:單頭預設值 name=“insert.default”

LET g_xmzyuc_m.xmzyucdocdt = g_today #add by lzy#2021/1/27 单据日期默认为今天

#end add-point

新增开窗③开窗传参(交易条件)

交易条件由 apmi012 维护。

直接在代码里给传入参数设为 '238' 即可。

LET g_qryparam.arg1 = ‘238’ #交易条件

校验带值 - 单据别

校验带值都是写在 xxxx_input() 下的 AFTER FIELD xxxxx

比如要写单号 xmzyucdocno 的校验带值,写下面代码:

#add by lzy 单据别校验带值

IF NOT s_aooi200_chk_slip(g_site,‘’,g_xmzyuc_m.xmzyucdocno,g_prog) THEN

LET g_xmzyuc_m.xmzyucdocno = g_xmzyucdocno_t

NEXT FIELD CURRENT

END IF

客户编号校验带值,直接抄 axmt500,参数也要一起抄。。

#設定g_chkparam.*的參數

LET g_chkparam.arg1 = g_xmzyuc_m.xmzyuc003

LET g_chkparam.arg2 = g_site

#呼叫檢查存在並帶值的library

IF cl_chk_exist(“v_pmaa001_3”) THEN

#檢查成功時後續處理

ELSE

#檢查失敗時後續處理

NEXT FIELD CURRENT

END IF

后面有问题的校验带值,都直接抄。。。

根据 [税种] 带出 [含税否]

在这里插入图片描述

要达到的效果主要是选择了 [税种] 以后,下面的 [税率] 和 [含税否] 也会自动有值。


现在开始不用记那么多套路了,抄axmt500就完事,上传报错就跟着报错信息改,比如下面的代码直接上传会报错,因为 l_success 和 l_oodb011 都没有定义,去axmt500里搜一下,看看它怎么定义的,直接拿过来来。

顺带一提,视频中老师一开始都是自己写的,讲道理真的看不懂,直到后面她开始抄axtm500。。。我也就学会了抄了。。

AFTER FIELD xmzyuc006

#add-point:AFTER FIELD xmzyuc006 name=“input.a.xmzyuc006”

LET g_xmzyuc_m.xmzyuc006_desc = ‘’

IF NOT cl_null(g_xmzyuc_m.xmzyuc006) THEN

IF p_cmd = ‘a’ OR (p_cmd = ‘u’ AND (g_xmzyuc_m.xmzyuc006 <> g_xmzyuc_m_o.xmzyuc006 OR g_xmzyuc_m_o.xmzyuc006 IS NULL)) THEN

CALL s_tax_chk(g_site,g_xmzyuc_m.xmzyuc006)

RETURNING l_success,g_xmzyuc_m.xmzyuc006_desc,g_xmzyuc_m.xmzyuc009,g_xmzyuc_m.xmzyuc008,l_oodb011

IF NOT l_success THEN

LET g_xmzyuc_m.xmzyuc006 = g_xmzyuc_m_o.xmzyuc006

LET g_xmzyuc_m.xmzyuc008 = g_xmzyuc_m_o.xmzyuc008

LET g_xmzyuc_m.xmzyuc009 = g_xmzyuc_m_o.xmzyuc009

NEXT FIELD CURRENT

ELSE

#pass

END IF

END IF

LET g_xmzyuc_m_o.xmzyuc006 = g_xmzyuc_m.xmzyuc006

LET g_xmzyuc_m_o.xmzyuc008 = g_xmzyuc_m.xmzyuc008

LET g_xmzyuc_m_o.xmzyuc009 = g_xmzyuc_m.xmzyuc009

END IF

CALL s_desc_get_tax_desc1(g_site,g_xmzyuc_m.xmzyuc006) RETURNING g_xmzyuc_m.xmzyuc006_desc

DISPLAY BY NAME g_xmzyuc_m.xmzyuc006,g_xmzyuc_m.xmzyuc008,g_xmzyuc_m.xmzyuc009,g_xmzyuc_m.xmzyuc006_desc

根据 [币种] 带出 [汇率]

这个有坑!直接抄 axmt500也可能会跳进坑里。。。主要在于它似乎需要一个 [内外销] 字段来计算出汇率。。。但是这个字段在我的项目中并没有建,我只能在调函数s_axmt540_get_exchange的时候手动给这个参数传值,经过测试,只要传'2'就可以了。

#應用 a02 樣板自動產生(Version:2)

AFTER FIELD xmzyuc007

LET g_xmzyuc_m.xmzyuc007_desc = ‘’

IF NOT cl_null(g_xmzyuc_m.xmzyuc007) THEN

IF p_cmd = ‘a’ OR (p_cmd = ‘u’ AND (g_xmzyuc_m.xmzyuc007 != g_xmzyuc_m_o.xmzyuc007 OR g_xmzyuc_m.xmzyuc010 IS NULL )) THEN

IF cxmt666_xmzyuc007_chk(g_xmzyuc_m.xmzyuc007) THEN

#########这里的参数 ‘2’ 是我手动传的,我的项目中没有[内外销]字段

CALL s_axmt540_get_exchange(‘2’,g_xmzyuc_m.xmzyuc007,g_xmzyuc_m.xmzyucdocdt) RETURNING g_xmzyuc_m.xmzyuc010 #modify–151118-00012#1 By shiun 新增傳入參數g_xmda_m.xmdadocdt

LET g_xmzyuc_m_o.xmzyuc010 = g_xmzyuc_m.xmzyuc010

DISPLAY BY NAME g_xmzyuc_m.xmzyuc010

ELSE

#檢查失敗時後續處理

LET g_xmzyuc_m.xmzyuc007 = g_xmzyuc_m_t.xmzyuc007

NEXT FIELD CURRENT

END IF

#匯率取位

IF NOT cl_null(g_xmzyuc_m.xmzyuc010) THEN

CALL s_curr_round(g_site, g_xmzyuc_m.xmzyuc007,g_xmzyuc_m.xmzyuc010,‘3’) RETURNING g_xmzyuc_m.xmzyuc010

END IF

#160711-00010#1-add-(E)

END IF

END IF

#170326-00004#3 by sakura add(S)

CALL cxmt666_set_entry(p_cmd)

CALL cxmt666_set_no_entry(p_cmd)

#170326-00004#3 by sakura add(E)

CALL s_desc_get_currency_desc(g_xmzyuc_m.xmzyuc007) RETURNING g_xmzyuc_m.xmzyuc007_desc

DISPLAY BY NAME g_xmzyuc_m.xmzyuc007_desc

LET g_xmzyuc_m_o.xmzyuc007 = g_xmzyuc_m.xmzyuc007

#END add-point

查询开窗

单头的查询在 xxxx_constructCONSTRUCT BY NAME g_wc 里的 ON ACTION...

其他操作和【新增开窗】大体一样,T100生成的基本都是要求传参数的没有传或者传的不对,我们将参数写对就可以了。

如果【编辑时开窗】与【查询时开窗】设置的是一样的话,完全可以去把之前写好的编辑时开窗的内容拿过来就可以了。

查询开窗 - 单号(自建开窗)

自建步骤就是,随便复制一笔简单的,输入名字 cq_xxxxx,然后查询这笔再去修改它,修改成如下图,即可在代码里直接呼叫该开窗了。

在这里插入图片描述

呼叫开窗的操作如下:

ON ACTION controlp INFIELD xmzyucdocno

#add-point:ON ACTION controlp INFIELD xmzyucdocno name=“construct.c.xmzyucdocno”

#查询时开窗 add by lzy

INITIALIZE g_qryparam.* TO NULL

LET g_qryparam.state = ‘c’

LET g_qryparam.reqry = FALSE

CALL q_ooba002_1() #呼叫開窗

DISPLAY g_qryparam.return1 TO xmzyucdocno #顯示到畫面上

NEXT FIELD xmzyucdocno #返回原欄位

#END add-point

单身部分

项次自增

在 axmt500 xxxx_input > DIALOG > BEFORE INSERT 下的 #項次加1 处可以捞到代码;

然后放到自己项目中:

#add-point:modify段before備份 name=“input.body.insert.before_bak”

#项次加一 add by lzy 2021/1/28

SELECT MAX(xmzzucseq)+1 INTO g_xmzzuc_d[l_ac].xmzzucseq FROM xmzzuc_t

WHERE xmzzucent = g_enterprise AND xmzzucdocno = g_xmzyuc_m.xmzyucdocno

IF cl_null(g_xmzzuc_d[l_ac].xmzzucseq) OR g_xmzzuc_d[l_ac].xmzzucseq = 0 THEN

LET g_xmzzuc_d[l_ac].xmzzucseq = 1

END IF

#end add-point

表身根据[料号]带出[品名]和[规格]

ON ACTION controlp INFIELD xmzzuc001 处,主要的坑就是把原本的注释取消后要改成自己项目中的名字。。

在这里插入图片描述

在这里插入图片描述

例如下图是我的[品名]控件名称:

在这里插入图片描述

单身根据 [税种] 带出 [税率]

主要就是去 单身中税种字段对应的 AFTER FIELD xxxx,首先将 校验带值的参数写正确;

然后可以在后面直接加上这个:

#带出税率的值 add by lzy

CALL s_tax_chk(g_site,g_xmzzuc_d[l_ac].xmzzuc005)

#注意:l_xmzyuc005_desc,l_hanshuifou是自定义的,需要这么多参数来接收函数的返回值

RETURNING l_success,l_xmzyuc005_desc,l_hanshuifou,g_xmzzuc_d[l_ac].xmzzuc006,l_oodb011

IF NOT l_success THEN

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

NG l_success,l_xmzyuc005_desc,l_hanshuifou,g_xmzzuc_d[l_ac].xmzzuc006,l_oodb011

IF NOT l_success THEN

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-aGtwjo88-1710902951890)]
[外链图片转存中…(img-5wFXZNYo-1710902951891)]
[外链图片转存中…(img-SWuRLm2r-1710902951892)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-Wi8aJguA-1710902951892)]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值