锁对象:当更新数据、删除数据时,把数据锁定,不让其他人或者程序操作此条数据。(浅薄理解)
1.锁对象的创建SE11进入ABAP字典
2.选择锁模式,和表名称
3.锁参数一般是勾选表格的主键,确保锁定数据的准确性
4.锁对象会产生两个函数,一个是锁函数,一个解除锁定的函数。
5.锁对象在程序中的使用
"锁定表 spfli 中 carrid = 'UA' connid = '3519' 的数据
CALL FUNCTION 'ENQUEUE_EZSPFLI'
EXPORTING
mode_spfli = 'X'
mandt = sy-mandt
carrid = 'UA'
connid = '3519'
* X_CARRID = ' '
* X_CONNID = ' '
_scope = '2'
* _WAIT = ' '
* _COLLECT = ' '
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc = 0.
UPDATE spfli SET period = '4' WHERE carrid = 'UA' AND connid = '3519'.
IF sy-subrc = 0.
COMMIT WORK AND WAIT.
*释放锁对象 解除锁定
CALL FUNCTION 'DEQUEUE_EZSPFLI'
EXPORTING
mode_spfli = 'X'
mandt = sy-mandt
carrid = 'UA'
connid = '3519'
* X_CARRID = ' '
* X_CONNID = ' '
* _SCOPE = '3'
* _SYNCHRON = ' '
* _COLLECT = ' '
.
IF sy-subrc = 0.
COMMIT WORK AND WAIT.
MESSAGE '成功' TYPE 'I'.
ENDIF.
ELSE.
ROLLBACK WORK.
MESSAGE '失败' TYPE 'I'.
ENDIF.
ENDIF.
注意点:
在ENQUEUE_EZSPFLI 锁定函数执行完之后,在事务代码中SM12可以查询到锁定的记录,
在DEQUEUE_EZSPFLI 释放函数执行完之后,在事务代码中SM12可以查询到锁定的记录消失。