SAP 锁机制认识_sap sm13-程序员宅基地

技术标签: SAP文章  SAP 锁机制认识  

SAP 锁机制认识

 

一、SAP为什么要设置锁:
   1,保持数据的一致性
     如果几个用户要访问同样的资源,需要找到一种同步访问的方法去保持数据的一致性。比如说,在航班预订系统中,需要检查还有没有空座位,当检查的时候,你不想别人修改重要的数据(空座位的数量)。

 

  2,仅仅用Database锁是不够的
     数据库管理系统物理锁定了要修改的行记录,其他用户要等到数据库锁释放才能访问这个记录。
     在SAP系统中,当一个新屏幕显示的时候会释放掉Database锁,因为屏幕的改变会触发一个隐式的DB COMMIT 。如果数据是从好几个屏幕收集来的话,而且在这段时间内这些数据会分别被锁定,仅仅用Database锁就不够了。
     SAP系统在应用服务器层面有一个全局的LOCK TABLE,可以用来设置逻辑锁来锁定相关的表条目,并有ENQUEUE工作进程来管理这些锁。SAP锁是一种逻辑意义上的锁,有可能你锁定的表条目在DATABASE上根本就不存在。

 

 

二、锁对象和其对应的Function Module


      在SE11里创建锁对象,自定义的锁对象都必须以EZ或者EY开头来命名。一个锁对象里只包含一个PRIMARY TABLE,可以包含若干个SECONDARY TABLE,锁的模式有三种:E,S,X。LOCK PARAMETERS里填写你要根据哪些字段来锁定表条目。


      模式E:当更改数据的时候设置为此模式。
      模式S:本身不需要更改数据,但是希望显示的数据不被别人更改。
      模式X:和E类似,但是不允许累加,完全独占。


      如果你在一个程序里成功对一个锁对象加锁之后,如果模式为E,其他用户不能再对这个锁对象加E、X、S模式的任意一种锁;
      如果你在一个程序里成功对一个锁对象加锁之后,如果模式为X,其他用户不能再对这个锁对象加E、X、S模式的任意一种锁;
       如果你在一个程序里成功对一个锁对象加锁之后,如果模式为S,其他用户不能再对这个锁对象加E、X模式的锁,但是可以加S模式的锁;
      如果你在一个程序里成功对一个锁对象加锁之后,如果模式为E,在这个程序,你还可以再对这个锁对象加E、  S模式的锁,X模式的不可以。
      如果你在一个程序里成功对一个锁对象加锁之后,如果模式为X,在这个程序,你不可以再对这个锁对象加E、X、S模式的锁。
      如果你在一个程序里成功对一个锁对象加锁之后,如果模式为S,在这个程序,你还可以再对这个锁对象加S模式的锁,如果没有别的用户对其加S模式的锁,那么你还可以对其加E模式的锁。X模式的不可以。
      当激活锁对象的时候,系统会自动创建两个FM,ENQUEUE_<锁对象名>和DEQUEUE_<锁对象名>,分别用来锁定和解锁。

 

 

三、锁机制的实际案例解析

问题描述:

物料非限制库存明明还有1000 PC,发料过账时却提示短缺1000 PC 。

首先笔者想到的是检查MMBE和MD04

没有发现被销售订单或预留占用

 

检查SM12

发现前一天有一笔移动操作该物料1000 PC 并未成功,一直处于锁定状态清除该笔锁定,问题解决 。

 

SM12查询方法

- 在锁参数栏位输入物料号,前后打通配符星号 *

- 集团默认为当前Client

- 用户名置空(并不知道是谁在锁定)

 

 

SM12中的记录不能随便删除,应先确认该笔操作是否有人正在处理,正常情况下只是逻辑上的临时锁定,操作完成之后会自动释放,如果别人正在操作时被强制删除,可能造成错误或数据丢失。

 

SM12查到锁定信息之后,还可以做如下参考:

继续执行SM13查看该用户是否有正待更新的相关操作,及执行AL08查看该用户当前活动情况。

 

 

https://mp.weixin.qq.com/s/Cxzh_PeGUjHWYTpUyhSzHg

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42137700/article/details/104037195

智能推荐

jmu-Java-07多线程-Runnable与匿名类_6-1 jmu-java-07多线程-runnable与匿名类-程序员宅基地

文章浏览阅读902次,点赞2次,收藏3次。题目详情:6-1 jmu-Java-07多线程-Runnable与匿名类 (10 分)在Main方法中启动一个线程t1,该线程输出3行信息:主线程名 线程t1的线程名 线程t1所实现的所有接口。提示:使用System.out.println(Arrays.toString(getClass().getInterfaces()));输出。注:本题也可使用Lambda表达式实现。裁判测试程序:public class Main { public static void_6-1 jmu-java-07多线程-runnable与匿名类

[论文阅读] (07) RAID2020 Cyber Threat Intelligence Modeling Based on Heterogeneous GCN_cyber threat prediction using dynamic heterogeneou-程序员宅基地

文章浏览阅读6.7k次,点赞7次,收藏15次。前一篇文章分享了生成对抗网络GAN的基础知识,包括什么是GAN、常用算法(CGAN、DCGAN、infoGAN、WGAN)、发展历程、预备知识,并通过Keras搭建最简答的手写数字图片生成案例。这篇文章将详细介绍北航老师发表在RAID 2020上的论文《Cyber Threat Intelligence Modeling Based on Heterogeneous Graph Convolutional Network》,基于异构图卷积网络的网络威胁情报建模。希望这篇文章对您有所帮助。_cyber threat prediction using dynamic heterogeneous graph learning

Python三次样条插值与MATLAB三次样条插值简单案例_splev函数matlab-程序员宅基地

文章浏览阅读7.3k次,点赞7次,收藏51次。1 三次样条插值早期工程师制图时,把富有弹性的细长木条(所谓样条)用压铁固定在样点上,在其他地方让它自由弯曲,然后沿木条画下曲线,成为样条曲线。设函数S(x)∈C2[a,b] ,且在每个小区间[xj, xj+1]上是三次多项式,其中a=x0<x1<...<xn=b 是给定节点,则称S(x)是节点x0,x1,...xn上的三次样条函数。若在节点xj上给定函数值yj=f(xj..._splev函数matlab

Hadoop集群搭建所遇到的一些问题_error org.apache.hadoop.security.token.delegation.-程序员宅基地

文章浏览阅读3.9k次,点赞3次,收藏8次。1.命令找不到环境变量配置的不正确.2.权限问题2.1 /home/hadoop目录权限2.1 创建完hadoop用后/home/hadoop目录权限问题./home/Hadoop2.2 秘钥文件权限1.如下图的提示,是当前hadoop用的公钥没有添加到认证文件中去解决方法:将node1节点上的hadoop用户的公钥添加到认证文件中[hadoop@node1 ~]$ chmod -R 755 .ssh/[hadoop@node1 ~]$ cd .ssh/[hadoop@node_error org.apache.hadoop.security.token.delegation.abstractdelegationtokensec

ModuleNotFoundError: No module named ‘ahocorasick‘,亲测100%有效_modulenotfounderror: no module named 'ahocorasick-程序员宅基地

文章浏览阅读2.3k次,点赞10次,收藏10次。ModuleNotFoundError: No module named ‘ahocorasick‘,安装:pip install pyahocorasick -i HTTPS://mirrors.aliyun.com/pypi/simple/下面是我在安装是遇到的要安装最近在搞自然语言处理的知识图谱但是在搭建系统的时候使用了一个AC自动机词过滤,就是去掉敏感词汇就比如这些敏感词汇,需要将他替换成为**等一些隐含词或者符号。这个有许多的方法,这里列举几个:- 1、AC自动机- 2、DFA_modulenotfounderror: no module named 'ahocorasick

随便推点

OpenGLES demo - 11. 透视投影变换_opengles 透视变换-程序员宅基地

文章浏览阅读1.7k次。这章介绍一下透视投影变换,一个物体经过了透视投影变换之后,就会有jindayuan_opengles 透视变换

大数取模运算Barrett reduction-程序员宅基地

文章浏览阅读1.3w次,点赞11次,收藏40次。Barrett reduction算法的证明和使用。作者刚做完了课程设计作业,闲来无事写篇文章。大数中的指数运算,需要对一个数进行取模,因为最大可能二进制下2048位的2048位次方,所以必须边做乘法边取模。乘法使用快速幂,如果底数位数是x,指数位数是e,底数足够大的话,复杂度取决于模数,模数是m位的话,复杂度是O(m*m*e)。程序里,大数的存储是2的32次方进制的,这里..._barrett reduction

MIT 线性代数导论 第二讲:矩阵消元_方程组\left\{ \begin{matrix}3x - 4y = k + 1\\2x + 3y -程序员宅基地

文章浏览阅读367次。第二讲的主要内容:线性方程组的消元法使用矩阵语言表示消元过程向量、矩阵乘的理解置换矩阵的概念初步逆矩阵的概念线性方程组的消元法例子:{x+2y+z=23x+8y+z=124y+z=2\left\{\begin{matrix}x+2y+z=2\\ 3x+8y+z=12\\ 4y+z=2\end{matrix}\right.⎩⎨⎧​x+2y+z=23x+8y+z=12..._方程组\left\{ \begin{matrix}3x - 4y = k + 1\\2x + 3y = 5\end{matrix}\right.{ 3x 4y=k+1 2x+3y=5 的解中x与y的值相等,则k等于( ) a -1 b -2 c -3 d -4 查看提示

macOS下配置环境变量/查看环境变量_mac查看环境变量-程序员宅基地

文章浏览阅读4.8w次,点赞27次,收藏98次。Mac OS 的配置文件清单a. /etc/profile b. /etc/paths c. ~/.bash_profile d. ~/.bash_login e. ~/.profile f. ~/.bashrc 终端如何查看java的安装目录?输入命令:/usr/libexec/java_home -V如何查看java的版本信息?输入命令:java -version如何查看Mac的全部环境变量输入命令 export,查看全部的环境变量如何设置系统环境变量?系统环境变量应该在_mac查看环境变量

table表格------一行隐藏和显示_让row里面的内容成一行显示超出隐藏-程序员宅基地

文章浏览阅读5k次。这个功能是table原生js操作一行表_让row里面的内容成一行显示超出隐藏

使用C#使用Windows的HID通信-程序员宅基地

文章浏览阅读2k次。Windows使用HID通信相对比较简单,HID都是通过PID、VID信息来查找连接的,相比于串口,几乎无变化,连接无需人工选择,十分方便,也不需要驱动。下面上实例,PID为0x003f,VID为0x04D8,支持发送接收数据显示到UI,使用C#来编写,调用的是windows api(create file、read file、write file)。本实例将HID接口分成3层,支持自动连接..._c# hid 指定pid和vid

推荐文章

热门文章

相关标签