设为首页收藏本站

SAP Best Business Solution

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1481|回复: 0

CHECK SAP BATCH LOCKED or not

[复制链接]

24

主题

24

帖子

204

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
204
发表于 2017-2-13 14:34:04 | 显示全部楼层 |阅读模式
FORM CHECK_BATCH_LOCK  TABLES   PT_MSEG STRUCTURE MSEG
                                PT_RETURN STRUCTURE BAPIRET2.

  DATA: T1   TYPE P,
        T2   TYPE P,
        T3   TYPE P,
        TMIN TYPE P,
        L_SECOND TYPE P VALUE '0.2'.

  DATA: L_GARG LIKE SEQG3-GARG,
        L_GUNAME LIKE SEQG3-GUNAME,
        L_SUBRC LIKE SY-SUBRC.

  DATA: BEGIN OF ENQ OCCURS 0.
          INCLUDE STRUCTURE SEQG3.
  DATA: END OF ENQ.

  LOOP AT PT_MSEG.
    CONCATENATE SY-MANDT PT_MSEG-MATNR PT_MSEG-WERKS PT_MSEG-CHARG
      INTO L_GARG.
    TMIN = 120000000.                                       "2 minute

    CLEAR:T1,T2,T3.
    DO.
      GET RUN TIME FIELD T1.
      REFRESH ENQ.
      CALL FUNCTION 'ENQUEUE_EMMCHA'
        EXPORTING
          MATNR          = PT_MSEG-MATNR
          WERKS          = PT_MSEG-WERKS
          CHARG          = PT_MSEG-CHARG
        EXCEPTIONS
          FOREIGN_LOCK   = 1
          SYSTEM_FAILURE = 2
          OTHERS         = 99.
      IF SY-SUBRC = 0.
        L_SUBRC = 0.
        EXIT.
      ELSE.
        L_SUBRC = 4.
        WAIT UP TO L_SECOND SECONDS.
      ENDIF.

      GET RUN TIME FIELD T2.
      T2 = T2 - T1.
      T3 = T2 + T3.
      IF T3 > TMIN.
        EXIT.
      ENDIF.
    ENDDO.

    IF L_SUBRC <> 0.
      PT_RETURN-TYPE = 'E'.
      CONCATENATE 'Batch' PT_MSEG-CHARG 'has been locked by'
        ENQ-GUNAME 'in TCODE' ENQ-GTCODE
        INTO PT_RETURN-MESSAGE SEPARATED BY SPACE.
      APPEND PT_RETURN.
      CLEAR PT_RETURN.
    ELSE.
      CALL FUNCTION 'DEQUEUE_EMMCHA'
       EXPORTING
*     MODE_MCHA       = 'E'
         MANDT           = SY-MANDT
         MATNR          = PT_MSEG-MATNR
         WERKS          = PT_MSEG-WERKS
         CHARG          = PT_MSEG-CHARG
*         X_MATNR         = ' '
*         X_WERKS         = ' '
*         X_CHARG         = ' '
*         _SCOPE          = '3'
*         _SYNCHRON       = ' '
*         _COLLECT        = ' '
                .
      WAIT UP TO L_SECOND SECONDS.
    ENDIF.
  ENDLOOP.
ENDFORM.                    " check_batch_lock


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



QQ|Archiver|手机版|小黑屋|www.sapbbs.com    

GMT+8, 2019-2-17 12:59 , Processed in 1.108032 second(s), 28 queries .

声明:本站严禁任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!

本站内容由网友原创或转载,如果侵犯了您的合法权益,请及时联系处理!© admin@sapbbs.com

快速回复 返回顶部 返回列表