問題描述:每次創建一張發票時,利用BAPI_INCOMINGINVOICE_CREATE1是可以的,一次創建多張發票時,第一張發票可以創建成功,創建第二張發票時系統直接DUMP。
系統錯誤關鍵描述:"UNCAUGHT_EXCEPTION" /BOBF/CX_FRW_FATAL
"/BOBF/CL_TRA_TRANSACTION_MGR==CP" bzw. /BOBF/CL_TRA_TRANSACTION_MGR==CM00K
"SET_APPLICATION_ERROR"
查了N多NOTES,沒有相匹配的解決方案,沒辦法只能跟蹤系統標准代碼。跟蹤系統代碼涉及到的標准對象如下:
BAPI:BAPI_INCOMINGINVOICE_CREATE1,FM:MRM_INVOICE_POST,CLASS:/BOBF/CL_TRA_TRANSACTION_MGR,/BOBF/CL_TRA_TRANS_MGR_FACTORY
解決方法:創建發票的過程中類/BOBF/CL_TRA_TRANSACTION_MGR的屬性mv_transaction_state會依次從0更新到6,具體0~6的意思可查看參考的數據元素。依次更新的過程
中的系統會依次調用Method:finalize,check_before_save,adjust_numbers,do_save等等來出來數據。0~6的次序不可顛倒,也就是說類的方法調用次序不能顛倒,否則系統就會DUMP。
第一次創建時,系統會初始化類,mv_transaction_state的值默認為‘0’,第二次調用時,系統不會再次初始化類,屬性mv_transaction_state的值是‘6’,這時系統就會DUMP。
為了每次調用使類的方法依次執行,不得不對系統做了隱式增強(被逼的,想不到其他好的辦法了)。增強的位置如圖:
注意:對BOBF相關的類做增強時,要十分的小心!!!一定要加限制條件,否則對系統的影響特別大。