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