ZCMM01-23


        CHECK  RESB-LGORT EQ  G_LGORT  .  "changed by liuchun

        RESBTAB-RSNUM = RESB-RSNUM.
        RESBTAB-RSPOS = RESB-RSPOS.
        RESBTAB-MATNR = RESB-MATNR.
        RESBTAB-WERKS = RESB-WERKS.
        RESBTAB-LGORT = RESB-LGORT.
        RESBTAB-CHARG = RESB-CHARG.
        RESBTAB-MEINS = RESB-MEINS.
        RESBTAB-SHKZG = RESB-SHKZG.
        RESBTAB-ZALPGR = RESB-ALPGR. "Ariel add 100416
        RESBTAB-ENMNG = RESB-ENMNG."Add for H 100424
*Echo 20090806 add check valuation type.bn
*Ariel add batch is blank not get val_type
        IF RESBTAB-CHARG EQ SPACE.

          CALL FUNCTION 'ZRFC_MM_PCE_0054'
               EXPORTING
                    PLANT          = RESBTAB-WERKS
                    PARTNO         = RESBTAB-MATNR
                    SLOC           = RESBTAB-LGORT
               IMPORTING
                    ECODE          = L_ECODE
                    VALUATION_TYPE = L_CHARG.

          IF L_ECODE = 0.
            RESBTAB-CHARG = L_CHARG.
          ENDIF.
          CLEAR L_CHARG.
        ENDIF.
*Echo 20090806 add check valuation type.en
        CASE ZCM03-DOCTYPE.
          WHEN '1' OR 'A'.
            IF ZCM03-ENMNG IS INITIAL.
              RESBTAB-ERFMG = 0.
            ELSE.
              RESBTAB-ERFMG = CEIL( RESB-BDMNG / AFKO-GAMNG
                 * ZCM03-ENMNG ).
            ENDIF.
        ENDCASE.
        COLLECT RESBTAB.
      ENDSELECT.
    ENDIF.

* Add by liuchun to return all issue material 070619
  ELSEIF G_SLOC = 'F'.
*Yuan-Yuan 20091123 add.sn
    DEL_FLAG = 'X'.
    LOOP AT IT_MATNR.
      IF NOT IT_MATNR-LOW IS INITIAL.
        DEL_FLAG = ''.
        EXIT.
      ENDIF.
    ENDLOOP.
    IF DEL_FLAG = 'X'.
      REFRESH IT_MATNR.
    ENDIF.
*Yuan-Yuan 20091123 add.en

    SELECT MATNR WERKS LGORT BDMNG ENMNG MEINS CHARG REVLV
    RSNUM RSPOS SHKZG
    INTO CORRESPONDING FIELDS OF RESB
    FROM RESB
    WHERE RSNUM EQ AFKO-RSNUM
    AND DUMPS NE 'X' AND XLOEK NE 'X'
    AND SCHGT NE 'X' AND XWAOK EQ 'X'
*Yuan-Yuan 20091123 add.sn
    AND MATNR IN IT_MATNR.
*Yuan-Yuan 20091123 add.en
      IF RESB-WERKS CS 'PD' AND RESB-BDMNG = 0.
        CONTINUE.
      ENDIF.
      IF ZCM03-DOCTYPE <> 'H'.
*kelly 20100420 modify .sn
        IF  ( RESB-WERKS = 'PSK1' OR  RESB-WERKS = 'PSC2' ).
          IF ZCM03-DOCTYPE <> '2'.
            IF RESB-BDMNG = 0 AND RESB-ALPOS <> 'X'.
              CONTINUE.
            ENDIF.
          ELSE.
            IF RESB-ENMNG = 0.
              CONTINUE.
            ENDIF.
          ENDIF.
        ELSE. "non npd plant
          IF RESB-BDMNG = 0 AND RESB-ALPOS <> 'X'.
            CONTINUE.
          ENDIF.
        ENDIF.
*kelly 20100420 modify .en
      ENDIF.
*Yuan-Yuan 20091123 add.sn
      IF RESB-ENMNG EQ 0.
        CONTINUE.
      ENDIF.
*Yuan-Yuan 20091123 add.en
      RESBTAB-MATNR = RESB-MATNR.
      RESBTAB-WERKS = RESB-WERKS.
      RESBTAB-LGORT = RESB-LGORT.
      RESBTAB-CHARG = RESB-CHARG.
      RESBTAB-MEINS = RESB-MEINS.
      RESBTAB-RSNUM = RESB-RSNUM.
      RESBTAB-RSPOS = RESB-RSPOS.
      RESBTAB-SHKZG = RESB-SHKZG.
      RESBTAB-ZALPGR = RESB-ALPGR. "Ariel add 100416
      RESBTAB-ENMNG = RESB-ENMNG."Add for H 100424
*Echo 20090806 add check valuation type.bn
*Ariel add batch is blank not get val_type
      IF RESBTAB-CHARG EQ SPACE.

        CALL FUNCTION 'ZRFC_MM_PCE_0054'
             EXPORTING
                  PLANT          = RESBTAB-WERKS
                  PARTNO         = RESBTAB-MATNR
                  SLOC           = RESBTAB-LGORT
             IMPORTING
                  ECODE          = L_ECODE
                  VALUATION_TYPE = L_CHARG.

        IF L_ECODE = 0.
          RESBTAB-CHARG = L_CHARG.
        ENDIF.
        CLEAR L_CHARG.
      ENDIF.
*Echo 20090806 add check valuation type.en
      CASE ZCM03-DOCTYPE.
        WHEN '2'.
          RESBTAB-ERFMG = RESB-ENMNG.
      ENDCASE.
      COLLECT RESBTAB.
    ENDSELECT.
  ENDIF.
*add 080229
  IF RESBTAB-WERKS EQ 'PDY1' OR RESBTAB-WERKS EQ 'PDY2' .
    SORT RESBTAB BY LGORT ASCENDING .
  ENDIF .
*


  REFRESH ZCM04TAB. CLEAR ZCM04TAB.

  LASTDOCITEM = 0.
  SORT RESBTAB BY MATNR .    "Elven 20070403
*Yuan-Yuan 20091030 add NPD Sort by Altgroup.sn
*  clear l_value.
  SELECT SINGLE VALUE INTO L_VALUE FROM ZMM048
  WHERE WERKS = RESBTAB-WERKS AND BJECT = 'SORTBYALTG'.
*kelly adjust  sort 20100113
  IF L_VALUE EQ 'ACTIVE'.
    SORT RESBTAB BY ALPGR ASCENDING      EWAHR DESCENDING
                   MATNR ASCENDING.
*    sort resbtab by matnr ascending
*               alpgr ascending      ewahr descending.
*end adjust   by kelly 20100113
  ENDIF.
*Yuan-Yuan 20091030 add NPD Sort by Altgroup.en
*-- Ariel20090730 add case for sip ----------sn
  CASE ZCM03-DOCTYPE.
    WHEN 'A'.
      LOOP AT RESBTAB WHERE SHKZG = 'S'.
        IF G_SLOC NE 'A' OR RESBTAB-ERFMG > 0 .   "open mtl or qty>0
*     IF G_SLOC NE 'A'."changed byLIUCHUN070607
          ADD 1 TO LASTDOCITEM.
          ZCM04TAB-DOCITEM = LASTDOCITEM.
          ZCM04TAB-MATNR = RESBTAB-MATNR.
          ZCM04TAB-WERKS = RESBTAB-WERKS.

*    SELECT SINGLE lgfsb FROM marc
*    INTO zcm04tab-lgort
*    WHERE matnr = resbtab-matnr
*    AND werks = resbtab-werks.


          ZCM04TAB-LGORT = RESBTAB-LGORT.
          ZCM04TAB-CHARG = RESBTAB-CHARG .
          ZCM04TAB-ERFMG = RESBTAB-ERFMG.
          ZCM04TAB-ERFME = RESBTAB-MEINS.

          ZCM04TAB-RSNUM = RESBTAB-RSNUM.
          ZCM04TAB-RSPOS = RESBTAB-RSPOS.
****lbg20080505.add.sn
          ZCM04TAB-PLFMG = RESBTAB-ERFMG.
          CLEAR L_MPQ.
          L_CNT = 0.
          CLEAR L_MPQCNT.
          CLEAR L_MPQCNT2.
          SELECT SINGLE VALUE INTO C_MPQCNT FROM ZMM048
          WHERE WERKS = RESBTAB-WERKS AND BJECT = 'ISSUEROUND'.
          L_MPQCNT = C_MPQCNT.
          IF L_MPQCNT > 0.
            SELECT  BSTRF INTO L_MPQ FROM MARC WHERE
            MATNR = RESBTAB-MATNR AND WERKS = RESBTAB-WERKS.

              SELECT COUNT(*) INTO L_MPQCNT2 FROM RESB
              INNER JOIN AFKO ON RESB~RSNUM = AFKO~RSNUM
              WHERE AFKO~AUFNR EQ ZCM03-AUFNR
              AND RESB~MATNR EQ RESBTAB-MATNR
              AND RESB~CHARG EQ RESBTAB-CHARG.

              SELECT SINGLE RESB~ESMNG"LBG20080419.ADD ying fa qty
              INTO L_QPA FROM RESB
              INNER JOIN AFKO ON RESB~RSNUM = AFKO~RSNUM
              WHERE AFKO~AUFNR EQ ZCM03-AUFNR
              AND RESB~MATNR EQ RESBTAB-MATNR
              AND RESB~CHARG EQ RESBTAB-CHARG.
            ENDSELECT.
            IF L_MPQ > 1 AND RESBTAB-ERFMG > 0.
              IF L_QPA < 10."QPA<10 fa 1 mpq
                ZCM04TAB-ERFMG = L_MPQ * L_MPQCNT * L_MPQCNT2 .
              ELSE."QPA>=10 fa 5 mpq
                ZCM04TAB-ERFMG = L_MPQ * 5 * L_MPQCNT * L_MPQCNT2.
              ENDIF.
***lbg20080514.add.sn
              L_REQUIREQTY = 0.
              F_RESULT = RESBTAB-ERFMG / L_MPQ .
              I_RESULT = F_RESULT.
              IF F_RESULT > I_RESULT.
                I_RESULT = I_RESULT + 1.
              ENDIF.
              L_REQUIREQTY = I_RESULT * L_MPQ .
              IF ZCM04TAB-ERFMG > L_REQUIREQTY.
                ZCM04TAB-ERFMG = L_REQUIREQTY.
              ENDIF.
***lbg20080514.add.en
            ELSE.
              ZCM04TAB-ERFMG = RESBTAB-ERFMG.
            ENDIF.
          ENDIF.
****lbg20080505.add.en
          APPEND ZCM04TAB. CLEAR ZCM04TAB.
        ENDIF.
      ENDLOOP.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14397246/viewspace-666176/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14397246/viewspace-666176/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值