对于多个 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.
由于對表直接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%沖銷失敗,不能保證一致,需要人工介入。
總結
以上是生活随笔為你收集整理的对于多个 BAPI一起commit!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前驱、后驱和四驱,究竟哪个好?
- 下一篇: 批创建清账凭证,POSTING_INTE