ABAP常用表锁

开发过程中经常有表加锁的需求,实际上我们不需要为每一个表进行锁对象创建,有一个函数可以简单粗暴的实现通用表的加锁解锁。
"ENQUEUE_E_TABLE""DEQUEUE_E_TABLE"

示例:

*&---------------------------------------------------------------------*
*& Report YGJZ_TESTLOCK
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ygjz_testlock.

PARAMETERS p_table TYPE tabname.
CALL FUNCTION 'ENQUEUE_E_TABLE'
  EXPORTING
    mode_rstable   = 'E'
    tabname        = p_table
*   VARKEY         =
*   X_TABNAME      = ' '
*   X_VARKEY       = ' '
*   _SCOPE         = '2'
*   _WAIT          = ' '
*   _COLLECT       = ' '
  EXCEPTIONS
    foreign_lock   = 1
    system_failure = 2
    OTHERS         = 3.
IF sy-subrc = 0.
  MESSAGE 'TABLE LOCKED' TYPE 'I'.
ENDIF.


BREAK-POINT.


CALL FUNCTION 'DEQUEUE_E_TABLE'
  EXPORTING
    mode_rstable = 'E'
    tabname      = p_table
*   VARKEY       =
*   X_TABNAME    = ' '
*   X_VARKEY     = ' '
*   _SCOPE       = '3'
*   _SYNCHRON    = ' '
*   _COLLECT     = ' '
  .

IF sy-subrc = 0.
  MESSAGE 'TABLE UNLOCKED' TYPE 'I'.
ENDIF.

执行
在这里插入图片描述

在这里插入图片描述
TCODE: SM12 查看锁
在这里插入图片描述
在这里插入图片描述
可以看到表 MARA已经被上了E类型的锁
继续执行
在这里插入图片描述
此时已经解锁。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值