ERP查询Q报表开发代码
一,按照一般ERP开发流程可参考ERP开发流程,直到下载程序。
当我们的查询页签存在栏位需要判断或者特殊处理时,在global中的自定义模组变数下添加,例如:
1 #add-point:自定義模組變數-客製(Module Variable) name="global.variable_customerization"
2
3 DEFINE g_first_flag LIKE type_t.num5
4 PRIVATE TYPE type_master RECORD
5 startdate LIKE type_t.dat,
6 enddate LIKE type_t.dat
7 END RECORD
8 DEFINE g_master type_master
9
10 #end add-point
init下是对页面初始化,在页面资产初始化可以对栏位赋初值,设置下拉框等
#add-point:畫面資料初始化 name="init.init"
LET g_first_flag = TRUE
LET g_master.startdate = ''
LET g_master.enddate = ''
## CALL cpmq700_cre_tmp_table()
#end add-point #或者 #add-point:畫面資料初始化 name="init.init"
CALL cl_set_combo_scc_part('b_imaaud001','18006','1,2') #b_imaaud001代表那个页面栏位,18006是下拉框代码
LET g_first_flag = TRUE
#end add-point
ui_dialog下搜索DIALOG ATTRIBUTES,里面添加栏位的逻辑。可参考filter下的栏位逻辑。
CONSTRUCT BY NAME g_wc ON imaastus,imaa001,imaal003,imaal004,imaa009,imaa003,imaa010,imaa004,imaaud001,imaaud006
BEFORE CONSTRUCT
ON ACTION controlp INFIELD imaastus
ON ACTION controlp INFIELD imaa001
INITIALIZE g_qryparam.* TO NULL
LET g_qryparam.state = 'c'
LET g_qryparam.reqry = FALSE
CALL q_imaa001() #呼叫開窗
DISPLAY g_qryparam.return1 TO imaa001 #顯示到畫面上
NEXT FIELD imaa001 #返回原欄位
ON ACTION controlp INFIELD imaal003
ON ACTION controlp INFIELD imaal004
ON ACTION controlp INFIELD imaa009
INITIALIZE g_qryparam.* TO NULL
LET g_qryparam.state = 'c'
LET g_qryparam.reqry = FALSE
CALL q_rtax001() #呼叫開窗
DISPLAY g_qryparam.return1 TO imaa009 #顯示到畫面上
NEXT FIELD imaa009 #返回原欄位
ON ACTION controlp INFIELD imaa003
INITIALIZE g_qryparam.* TO NULL
LET g_qryparam.state = 'c'
LET g_qryparam.reqry = FALSE
CALL q_imca001_1() #呼叫開窗
DISPLAY g_qryparam.return1 TO imaa003 #顯示到畫面上
NEXT FIELD imaa003 #返回原欄位
ON ACTION controlp INFIELD imaa010
INITIALIZE g_qryparam.* TO NULL
LET g_qryparam.state = 'c'
LET g_qryparam.reqry = FALSE
CALL q_imaa010_1() #呼叫開窗
DISPLAY g_qryparam.return1 TO imaa010 #顯示到畫面上
NEXT FIELD imaa010 #返回原欄位
ON ACTION controlp INFIELD imaa004
ON ACTION controlp INFIELD imaaud001
ON ACTION controlp INFIELD imaaud006
END CONSTRUCT
ui_dialog下搜索accept,对判断点击后变量赋值
LET g_first_flag = FALSE
b_fill下搜索b_fill.array_clear,在里面添加调用函数的逻辑
IF g_first_flag THEN
RETURN
ELSE
LET ls_wc = cl_replace_str(ls_wc,'1=2','1=1')
CALL cimq200_b_fill_sc(ls_wc)
RETURN
END IF
写自己的方法
PRIVATE FUNCTION cimq200_b_fill_sc(p_wc)
DEFINE p_wc STRING
DEFINE l_sql STRING CALL g_imaa_d.clear()
LET g_cnt = l_ac
IF g_cnt = 0 THEN
LET g_cnt = 1
END IF
LET l_ac = 1 LET l_sql = " SELECT 0 imaaseq,imaastus,imaa001,imaal003, ",
" imaal004,imaa009,rtaxl003,imaa003, ",
" a.oocql004,imaa004,imaa010,b.oocql004 oocql010,imaa006,imaaud001, ",
" imaaud004,imaaud006,imaaud011 ",
" FROM imaa_t ",
" LEFT JOIN imaal_t ON imaa001=imaal001 AND imaaent=imaalent AND imaal002 = '",g_dlang,"'",
" LEFT JOIN rtaxl_t ON imaa009=rtaxl001 AND imaaent=rtaxlent AND rtaxl002 = '",g_dlang,"'",
" LEFT JOIN oocql_t a ON imaa003=a.oocql002 AND imaaent=a.oocqlent AND a.oocql001 = '200' AND a.oocql003 = '",g_dlang,"'",
" LEFT JOIN oocql_t b ON imaa010=b.oocql002 AND imaaent=b.oocqlent AND b.oocql001 = '210' AND b.oocql003 = '",g_dlang,"'",
" WHERE imaaent = ",g_enterprise,
" AND ",p_wc CLIPPED
DISPLAY l_sql
PREPARE cimq200_b_fill_cs_pre FROM l_sql
DECLARE cimq200_b_fill_cs_cur CURSOR FOR cimq200_b_fill_cs_pre
FOREACH cimq200_b_fill_cs_cur INTO g_imaa_d[l_ac].* #加项次
LET g_imaa_d[l_ac].imaaseq=l_ac
#料件属性显示汉字代替
CASE g_imaa_d[l_ac].imaaud001
WHEN 1
LET g_imaa_d[l_ac].imaaud001 = '五金'
WHEN 2
LET g_imaa_d[l_ac].imaaud001 = '注塑'
END CASE
#料件是否关键物料
CASE g_imaa_d[l_ac].imaaud006
WHEN 'Y'
LET g_imaa_d[l_ac].imaaud006 = '是'
WHEN 'N'
LET g_imaa_d[l_ac].imaaud006 = '否'
END CASE
LET l_ac = l_ac + 1 END FOREACH CALL g_imaa_d.deleteElement(g_imaa_d.getLength()) #add-point:陣列長度調整 name="b_fill.array_deleteElement" #end add-point LET g_error_show = 0 LET g_detail_cnt = g_imaa_d.getLength()
LET l_ac = g_cnt
LET g_cnt = 0 #調整單身index指標,避免翻頁後指到空白筆數
CALL cimq200_detail_index_setting() #重新計算單身筆數並呈現
# CALL cimq200_detail_action_trans() #(ver:36) mark LET l_ac = 1
IF g_imaa_d.getLength() > 0 THEN
CALL cimq200_b_fill2()
END IF CALL cimq200_detail_action_trans() #(ver:36) END FUNCTION
ERP查询Q报表开发代码的更多相关文章
- 解析大型.NET ERP系统 窗体、查询、报表二次开发
详细介绍Enterprise Solution 二次开发的流程步骤,主要包括数据输入窗体(Entry Form),查询(Query/Enquiry),报表(Report)三个重要的二次开发项目. 数据 ...
- T100——查询 r类 报表开发流程
报表开发流程:1.建立入口程序 如r类的作业:cxmr500步骤: azzi900中建立程序代号 azzi910中建立作业代号 设计器--规格--签出 设计器--程序--签出 adzp168(r.a) ...
- python 全栈开发,Day74(基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询)
昨日内容回顾 # 一对多的添加方式1(推荐) # book=Book.objects.create(title="水浒传",price=100,pub_date="164 ...
- (转)python 全栈开发,Day74(基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询)
昨日内容回顾 # 一对多的添加方式1(推荐) # book=Book.objects.create(title="水浒传",price=100,pub_date="164 ...
- 犀利的报表系统,发票据与报表开发的快速利器,AgileEAS.NET SOA中间件GReport使用指南
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- ReportingServies——SQLServer报表开发综合实例
如果我们安装了sqlserver2008 R2,将会自动安装一个报表开发工具 不要以为此报表开发工具只适合于sqlserver2008,其实在sqlserver2012中也是支持的,事实上我现在项目中 ...
- 利用JasperReport+iReport进行Web报表开发
用JasperReport+iReport进行Web报表开发 序言 在非常多实际的项目里,报表都是当中十分重要的组成部分,比如把查询结果以报表的形式呈现出来.这里所提到的报表可不是简单的二维表,而是拥 ...
- AMDP + XSLX Workbench 报表开发模式
本文介绍了我和同事通过使用AMDP + XSLX Workbench缩短报表开发周期.分离数据查询处理逻辑和前端展示工作的经验.欢迎讨论. 前言 最近接到了一套人力资源报表的开发需求,需要以EXCEL ...
- AMDP + XLSX Workbench 报表开发模式
本文介绍了我和同事通过使用AMDP + XLSX Workbench缩短报表开发周期.分离数据查询处理逻辑和前端展示工作的经验.欢迎讨论. 前言 最近接到了一套人力资源报表的开发需求,需要以EXCEL ...
- ActiveReport系列报表开发随笔收集
转自:博客园 http://www.cnblogs.com/dahuzizyd/archive/2007/04/11/ActiveReport_All.html 使用ActiveReport for ...
随机推荐
- Springfox与SpringDoc——swagger如何选择(SpringDoc入门)
本文分享自天翼云开发者社区@<Springfox与SpringDoc--swagger如何选择(SpringDoc入门)>,作者: 才开始学技术的小白 0.引言 之前写过一篇关于swagg ...
- zookeeper重启,线上微服务全部掉线,怎么回事?
注册中心zookeeper被重启,线上微服务全部掉线,怎么回事?! 最近因为一次错误的运维操作,导致线上注册中心zk被重启.而zk重启后发现所有线上微服务开始不断掉线,造成了持续30分钟的P0故障. ...
- 【Git GitHub Idea集成】
1 Git介绍 分布式版本控制工具 VS 集中式版本控制工具 git是一个免费开源的分布式版本控制系统,可以快速高效地处理从小型到中型的各种项目. 1.1 Git进行版本控制 集中式版本控制工具:如C ...
- Vue上传XLS文件
data() { return { tableData:[] } }, //原生JS+XLSX包实现 xls文件上传 methods: { //上传excel表格文件 uploadHandler(da ...
- vue中通过$emit实现子向父通信
本篇讨论vue中使用$emit实现子向父通信, 第一步:我们在父组件中注册子组件,然后再给子组件标签添加一个自定义事件监听,这样在子组件实例上就绑定了一个自定义的事件add. 后面如果触发add事件, ...
- 关于Java中代码的执行顺序
结论 注意 只有显式的加载类 JVM才会加载到内存中 先加载父类的静态代码块 然后执行子类静态代码块 当前类存在类静态变量注意引用类型没进行赋值操作初始化为null 并不会显式的加载类又存在静态代码块 ...
- Python工具箱系列(三十)
PostgreSQL MySQL的口号是"世界上最流行的开源关系型数据库",而PostgreSQL的Slogan则是"世界上最先进的开源关系型数据库(PostgreSQL ...
- 2020-09-16:谈谈TCP的控制位?
福哥答案2020-09-16:#福大大架构师每日一题# 福哥口诀法:紧确推和复同终(紧急位URG,确认位ACK,推送位PSH,复位位RST,同步位SYN,终止位FIN). [答案来自此链接](http ...
- 2021-04-30:一条直线上有居民点,邮局只能建在居民点上。给定一个有序正数数组arr,每个值表示 居民点的一维坐标,再给定一个正数 num,表示邮局数量。选择num个居民点建立num个 邮局,使
2021-04-30:一条直线上有居民点,邮局只能建在居民点上.给定一个有序正数数组arr,每个值表示 居民点的一维坐标,再给定一个正数 num,表示邮局数量.选择num个居民点建立num个 邮局,使 ...
- 2021-11-15:四数相加 II。给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0 <= i,
2021-11-15:四数相加 II.给你四个整数数组 nums1.nums2.nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0 <= ...