ABAP-SAP的LUW和DB的LUW的區別
轉載:http://www.cnblogs.com/helileng/archive/2010/10/14/1851409.html
LUW是Logical Unit of Work,也就是邏輯工作單元。將系統中連續的變化放做一個邏輯單元裡,可以全部執行,也可以全部不執行
一般來說,一個業務事物不能被一個LUW處理,比如說從客戶訂單到收到的發票問題的過程,就是分為邏輯的幾個部分,每個部分是用一個LUW處理;
SAP的LUWs定義依賴於整個過程及其造型
資料庫的LUW是若干個變化(資料庫資料的變化),直到出現DB COMMIT為止;
在一個數據庫LUW中,它可以放棄所有的變化都發生在那一刻(資料庫回滾),在這種情況下,在當前資料庫LUW中,資料庫將重置它的狀態。所以如果發生了錯誤,為了恢復以前的(一致)資料庫狀態,我們可以使用這個資料庫回滾功能。
但是如果資料庫LUW被DBCOMMIT封住,那麼回滾就失效了
使用ABAP的工作的ROLLBACK和COMMIT語句時,可以顯式實現一個DB或DB提交回滾。也有情況會triggerred隱含的DB Commit
如果有一個SAP - LUW的處理錯誤,它應該有可能返回到一個一致的資料庫狀態前的開始就存在SAP的LUW中。所以這是可能的,SAP的LUW的範圍內必須處理一個DB - LUW中。
如下圖所示:
但值得注意的是:SAP R/3是一個C/S架構的,通常一個事物會有多個螢幕中的切換,每一個螢幕切換都是一個隱形的DBCOMMIT,但是,它應該有可能在捆綁使用者條目內形成一個一個的SAP LUW的交易的DB - LUW,並寫入資料庫。
隱形的DBcommit有:
A:當系統輸出一個螢幕的時候
B:當系統輸出一個message的時候
C:執行CALL RFC的時候
D:CALL TRANSACTION <t_code> or SUBMIT <program>.
為了保證資料庫的統一性,SAP使用了Bundling changes:
對於在SAP LUW的資料庫更改捆綁技術確保他們仍然可以逆轉。這也意味著,可以分發交易在多個工作流程,甚至在多個SAP系統。
下面講幾種方法:
A:在子程式中的bundling技術應用:
PERFORM ON COMMIT .
B:在funciton modules for update的bundling 應用
CALL FUNCTION... IN UPDATE TASK
C:在funciton modules 在其他的SAP系統中的bundling 應用
CALL FUNCTION... IN BACKGROUND TASK DESTINATION
D:SAP的tcode
SAP的TCODE是一個應用程式,它可能包含一個或多個SAP LUWs,每當系統達到一個COMMIT WORK或ROLLBACK WORK語句時,只要不是在交易的最後一個對話方塊中的SAP步驟結束時,它會開啟一個新的SAP LUW中,但之前的資料會已經提交到資料庫中。
LUW是Logical Unit of Work,也就是邏輯工作單元。將系統中連續的變化放做一個邏輯單元裡,可以全部執行,也可以全部不執行
一般來說,一個業務事物不能被一個LUW處理,比如說從客戶訂單到收到的發票問題的過程,就是分為邏輯的幾個部分,每個部分是用一個LUW處理;
SAP的LUWs定義依賴於整個過程及其造型
資料庫的LUW是若干個變化(資料庫資料的變化),直到出現DB COMMIT為止;
在一個數據庫LUW中,它可以放棄所有的變化都發生在那一刻(資料庫回滾),在這種情況下,在當前資料庫LUW中,資料庫將重置它的狀態。所以如果發生了錯誤,為了恢復以前的(一致)資料庫狀態,我們可以使用這個資料庫回滾功能。
但是如果資料庫LUW被DBCOMMIT封住,那麼回滾就失效了
使用ABAP的工作的ROLLBACK和COMMIT語句時,可以顯式實現一個DB或DB提交回滾。也有情況會triggerred隱含的DB Commit
如果有一個SAP - LUW的處理錯誤,它應該有可能返回到一個一致的資料庫狀態前的開始就存在SAP的LUW中。所以這是可能的,SAP的LUW的範圍內必須處理一個DB - LUW中。
如下圖所示:
但值得注意的是:SAP R/3是一個C/S架構的,通常一個事物會有多個螢幕中的切換,每一個螢幕切換都是一個隱形的DBCOMMIT,但是,它應該有可能在捆綁使用者條目內形成一個一個的SAP LUW的交易的DB - LUW,並寫入資料庫。
隱形的DBcommit有:
A:當系統輸出一個螢幕的時候
B:當系統輸出一個message的時候
C:執行CALL RFC的時候
D:CALL TRANSACTION <t_code> or SUBMIT <program>.
為了保證資料庫的統一性,SAP使用了Bundling changes:
對於在SAP LUW的資料庫更改捆綁技術確保他們仍然可以逆轉。這也意味著,可以分發交易在多個工作流程,甚至在多個SAP系統。
下面講幾種方法:
A:在子程式中的bundling技術應用:
PERFORM ON COMMIT .
B:在funciton modules for update的bundling 應用
CALL FUNCTION... IN UPDATE TASK
C:在funciton modules 在其他的SAP系統中的bundling 應用
CALL FUNCTION... IN BACKGROUND TASK DESTINATION
D:SAP的tcode
SAP的TCODE是一個應用程式,它可能包含一個或多個SAP LUWs,每當系統達到一個COMMIT WORK或ROLLBACK WORK語句時,只要不是在交易的最後一個對話方塊中的SAP步驟結束時,它會開啟一個新的SAP LUW中,但之前的資料會已經提交到資料庫中。