一,按照一般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报表开发代码的更多相关文章

  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. kali 安装beef-xss (含输入正确密码却登录不了本机无法打开beef提示找不到服务器404常见解决办法)

    1:安装beef 2:修改配置文件 3:浏览器打开地址127.0.0.1:3000/ui/panel 常见问题解决本文最后 kali 打开终端 输入apt-get install beef-xss - ...

  2. DFS手写排列

    DFS手写排列 虽然python中有自带的排列函数,但是在某些特殊情况需要手写排列.掌握了DFS手写排列对DFS的理解有一定的帮助. 1.手写排列(非字典序输出) 这种代码比较简单易懂,但是不是按照字 ...

  3. 【LeetCode动态规划#12】详解买卖股票I~IV,经典dp题型

    买卖股票的最佳时机 力扣题目链接(opens new window) 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格. 你只能选择 某一天 买入 ...

  4. 记一次某CMS代码审计(转载)

    作者:ddwGeGe 本文转自先知社区:https://xz.aliyun.com/t/11774 前言 无意中浏览到某小众OA官网且可以下载到源码,随机审计一波,最后成功Getshell,大佬勿喷 ...

  5. 关于Python异步协程中for循环的使用

    本文转载自简书:https://www.jianshu.com/p/c321eb22cffd 用户:简单书写_, Python使用异步模块Asyncio实现多线程并发,一般方式是: async def ...

  6. 文心一言 VS chatgpt (4)-- 算法导论2.2 1~2题

    一.用O记号表示函数(n ^ 3)/1000-100(n^2)-100n十3. 文心一言: chatgpt: 可以使用大 O 记号表示该函数的渐进复杂度,即: f ( n ) = n 3 1000 − ...

  7. django4 前后端分离和不分离的优缺点

    Django4可以采用前后端分离或者不分离两种方式来开发Web应用,它们各有优缺点. 前后端分离的优点: 前后端职责分离:前端负责视图展示.用户交互,后端负责数据处理.逻辑处理,分工明确,开发效率高. ...

  8. vue全家桶进阶之路25:Vue2的停维通知

    Vue 2 的技术支持会持续多久?从官方发文来看,Vue 2.7 是当前.同时也是最后一个 Vue 2.x 的次级版本更新.Vue 2.7 会以其发布日期,即 2022 年 7 月 1 日开始计算,提 ...

  9. uni-app 创建项目及目录结构

    文件-新建-1.项目 ┌─uniCloud 云空间目录,阿里云为uniCloud-aliyun,腾讯云为uniCloud-tcb(详见uniCloud) │─components 符合vue组件规范的 ...

  10. 《数据结构(C语言版)》严蔚敏代码实现———顺序表

    一.前言 最近在重新学习数据结构啦,网上说这本书挺不错哒,于是我开始啃这本书咯...有一说一,严奶奶的书挺好的,就是有点大量使用指针...需要沉下心来,看一看画一画才能懂,我自己手敲了一遍书上代码,加 ...