SAP:MF60/MBST BADI:MB_DOCUMENT_BADI

method IF_EX_MB_DOCUMENT_BADI~MB_DOCUMENT_BEFORE_UPDATE.
   DATA: T_MKPF LIKE LINE OF XMKPF.
   READ TABLE XMKPF INTO T_MKPF INDEX 1.


    DATA: T_ZTCPC01 TYPE ZTCPC01,
          T_ZTCPC01_TOT TYPE TABLE OF ZTCPC01,
          T_ZTCPC01_OLD TYPE TABLE OF ZTCPC01,
          WA_ZTCPC01 TYPE ZTCPC01,
          T_MSEG LIKE LINE OF XMSEG,
          T_ZTCPC02 TYPE ZTCPC02.
    DATA:  L_LOOP LIKE SY-TABIX.
    DATA:  L_US TYPE RMPU_USER_SELCRIT,
           L_RA_FAUFNR TYPE RMPU_RA_FAUFNR,
           L_RA_FAUFNR_TMP LIKE LINE OF L_RA_FAUFNR,
           L_AUFNR TYPE AFKO-AUFNR,
           L_MBLNR TYPE MKPF-MBLNR,
           L_SMBLN TYPE MSEG-SMBLN.

*  IMPORT US TO L_US FROM MEMORY ID RMPU_MEM_ID_USERSEL.

 IF T_MKPF-TCODE2 'MF60'.
  REFRESH:T_ZTCPC01_TOT,T_ZTCPC01_OLD.
  READ TABLE XMKPF INTO T_MKPF INDEX 1.
  L_AUFNR T_MKPF-BKTXT.
  LOOP AT XMSEG INTO T_MSEG WHERE XAUTO ''.
      T_ZTCPC01-AUFNR T_MKPF-BKTXT.
      T_ZTCPC01-MATNR T_MSEG-MATNR.
      T_ZTCPC01-WERKS T_MSEG-WERKS.
      T_ZTCPC01-LGORT T_MSEG-LGORT.   "Goods issue from location
      T_ZTCPC01-CHARG T_MSEG-CHARG.
      T_ZTCPC01-SOBKZ T_MSEG-SOBKZ.
      T_ZTCPC01-LIFNR T_MSEG-LIFNR.
      T_ZTCPC01-PS_PSP_PNR T_MSEG-PS_PSP_PNR.
      T_ZTCPC01-CLABM T_MSEG-MENGE.
      T_ZTCPC01-MEINS T_MSEG-MEINS.
      T_ZTCPC01-ERSDA T_MKPF-BUDAT.
      T_ZTCPC01-ERNAM T_MKPF-USNAM.
      COLLECT T_ZTCPC01 INTO T_ZTCPC01_TOT.

      MOVE-CORRESPONDING T_ZTCPC01 TO T_ZTCPC02.
      T_ZTCPC02-MBLNR T_MSEG-MBLNR.
      T_ZTCPC02-MJAHR T_MSEG-MJAHR.
      T_ZTCPC02-ZEILE T_MSEG-ZEILE.
      T_ZTCPC02-LGORT T_MSEG-LGORT.
      T_ZTCPC02-UMLGO T_MSEG-UMLGO.
      T_ZTCPC02-USNAM T_MKPF-USNAM.
      T_ZTCPC02-BUDAT T_MKPF-BUDAT.
      T_ZTCPC02-CPUTM T_MKPF-CPUTM.
      T_ZTCPC02-RSNUM T_MSEG-RSNUM.
      T_ZTCPC02-RSPOS T_MSEG-RSPOS.

      INSERT ZTCPC02 FROM T_ZTCPC02.           "Detail table of transacion log
*      INSERT ZTCPC03 FROM T_ZTCPC02.
ENDLOOP.

    SELECT INTO TABLE T_ZTCPC01_OLD FROM ZTCPC01
    WHERE ZTCPC01~AUFNR L_AUFNR.  "T_MKPF-XABLN.
  IF NOT T_ZTCPC01_OLD[] IS INITIAL.
    SORT T_ZTCPC01_OLD BY AUFNR MATNR WERKS LGORT CHARG.
    LOOP AT T_ZTCPC01_TOT INTO T_ZTCPC01.
       L_LOOP SY-TABIX.
       READ TABLE T_ZTCPC01_OLD INTO WA_ZTCPC01 WITH KEY AUFNR T_ZTCPC01-AUFNR
                                          MATNR T_ZTCPC01-MATNR
                                          WERKS T_ZTCPC01-WERKS
                                          LGORT T_ZTCPC01-LGORT
                                          CHARG T_ZTCPC01-CHARG BINARY SEARCH.
       IF SY-SUBRC 0.
         T_ZTCPC01-CLABM T_ZTCPC01-CLABM + WA_ZTCPC01-CLABM.
         T_ZTCPC01-LAEDA T_ZTCPC01-ERSDA.
         T_ZTCPC01-AENAM T_ZTCPC01-ERNAM.
         T_ZTCPC01-ERSDA WA_ZTCPC01-ERSDA.
         T_ZTCPC01-ERNAM WA_ZTCPC01-ERNAM.
         MODIFY T_ZTCPC01_TOT FROM T_ZTCPC01 TRANSPORTING CLABM LAEDA ERSDA ERNAM AENAM.
       ENDIF.
       SY-TABIX L_LOOP.
     ENDLOOP.
   ENDIF.
   MODIFY ZTCPC01 FROM TABLE T_ZTCPC01_TOT.
  ENDIF.   "End of MF60 process
  IF T_MKPF-TCODE2 'MBST'.
    LOOP AT XMSEG INTO T_MSEG WHERE XAUTO ''.
        T_ZTCPC01-AUFNR T_MKPF-BKTXT.
        T_ZTCPC01-MATNR T_MSEG-MATNR.
        T_ZTCPC01-WERKS T_MSEG-WERKS.
        T_ZTCPC01-LGORT T_MSEG-LGORT.   "Goods issue from location
        T_ZTCPC01-CHARG T_MSEG-CHARG.
        T_ZTCPC01-SOBKZ T_MSEG-SOBKZ.
        T_ZTCPC01-LIFNR T_MSEG-LIFNR.
        T_ZTCPC01-PS_PSP_PNR T_MSEG-PS_PSP_PNR.
        T_ZTCPC01-CLABM T_MSEG-MENGE.
        T_ZTCPC01-MEINS T_MSEG-MEINS.
        T_ZTCPC01-LAEDA T_MKPF-BUDAT.
        T_ZTCPC01-AENAM T_MKPF-USNAM.
        COLLECT T_ZTCPC01 INTO T_ZTCPC01_TOT.
        L_SMBLN T_MSEG-SMBLN.
      ENDLOOP.
  SELECT SINGLE AUFNR INTO L_AUFNR FROM ZTCPC02  WHERE ZTCPC02~MBLNR L_SMBLN.
  IF SY-SUBRC 0.
      SELECT INTO TABLE T_ZTCPC01_OLD FROM ZTCPC01
        WHERE ZTCPC01~AUFNR L_AUFNR.  "T_MKPF-XABLN.
     IF NOT T_ZTCPC01_OLD[] IS INITIAL.
     SORT T_ZTCPC01_OLD BY AUFNR MATNR WERKS LGORT CHARG.
      LOOP AT T_ZTCPC01_TOT INTO T_ZTCPC01.
         L_LOOP SY-TABIX.
         READ TABLE T_ZTCPC01_OLD INTO WA_ZTCPC01 WITH KEY AUFNR T_ZTCPC01-AUFNR
                                          MATNR T_ZTCPC01-MATNR
                                          WERKS T_ZTCPC01-WERKS
                                          LGORT T_ZTCPC01-LGORT
                                          CHARG T_ZTCPC01-CHARG BINARY SEARCH.
         IF SY-SUBRC 0.
           T_ZTCPC01-CLABM WA_ZTCPC01-CLABM T_ZTCPC01-CLABM.
           T_ZTCPC01-ERSDA WA_ZTCPC01-ERSDA.
           T_ZTCPC01-ERNAM WA_ZTCPC01-ERNAM.
          MODIFY T_ZTCPC01_TOT FROM T_ZTCPC01.
         ENDIF.
         SY-TABIX L_LOOP.
       ENDLOOP.
     ENDIF.
     MODIFY ZTCPC01 FROM TABLE T_ZTCPC01_TOT .
* UPDATE ZTCPC02
     LOOP AT XMSEG INTO T_MSEG WHERE XAUTO ''.
       UPDATE ZTCPC02 SET STATUS 'N' WHERE ZTCPC02~MBLNR T_MSEG-SMBLN
                                         AND ZTCPC02~ZEILE T_MSEG-SMBLP.
     ENDLOOP.
    ENDIF.
  ENDIF.
endmethod.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值