SAP ABAP COMMIT WORK 关键字的一些使用要点

举报
汪子熙 发表于 2022/11/06 21:31:42 2022/11/06
【摘要】 ABAP 语句 COMMIT WORK 提交在 SAP LUW 期间完成的更改。它不能与 DB-Commit 混淆。首先明确什么是 SAP LUW(Logic Unit of Work)?下文所说的工作流程,工作进程,都是指 SAP ABAP 培训教材里的 Work Process.关于什么是 ABAP Work Process,请参阅我的文章:一个 13 年 ABAP 老兵的建议:了解这些...

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 并执行隐式数据库提交。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。