ZCMM01-7-1

*Add by Elven Wang 20060419 end

      CLEAR OKCODE.
*add by yuan-yuan xiao 080619
      IF F_SHOW = 'Y'.
        PERFORM. CHECK_HEADER_DATA.
      ENDIF.
* barcode scan aiking 100126
      IF SY-TCODE = 'ZCMM02'.
        PERFORM. SCAN_SAVE_PROCESS.
      ENDIF.

      PERFORM. CHECK_ITEM_DATA.
*Copied from ZRMM_CSD_0050 L2050~L2146 by royzhang 20100309 begin
      IF  ZCM03-DOCTYPE = '3'.

        DATA: M_VALUE LIKE ZMM048-VALUE.
        DATA: M_AUART LIKE AUFK-AUART.
        DATA: L_MAABC LIKE MARC-MAABC.
        DATA: M_PSMNG LIKE AFPO-PSMNG.
        DATA: M_QUANTITY LIKE AFPO-PGMNG.
        DATA: BEGIN OF ITAB_IT OCCURS 0 ,
              MATNR LIKE RESB-MATNR,
              ALPGR LIKE RESB-ALPGR,
              BDMNG LIKE RESB-BDMNG,
              ENMNG LIKE RESB-ENMNG,
              QUANTITY LIKE AFPO-PGMNG,
              BAUGR LIKE RESB-BAUGR,  "ariel add 100311
           END OF ITAB_IT .
        DATA:  ITAB_IT1 LIKE ITAB_IT OCCURS 0 WITH HEADER LINE.
        DATA: L_QUANTITY LIKE AFPO-PGMNG.
        DATA: L_ERRORQTY(15) TYPE C.
        LOOP AT ZCM04TAB.
          IF ZCM04TAB-WERKS <> ''.
            EXIT.
          ENDIF.
        ENDLOOP.
* 3.3 Receipt based on A class meterial issued qty for epd2 Aiking
        CLEAR M_VALUE.
        CLEAR M_AUART.
        CLEAR L_MAABC.
        CLEAR M_PSMNG.
        CLEAR M_QUANTITY.
        CLEAR: ITAB_IT, ITAB_IT[],ITAB_IT1,ITAB_IT1[].
* 3.3.1 Get Order type
        SELECT SINGLE AUART INTO M_AUART
        FROM AUFK
        WHERE AUFK~AUFNR = ZCM03-AUFNR.

* 3.3.2 Get indicator on plant level of whether controlled
*       by A class material
        SELECT SINGLE VALUE INTO M_VALUE
        FROM ZMM048
        WHERE WERKS = ZCM04TAB-WERKS
          AND BJECT = 'WOGRPLANT'
          AND VALUE = 'ACTIVE'.

        IF SY-SUBRC = 0.
* 3.3.3 Get indicator on order type level of whether controlled
*       by A class material
          SELECT SINGLE CVALUE INTO M_VALUE
          FROM ZPCECONTROLVALUE
          WHERE WERKS = ZCM04TAB-WERKS
            AND CTYPE = 'B9AWOTYPE'
            AND CVALUE = M_AUART
            AND INDICATOR2 = 'ACT'.

          IF SY-SUBRC = 0.
* 3.3.3.1 Get WO Plan Quantity and GRed Qty
            SELECT SINGLE PSMNG WEMNG INTO (M_PSMNG, M_QUANTITY)
            FROM AFPO
            WHERE AUFNR = ZCM03-AUFNR.
* 3.3.3.2 Get WO Item without deletion flag
            SELECT  MATNR BDMNG ENMNG ALPGR BAUGR
            INTO (ITAB_IT-MATNR,ITAB_IT-BDMNG,ITAB_IT-ENMNG,
                  ITAB_IT-ALPGR,ITAB_IT-BAUGR) "Ariel add bagur
            FROM RESB
            WHERE AUFNR = ZCM03-AUFNR
              AND DUMPS NE 'X'  "ROYZHANG 20100408
              AND XLOEK NE 'X'.
* 3.3.3.3 Get A class material
              SELECT SINGLE MAABC INTO L_MAABC
              FROM MARC
              WHERE MATNR = ITAB_IT-MATNR
                AND WERKS = ZCM04TAB-WERKS.

              IF L_MAABC = 'A'.
                APPEND ITAB_IT.
                CLEAR ITAB_IT.
              ENDIF.
            ENDSELECT.
            SORT ITAB_IT BY BAUGR ALPGR MATNR. "Ariel add baugr
* Add candy 2010.02.17 if class don't eq 'A',Don't need compare
            IF NOT ITAB_IT[] IS INITIAL.
*Add.sn Ariel 100311
              LOOP AT ITAB_IT.
                ITAB_IT1-MATNR = ITAB_IT-MATNR.
                ITAB_IT1-BDMNG = ITAB_IT-BDMNG.
                ITAB_IT1-BAUGR = ITAB_IT-BAUGR.
                IF ITAB_IT-ALPGR NE SPACE.
                  SELECT SUM( BDMNG ) SUM( ENMNG )

                  INTO (ITAB_IT1-BDMNG, ITAB_IT1-ENMNG)
                  FROM RESB
                  WHERE AUFNR = ZCM03-AUFNR
                   AND XLOEK NE 'X'
                   AND ALPGR = ITAB_IT-ALPGR
                   AND BAUGR = ITAB_IT-BAUGR.
                ELSE.
                  SELECT SUM( BDMNG ) SUM( ENMNG )
                  INTO (ITAB_IT1-BDMNG, ITAB_IT1-ENMNG)
                  FROM RESB
                  WHERE AUFNR = ZCM03-AUFNR
                   AND XLOEK NE 'X'
                   AND MATNR = ITAB_IT-MATNR
                   AND BAUGR = ITAB_IT-BAUGR.
                ENDIF.
                APPEND ITAB_IT1.
                CLEAR ITAB_IT1.
              ENDLOOP.
*Add.en Ariel 100311
*              loop at itab_it. "Ariel marked 100311
*                if itab_it-alpgr ne space.
*                else.
*                  itab_it1-matnr = itab_it-matnr.
*                endif.
*                itab_it1-bdmng = itab_it-bdmng.
*                itab_it1-enmng = itab_it-enmng.
*                itab_it1-alpgr = itab_it-alpgr.
*                collect itab_it1.
*                clear itab_it1.
*              endloop.

              LOOP AT ITAB_IT1.
                IF ITAB_IT1-ALPGR NE SPACE.
                  READ TABLE ITAB_IT WITH KEY ALPGR =  ITAB_IT1-ALPGR.
                  ITAB_IT1-MATNR = ITAB_IT-MATNR.
                ENDIF.
                ITAB_IT1-QUANTITY =
                    ITAB_IT1-ENMNG * M_PSMNG / ITAB_IT1-BDMNG.
                MODIFY ITAB_IT1.
              ENDLOOP.

              SORT ITAB_IT1 BY QUANTITY ASCENDING.
              READ TABLE ITAB_IT1 INDEX 1.

* will GR + had GR
              L_QUANTITY = ZCM04TAB-ERFMG + M_QUANTITY.

              IF L_QUANTITY > ITAB_IT1-QUANTITY.
                L_ERRORQTY = L_QUANTITY.

                CONCATENATE  ITAB_IT1-MATNR
                ': Received QTY ' L_ERRORQTY
                 INTO L_MESSAGE.
                L_ERRORQTY =  ITAB_IT1-QUANTITY.

                MESSAGE E000 WITH  L_MESSAGE
                ' > A classPN Issued QTY'  L_ERRORQTY .
              ENDIF.
            ENDIF. "add by Candy 2010.02.17
          ENDIF.
        ENDIF.
      ENDIF.
*Copied from ZRMM_CSD_0050 L2050~L2146 by royzhang 20100309 end
      PERFORM. SAVE_DATA.
*add by yuan-yuan xiao 080619
      IF F_SHOW = 'Y'.
        IF S_POSTID = ''.
          MESSAGE E000 WITH 'Need input Post Employ ID!'.
        ELSE.
          PERFORM. POST_DOCUMENT.
        ENDIF.
      ENDIF.
*
*ADD BY NANCY 090612
      IF S_POSTID = 'BDCWIP'.

        PERFORM. POST_DOCUMENT.
      ENDIF.


    WHEN 'NEWDOC' .
      CLEAR OKCODE.
      IF SY-CALLD EQ SPACE.

        CLEAR ZCM03.  CLEAR ZCM04 .
        CLEAR ZCM03TAB. REFRESH ZCM03TAB.
        CLEAR ZCM04TAB. REFRESH ZCM04TAB.

        ZCM03-DOCYEAR = G_DOCYEAR.
        ZCM03-DOCTYPE = G_DOCTYPE.
        ZCM03-BADAT   = G_BADAT.
        ZCM03-EMPLOYID = G_EMPLOYID .
        ZCM03-AUFNR = G_AUFNR.
        ZCM03-KOSTL = G_KOSTL.
        ZCM03-ENMNG = G_WOQTY.

*        CALL SCREEN 1000 .
        IF SY-TCODE EQ 'ZCMM03'.
          TRANSACTION = 'D'.
          LEAVE TO SCREEN 5000.

        ELSEIF SY-TCODE EQ 'ZCMM02'.
          TRANSACTION = 'U'.
          LEAVE TO SCREEN 3000.

        ELSE.
          TRANSACTION = ''.
          LEAVE TO SCREEN 1000.
        ENDIF.

*Elven070511update for  reuse of user input data
*  LEAVE TO TRANSACTION SY-TCODE.
      ELSE.
        LEAVE TO SCREEN 0.
      ENDIF.
*Elven070511 marked     CALL SCREEN 1000 .
*          LEAVE TO SCREEN 1000.
*Add by Elven Wang 20070109 end

    WHEN 'BTNORDER'.      "add by liuchun 061223
      CLEAR OKCODE.

      CALL SCREEN 2001 STARTING AT 15 7.
*Ting 091110-----------------------------begin


    WHEN 'MARK'.
      LOOP AT ZCM04TAB WHERE MATNR NE SPACE.
        ZCM04TAB-SELINDICATOR = 'X'.
        MODIFY ZCM04TAB.
      ENDLOOP.
    WHEN 'DMRK'.
      LOOP AT ZCM04TAB WHERE MATNR NE SPACE.
        ZCM04TAB-SELINDICATOR = ''.
        MODIFY ZCM04TAB.
      ENDLOOP.
*Ting 091110-----------------------------end

*      CALL SCREEN 2001 STARTING AT 15 7.

* FIFO control add by Aiking 100125.bn
    WHEN 'DBCLICKITE'.
      GET CURSOR LINE ITEMCTRL-CURRENT_LINE.
      ITEMCTRL-CURRENT_LINE = ITEMCTRL-CURRENT_LINE +
                              ITEMCTRL-TOP_LINE - 1.
      READ TABLE ZCM04TAB  INDEX ITEMCTRL-CURRENT_LINE.
      IF ZCM04TAB-MARKDELETION NE 'X'.
        L_NUMBER = ZCM03-DOCNUMBER.
        L_ITEM   = ZCM04TAB-DOCITEM.
        L_WERKS1 = ZCM04TAB-WERKS.
        L_LGORT1  = ZCM04TAB-LGORT.
        L_CHARG1 = ZCM04TAB-CHARG.
        L_MATERIAL = ZCM04TAB-MATNR.
*"Ariel add.sn 100406
        CLEAR M_MEINS.
        SELECT SINGLE MEINS
        INTO M_MEINS
        FROM MARA
        WHERE MATNR = ZCM04TAB-MATNR.
        IF M_MEINS+(1) = 'K'.
          L_TOTALQTY = ZCM04TAB-ERFMG * 1000.
        ELSE.
          L_TOTALQTY = ZCM04TAB-ERFMG.
        ENDIF.
*"Ariel add.en
        L_WERKS2  = ZCM04TAB-UMWRK.
        L_LGORT2  = ZCM04TAB-UMLGO.

* check whether do need excute scan
        PERFORM. GET_SCAN_FLAG.

        IF L_FLAG EQ 'X' . "need scan
          IF ZCM03-DOCTYPE CA '157'. "out
            L_MVTFLAG = 'O'.
          ELSEIF ZCM03-DOCTYPE CA '26'. "in
            L_MVTFLAG = 'I'.
          ELSEIF ZCM03-DOCTYPE = '8'. "adjust
            L_MVTFLAG = 'A'.
          ELSEIF ZCM03-DOCTYPE = '4'. "adjust
            L_MVTFLAG = 'T'.
          ENDIF.

          PERFORM. SELECT_SCANDATA.
          CALL SCREEN 7000.
        ENDIF.
      ENDIF.
* FIFO control add by Aiking 100125.en

  ENDCASE.
ENDMODULE.                 " user_command_2000  INPUT

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值