天天看點

如何在S/4HANA生産訂單建立上下文裡拿到前置銷售訂單資訊

我寫了一段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裡:

繼續閱讀