一,按照一般ERP开发流程可参考ERP开发流程,直到下载程序。

当我们的查询页签存在栏位需要判断或者特殊处理时,在global中的自定义模组变数下添加,例如:

  1. 1 #add-point:自定義模組變數-客製(Module Variable) name="global.variable_customerization"
  2. 2
  3. 3 DEFINE g_first_flag LIKE type_t.num5
  4. 4 PRIVATE TYPE type_master RECORD
  5. 5 startdate LIKE type_t.dat,
  6. 6 enddate LIKE type_t.dat
  7. 7 END RECORD
  8. 8 DEFINE g_master type_master
  9. 9
  10. 10 #end add-point

init下是对页面初始化,在页面资产初始化可以对栏位赋初值,设置下拉框等

  1. #add-point:畫面資料初始化 name="init.init"
  2. LET g_first_flag = TRUE
  3. LET g_master.startdate = ''
  4. LET g_master.enddate = ''
  5. ## CALL cpmq700_cre_tmp_table()
  6. #end add-point
  7.  
  8. #或者
  9.  
  10. #add-point:畫面資料初始化 name="init.init"
  11. CALL cl_set_combo_scc_part('b_imaaud001','18006','1,2') #b_imaaud001代表那个页面栏位,18006是下拉框代码
  12. LET g_first_flag = TRUE
  13. #end add-point

ui_dialog下搜索DIALOG ATTRIBUTES,里面添加栏位的逻辑。可参考filter下的栏位逻辑。

  1. CONSTRUCT BY NAME g_wc ON imaastus,imaa001,imaal003,imaal004,imaa009,imaa003,imaa010,imaa004,imaaud001,imaaud006
  2.  
  3. BEFORE CONSTRUCT
  4.  
  5. ON ACTION controlp INFIELD imaastus
  6.  
  7. ON ACTION controlp INFIELD imaa001
  8. INITIALIZE g_qryparam.* TO NULL
  9. LET g_qryparam.state = 'c'
  10. LET g_qryparam.reqry = FALSE
  11. CALL q_imaa001() #呼叫開窗
  12. DISPLAY g_qryparam.return1 TO imaa001 #顯示到畫面上
  13. NEXT FIELD imaa001 #返回原欄位
  14.  
  15. ON ACTION controlp INFIELD imaal003
  16.  
  17. ON ACTION controlp INFIELD imaal004
  18.  
  19. ON ACTION controlp INFIELD imaa009
  20. INITIALIZE g_qryparam.* TO NULL
  21. LET g_qryparam.state = 'c'
  22. LET g_qryparam.reqry = FALSE
  23. CALL q_rtax001() #呼叫開窗
  24. DISPLAY g_qryparam.return1 TO imaa009 #顯示到畫面上
  25. NEXT FIELD imaa009 #返回原欄位
  26.  
  27. ON ACTION controlp INFIELD imaa003
  28. INITIALIZE g_qryparam.* TO NULL
  29. LET g_qryparam.state = 'c'
  30. LET g_qryparam.reqry = FALSE
  31. CALL q_imca001_1() #呼叫開窗
  32. DISPLAY g_qryparam.return1 TO imaa003 #顯示到畫面上
  33. NEXT FIELD imaa003 #返回原欄位
  34.  
  35. ON ACTION controlp INFIELD imaa010
  36. INITIALIZE g_qryparam.* TO NULL
  37. LET g_qryparam.state = 'c'
  38. LET g_qryparam.reqry = FALSE
  39. CALL q_imaa010_1() #呼叫開窗
  40. DISPLAY g_qryparam.return1 TO imaa010 #顯示到畫面上
  41. NEXT FIELD imaa010 #返回原欄位
  42.  
  43. ON ACTION controlp INFIELD imaa004
  44.  
  45. ON ACTION controlp INFIELD imaaud001
  46.  
  47. ON ACTION controlp INFIELD imaaud006
  48.  
  49. END CONSTRUCT

ui_dialog下搜索accept,对判断点击后变量赋值

  1. LET g_first_flag = FALSE

b_fill下搜索b_fill.array_clear,在里面添加调用函数的逻辑

  1. IF g_first_flag THEN
  2. RETURN
  3. ELSE
  4. LET ls_wc = cl_replace_str(ls_wc,'1=2','1=1')
  5. CALL cimq200_b_fill_sc(ls_wc)
  6. RETURN
  7. END IF

写自己的方法

  1. PRIVATE FUNCTION cimq200_b_fill_sc(p_wc)
  2. DEFINE p_wc STRING
  3. DEFINE l_sql STRING
  4.  
  5. CALL g_imaa_d.clear()
  6. LET g_cnt = l_ac
  7. IF g_cnt = 0 THEN
  8. LET g_cnt = 1
  9. END IF
  10. LET l_ac = 1
  11.  
  12. LET l_sql = " SELECT 0 imaaseq,imaastus,imaa001,imaal003, ",
  13. " imaal004,imaa009,rtaxl003,imaa003, ",
  14. " a.oocql004,imaa004,imaa010,b.oocql004 oocql010,imaa006,imaaud001, ",
  15. " imaaud004,imaaud006,imaaud011 ",
  16. " FROM imaa_t ",
  17. " LEFT JOIN imaal_t ON imaa001=imaal001 AND imaaent=imaalent AND imaal002 = '",g_dlang,"'",
  18. " LEFT JOIN rtaxl_t ON imaa009=rtaxl001 AND imaaent=rtaxlent AND rtaxl002 = '",g_dlang,"'",
  19. " LEFT JOIN oocql_t a ON imaa003=a.oocql002 AND imaaent=a.oocqlent AND a.oocql001 = '200' AND a.oocql003 = '",g_dlang,"'",
  20. " LEFT JOIN oocql_t b ON imaa010=b.oocql002 AND imaaent=b.oocqlent AND b.oocql001 = '210' AND b.oocql003 = '",g_dlang,"'",
  21. " WHERE imaaent = ",g_enterprise,
  22. " AND ",p_wc CLIPPED
  23. DISPLAY l_sql
  24. PREPARE cimq200_b_fill_cs_pre FROM l_sql
  25. DECLARE cimq200_b_fill_cs_cur CURSOR FOR cimq200_b_fill_cs_pre
  26. FOREACH cimq200_b_fill_cs_cur INTO g_imaa_d[l_ac].*
  27.  
  28. #加项次
  29. LET g_imaa_d[l_ac].imaaseq=l_ac
  30. #料件属性显示汉字代替
  31. CASE g_imaa_d[l_ac].imaaud001
  32. WHEN 1
  33. LET g_imaa_d[l_ac].imaaud001 = '五金'
  34. WHEN 2
  35. LET g_imaa_d[l_ac].imaaud001 = '注塑'
  36. END CASE
  37. #料件是否关键物料
  38. CASE g_imaa_d[l_ac].imaaud006
  39. WHEN 'Y'
  40. LET g_imaa_d[l_ac].imaaud006 = '是'
  41. WHEN 'N'
  42. LET g_imaa_d[l_ac].imaaud006 = '否'
  43. END CASE
  44. LET l_ac = l_ac + 1
  45.  
  46. END FOREACH
  47.  
  48. CALL g_imaa_d.deleteElement(g_imaa_d.getLength())
  49.  
  50. #add-point:陣列長度調整 name="b_fill.array_deleteElement"
  51.  
  52. #end add-point
  53.  
  54. LET g_error_show = 0
  55.  
  56. LET g_detail_cnt = g_imaa_d.getLength()
  57. LET l_ac = g_cnt
  58. LET g_cnt = 0
  59.  
  60. #調整單身index指標,避免翻頁後指到空白筆數
  61. CALL cimq200_detail_index_setting()
  62.  
  63. #重新計算單身筆數並呈現
  64. # CALL cimq200_detail_action_trans() #(ver:36) mark
  65.  
  66. LET l_ac = 1
  67. IF g_imaa_d.getLength() > 0 THEN
  68. CALL cimq200_b_fill2()
  69. END IF
  70.  
  71. CALL cimq200_detail_action_trans() #(ver:36)
  72.  
  73. END FUNCTION

ERP查询Q报表开发代码的更多相关文章

  1. 解析大型.NET ERP系统 窗体、查询、报表二次开发

    详细介绍Enterprise Solution 二次开发的流程步骤,主要包括数据输入窗体(Entry Form),查询(Query/Enquiry),报表(Report)三个重要的二次开发项目. 数据 ...

  2. T100——查询 r类 报表开发流程

    报表开发流程:1.建立入口程序 如r类的作业:cxmr500步骤: azzi900中建立程序代号 azzi910中建立作业代号 设计器--规格--签出 设计器--程序--签出 adzp168(r.a) ...

  3. python 全栈开发,Day74(基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询)

    昨日内容回顾 # 一对多的添加方式1(推荐) # book=Book.objects.create(title="水浒传",price=100,pub_date="164 ...

  4. (转)python 全栈开发,Day74(基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询)

    昨日内容回顾 # 一对多的添加方式1(推荐) # book=Book.objects.create(title="水浒传",price=100,pub_date="164 ...

  5. 犀利的报表系统,发票据与报表开发的快速利器,AgileEAS.NET SOA中间件GReport使用指南

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  6. ReportingServies——SQLServer报表开发综合实例

    如果我们安装了sqlserver2008 R2,将会自动安装一个报表开发工具 不要以为此报表开发工具只适合于sqlserver2008,其实在sqlserver2012中也是支持的,事实上我现在项目中 ...

  7. 利用JasperReport+iReport进行Web报表开发

    用JasperReport+iReport进行Web报表开发 序言 在非常多实际的项目里,报表都是当中十分重要的组成部分,比如把查询结果以报表的形式呈现出来.这里所提到的报表可不是简单的二维表,而是拥 ...

  8. AMDP + XSLX Workbench 报表开发模式

    本文介绍了我和同事通过使用AMDP + XSLX Workbench缩短报表开发周期.分离数据查询处理逻辑和前端展示工作的经验.欢迎讨论. 前言 最近接到了一套人力资源报表的开发需求,需要以EXCEL ...

  9. AMDP + XLSX Workbench 报表开发模式

    本文介绍了我和同事通过使用AMDP + XLSX Workbench缩短报表开发周期.分离数据查询处理逻辑和前端展示工作的经验.欢迎讨论. 前言 最近接到了一套人力资源报表的开发需求,需要以EXCEL ...

  10. ActiveReport系列报表开发随笔收集

    转自:博客园 http://www.cnblogs.com/dahuzizyd/archive/2007/04/11/ActiveReport_All.html 使用ActiveReport for ...

随机推荐

  1. P6185 [NOI Online #1 提高组] 序列

    给定两个长度为n的序列\(A\),\(B\). 有m个可用的操作\((t_i,u_i,v_i)\). \(t\)代表操作类型. 当\(t=1\)时,表示能够将\(A_{u_i}\)和\(A_{v_i} ...

  2. 如何优雅的申请一个属于自己的ChatGPT账号

    前言 GPT-4是一种语言模型,是基于GPT-3推出的下一代自然语言处理模型.与之前的GPT模型一样,GPT-4是一种基于深度学习技术的神经网络模型,可以自动地生成人类水平的文本.回答问题.完成翻译任 ...

  3. 第一章 static、单例与继承

    目录 面向对象 一.static关键字 1.static修饰成员变量 2.static修饰成员变量内存中执行原理 3.成员方法的执行原理 4.工具类 5.静态关键字注意事项 6.代码块 java静态代 ...

  4. mysql运维------分库分表

    1. 介绍 问题分析: 随着互联网以及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈: IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率 ...

  5. Gateway服务网关+过滤器

    为什么需要网关 Gateway网关是我们服务的守门神,所有微服务的统一入口. 网关的核心功能特性: 请求路由 权限控制 限流 架构图: 权限控制:网关作为微服务入口,需要校验用户是是否有请求资格,如果 ...

  6. Linux 阶段二

    1.2 安装JDK JDK具体安装步骤如下: 1). 上传安装包 使用FinalShell自带的上传工具将jdk的二进制发布包上传到Linux 由于上述在进行文件上传时,选择的上传目录为根目录 /,上 ...

  7. CSP2022 游记

    前言 本人坐标 HN,因为本人太菜了所以这次考得差的一批请见谅-- 7:30 老爸开车送我到 SDFZ 门口,遇到了 @_SunLight_,然后他拼命跟我叫"要寄了"结果我们俩真 ...

  8. [双目视差] 单双目MATLAB 相机标定(一)单目摄像机标定

    文章目录 单双目MATLAB 相机标定(一)单目摄像机标定 一.环境准备 二.标定过程 单双目MATLAB 相机标定(一)单目摄像机标定 一.环境准备 MATLAB R2014a+windows7 6 ...

  9. [OpenCV-Python] 24 模板匹配

    文章目录 OpenCV-Python:IV OpenCV中的图像处理 24 模板匹配 24.1 OpenCV 中的模板匹配 24.2 多对象的模板匹配 OpenCV-Python:IV OpenCV中 ...

  10. shell和查找文件的一些操作

    shell的操作 编辑命令 Ctrl + a :移到命令行首 Ctrl + e :移到命令行尾 Ctrl + f :按字符前移(右向) Ctrl + b :按字符后移(左向) Alt + f :按单词 ...