sap commit rollback
生活随笔
收集整理的這篇文章主要介紹了
sap commit rollback
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. COMMIT WORK 語句執行許多與任務的同步執行有關的功能。
ROLLBACK WORK語句“取消”任務同步執行的所有請求。
COMMIT WORK 語句進行下列處理:
? 執行所有由PERFORM ON COMMIT 請求的FORM 例程。
按優先級的升序執行這些例程,順序由 PERFORM 語句的LEVEL 參數指定。
? 如果請求,觸發所有更新任務功能模塊。
? 如果請求,觸發所有后臺任務功能模塊。
? 觸發數據庫提交(依次釋放數據庫鎖定)。
? 清空反轉日志。
反轉日志包含應用更改前的表格快照。執行反轉時,該快照用來將表格復位到原值。
? 關閉所有打開的數據庫光標。
? 將所有TEMSE 對象寫入永久性文件或數據庫。
TEMSE文件是由于性能原因在執行事務期間緩存的臨時序列文件。TEMSE文件的示例有假脫機對象或作業日志。
? 將時間片計數器(用于訪問工作進程)復位到0。
系統中的時間片計數器限制工作進程中程序運行的時間量。如果程序常常超過時間片限制,則可以使用COMMIT WORK為程序獲得更多時間。
但是,要達此目的,必須很容易將處理分為更小單元(全部或沒有操作)。然后可以在每個單元之后插入COMMIT WORK 語句。當然處理單元邏輯上必須獨立,因為在發生錯誤時,不能取消前面的單元中所提交的更新。
ROLLBACK WORK“拋棄”當前事務的所有更新:
? 拋棄所有以前用PERFORM ON COMMIT 登錄的FORM例程
? 在更新任務隊列中將所有以前請求的更新任務功能標記為錯誤
? 拋棄所有以前請求的后臺任務功能
? 從緩沖存儲中刪除所有TEMSE對象(臨時 連續文件,如假脫機對象和作業日志)
? 觸發數據庫反轉操作(依次釋放所有數據庫鎖定)
? 關閉所有打開的數據庫光標
2. 以下情況需使用使用COMMIT和ROLLBACK語句。
1) 通過INSERT、UPDATE和MODIFY語句對數據庫進行更新事務后。
2) 執行BAPI處理后。一般使用BAPI函數BAPI_TRANSACTION_COMMIT(內含COMMIT語句) 。
3. 如果要保證數據庫中當前所作的更改立即被確認,那么就必須使用COMMIT WORK 語句結束LUW。COMMIT WORK 在程序代碼中標記了 LUW(幾個作業聯系在一起形成作業的邏輯單元) 結束并啟動更新任務。在COMMIT WORK 語句以后,對數據庫所作的所有更改都不能再取消。但是,如果在LUW 中出現了錯誤,就必須取消已經執行的部分。這意味著當前沒有任何插入的行能 永久地保存在數據庫中。要撤銷當前LUW 對數據庫的更改,請使用ROLLBACK WORK,它將取消前一次數據庫提交后的所有更改。
4. COMMIT WORK [AND WAIT(同步)].
如果使用AND WAIT選項,那么在程序繼續執行以前,它要等到更新任務的結束。如果更新是成功的,SY-SUBRC 就設置為0。如果 SY-SUBRC 返回一個非零值,就沒有成功的存儲所作的更改。
ROLLBACK WORK.
如果對更改的取消是成功的,SY-SUBRC 就設置為0。如果 SY-SUBRC 返回一個非零值,就沒有成功地取消所作的更改
ROLLBACK WORK語句“取消”任務同步執行的所有請求。
COMMIT WORK 語句進行下列處理:
? 執行所有由PERFORM ON COMMIT 請求的FORM 例程。
按優先級的升序執行這些例程,順序由 PERFORM 語句的LEVEL 參數指定。
? 如果請求,觸發所有更新任務功能模塊。
? 如果請求,觸發所有后臺任務功能模塊。
? 觸發數據庫提交(依次釋放數據庫鎖定)。
? 清空反轉日志。
反轉日志包含應用更改前的表格快照。執行反轉時,該快照用來將表格復位到原值。
? 關閉所有打開的數據庫光標。
? 將所有TEMSE 對象寫入永久性文件或數據庫。
TEMSE文件是由于性能原因在執行事務期間緩存的臨時序列文件。TEMSE文件的示例有假脫機對象或作業日志。
? 將時間片計數器(用于訪問工作進程)復位到0。
系統中的時間片計數器限制工作進程中程序運行的時間量。如果程序常常超過時間片限制,則可以使用COMMIT WORK為程序獲得更多時間。
但是,要達此目的,必須很容易將處理分為更小單元(全部或沒有操作)。然后可以在每個單元之后插入COMMIT WORK 語句。當然處理單元邏輯上必須獨立,因為在發生錯誤時,不能取消前面的單元中所提交的更新。
ROLLBACK WORK“拋棄”當前事務的所有更新:
? 拋棄所有以前用PERFORM ON COMMIT 登錄的FORM例程
? 在更新任務隊列中將所有以前請求的更新任務功能標記為錯誤
? 拋棄所有以前請求的后臺任務功能
? 從緩沖存儲中刪除所有TEMSE對象(臨時 連續文件,如假脫機對象和作業日志)
? 觸發數據庫反轉操作(依次釋放所有數據庫鎖定)
? 關閉所有打開的數據庫光標
2. 以下情況需使用使用COMMIT和ROLLBACK語句。
1) 通過INSERT、UPDATE和MODIFY語句對數據庫進行更新事務后。
2) 執行BAPI處理后。一般使用BAPI函數BAPI_TRANSACTION_COMMIT(內含COMMIT語句) 。
3. 如果要保證數據庫中當前所作的更改立即被確認,那么就必須使用COMMIT WORK 語句結束LUW。COMMIT WORK 在程序代碼中標記了 LUW(幾個作業聯系在一起形成作業的邏輯單元) 結束并啟動更新任務。在COMMIT WORK 語句以后,對數據庫所作的所有更改都不能再取消。但是,如果在LUW 中出現了錯誤,就必須取消已經執行的部分。這意味著當前沒有任何插入的行能 永久地保存在數據庫中。要撤銷當前LUW 對數據庫的更改,請使用ROLLBACK WORK,它將取消前一次數據庫提交后的所有更改。
4. COMMIT WORK [AND WAIT(同步)].
如果使用AND WAIT選項,那么在程序繼續執行以前,它要等到更新任務的結束。如果更新是成功的,SY-SUBRC 就設置為0。如果 SY-SUBRC 返回一個非零值,就沒有成功的存儲所作的更改。
ROLLBACK WORK.
如果對更改的取消是成功的,SY-SUBRC 就設置為0。如果 SY-SUBRC 返回一個非零值,就沒有成功地取消所作的更改
總結
以上是生活随笔為你收集整理的sap commit rollback的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2009.09.01 博客近期改进公告
- 下一篇: 关于遗留系统维护的讨论