MIGO屏幕增強


定義表ZQMT005、結構ZQMT005_BADI、表結構ZQMT005_BADI_TAB

 編輯->包括->插入

 

 

 

 

 

 se37,或者se80創建4個接口,如下圖所示

 

 

 附上傳參

 

 

 

 

 

 

 

 

 

 

 

 這里需要設置個變量,控制更新屏幕內容,不然會出現回車就清空內容等問題。

 

 

 

 

 

 

 

 

 

 

在函數組中定義全局變量 

 

 

 

 

FUNCTION-POOL zqmigo.                       "MESSAGE-ID ..

* INCLUDE LZQMIGOD...                        " Local class definition

TABLES:zqmt004_badi,zqmt004,zqmt005,zqmt005_badi.

DATA:g_goaction TYPE goaction.

DATA:g_refdoc TYPE refdoc.
DATA:g_action TYPE action.

SE51繪制屏幕

 

 

 

 

 

 

 

 

 屏幕的PBO里

 

 

 

 

 

 SE19,在MB_MIGO_BADI創建實施

 

 

 

 

 

 

 定義全局變量

 

 

 

 設置全局變量(初始化)

 

 

 

 

 

 然后是添加SE51繪制的子屏幕,

IF_EX_MB_MIGO_BADI~PBO_DETAIL 是在MIGO下面的行項目里增加

IF_EX_MB_MIGO_BADI~PBO_HEADER是在MIGO的抬頭里增加

這里是在PBO_DETAIL增加

 

 

 

CHECK gf_class_id = i_class_id.
    CHECK i_line_id IS NOT INITIAL.
    IF g_no_input2 IS NOT INITIAL.
      e_cprog 'SAPLZQMIGO'.
      e_dynnr '9002'.
      e_heading '配置信息'.
    ENDIF.

在IF_EX_MB_MIGO_BADI~LINE_MODIFY中行項目數據到

表it_zqmt005_badi中,點擊'簽名',可以看到有全局變量cs_goitem。

 

 

 

DATA: ls_zqmt005 TYPE zqmt005.
    DATA: ls_zqmt005_badi TYPE zqmt005_badi.
    DATA: ls_zqmt005_badi_new TYPE zqmt005_badi.

*    IF sy-uname EQ 'IT0003'.
*      BREAK-POINT.
*    ENDIF.
**工單使用的模具號
    READ TABLE it_zqmt005_badi WITH KEY global_counter = i_line_id
                                  TRANSPORTING NO FIELDS.
    IF sy-subrc 0.
**************取屏幕中現有數據
      CLEAR: ls_zqmt005_badi_new.
      CALL FUNCTION 'ZQMIGO_ITEM_BADI_GET_DATA'
        IMPORTING
          e_output2 = ls_zqmt005_badi_new.

      IF ls_zqmt005_badi_new-global_counter = i_line_id.
**************BADI全局變量中已存在
        DELETE it_zqmt005_badi WHERE global_counter = i_line_id.
        MOVE-CORRESPONDING cs_goitem TO ls_zqmt005_badi.
        ls_zqmt005_badi-aufnr = cs_goitem-pps_aufnr.
        ls_zqmt005_badi-plnbez = cs_goitem-matnr.
        ls_zqmt005_badi-zmatnr = ls_zqmt005_badi_new-zmatnr.
        APPEND ls_zqmt005_badi TO it_zqmt005_badi.
      ENDIF.
    ELSE.
**************BADI全局變量中不存在
      IF NOT cs_goitem-matnr IS INITIAL.
**************從自定義表中取數
        CLEAR: ls_zqmt005.
        SELECT SINGLE *
          FROM zqmt005
          INTO CORRESPONDING FIELDS OF ls_zqmt005
          WHERE plnbez = cs_goitem-matnr.
        IF sy-subrc 0.
          MOVE-CORRESPONDING ls_zqmt005 TO ls_zqmt005_badi_new.
        ELSE.
          MOVE-CORRESPONDING cs_goitem TO ls_zqmt005_badi_new.

      ls_zqmt005_badi_new-aufnr = cs_goitem-pps_aufnr.

      ls_zqmt005_badi_new-plnbez = cs_goitem-matnr.
        ENDIF.
      ENDIF.

      ls_zqmt005_badi_new-global_counter = i_line_id.
      ls_zqmt005_badi_new-zmatnr = ls_zqmt005_badi_new-zmatnr.
      APPEND ls_zqmt005_badi_new TO it_zqmt005_badi.
    ENDIF.

 在IF_EX_MB_MIGO_BADI~LINE_DELETE中增加刪除對應行操作

 

 

 

DELETE it_ZQMT005_BADI WHERE global_counter = i_line_id.

在RESET(取消)中,清空廢棄的數據。

 

 

 

CLEAR: it_zqmt004_badi,it_zqmt005_badi.
    CLEAR: G_NO_INPUT,G_NO_INPUT2,
           g_cancel,g_cancel2.

 在IF_EX_MB_MIGO_BADI~POST_DOCUMENT中,將內表it_zqmt005_badi數據保存到自建表,這里也可以直接增加檢查。為了區分,檢查后面再加。

 

 

 在IF_EX_MB_MIGO_BADI~CHECK_ITEM中添加檢查

 

 

 

 

 到此結束。

日志:

一、2021年11月12日。

檢查寫在CHECK_ITEM方法中沒用,直接多點幾次過賬,就能跳過這里的檢查,需要改到

IF_EX_MB_MIGO_BADI~POST_DOCUMENT中,

這里就不寫了。中間也發現了其它的一些BUG,比如顯示的時候,自己畫的只能顯示一個,有興趣的自己調試下。

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM