SAP ABAP通过代码解锁SM12中被锁定目标


需求

通过代码解锁SM12中被锁定目标


一、如果是普通锁

garg为对象的名字,可以是锁参数的部分内容
在这里插入图片描述
LT_ENQ参考结构seqg3
LT_RAW_ENQ参考结构seqg7
在这里插入图片描述

二、如果是BOBF:DB_KEY的标准锁

1. 加锁与解锁

代码如下(示例):

BOBF标准锁一般采用以下方法加解锁 (锁的持有是从调用锁定函数后至程序退出前)

*  加锁
  DATA:iv_key type /BOBF/CONF_KEY.
  CALL FUNCTION 'ENQUEUE_/BOBF/E_LIB_2'
    EXPORTING
      mode_/bobf/s_lib_enqueue_node = 'E'
      mandt                         = sy-mandt
      bo_name                       = ztest=>sc_bo_name
      key                           = iv_key
*     X_BO_NAME                     = ' '
      x_key                         = 'X'
      x_key2                        = 'X'
      x_node_name                   = 'X'
      _scope                        = '3'
*     _WAIT                         = ' '
*     _COLLECT                      = ' '
    EXCEPTIONS
      foreign_lock                  = 1
      system_failure                = 2
      OTHERS                        = 3.
  IF sy-subrc EQ 0.
  ENDIF.
  
*解锁
          CALL FUNCTION 'DEQUEUE_/BOBF/E_LIB_2'
          EXPORTING
            mode_/bobf/s_lib_enqueue_node = 'E'
            mandt                         = sy-mandt
            bo_name                       = ztest=>sc_bo_name
            key                           = ls_key-db_key
*           X_BO_NAME                     = ' '
*           X_KEY                         = ' '
*           _SCOPE                        = '3'
*           _SYNCHRON                     = 'X'
*           _COLLECT                      = ' '
          .

2. 读取与解锁

读需要的锁并解除锁定 (已知KEY值)

DATA:
  lt_enq      TYPE STANDARD TABLE OF seqg3,
  lv_subrct   TYPE 					 sy-subrc,
  lv_garg     TYPE                   seqg3-garg,
  ls_enq      TYPE                   seqg3.
  
  	lv_garg(3) = sy-mandt.
    lv_garg+3(30) = ztest=>sc_bo_name.
    lv_garg+33 = db_key.
    lv_garg+95 = '00000000000000000000000000000000'.
    
* 读取锁
        CALL FUNCTION 'ENQUEUE_READ'
          EXPORTING
            garg                  = lv_garg
          TABLES
            enq                   = lt_enq
          EXCEPTIONS
            communication_failure = 1
            system_failure        = 2
            OTHERS                = 3.
        IF sy-subrc = 0.

*        解锁
          CALL FUNCTION 'ENQUE_DELETE'
            EXPORTING
              check_upd_requests = 1
*             SUPPRESS_SYSLOG_ENTRY       = ' '
            IMPORTING
              subrc              = lv_subrct
            TABLES
              enq                = lt_enq.

        ENDIF.

希望对你有所帮助


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ABAP(Advanced Business Application Programming)是SAP系统使用的一种编程语言,用于开发和定制SAP应用程序。ABAP代码编写是指使用ABAP语言编写程序,以实现特定的功能或满足特定的业务需求。 在ABAP代码编写过程,首先需要了解SAP系统的数据结构和业务流程。ABAP程序通常是在SAP系统运行的,所以熟悉系统的数据模型、数据表和数据字典非常重要。此外,也需要了解相应的业务流程,以便于在代码正确处理和操作相关数据。 编写ABAP代码的基本步骤包括:定义数据、声明变量、编写操作逻辑。在ABAP,可以使用内置的数据类型和结构来定义所需的数据,也可以通过在数据字典创建自定义数据对象。变量的声明包括数据类型和变量名,用于存储和操作数据。 操作逻辑是ABAP代码的核心部分,通过语句和表达式完成特定的功能。ABAP提供了丰富的语言结构和内置函数,可以进行数据的读取、写入、修改、删除、计算等操作。同时,也可以使用控制结构如条件语句、循环语句和函数模块来实现复杂的逻辑流程。 在编写ABAP代码时,需要注重代码的可读性和可维护性,使用合理的命名规范、注释和缩进方式。此外,还要注意异常处理和错误处理,以保证程序的稳定性和可靠性。 总而言之,ABAP代码编写是一项技术性任务,需要熟悉SAP系统的数据结构和业务流程,掌握ABAP语言的语法和特性。通过合理的逻辑设计和编程方式,可以有效地实现SAP应用程序的开发和定制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ggreekn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值