判断是否有人在操作某张表,并获取…

加锁时,有时候需要判断谁占用了该表
   
    call function 'ENQUEUE_READ'
            exporting
                gclient               = gclient
                gname                 = 'EWUARCHIV'
                garg                   = garg
                guname                 = space
            importing
                number                 = number
                subrc                 = subrc
            tables
                enq                   = enq
            exceptions
                communication_failure = 1
                system_failure         = 2
                others                 = 3.
      if subrc = 0 and number ne 0.
        read table enq index 1.
        if sy-subrc = 0.
          message i510(eu) with enq-guname 'EWUARCHIV'.
        else.
          message i521(eu) with 'EWUARCHIV'.
        endif.
      else.
        message i521(eu) with 'EWUARCHIV'.
      endif.
      aendern = space.
    when others.
      message s010(ad) with 'Nur Anzeige m?glich.'(011).
      aendern = space.

例:
FORM zform_lock_data USING   u_matnr TYPE matnr
                              u_lgpla TYPE lgpla
                      CHANGING lock_name TYPE string.

    CLEAR g_it_lock_name.
    CLEAR g_wa_lock_name.
    CLEAR lock_name.

    CALL FUNCTION 'ENQUEUE_EZ_STOCK_MOVE'
    EXPORTING
      mode_zstock_view       = 'X'
      matnr                   = u_matnr
      lgpla                   = u_lgpla
*       X_MATNR                 = ' '
*       X_LGPLA                 = ' '
*       _SCOPE                 = '2'
*       _WAIT                   = ' '
*       _COLLECT               = ' '
    EXCEPTIONS
      foreign_lock           = 1
      system_failure         = 2
      OTHERS                 = 3
              .
    IF sy-subrc <> 0.

      CALL FUNCTION 'ENQUEUE_READ'
        EXPORTING
          gclient = sy-mandt
          gname   = 'ZSTOCK_VIEW'
          garg     = ' '
          guname   = ''
        TABLES
          enq     = g_it_lock_name.

      LOOP AT g_it_lock_name INTO g_wa_lock_name.

        IF g_wa_lock_name-garg(18) = u_matnr AND g_wa_lock_name-garg+18 = u_lgpla.
          CONCATENATE lock_name
                      g_wa_lock_name-guname ':' INTO lock_name.
        ENDIF.
      ENDLOOP.

    ENDIF.
  ENDFORM. 

另外SM12是查看表被锁情况的一个tcode,可以进去看看
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值