*   [新增开窗③开窗传参(交易条件)](about:blank#_211)*   [校验带值 - 单据别](about:blank#___219)*   [根据 \[税种\] 带出 \[含税否\]](about:blank#____246)*   [根据 \[币种\] 带出 \[汇率\]](about:blank#____281)*   [查询开窗](about:blank#_319)*   [查询开窗 - 单号(自建开窗)](about:blank#___326)*   [单身部分](about:blank#_346)*   *   [项次自增](about:blank#_347)*   [表身根据\[料号\]带出\[品名\]和\[规格\]](about:blank#_362)*   [单身根据 \[税种\] 带出 \[税率\]](about:blank#____369)*   [\[数量\]、\[单价\] 变化时要计算\[含税金额\]、\[未税金额\]、\[税额\]](about:blank#__389)*   [查询时单身部分\[规格\]不显示(新增时有的)](about:blank#_414)*   [12\. azzi850 给程序授权](about:blank#12_azzi850__426)*   [13\. r.r 执行程序](about:blank#13_rr__427)*   [14\. azzi880 将程序挂到 menu](about:blank#14_azzi880__menu_428)
  • 单据别建立流程 ???

  • 双档程序源码分析

  • 总结

目录:【实习】T100学习笔记

单档程序和双档程序的区别

所谓单档程序相当于只有表头,下面的东西就相当于表头

而双档不仅有表头,还有表身,表身一般就是个表格。

单双档程序的 (全新) 开发流程

===================================================================================

首先要通过 r.t (adzi140) 建立表

  1. azzi900 建立 程序代号

    程序代号是唯一的。

  2. azzi910 建立 作业代号

    一个程序代号可以被多个作业使用。

  3. 通过设计器 - 规格(签出规格)

    规格相当于画面。

  4. 通过设计器 - 程序(签出程序)

  5. adzp168 通过画面产生器产生画面

  6. 通过设计器 - 规格(下载规格)

  7. r.q 开窗,r.v 校验带值(根据需求设定)

  8. 通过设计器 - 程序(下载程序)

  9. 通过设计器 - 档案(开启规格档案)- 修改程序 - 上传程序

  10. 通过设计器 - 程序(下载程序)- 上传程序

(先上传程序,没有报错再来修改对应逻辑)
  1. 通过 azzi850 给程序授权

  2. r.r 执行程序

  3. azzi880 将程序挂到 menu

r.t 建表

=========================================================================

单头表 xmzyuc_t,字段为:订单单号、订单日期、业务人员、业务部门、客户编号、收款条件、交易条件、税种、币种、税率、含税否、汇率、发票类型、订单备注、基础资料档。

单身表 xmzzuc_t,字段为:项次、料号 (品名、规格)、单位 (单位名称)、订购数量、预计交货日期、税种、税率、单位、含税金额、未税金额、税额、紧急度、备注


单档程序只需要一张表,双档需要建多张表。

1. 建立单头表


单头一般是主档

企业代码、营运据点基本是必要的,其他按需求设置。

字段设置完毕后,【执行异动】

2. 建立单身表


单身一般是明细档

单身表单头表的主键位置需要一一对应,不然自动生成的SQL语句会关联错误。

单头表的顺序是:企业代码(主)、营运据点、单号(主)、…

单身表的顺序必须是:企业代码(主)、营运据点、单号(主)、…

单身表一定会比单头表多1个主键。

字段设置完毕后,【执行异动】

3. 单身表 中建立主外键关联


单身表中建立与单头表的主外键关联。

同时查出多张表的小技巧xmzyuc | xmzzuc

4. 建表完成执行操作


所有步骤完成后按照如下顺序操作:

  1. 单头【产出数据表纲要】、单身【产出数据表纲要】、

  2. 单头【产出数据表清单】、单身【产出数据表清单】

  3. 单头【产出数据表结构与规格设置】、单身【产出数据表结构与规格设置】

双档 (全新) 完整开发

===============================================================================

注:双档和单档在整体流程上差不多,所以这里过程很简略,具体有哪个步骤忘记可以参考单档的文章(图片很全,很细)。

T100 单档程序开发(1)开发流程

r.t 建表


adzi170 可以查询数据表的内容

1. azzi900 建立 程序编号


点击【录入信息】,然后输入 [程序编号] 和 [程序名称],选择 [归属模块]

2. azzi910 建立 作业编号


由于是订单维护作业,还需要建立单据别,具体参考下面的单据别建立流程

3. 设计器 - 签出规格和程序


【4】 adzp168画面产生器(产生画面)???


点击【字段设置】,分别给单头单身以及查询方案设置字段

单头设置字段,注意 Table 必须选中单头表,画面结构要选中 Page:page_1

ps:上图少放了一个字段单据日期。。已补上,截图没有改

单身设置字段,Table 选中单身表,画面结构中选中 Table:s_detail1。单号是单头和单身的主键,单头里放了,单身不需要再放。

查询方案设置字段,查询方案一般放一些重要的单头字段

操作完以后,【保存底稿】、【生成画面】,弹出预览界面后关掉它。

6. 设计器 - 规格(下载规格)


7. 设计器 - 档案 - 开启档案(修改规格)


如果没有数据,【进阶功能】-【更新基础数据】、【重新产生基础数据】

注意,带开窗的组件有的需要自己转:右键,Concert Widget,ButtonEdit 即可。

【8】r.q 开窗,r.v 校验带值(根据需求设定)???


业务人员开窗 可以抄 资料所有者开窗

业务部门开窗 可以抄 资料所有部门开窗

所有的都可以抄 axmt500。。。。

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

业务人员开窗

业务人员参考语系


交易条件开窗

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

太多了。。直接抄 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_tWHERE ooefent = g_enterprise #企业编号=当前企业编号AND ooef001 = g_site #组织编号=据点 #給予argLET g_qryparam.arg1 = l_ooef004LET 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_tWHERE 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) THENLET g_xmzyuc_m.xmzyucdocno = g_xmzyucdocno_t   NEXT FIELD CURRENT   END IF 

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


#設定g_chkparam.*的參數LET g_chkparam.arg1 = g_xmzyuc_m.xmzyuc003LET g_chkparam.arg2 = g_site #呼叫檢查存在並帶值的libraryIF cl_chk_exist("v_pmaa001_3") THEN#檢查成功時後續處理ELSE#檢查失敗時後續處理NEXT FIELD CURRENTEND 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 THENLET g_xmzyuc_m.xmzyuc006 = g_xmzyuc_m_o.xmzyuc006LET g_xmzyuc_m.xmzyuc008 =  g_xmzyuc_m_o.xmzyuc008LET g_xmzyuc_m.xmzyuc009 =  g_xmzyuc_m_o.xmzyuc009NEXT FIELD CURRENT                     ELSE                    #passEND IF                       END IFLET g_xmzyuc_m_o.xmzyuc006 = g_xmzyuc_m.xmzyuc006LET g_xmzyuc_m_o.xmzyuc008 = g_xmzyuc_m.xmzyuc008LET g_xmzyuc_m_o.xmzyuc009 = g_xmzyuc_m.xmzyuc009END IF CALL s_desc_get_tax_desc1(g_site,g_xmzyuc_m.xmzyuc006) RETURNING g_xmzyuc_m.xmzyuc006_descDISPLAY 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# 资料分享这是我从某优质机构弄来的一些资料,内容我认为确实称得上优质二字**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](https://codechina.csdn.net/m0_60958482/java-p7)****首先分享一份学习大纲,内容较多,涵盖了互联网行业所有的流行以及核心技术,以截图形式分享:**(亿级流量性能调优实战+一线大厂分布式实战+架构师筑基必备技能+设计思想开源框架解读+性能直线提升架构技术+高效存储让项目性能起飞+分布式扩展到微服务架构.........实在是太多了)![](https://img-blog.csdnimg.cn/img_convert/a792073bb5945eb2c2c176db172d1445.png)**其次分享一些技术知识,以截图形式分享一部分:**Tomcat架构解析:![](https://img-blog.csdnimg.cn/img_convert/f7c6ab16b1f6a6277d9b97ffa88bce09.png)算法训练+高分宝典:![](https://img-blog.csdnimg.cn/img_convert/d4c72090e0c712e8e78700fd3d8f943e.png)Spring Cloud+Docker微服务实战:![](https://img-blog.csdnimg.cn/img_convert/e5d9d5f2214e544316daf9f1a0aefcdf.png)**最后分享一波面试资料:**> 切莫死记硬背,小心面试官直接让你出门右拐1000道互联网Java面试题:![](https://img-blog.csdnimg.cn/img_convert/64b7e62ce4ae7272ca437ad30ea027f6.png)Java高级架构面试知识整理:![](https://img-blog.csdnimg.cn/img_convert/7b27a79ff2dc621cdc216048eaedf580.png)rsion:2)AFTER FIELD xmzyuc007# 资料分享这是我从某优质机构弄来的一些资料,内容我认为确实称得上优质二字**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](https://codechina.csdn.net/m0_60958482/java-p7)****首先分享一份学习大纲,内容较多,涵盖了互联网行业所有的流行以及核心技术,以截图形式分享:**(亿级流量性能调优实战+一线大厂分布式实战+架构师筑基必备技能+设计思想开源框架解读+性能直线提升架构技术+高效存储让项目性能起飞+分布式扩展到微服务架构.........实在是太多了)[外链图片转存中...(img-ncCDdyRH-1630927280231)]**其次分享一些技术知识,以截图形式分享一部分:**Tomcat架构解析:[外链图片转存中...(img-RaOXQyS7-1630927280232)]算法训练+高分宝典:[外链图片转存中...(img-Csq7EqXK-1630927280234)]Spring Cloud+Docker微服务实战:[外链图片转存中...(img-B0YioHnM-1630927280235)]**最后分享一波面试资料:**> 切莫死记硬背,小心面试官直接让你出门右拐1000道互联网Java面试题:[外链图片转存中...(img-j30oSaXm-1630927280237)]Java高级架构面试知识整理:[外链图片转存中...(img-dizEJceO-1630927280238)]

【实习之T100开发(1),韩顺平Java视频教程百度云盘相关推荐

  1. 【实习之T100开发】T100 P处理开发流程

    P处理 1. azzi900建立程序代号cxmp666 2. azzi910建立作业代号cxmp666 3. 设计器 - 规格 - 下载规格 - 同时签出规格和程序 4. 设计器 - 常用工具 - r ...

  2. 【实习之T100开发】T100 单档程序开发(2)添加功能

    T100单档程序 一.添加 性别[下拉框].入职日期 1.r.t 数据表增加字段 2.设计器更新基础数据.重新产生基础数据 3.设计器修改界面并上传 4.重新下载程序代码,修改 azzi600系统分类 ...

  3. 【实习之T100开发】T100 单档程序开发(1)开发流程

    T100单档程序 单双档程序的 (全新) 开发流程 adzi140 数据表设计器介绍 r.t 建表 建表 (全新) 建表 (修改标准表) T100设计器 画面生成器 adzp168 单档 (全新) 完 ...

  4. 【实习之T100开发】T100 基础架构、命名原则

    T100学习笔记 执行程序的方法 T100基础架构 基本环境变量 基本执行 Shell 命名原则 模组(module)命名原则 表格(Table)命名原则 字段(field)命名原则 特殊定义字段 程 ...

  5. 【实习之T100开发】Linux 学习笔记

    Linux学习 ERP系统架构 Linux 基本操作 Linux 用户管理 Linux 环境变量 Linux 显示帮助命令 Linux 文件系统 操作目录相关指令 文件类型及权限说明 文件操作 服务器 ...

  6. 韩顺平 java坦克大战_坦克大战完整版(韩顺平java)

    [实例简介] 坦克大战完整源代码(韩顺平java视频配套) [实例截图] [核心代码] 5i86q5 └── 源码 └── Class14 ├── 111.wav ├── bin │   ├── bo ...

  7. 韩顺平的php东方航空_韩顺平php视频教程

    韩顺平php从入门到精通视频教程是由知名的讲师韩顺平制作讲解的一套php基础入门教程,也是自学PHP必备的一系列教程.包含了php开山篇.html介绍.html运行原理.网上支付平台开发实例.XML编 ...

  8. 第1讲韩顺平 PHP视频教程 zend framework zend介绍 zend快速入门 韩顺平php视频教程ppt 笔记心得

    韩顺平 PHP视频教程  zend framework  PPT笔记心得 本教程贯穿了两个软件公司常用的两个项目,数据采集系统和购物车,共分20讲从本质上深入浅出的分析了zend framework运 ...

  9. 韩顺平Java学习 泛型

    目录 一.泛型的语法 1.传统的方法遍历集合存在的问题 2.使用泛型来解决传统集合添加元素带来的问题 3.泛型使用介绍 4.泛型的使用细节 5.泛型课堂练习 二.自定义泛型 1.自定义泛型类的规范 ​ ...

  10. 韩顺平java基础——坦克大战(含有线程、I\O流的讲解)

    写在最前边: 研究生一枚,为后端实习和未来工作打基础.无意间发现韩顺平老师的课程,细心细致,讲课和吴恩达老师一样,都是保姆式讲解,各种基础知识都会补充,爱了. 韩顺平老师课程地址:https://ww ...

最新文章

  1. mysql数据库常见错误码大全
  2. 官宣:神策数据证券行业解决方案,全新上线官网!
  3. c# 睡眠3秒_C#中的闭包和意想不到的坑
  4. springMvc的一些简介 和基于xml的handlerMapping基本流程
  5. java 前端导出exvel_使用纯前端做的Excel导出了解一下
  6. 向mvc controller传递json数组
  7. 配置nginx直接使用webpack生成的gz压缩文件
  8. ad17 pcb扇孔_PCB设计中为什么需要先进行扇孔
  9. 易语言客户端请求http_HTTP的重点问题
  10. 安装Visual Studio 2008系统要求
  11. 一款免费且强大的gif动画录制工具,再也不愁录动画!
  12. 如何处理给MacBook安装win10双系统时拷贝windows安装文件出错?
  13. 早餐吃菠萝好吗 早上可以吃菠萝吗
  14. 小程序接口加密时去除昵称数据含有的reshuffle表情(例如emoji)
  15. 015:苹果和虫子2
  16. 关于Java面试,你应该准备这些知识点
  17. (无Xcode)Mac OS X中解决 make,gcc等命令找不到
  18. 细胞分裂3[详细剧情过关动画与任务布置详尽翻译]by kuangtian
  19. 微信朋友圈输入框加发送测试用例总结
  20. 如何解决数据关联查询

热门文章

  1. 倍福--编码器模块的使用
  2. 一个人做饭有哪些推荐?
  3. 父与子一起学python3_父与子的编程之旅:与小卡特一起学python
  4. 使用PickerView
  5. java环境安装菜鸟教程,Java基础教程---JDK的安装和环境变量的配置
  6. 安装使用反编译工具ILSPY
  7. python下载显示文件丢失_python27.dll是什么文件|python27.dll丢失修复下载32/64位
  8. matlab混合copula,​MATLAB实战—最优Copula函数的选择
  9. 振动噪声测试分析软件,DASP-V11工程版 振动噪声应变冲击
  10. Python实现代码雨效果