LUW是Logical Unit of Work,也就是逻辑工作单元。将系统中连续的变化放做一个逻辑单元里,可以全部执行,也可以全部不执行

SAP的LUW和DB的LUW的区别

 

一般来说,一个业务事物不能被一个LUW处理,比如说从客户订单到收到的发票问题的过程,就是分为逻辑的几个部分,每个部分是用一个LUW处理;

SAP的LUWs定义依赖于整个过程及其造型

 

数据库的LUW是若干个变化(数据库数据的变化),直到出现DB COMMIT为止;

SAP的LUW和DB的LUW的区别

 

但是如果数据库LUW被DBCOMMIT封住,那么回滚就失效了

使用ABAP的工作的ROLLBACK和COMMIT语句时,可以显式实现一个DB或DB提交回滚。也有情况会triggerred隐含的DB Commit

 

一个DB - 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和DB的LUW的区别

 

 

  在多个工作流程,甚至在多个SAP系统。

  下面讲几种方法:

    A:在子程序中的bundling技术应用:

      PERFORM   ON COMMIT .

 

SAP的LUW和DB的LUW的区别

 

 

  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中,但之前的数据会已经提交到数据库中。

相关文章: