首页 > 其他分享 >关于 SAP ABAP Enqueue Function Module 的输入参数 _wait

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

时间:2023-08-17 19:22:25浏览次数:56  
标签:Function 用户 Module Enqueue 参数 WAIT

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

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

开发人员有以下选择:

  • 初始值:

如果由于存在竞争锁而导致锁定尝试失败,则会触发异常 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 参数,也无法保证两个用户的更改都能被成功应用。这种情况下,我们需要使用其他的并发控制手段来避免死锁。

标签:Function,用户,Module,Enqueue,参数,WAIT
From: https://www.cnblogs.com/sap-jerry/p/17638632.html

相关文章

  • jmeter Include Controller&Module Controller
    ***IncludeControllerinclude控制器:可理解为外部调用。用来导入外部的测试片段(非完整的测试计划),在执行时会执行导入的测试计划。被导入的测试计划有特殊要求,它不能有线程组,只能包含简单控制器及控制器件下的元件。相当于一个执行单元,一个封装了业务操作单元。调用文件测试片......
  • python 解决Could not import the lzma module. Your installed Python is incomplete
    python安装好pandas后import报错如下图:原因分析在执行./configure和makeinstall的时候出现错误提示,被忽略了,如下图:解决方法安装yuminstall-yxz-devel然后重新安装python,执行./configure和makeinstall......
  • python中function使用class调用和使用对象调用的区别
    问题在python中,class中函数的定义中有一个特殊的self指针,如果一个函数有一个self参数,通常意味着这是一个非静态函数,也就是调用的时候第一个参数是对象指针,只是这个指针是调用这个函数时由python来自动填充。tsecer@harry:catcls_mth.pyclasstsecer():defharry(self):......
  • svn add代码时,忽略node_modules
    1.选中项目,右键,选择TortoiseSVN =>  Properties2.点击New,选择Other 3.Propertyname:选择svn:global-ignores 在Propertyvalue中输入:.idea*.iml.svnvcs.xmlworkspace.xmlmodules.xmlmisc.xml,,(要忽略上传的文件后缀名),点击OK 4:再点击new选择other选择sv......
  • FunctionalInterface解析
    FunctionalInterface注解FunctionalInterface`是Java8新增的一个注解,使用`FunctionalInterface`注解的接口被称为`函数式接口@FunctionalInterface`注解的作用是告知编译器进行检查,可加可不加,但是如果加上了,那么接口必须为`函数式接口特点从FunctionalInterface的Doc注释可知,......
  • [转]c++ function使用方法
    原帖:https://blog.csdn.net/myRealization/article/details/111189651 cppreference https://en.cppreference.com/w/cpp/utility/functional/functionboost源码剖析之:泛型函数指针类boost::functionhttps://blog.csdn.net/pongba/article/details/1560773c++模板偏特化 h......
  • Linux下搭建Nginx+nginx-rtmp-module流媒体服务器
    今天我们使用的是linux系统为Centos64位服务器。下载安装nginx首先新建nginx目录存放nginx:mkdirnginx1然后进入nginx目录分别下载nginx及nginx-rtmp-module:进入nginx目录cdnginx下载nginxwgethttp://nginx.org/download/nginx-1.17.9.tar.gz下载nginx-rtmp-modulehttps://codel......
  • .configure error SSL modules require the OpenSSL library.
    CentOS6.5下安装Tengine执行配置命令./configure时提示以下错误:./configure:error:SSLmodulesrequiretheOpenSSLlibrary.Youcaneitherdonotenablethemodules,orinstalltheOpenSSLlibraryintothesystem,orbuildtheOpenSSLlibrarystaticallyfromt......
  • 函数指针、std::function、std::bind
    函数指针、std::function、std::bind函数指针:C++语法中可以直接将函数名作为指针,voidfun(inta,intb);在这个函数声明中,函数指针即为fun,传入要被调用的地方时只需要传入fun就可以。但是这个函数指针是什么类型呢?需要明确函数指针类型及其写法,我们才能在要调用函数的形......
  • Vue3+ElementPlus,Module parse failed: Unexpected token (3:27)
    一、环境vue3,ElementPlus,@vue/cli5.0.8,npm 9.6.7。我在复制elementplus官网的一些代码到vue3框架里测试时出现的问题。二、不报错方法图片位置删除lang=“ts”就不报错了 ......