这段时间参与了一些些4GL语言+T100程序的设计开发,作为一个4GL和T100的小白,在我遇到问题的时候我以为我能够在网上找到很好的参考资料和前辈们留下的经验分享,结果在网上一搜,关于4GL语言和T100程序设计开发的资料少之又少。因此我在开发过程中,从一个新手的角度写了一些开发步骤和常见的操作,希望能留给以后参与T100开发的人:
参与T100开发前,先熟悉T100常见的几个基本命名:
- 利用命令 r.r azzi900 新建一个程序编号;
- 利用命令 r.r adzi800 建立一张开发需求单;
- 利用命令 r.r azzi910 维护作业编号;
- 利用命令 r.r azzi850 维护程序运行权限;
- 利用命令r.r adzi140或者r.t数据表设计器(建立表格、模块选择CIT)
新建表格:
- r.t打开表格设计器,新建一个表格,选择相应的开发需求单和模组,对表格添加字段并且设置相应属性;
- 设置相应的主外键关系,外键设置时需要注意对应的位置关系;
- 一般表格设计需要拖入grpB(基础资料档),里面包含异动资讯的相关字段;
- 表格新建完成后需要执行异动,异动之后才会成为真正的表格;
- 异动之后需要选择DBA的前三项(产出资料表刚要、清单、结构与规格设定)
新增程序的开发流程:
- 在azzi900 新建一个程序编号;(输入程序编号即可)
- 在adzi800 建立一张开发需求单;(输入在azzi900新建的作业编号,需求,新建人。在作业开发添加项次1和作业编号,其余为tiptop)
- 回到T100设计器,选择“下载规格”,查找到刚建立的程序编号,并使用对应的开发需求单,签出规格及代码;(画面及代码)
- 回到T100设计器,选择“常用工具”->“画面产生器”,录入程序编号,选择样板类型;
- 到字段设置中,选择数据来源表,并选择需要的栏位到右边;
- 生成画面;
- 回到T100设计器,下载画面规格,并按需求调整,上传画面规格;
- 回到T100设计器,选择下载程序,然后下载代码到本地;
- 按需求调整代码,并上传;
- 打开azzi910,维护作业编号(输入作业编号即可);
- 打开azzi850,维护程序的运行权限,在“职能角色编号”输入admin搜索出所有作业编号,然后在基本数据中双击添加自己的编号 ;
根据以上步骤进行操作以后,一个新建程序基本已经完成了,接下来讲讲常用的操作:
开窗:
- 先在画面中将控件属性设置为允许开窗(右键对应字段开启)
- 在T100设计器中,打开“开窗设计器”并设计好窗体信息,写好sql语句;(此步骤可以参考其它开窗设计器来做)
- 在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) THEN
CALL l_arg.clear()
LET l_token = base.StringTokenizer.create(ls_js,",")
LET l_cnt = 1
WHILE l_token.hasMoreTokens()
LET ls_next = l_token.nextToken()
LET l_arg[l_cnt] = ls_next
LET l_cnt = l_cnt + 1
END WHILE
CALL l_arg.deleteElement(l_cnt)
LET g_master.wc = l_arg[01]
ELSE
LET 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可以设置打印出来的排序,一般为单号排序,可以增加项次排序。
程序过单:
- 在adzi800中找到自己的开发需求单,在构建清单中有自己程序和画面的签出状态;
- 打开adzi888,根据adzi800中的需求单,根据该需求单,新增一条程序注册数据,在数据清单中依次将操作过的作业、条件输入;(如果是一个新增程序,则需要将作业azzi900、azzi910、azzi902,azzi903等都需要写入,新增的表格则将表格写入adzi150;如果有ACC应用分类码,则将azzi650写入,并将分类码写在对应的Key值上,如果新增了SCC码,则将azzi600写入,并将对于的码值写入Key值中)
- 在完成程序的构建清单和资料清单填写后,在adzi800当前需求单的状态下,整单操作、导出设计及设置数据将文件保存到本地目录中;
- 连接VPN,只有连接了VPN才能将程序过单到目的服务器中;
- XShell中连接需要过单的目的服务器;
- 在目的服务器中,打开adzi800,整单操作、导入设计及设置数据;
- 导入过程完成解压操作即可,加压完成,此作业顺利将过单。
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) 功能隐藏
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
转载请注明:赫非域 » 4GL+T100程序设计开发常用方法、技巧总结