vsc提示只有一行_Solution:连续调用BAPI出错,以及BAPI提示成功但数据库没有数据...
生活随笔
收集整理的這篇文章主要介紹了
vsc提示只有一行_Solution:连续调用BAPI出错,以及BAPI提示成功但数据库没有数据...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
作者:孫亮
聲明:本文章僅代表原作者觀點,僅用于SAP軟件的應用與學習,不代表SAP公司和本微信公眾號。注:文中所示截圖來源SAP軟件,相應著作權歸SAP所有。
在群里看大家交流技術問題,曾記下了一條筆記:用BAPI生成/修改PO/SO,然后緊接著使用BAPI_OUTB_DELIVERY_CREATE_STO/BAPI_OUTB_DELIVERY_CREATE_SLS來生成交貨單,就會出現很多莫名其妙的錯誤。原因是沒有清空函數的全局變量,暫時的解決方案可以用DESTINATION 'NONE'.【不要兩個都使用】。但這會觸發隱式提交哦。或者ASSIGN ('(SAPLME03)GET_EKET_DOC[]') TO .IF SY-SUBRC = 0. CLEAR . ENDIF.之前沒有遇到相關的業務需求,也就只是記了條筆記丟在筆記庫里了。然而今天遇到了相應的業務場景,出現的問題卻不止一個……這邊的需求是先對采購訂單收貨,然后去創建交貨單。我先調用了BAPI_GOODSMVT_CREATE收貨,然后調用BAPI_OUTB_DELIVERY_CREATE_SLS創建交貨單。結果對于全新的物料,創建交貨單的時候有個警告消息,說沒有物料在相關工廠相關庫存地點的數據。可是這時候通過MMBE去查物料庫存,明明是有數據的。于是猜到這應該是SAP有些內表的緩存沒有被清理的原因。之后調整代碼,調用交貨單BAPI時,加上了DESTINATION 'NONE'。再次執行,第二個問題出現了,BAPI提示交貨單創建成功,警告消息沒了,但執行完COMMIT之后,數據庫里并沒有這一行交貨單的數據。接下來,給大家分享我是如何去分析和解決問題的。
我的問題里,BAPI提示成功,但數據庫沒有數據。問題可能出現在兩個地方:1、BAPI的消息出錯了;2、COMMIT WORK沒有執行。我也稍稍懷疑了一下第一條,但立刻否定了自己的懷疑,BAPI返回的消息如果經常出錯,網上肯定很多反映和討論這個問題的。那就只能是第二條,COMMIT WORK沒有執行。我看了一下代碼,里面明確寫著CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'呀,并且傳遞了wait = 'X'的參數。再等幾秒看看?于是等了一會,數據庫里還是沒有。MMP,SAP不講武德啊!糾結了一小下,還是讓自己鎮定下來思考最根本的問題:BAPI是如何提交數據到數據庫的?想一下BAPI的結構,BAPI里的代碼可以分為這樣兩部分:1、一部分是數據校核,檢查傳入的數據是否滿足創建相關業務對象的條件,并且把錯誤消息反饋出來;2、另一部分是更新數據庫,即UPDATE/INSERT/DELETE dbtab這樣的操作。而第二部分的代碼,一般是寫在一個form里或者一個function里。而且這些form或者function一般是這樣被調用的:perform save_data on commit.call function 'SAVE_DATA' in update task.回頭再看一下程序,我寫了COMMIT WORK的呀。哦,難道是因為我在調用交貨單BAPI時,加了DESTINATION,但是調用BAPI_TRANSACTION_COMMIT時并沒有加DESTINATION!是不是這個原因呢?立刻改掉代碼再試一次,果然成功了。所以在調用BAPI是如果加了DESTINATION,也需要在調用BAPI_TRANSACTION_COMMIT時加上DESTINATION。
其實今天的這個小解決方案,大家可能并不會太用到。但我覺得我解決這個問題的過程和思路,或許可以給一些朋友提供一些參考和借鑒。即:1、你要盡量儲備一些基礎知識;2、你要有好奇心去深入深入再深入的研究你經常使用的東西3、你要鎮定下來像破案一樣去排除所有不可能的因素,最后的結果就是:真相只有一個!
分享是一種精神
總結
以上是生活随笔為你收集整理的vsc提示只有一行_Solution:连续调用BAPI出错,以及BAPI提示成功但数据库没有数据...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 判断非负整数是否是3的倍数_二、因数与倍
- 下一篇: 机票预定系统类图_电商系统延时任务机制源