*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/