使用BADI
MD_CHANGE_MRP_DATA,控制代碼寫在METHOD
CHANGE_MDPSX_MDUB中。
MD04的邏輯是先從資料庫表中取出指定物料和工廠的能産生需求的銷售訂單、采購訂單、預留等。BADI中的多個方法分别在取對應的憑證資料的時候觸發。
其中CHANGE_MDPSX_MDUB在讀取采購訂單時觸發
結構CH_MDPS中存放MRP元素,MD04會把CH_MDPS 追加進内表MDPSX中,然後再計算需求,在這個METHOD中可以對結構CH_MDPS進行修改。
參數CH_EXIT = 'X'時表示該元素将不進行MRP運算。但測試發現有時不管用,是以采取把MRP元素的需求數量改為0的做法,這樣就不會産生需求了,且也不會再前台顯示。(注意如果直接CLEAR CH_MDPS ,會在前台出現空行)
具體代碼如下:
METHOD IF_EX_MD_CHANGE_MRP_DATA~CHANGE_MDPSX_MDUB.
DATA L_BSART TYPE EKKO-BSART.
SELECT SINGLE BSART
INTO L_BSART
FROM EKKO
WHERE EBELN = CH_MDPS-DELNR.
IF L_BSART = 'ZNB6'.
* CH_EXIT = 'X'. "元素将不計算需求
CLEAR CH_MDPS-MNG01. "清空需求數量之後,數量為0的項目在前台也不會顯示的,兩種做法效果一樣(但是不知道為什麼CH_EXIT = 'X'.突然不管用了)
CH_CHANGED = 'X'.
ENDIF.
ENDMETHOD.