关于 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 参数,也无法保证两个用户的更改都能被成功应用。这种情况下,我们需要使用其他的并发控制手段来避免死锁。

相关文章
|
5月前
|
安全 数据安全/隐私保护 UED
ABAP RZ11 icm/HTTP/samesite 参数的含义介绍
ABAP RZ11 icm/HTTP/samesite 参数的含义介绍
ABAP RZ11 icm/HTTP/samesite 参数的含义介绍
|
5月前
|
BI
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示
|
5月前
|
数据库
如何通过增强(Enhancement)的方式,给 ABAP Function Module 增添新的功能试读版
如何通过增强(Enhancement)的方式,给 ABAP Function Module 增添新的功能试读版
|
3月前
|
机器学习/深度学习 数据采集 监控
算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、Loss Function、Bad Gradient
**神经网络与AI学习概览** - 探讨神经网络设计,包括MLP、RNN、CNN,激活函数如ReLU,以及隐藏层设计,强调网络结构与任务匹配。 - 参数初始化与优化涉及Xavier/He初始化,权重和偏置初始化,优化算法如SGD、Adam,针对不同场景选择。 - 学习率调整与正则化,如动态学习率、L1/L2正则化、早停法和Dropout,以改善训练和泛化。
42 0
算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、Loss Function、Bad Gradient
|
5月前
|
安全 API 数据库
SAP ABAP OData 中 Function import 的概念介绍
SAP ABAP OData 中 Function import 的概念介绍
|
5月前
|
前端开发 数据库 开发者
如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import 试读版
如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import 试读版
|
5月前
|
JavaScript 前端开发
【专栏】`Function.prototype.apply` 在JavaScript中用于动态设定函数上下文(`this`)和参数列表
【4月更文挑战第29天】`Function.prototype.apply` 在JavaScript中用于动态设定函数上下文(`this`)和参数列表。它接受两个参数:上下文对象和参数数组。理解`apply`有助于深入JS运行机制。文章分三部分探讨其原理:基本概念和用法、工作原理详解、实际应用与注意事项。在应用中要注意性能、参数类型和兼容性问题。`apply`可用于动态改变上下文、传递参数数组,甚至模拟其他语言的调用方式。通过深入理解`apply`,能提升代码质量和效率。
32 3
|
5月前
|
存储 Serverless 定位技术
深度探索 Elasticsearch 8.X:function_score 参数解读与实战案例分析
深度探索 Elasticsearch 8.X:function_score 参数解读与实战案例分析
140 0
|
5月前
|
数据库
什么是 SAP ABAP 的 Dialog Module
什么是 SAP ABAP 的 Dialog Module
什么是 SAP ABAP 的 Dialog Module
|
5月前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之在 DataWorks 中的 ODPS UDF(User-Defined Function,用户自定义函数)中,支持不定长参数如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
66 0