- SAP ABAP COMMIT WORK 关键字的一些使用要点
- 在SAP CAL(Cloud Application Libra
- Fiori-like Prototype ( SAP Cloud
- SAP ABAP 创建域、数据元素、表、结构和视图
- 谈谈 SAP 系统的权限管控和事务记录功能的实现
- SAP ABAP和Java里的弱引用(WeakReference
- ABAP开发者上云的时候到了 - 现在大家可以免费使用SAP云平
- 使用abapGit在ABAP On-Premises系统和SAP
- 有哪些ABAP关键字和语法,到了ABAP云环境上就没办法用了?
- Eclipse 里找不到 Servers 面板的原因和处理办法
ABAP 语句 COMMIT WORK 提交在 SAP LUW 期间完成的更改。它不能与 DB-Commit 混淆。
首先明确什么是 SAP LUW(Logic Unit of Work)?
下文所说的工作流程
,工作进程
,都是指 SAP ABAP 培训教材里的 Work Process
.
关于什么是 ABAP Work Process,请参阅我的文章:
SAP LUW 是指 ABAP 程序中的逻辑单元,其行为类似于数据库 LUW;换句话说,一个 SAP LUW 在结束时会产生一致的数据库状态。虽然 SAP LUW 可能会跨越多个工作流程更改,但数据库更改是在单个数据库 LUW 中执行的。这是通过 bundling
完成的。在这种情况下,不会直接执行所需的数据库更改。相反,它们是在各种工作流程更改过程中收集的,业务流程需要修改或者创建,删除的数据,保存到 ABAP 内表里,然后在 SAP LUW 的最终工作流程中,作为数据库中的 bundling 任务
执行。这意味着只有传入到 ABAP update function module 的内表数据施加到数据库的更改,受数据库的 LUW 机制的约束。
ABAP 语言提供了几种在工作流程中捆绑数据库更改的机制。最重要的是捆绑在更新功能模块,即所谓的 UPDATE FUNCTION MODULE 中。您可以通过在 UPDATE TASK 中调用这些功能模块来收集您的变更请求, 真正的数据库层面的修改,发生在 COMMIT WORK 语句调用之后。
一个 AS ABAP 具有一个或多个应用程序服务器,而这些应用程序服务器又具有工作流程。当前处于活动状态的每个 ABAP 程序都需要一个工作进程,并且每个工作进程都以用户身份登录到数据库系统。一个工作进程不能并行执行多个数据库 LUW,相反,多个工作进程不能影响单个数据库 LUW。然而,一个 ABAP 程序在其整个运行过程中经常与多个工作进程相关联。在程序处于非活动状态的所有时间(例如,因为它正在等待用户进行输入,或者它作为客户端正在等待服务器上的任务完成),它会释放当前被占用的工作进程,避免其长时间被占用但却不执行任何任务。因此,当其对程序的责任发生变化时,工作进程必须始终结束 LUW 并执行隐式数据库提交。
网友评论