1. 程式人生 > >對於多個 BAPI一起commit!

對於多個 BAPI一起commit!

前提是這幾個BAPI產生的結果互不影響,可以同步提交,下面是理論,還需要例項測試!
由於對錶直接MODIFY 、insert、update等都觸發隱士提交,建議寫在後面。
DO迴圈裡面成功 則EXIT跳出DO迴圈。進入LOOP下一層。

LOOP
DO 5 TIMES.

CALL A
if sy-subrc eq 0

CALL B
IF SY-SUBRC EQ 0.

CALL C
IF SY-SUBRC EQ 0
modify db.
1.如 果 是 commit work還是BAPI 那個非同步提交,非同步提交,則按順序 則有4個更新程序需要去提交,這時判斷 commit work 返回sy-subrc 只是 modify db結果,前面成功與否需要檢視實際資料情況。

2.如果是同步提交,則 判斷 返回的 sy-subrc 如果成功 則整體提交成功 並EXIT當前DO迴圈,失敗 則 ROLLBACK ,則全部失敗。
ENDIF.
ENDIF.

endif.

ENDO.

ENDLOOP.

經過多年努力,終於找到失散多年的 多個Bapi提交思路, 首先這個思路是 每個BAPI OR ZBAPI用一個CLASS中的正向方法A中實現,它的逆向方法(即Reverse沖銷方法)B中實現正向A的衝正。(不存在逆向不在此說了,比如起死回生),A執行成功後 commit work. 然後下一步BAPI OR ZBAPI,成功繼續COMMIT WORK.如果 第N步正向驟失敗,則去catch exception 然後Reverse N-1步驟的 B方法(沖銷方法),Until N-1 = 1 步驟的B方法成功。基本保持事物一致性,寫的好 ,一致性在98%以內控制,2%沖銷失敗,不能保證一致,需要人工介入。