ERP查询Q报表开发代码
阅读原文时间:2023年07月10日阅读:1

一,按照一般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

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章