FavoriteLoading
0

数据字典-创建锁对象(Lock object)

[隐藏]

1, 锁对象介绍

锁对象也是SAP数据字典的一部分,其操作的实质还是物理表相关联。锁对象的名称和一般自定义的对象不同,它要求以E作为首字母,后面接着表名称一般,

1)锁模式有三种,具体属如下:

E:专用、积累,被锁定的数据只能被一个用户来读取,不允许其他用户来进行锁操作。一般主数据的锁定都会使用该类型。

S:共享。本身不需要修改该数据,但是在读取数据时候不允许该数据被其他用户以E或者X的模式来进行修改,允许被锁定数据被多个用户以S来读取,也就是不能被其他用户修改可以被其他用户读取。

X:专用,不累计。与E模式类似,在某用户对该数据加了X类型的锁定后,本用户可以继续为该数据添加E和S模式的锁。

2 ,创建锁对象

本例中创建的是E类型的锁

使用TCODE:SE11,选择lock object,输入对象名称(注意一定要以字母‘E’开头)

2016-08-30_10-55-53

072317318389725

LOOK Parameter页面维护表锁定的关联字段.

072322351516222

保存,激活。

在激活之后,会产生两个function module,一个用来对对象进行锁定,另一个是释放对象。二者的名字都很有规律。

DEQUEUE_<lock object的名字>
ENQUEUE_<lock object的名字>

可以通过下图菜单选项查询。

2016-08-30_11-03-42

3, 锁对象在abap程序中的使用

所对象激活后,系统会自动产生两个函数分别用于表对象的锁定及表对象的释放。

创建锁定的函数命名规则是ENQUEUE_+锁对象名,本文创建锁得函数名为ENQUEUE_EZSPFLI.

释放锁得函数命名规则是DEQUEUE_+锁对象名,在本文锁产生的释放所对象函数就是DEQUEUE_EZSPFLI

在abap程序中,可以调用函数锁定数据对象,如下调用ENQUEUE_EZSPFLI函数创建一个关于CARRID = ‘AC’,CONNID = '64'的锁定数据

执行程序后系统会执行对象,当在其他窗口再次执行该程序时候系统会提示该对象正在被某用户锁定。

当调用锁释放函数,或者退出当前用户对关联程序的操作时,系统都会释放掉锁对象,释放锁对象的代码如下

程序中锁对象运行后,可以在SM12事物代码下查看那被锁定对象的查看。也可以通过SM12删除锁。

2016-08-30_11-00-26

以上。