在開發過程當中,咱們調用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,而沒有在每次調用後進行提交致使。
至於要如何實現同時實現多個貨物移動的統一提交和回滾,則不在本文討論之中。