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中,但之前的数据会已经提交到数据库中。
ABAP-SAP的LUW和DB的LUW的区别的更多相关文章
- ODBC、OLE DB、 ADO的区别
转自:http://blog.csdn.net/yinjingjing198808/article/details/7665577 一.ODBC ODBC的由来 1992年Microsoft和Syba ...
- 【HANA系列】SAP HANA SQL IFNULL和NULLIF用法与区别
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL IFN ...
- ABAP:SAP报表性能的优化
大部分ABAPer都是从SAP报表及打印开始学起的,大家也都认为写个SAP报表程序是最简单不过的事了. 但是实际情况真的如此吗?写报表时除了保证数据的准确性,您可曾考虑过报表的性能问题吗? 由于报表程 ...
- 【转】ODBC、OLE DB、 ADO的区别
一.ODBC ODBC的由来 1992年Microsoft和Sybase.Digital共同制定了ODBC标准接口,以单一的ODBC API来存取各种不同的数据库.随后ODBC便获得了许多数据库厂商和 ...
- 汇编 db,dw,dd的区别
db定义字节类型变量,一个字节数据占1个字节单元,读完一个,偏移量加1 dw定义字类型变量,一个字数据占2个字节单元,读完一个,偏移量加2 dd定义双字类型变量,一个双字数据占4个字节单元,读完一个, ...
- TP5 模型类和Db类的使用区别
原文:http://www.upwqy.com/details/3.html 总结 在控制器中 模型操作 get() 和 all() 只能单独使用来查询数据 想要链式操作查询数据 需要使用f ...
- DB DBS 和DBMS区别
DB:是指datebase(数据库) DBS:是指datebase systerm (数据库系统) DBMS:是指datebase mangement systerm(数据库管理系统)区别:数据库 ...
- SAP 中session和外部断点设置的区别
1 Session Breakpoints:只在当前user session的所有main session中有效 2 External Breakpoints 在abap editor或事务SICF中 ...
- SAP专家培训之Netweaver ABAP内存管理和内存调优最佳实践
培训者:SAP成都研究院开发人员Jerry Wang 1. Understanding Memory Objects in ABAP Note1: DATA itab WITH HEADER LINE ...
随机推荐
- Python–logging模块知多少
我们在写程序的时候经常会打一些日志来帮助我们查找问题,这次学习一下logging模块,在python里面如何操作日志. 介绍一下logging模块,logging模块就是python里面用来操作日志的 ...
- C# ObjectArx AutoCAD二次开发(转帖)
http://www.cnblogs.com/houlinbo/p/3325898.html 1.开发基本资料准备 用Vs2010进行Autocad 2010开发,首先下载ObjectArx 2010 ...
- Tomcat 自动化部署
Tomcat 自动化部署脚本 使用方法: ./autodeploy.sh test 其中autodeploy.sh 为脚本的文件名, test为war的文件名. #!/bin/sh now=`date ...
- 【appium】根据xpath定位元素
1. 背景 本文尝试使用的试验对象是SDK自带的NotePad应用实例,假设已经有两个Notes分别是“note1”和“note2”添加到Notepad上面,我们要做的就是尝试用xpath的方法来定位 ...
- Windows 2003扩充磁盘空间
diskpartlist volumeselect volume 1 (选择需要扩充空间的分区)extend size=409600 (单位为MB)
- TroubleShoot: Fail to deploy Windows UAP to device: 0x80073CFD
After creating "Blank App(Windows Universal)" targeting Windows Phone 10 in Visual Studio ...
- git: fatal: Could not read from remote repository
This is probably an Intellij problem. Your key are managed natively by ssh, and Intellij has it's ow ...
- bzoj 3978: [WF2012]Fibonacci Words
Description 斐波那契01字符串的定义如下 F(n) = { 0 if n = 0 1 if n = 1 F(n-1)+F(n-2) if n >= 2 } 这里+的定义是字符串的 ...
- 分布式一致性协议之:Raft算法
一致性算法Raft详解 背景 熟悉或了解分布性系统的开发者都知道一致性算法的重要性,Paxos一致性算法从90年提出到现在已经有二十几年了,而Paxos流程太过于繁杂实现起来也比较复杂,可能也是以为过 ...
- [转]SQL Server 中 Cast 与 Convert
两者都用于:将一种数据类型的表达式转换为另一种数据类型的表达式. 安装有 Sql Server 2008 时可以浏览:ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.zh-C ...