貨物移動BAPI:BAPI_GOODSMVT_CREATE報錯提示「不能執行功能模塊 MB_CREATE_GOODS_MOVEMENT」的原因
- 2019 年 11 月 7 日
- 筆記
在開發過程中,我們調用BAPI:BAPI_GOODSMVT_CREATE進行貨物移動生成物料憑證時,出現了報錯提示:“不能執行功能模塊 MB_CREATE_GOODS_MOVEMENT”,如下圖所示:
但也許我們通過調試,將傳入BAPI的參數放到SE37中,直接使用該BAPI進行測試的時候,卻能正常產生憑證,並不會出現上面的提示。於是我們又花了很多時間,逐個去核對傳入的參數什麼的有沒有問題,去SAP官網查找對應的報錯NOTE甚至懷疑是不是業務配置的問題。。。
其實這個問題的原因並不複雜,我們點開上面報錯圖中的“幫助”按鈕,就可以看到問題的原因了,如下2圖所示:
從上圖大概可以看出,是因為程序在調用函數 MB_CREATE_GOODS_MOVEMENT時,重複調用了該函數,且上一次調用的時候,沒有進行提交(COMMIT WORK),才導致的。
那麼新的問題似乎來了,我們並沒有直接調用 MB_CREATE_GOODS_MOVEMENT這個函數,為什麼出現這個提示呢?其實這個問題不能理解,因為我們調用的貨物移動BAPI:BAPI_GOODSMVT_CREATE的代碼中調用了函數MB_CREATE_GOODS_MOVEMENT,如下圖所示:
再聯想到本次開發的需求,用戶要求同時執行多個貨物移動,當所有的貨物移動都沒有報錯的時候,再統一提交或者回滾。正好就驗證了本次報錯的原因,多次間接調用函數MB_CREATE_GOODS_MOVEMENT,而沒有在每次調用後進行提交導致。
至於要如何實現同時實現多個貨物移動的統一提交和回滾,則不在本文討論之中。