關於SAP BAPI_TRANSACTION_ROLLBACK的問題

  講rollback之前先講一下BAPI_TRANSACTION_COMMIT以及commit work and wait.操作:

1、這兩個語句都是數據的提交操作,但有點不同的是    BAPI_TRANSACTION_COMMIT之後會執行一個buffer_refresh_all函數,也就是BAPI_TRANSACTION_COMMIT函數在數據提交之後還有個刷新了BAPI buffer緩衝區的操作,這個操作可避免多表寫入時發生的錯誤,所以當我們要連續修改很多表且這些表又相互關聯時最好使用bapi_transaction_commit;
2、在一般情況下SAP數據提交都是異步操作,即如果沒有主動同步提交數據的話,數據提交操作都是在程序執行完畢之後統一commit,所以當我們後續代碼如果需要依賴前面bapi執行數據,就需要主動同步提交數據才行,同步提交時需要給BAPI_TRANSACTION_COMMIT提交函數加一個輸入參數wait = ‘X’,commit work語句後加一個and wait 部分,表示同步提交,只有在數據提交完畢之後程序才接着往下執行。

  好,現在回到BAPI_TRANSACTION_ROLLBACK數據回滾的問題,BAPI_TRANSACTION_ROLLBACK回滾操作會把上一次數據commit之後與這一次rollback之前的所有操作都回滾,這期間如果有做了寫日誌等操作,就需要在寫日誌完畢之後主動同步提交數據,從而避免被rollback掉。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章