SD-銷售訂單抬頭和行專案螢幕增強
阿新 • • 發佈:2021-07-02
此文轉載至:https://blog.csdn.net/weixin_43929815/article/details/113928655
在對銷售訂單抬頭和行專案的螢幕做增強開發有兩種方法可選:
一.使用BADI:BADI_SD_SALES_BASIC下的BADI_SLS_HEAD_SCR_CUS和BADI_SLS_ITEM_SCR_CUS來實現螢幕增強
1.建立增強結構,附加到VBAK或者VBAP表中,這裡以表頭為例
2.SE18檢視BADI:BADI_SLS_HEAD_SCR_CUS,建立BADI實施ZSD_BADI_SLS_HEAD_SCR_CUS
建立之後可以看到介面下有四個方法,其中1.用來把螢幕掛在銷售訂單2.將資料讀取到子螢幕3.從子螢幕讀取資料
3.建立子螢幕
首先建立函式組ZSD_HEAD
新建子螢幕,螢幕內容即為新增的附加結構
新建兩個函式模組,用來傳遞子螢幕的值
以下為這兩個函式模組的程式碼
FUNCTION ZSD_HEAD_INPUT. *"---------------------------------------------------------------------- "“本地介面: *” IMPORTING *" REFERENCE(IS_VBAK) TYPE VBAK *" REFERENCE(IS_T180) TYPE T180 *"----------------------------------------------------------------------gs_vbak = is_vbak. gs_t180 = is_t180. "這個用來判斷是顯示還是修改 A代表顯示 MOVE-CORRESPONDING is_vbak to zsd_VBAK_1. ENDFUNCTION. FUNCTION ZSD_HEAD_OUTPUT. *"---------------------------------------------------------------------- "“本地介面: *” EXPORTING *" REFERENCE(ES_VBAK) TYPE VBAK *"----------------------------------------------------------------------MOVE-CORRESPONDING zsd_vbak_1 to gs_vbak. es_vbak = gs_vbak. ENDFUNCTION.
4.在增強實施中的方法呼叫這個函式組
方法1. method IF_EX_SLS_HEAD_SCR_CUS~ACTIVATE_TAB_PAGE. DATA ls_tab like LINE OF CT_CUS_HEAD_TAB. IF sy-tcode CP ‘VA++’. ls_tab-HEAD_CAPTION = ‘專案資訊’. ls_tab-HEAD_PROGRAM = ‘SAPLZSD_HEAD’."函式組主程式名稱 ls_tab-HEAD_DYNPRO = ‘9001’. APPEND ls_tab to CT_CUS_HEAD_TAB. ENDIF. endmethod.
方法2. method IF_EX_SLS_HEAD_SCR_CUS~TRANSFER_DATA_TO_SUBSCREEN. CALL FUNCTION ‘ZSD_HEAD_INPUT’ EXPORTING is_vbak = is_vbak is_t180 = is_t180 endmethod.
方法3. method IF_EX_SLS_HEAD_SCR_CUS~TRANSFER_DATA_FROM_SUBSCREEN. CALL FUNCTION ‘ZSD_HEAD_OUTPUT’ IMPORTING ES_VBAK = CS_VBAK endmethod.
二.使用銷售訂單程式SAPMV45A中預留的螢幕8309,8459實現增強
此種方法實現較簡單
1.找到銷售訂單主程式SAPMV45A,再找到這兩個子螢幕
直接根據新增的結構編輯子螢幕
同時增加欄位控制程式碼
MODULE SO_ADD_8309 OUTPUT. LOOP AT SCREEN. IF SY-TCODE = 'VA03' OR SY-TCODE = 'VA23'. SCREEN-INPUT = '0'. ELSE. IF SCREEN-GROUP1 EQ 'Z1'. SCREEN-INPUT = '0'. ELSE. SCREEN-INPUT = '1'. ENDIF. ENDIF. MODIFY SCREEN.
ENDLOOP. ENDMODULE.