报表开发流程:
1、建立入口程序 如r类的作业:cxmr500
步骤:
azzi900中建立程序代号
azzi910中建立作业代号
设计器--规格--签出
设计器--程序--签出
adzp168(r.a)产生画面
设计器--规格--下载规格--修改规格--上传规格
设计器--程序--下载程序--修改程序--上传程序
azzi850中给程序赋权限
范例cxmr503,r.a后,画面等内容弄好后,代码上call报表子程序,具体见:
主要关注cxmr503_process函数:
#add-point:process段前處理
IF cl_null(g_master.wc) THEN
LET g_master.wc = '1=1'
END IF
LET g_master.wc = g_master.wc CLIPPED," AND xmdastus = 'Y' AND xmdaent = ",g_enterprise," AND xmdasite = '",g_site,"'"
CALL cxmr503_x01(g_master.wc)
#end add-point
注意CALL cxmr503_x01(g_master.wc),这里要和cxmr503_x01里面的参数一致,一个就传入一个,两个就传入两个;
g_master.wc 是根据用户所选的条件进行组织(如CONSTRUCT),传入到cxmr503_x01后还会进行处理。
在cxmr500的process函数中调用报表元件的代号,上传r类的程序;
然后就可以执行cxmr500,根据选择的条件进行打印。
到cxmr503_x01:
查询报表、凭证报表开发流程
azzi901 中建立报表的元件代号
查询报表x01结尾 例如:cxmr500_x01 如有多个:cxmr500_x02,cxmr500_x03 以此类推
凭证报表g01结尾 例如:cxmr500_g01 如有多个:cxmr500_g02,cxmr500_g03 以此类推
设计器--规格--签出
设计器--程序--签出
adzp188(报表元件设计器)中输入报表元件代号
根据需求选择报表类型、纸张设定(凭证报表才需要)、资料表、栏位、群组、筛选、参数、排版
产生4gl、产生4rp(凭证报表才需要)
设计器--程序--下载--上传
设计器--gr样板--下载样板--通过genero 打开--上传4rp
范例cxmr503_x01,具体见下截图:
生成报表元件(4gl)后,下载程序,代码需要修改:
#add-point:sel_prep g_order name="sel_prep.g_order"
LET g_where = " WHERE xmdaent=xmdcent AND xmdadocno=xmdcdocno ",
" AND xmdcent=imaalent AND xmdc001=imaal001 AND imaal002='",g_dlang,"'",
" AND xmda_t.xmdastus = 'Y' AND ",tm.wc CLIPPED
#end add-point
另外,我们可以在azzi300 里面给查询报表的格式进行相关设置:
效果: