这段时间参与了一些些4GL语言+T100程序的设计开发,作为一个4GL和T100的小白,在我遇到问题的时候我以为我能够在网上找到很好的参考资料和前辈们留下的经验分享,结果在网上一搜,关于4GL语言和T100程序设计开发的资料少之又少。因此我在开发过程中,从一个新手的角度写了一些开发步骤和常见的操作,希望能留给以后参与T100开发的人:


参与T100开发前,先熟悉T100常见的几个基本命名:

  1. 利用命令 r.r  azzi900 新建一个程序编号;
  2. 利用命令 r.r  adzi800 建立一张开发需求单;
  3. 利用命令 r.r  azzi910 维护作业编号;
  4. 利用命令 r.r  azzi850 维护程序运行权限;
  5. 利用命令r.r  adzi140或者r.t数据表设计器(建立表格、模块选择CIT)

新建表格:

  1. r.t打开表格设计器,新建一个表格,选择相应的开发需求单和模组,对表格添加字段并且设置相应属性;
  2. 设置相应的主外键关系,外键设置时需要注意对应的位置关系;
  3. 一般表格设计需要拖入grpB(基础资料档),里面包含异动资讯的相关字段;
  4. 表格新建完成后需要执行异动,异动之后才会成为真正的表格;
  5. 异动之后需要选择DBA的前三项(产出资料表刚要、清单、结构与规格设定)

 新增程序的开发流程:

  1. 在azzi900 新建一个程序编号;(输入程序编号即可)
  2. 在adzi800 建立一张开发需求单;(输入在azzi900新建的作业编号,需求,新建人。在作业开发添加项次1和作业编号,其余为tiptop)
  3. 回到T100设计器,选择“下载规格”,查找到刚建立的程序编号,并使用对应的开发需求单,签出规格及代码;(画面及代码)
  4. 回到T100设计器,选择“常用工具”->“画面产生器”,录入程序编号,选择样板类型;
  5. 到字段设置中,选择数据来源表,并选择需要的栏位到右边;
  6. 生成画面;
  7. 回到T100设计器,下载画面规格,并按需求调整,上传画面规格;
  8. 回到T100设计器,选择下载程序,然后下载代码到本地;
  9. 按需求调整代码,并上传;
  10. 打开azzi910,维护作业编号(输入作业编号即可);
  11. 打开azzi850,维护程序的运行权限,在“职能角色编号”输入admin搜索出所有作业编号,然后在基本数据中双击添加自己的编号 ;

根据以上步骤进行操作以后,一个新建程序基本已经完成了,接下来讲讲常用的操作:

开窗:

  1. 先在画面中将控件属性设置为允许开窗(右键对应字段开启)
  2. 在T100设计器中,打开“开窗设计器”并设计好窗体信息,写好sql语句;(此步骤可以参考其它开窗设计器来做)
  3. 在construct函数和input函数下的ON ACTION controlp INFIELD xxxxxxx字段中添加开窗逻辑:

construct函数:(程序在查询的时候会调用此开窗逻辑)

INITIALIZE g_qryparam.* TO NULL
LET g_qryparam.state = 'c'           #'c'代表此窗体为复选框
LET g_qryparam.reqry = FALSE
CALL q_imaf001()                            #调用设计好的窗体
DISPLAY g_qryparam.return1 TO psamuc002     #将窗体的回传值显示在画面对应的字段栏位中
NEXT FIELD psamuc002                        #鼠标定位至对应的字段栏位中

input函数:(程序在新增的时候会调用此开窗逻辑)

INITIALIZE g_qryparam.* TO NULL
LET g_qryparam.state = 'i'                   #'i'代表此窗体为单选框
LET g_qryparam.reqry = FALSE
CALL q_imaf001()                        #调用设计好的窗体
LET g_psamuc_d[l_ac].psamuc002 = g_qryparam.return1         #将开窗的回传值保存
DISPLAY g_psamuc_d[l_ac].psamuc002 TO psamuc002             #将回传值显示到画面上
NEXT FIELD psamuc002                                #鼠标定位至某一栏位

程序设计中,需要对某一字段添加错误信息提示:

INITIALIZE g_errparam TO NULL
LET g_errparam.extend = "警告:"       #错误信息的前缀
LET g_errparam.code = 'aap-00113'      #错误信息代码,在常用工具->错误讯息维护作业中添加
LET g_errparam.popup = FALSE           #错误信息是否需要弹框(false不用,true则有)
CALL cl_err()
NEXT FIELD CURRENT  

R作业进行打印时的操作顺序和步骤:

  • 1.生成画面后,进azzi901生成报表元件,后面改名_g01;
  • 2.签出报表元件;
  • 3.进入adzp188进行报表元件设计:添加资料表,添加字段,改变群组;
  • 4.设置参数:参数说明:where condition 参数编号:tm.wc;对单头单身排版;
  • 5.生成样板和元件(未来只需要改变元件);
  • 6.下载xxxxxx_g01,修改xxxxxx_g01_sel_prep 的g_where参数,如:
#add-point:sel_prep g_order name="sel_prep.g_order"
LET g_where = " WHERE itchucent = itciucent AND itchucdocno = itciucdocno"," AND itciuc001 = itcguc001"," AND ",tm.wc CLIPPED
  • 7.在主程序里面的process中增加一下代码:
IF cl_null(g_master.wc) THENCALL l_arg.clear()LET l_token = base.StringTokenizer.create(ls_js,",")LET l_cnt = 1WHILE l_token.hasMoreTokens()LET ls_next = l_token.nextToken()LET l_arg[l_cnt] = ls_nextLET l_cnt = l_cnt + 1END WHILECALL l_arg.deleteElement(l_cnt)LET  g_master.wc = l_arg[01]
ELSELET g_master.wc = g_master.wc,"#AND#apcaent#=#",g_enterprise
END IF
CALL citr112_g01(g_master.wc)
  • 8.上传,并下载GR样板;
  • 9.用Genero Studio打开样板里面的第一个4rp文件;
  • 10.档案→纸张设定,调整间距;
  • 11.在R里面作业call改元件;
  • 12.adzp188可以设置打印出来的排序,一般为单号排序,可以增加项次排序。

程序过单:

  1. 在adzi800中找到自己的开发需求单,在构建清单中有自己程序和画面的签出状态;
  2. 打开adzi888,根据adzi800中的需求单,根据该需求单,新增一条程序注册数据,在数据清单中依次将操作过的作业、条件输入;(如果是一个新增程序,则需要将作业azzi900、azzi910、azzi902,azzi903等都需要写入,新增的表格则将表格写入adzi150;如果有ACC应用分类码,则将azzi650写入,并将分类码写在对应的Key值上,如果新增了SCC码,则将azzi600写入,并将对于的码值写入Key值中)
  3. 在完成程序的构建清单和资料清单填写后,在adzi800当前需求单的状态下,整单操作、导出设计及设置数据将文件保存到本地目录中;
  4. 连接VPN,只有连接了VPN才能将程序过单到目的服务器中;
  5. XShell中连接需要过单的目的服务器;
  6. 在目的服务器中,打开adzi800,整单操作、导入设计及设置数据;
  7. 导入过程完成解压操作即可,加压完成,此作业顺利将过单。

T100开发常用固定变量:

  • g_enterprise 目前的企業代碼,將限制使用者所能閱讀的資料內容
  • g_prog 目前執行的作業編號,用於變換畫面顯示資料與產生系統資訊,不可變更
  • g_code 目前執行的程式代碼(4gl)名稱,不可變更
  • g_user 目前使用者代碼,將紀錄使用者的操作歷程與權限控制,不可變更
  • g_qryparam 動態開窗查詢函式資料傳遞變數,使用開窗功能時須先給予相關變數
  • g_dlang 目前使用者所選取的資料多語言語系代碼,可透過工具進行語系設定
  • g_site 目前的營運據點名稱,可透過切換讀取不同據點的資料
  • g_errparam 錯誤代碼傳遞變數,透過此變數可控制錯誤代碼的顯示內容與模式
  • g_bgjob 該支程式是否以背景模式執行
  • g_today 今日

T100开发常用变量命名规则:

  • 企业   xxxxent
  • 门店   xxxxsite
  • 人员   xxxxid
  • 部门   xxxxdp
  • 法人   xxxxcomp
  • 项次   xxxxseq
  • 项序   xxxxseq1
  • 状态码 xxxxstus
  • 帐别   xxxxld
  • 单号   xxxxdocno

T100开发常用作业:

  • artt300    imba_t    artm300 物料基础信息 imaa_t
  • ainq100 库存查询作业
  • apmt801  pmba_t    apmm801 交易对象基础信息 pmaa_t
  • aooi100 门店或者组织 ooef_t
  • agli010 法人和帐别 glaa_t
  • apmt500 采购
  • adbt500 销售

T100目录:

  • topprd:正式区
  • toptst:测试区
  • topstd:标准区
  • toppth:验证区

常用Shell操作命令:

  • r.c:编译程序,需在4gl路径之下执行,产生的42m会自动搬至该目录下;
  • r.cs:为小程序测试用,产生的42m仍在4gl目录下;
  • r.l:打包可执行档或共享程序档(42r、42x) ;
  • r.l:xxx ALL 修改子程序/元件,或调整r.q设定后;建议手动执行此指令,将相关呼叫的主程序一并扫出并重新Link;
  • r.f:编译程序画面;
  • r.p:预览程序画面;
  • r.r:运行作业(可以进行模糊查询:1.根据程序编号进行模糊查询(如:r.r axrp);2.根据程序中文说明进行模糊查询(如:r.r 重评价))
  • r.rd:执行作业后,若SQL错误则会留下 log档;
  • r.d:Debug工具;
  • r.dg:Debug工具 原厂DEBUG功能(r.d出错时使用;测试传参时使用);
  • r.s:产生档案 SCHEMA 的工具;
  • rebuild:系统重建编译;

常用T100固定函数调用:

  • cl_set_combo_scc(栏位名称,系统分类码) 下拉框选项,在azzi600里面进行设置
  • cl_set_combo_scc_part(栏位名称,系统分类码,系统分类码值)  azzi600里面的单身
  • cl_set_comp_visible(栏位名称,TRUE/FALSE) 判断栏位是否显示
  • cl_set_toolbaritem_visible("open_apmt500_01",TRUE) 是否打开子程序
  • cl_get_para(g_enterprise,g_site,参数编号) 判断据点参数 “参数编号”在azzi993里面设置
  • cl_set_comp_att_text('pmdldocno',错误信息) 错误信息
  • cl_set_act_visible("accept,cancel", FALSE) 功能隐藏

4GL+T100程序设计开发常用方法、技巧总结相关推荐

  1. 《Python程序设计开发宝典》全面上架(新书超低价优惠+转发积攒送书)

    活动详情 1.转发积攒赠书.自2017年8月18日起,至2017年8月21日结束,为期4天,连续4天转发本文到到微信朋友圈,积攒总数超过200个以上,2017年8月22日上午12点之前将朋友圈截图发送 ...

  2. 2021-2022年小学期 程序设计开发实践 随堂笔记

    作者:筱柒_Littleseven 2022/08/08 Class1 对于数据结构的理解 首先对于程序编写和项目开发来说,主要的部分是对于数据的储存.处理分析的过程,而并非仅仅通过学习过的语法知识完 ...

  3. 日常安排php,PHP日常开发小技巧

    PHP日常开发小技巧 导语:PHP语言中,如果你懂得一些开发技巧,那么对你学PHP,会有很大的帮助.下面的是百分网小编为大家整理的PHP日常开发小技巧,希望对你能有所帮助. PHP批量取得checkb ...

  4. Silverlight 游戏开发小技巧:动感小菜单2

    Silverlight 游戏开发小技巧:动感小菜单2 动感小菜单其实是想模仿Apple的菜单按钮设计制作,但是画虎不成反类犬,看起来有点别扭,昨天各位园友提了这方面的建议,感觉太硬如果加入动画可能更好 ...

  5. Silve“.NET研究”rlight 游戏开发小技巧:传说中的透视跑马灯

    昨夜元宵佳节,各种灯会热闹非凡,伴随烟火灿烂好不热闹,可惜一点也没看着T_T,那就写一个跑马灯吧,可是跑马灯并不稀奇,各位高手们已经写过而且都各有特点,所以,写也要写点有特色的才好,游戏中经常能看到一 ...

  6. 一起谈.NET技术,Silverlight 游戏开发小技巧:动感小菜单

    网页应用受限于自身的浏览器范畴,不能把华丽效果完全展示,正是因为如此,在网页上诞生了无数绚丽的设计,虽然动感程度和桌面应用无法比拟,但是在UI上却下足了功夫,用户体验可以说无以伦比,比如说小小的菜单, ...

  7. Silverlight 游戏开发小技巧:轨迹跟随效果

    Silverlight 游戏开发小技巧:轨迹跟随效果 我们通常在游戏中有各种各样的粒子效果,其中有一种就是跟随鼠标发生的轨迹动画,在鼠标经过的地方会产生一些特效,这种方式我们在粒子当中经常使用,本篇使 ...

  8. JavaScript开发优化技巧

    JavaScript开发优化技巧 1.按字符串属性值对对象数组进行排序 可以通过不同的方式来完成. 1).使用Underscore _.sortBy(collection, [iteratees=[_ ...

  9. 数组反向遍历ios_iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式

    iOS开发实用技巧-Objective-C中的各种遍历(迭代)方式 说明: 1)该文简短介绍在iOS开发中遍历字典.数组和集合的几种常见方式. 2)该文对应的代码可以在下面的地址获得:https:// ...

最新文章

  1. UNIX创建临时文件
  2. [Linux实用工具]munin-node插件配置和插件编写
  3. WebSocket——stomp连接错误[Whoops! Lost connection to XXX]解决方案
  4. .NET Core 3.1 编写混合 C++ 程序
  5. linux上dig命令,Linux dig命令(示例代码)
  6. Jmeter吞吐量控制器详解
  7. HALCON 21.11:深度学习笔记---有监督训练(6)
  8. 【COGS 1873】 [国家集训队2011]happiness(吴确) 最小割
  9. eja智能压力变送器工作原理_EJA智能压力变送器
  10. 尚硅谷宋红康java基础学习笔记
  11. 将图片转为CAD的方法
  12. JAVAWEB-NOTE03
  13. ftp客户端中文乱码问题解决
  14. IDEA安装及破解永久版教程————鹏鹏
  15. Eclipse安装Kotlin插件后,新建找不到Kotlin文件
  16. c语言 派生,继承和派生
  17. iOS 生成二维码 原生代码
  18. 一些基于新闻表示和用户表示的新闻推荐模型总结:NPA/ NAML/ LSTUR/ NRMS
  19. Python的字符串比较
  20. 重新排列数组[数组] 给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,...,xn,y1,y2,...,yn] 的格式排列。请你将数组按 [x1,y1,x2,y2,...,x

热门文章

  1. Unity中的数学基础——矩阵
  2. restTemplate请求设置请求头信息
  3. 每日十道面试题(五)
  4. 使用AVPlayer遇到的那些坑
  5. POJ 1088 滑雪(输出对比)
  6. 【数字信号处理】Python离散信号卷积的代码实现/时域直接法/列表法/信号与系统
  7. Coder HDU - 4288
  8. Apache2.4 下载和安装 - Win10
  9. 详解美股中的几种交易单-限价单、市价单、止损单、止损限价单、跟踪止损单
  10. 导热材料在电子产品散热系统中的重要性