关于 SAP ABAP Enqueue Function Module 的输入参数 _wait

简介: 关于 SAP ABAP Enqueue Function Module 的输入参数 _wait

我们查看 ABAP 系统根据 Lock Object 自动生成的 Enqueue Function Module,可以发现它有一个名叫 _wait 的输入参数,默认值为 space

7e349cc987ee9d63d7c5e59d91aa4b4b.png

该参数决定了发生锁冲突时的锁行为。

开发人员有以下选择:

  • 初始值:

如果由于存在竞争锁而导致锁定尝试失败,则会触发异常 FOREIGN_LOCK。

  • X:

如果由于存在竞争锁而导致锁定尝试失败,系统会在一定时间后重复锁定尝试。 仅当自第一次锁定尝试以来已经过了一定的时间限制时,才会触发 FOREIGN_LOCK 异常。 等待时间和时间限制由配置文件参数定义。


这里我们可以用一个例子来说明 _WAIT 参数的作用。


假设我们在一个物料管理系统中,用户 A 想要更改物料 M 的价格,同时用户 B 也想要更改物料 M 的价格。物料 M 的价格在数据库中是一个记录,我们使用 Lock Object 来保护这个记录。


如果用户 A 先执行了 Enqueue Function Module,设定了锁,并且还没有执行对应的 Dequeue Function Module 来释放锁。这时候,用户 B 也尝试执行 Enqueue Function Module 来设定锁。


  1. 如果 _WAIT 参数设置为 ‘X’,那么用户 B 的请求不会立即失败,而是会等待用户 A 释放锁。这样可以保证用户 B 的请求最终会成功,但可能需要等待一段时间。
  2. 如果 _WAIT 参数没有设置(或设置为 ’ '),那么用户 B 的请求会立即失败,返回一个错误信息,告知用户 B 物料 M 的价格当前正在被其他用户更改。


通过这个例子,我们可以看出 _WAIT 参数的重要性。它允许我们根据具体情况选择是否等待锁变为可用。在一些情况下,我们可能希望立即知道操作是否成功,而不愿意等待。在其他情况下,我们可能希望尽可能地完成操作,即使需要等待一段时间。


需要注意的是,虽然 _WAIT 参数可以让我们选择是否等待,但它并不能解决所有的并发问题。例如,如果两个用户同时更改同一条记录,即使我们使用了 _WAIT 参数,也无法保证两个用户的更改都能被成功应用。这种情况下,我们需要使用其他的并发控制手段来避免死锁。

相关文章
|
30天前
|
BI
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示
27 0
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示
|
30天前
|
前端开发 数据库 开发者
如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import 试读版
如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import 试读版
21 1
|
30天前
|
安全 API 数据库
SAP ABAP OData 中 Function import 的概念介绍
SAP ABAP OData 中 Function import 的概念介绍
31 2
|
30天前
|
SQL 数据库 数据处理
什么是 ABAP SQL Function
什么是 ABAP SQL Function
13 0
什么是 ABAP SQL Function
|
30天前
|
BI
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示试读版
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示试读版
20 0
|
30天前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
38 0
|
30天前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
23 0
|
30天前
|
Web App开发 数据采集 前端开发
纯技术讨论:如何让 SAP UI5 应用无法被别人在浏览器里调试 - 这种做法不推荐试读版
纯技术讨论:如何让 SAP UI5 应用无法被别人在浏览器里调试 - 这种做法不推荐试读版
35 0
|
30天前
|
XML 存储 数据格式
SAP UI5 控件 customData 属性的应用介绍
SAP UI5 控件 customData 属性的应用介绍
43 0
|
30天前
|
前端开发 JavaScript API
SAP UI5 sap.ui.require.toUrl 的作用介绍
SAP UI5 sap.ui.require.toUrl 的作用介绍
50 0

热门文章

最新文章