我寫了一段ABAP程式,放在我的github上:
https://github.com/i042416/KnowlegeRepository/blob/master/ABAP/S4/ZCREATE_SO.abap直接執行,可以生成銷售訂單,即對應的生産訂單。
我們知道SAP預留了一個生産訂單Update的增強:BAdI definition WORKORDER_UPDATE
在這個增強裡,我們可以加入自己的邏輯,在銷售訂單生成的Production Order儲存之際,實作一些自定義邏輯。
那麼在SAP傳入這個增強的輸入參數裡,并沒有銷售訂單的ID資訊。
如果我們想在這個增強裡維護前置銷售訂單和目前待生成的Production Order關聯關系,應該如何拿到前置銷售訂單ID呢?
看這個調用棧:
在調用函數CO_61_ORDER_POST前,通過SET PARAMETER ID将銷售訂單的ID儲存到SAP shared memory共享記憶體裡了:
L_CALLER = VBAK-VBELN.
SET PARAMETER ID ‘COC’ FIELD L_CALLER.
那麼我們按照同樣的思路,在增強實作裡用關鍵字
GET PARAMETER ID将共享記憶體裡的銷售訂單ID重新取出即可。
DATA: lv_id type VBAK-VBELN.
GET PARAMETER ID ‘COC’ FIELD lv_id.
補充:其實在BAdI增強的輸入參數裡,是有這個前置銷售訂單ID的,在字段KDAUF_AUFK裡: