*Yuan-Yuan 20091123 add.en
***lbg20080918.add.en
LOOP AT ZCM04TAB WHERE MARKDELETION NE 'X' AND MATNR NE
SPACE.
*Ariel add 2010.04.23.sn check unit if 'EA' not allow decimal
SELECT SINGLE * FROM ZMM048
WHERE WERKS = ZCM04TAB-WERKS
AND BJECT = 'DECIMALCEK'
AND VALUE = 'ACTIVE'.
IF SY-SUBRC EQ 0 AND ZCM04TAB-ERFME = 'EA'.
L_DEC = FRAC( ZCM04TAB-ERFMG ).
IF L_DEC <> 0.
MESSAGE E000 WITH ZCM04TAB-DOCITEM
ZCM04TAB-MATNR
' Unit is EA not allow Decimal! '.
ENDIF.
ENDIF.
*Ariel add 2010.04.23.en
* Elven20070411 add Reservation check
* IF ZCM04TAB-RSNUM IS INITIAL OR ZCM04TAB-RSPOS IS INITIAL.
CLEAR L_RSNUM.
CLEAR L_RSPOS.
* add by candy Huseh document type A check reservation
IF ZCM03-DOCTYPE EQ '1' OR ZCM03-DOCTYPE EQ '2' OR
ZCM03-DOCTYPE EQ 'A' OR ZCM03-DOCTYPE EQ 'H'.
*"Ariel add 100208 get goods issue part ABC code
SELECT SINGLE MAABC
INTO ZCM04TAB-MAABC
FROM MARC
WHERE MATNR = ZCM04TAB-MATNR
AND WERKS = ZCM04TAB-WERKS.
MODIFY ZCM04TAB.
*Ariel 100208 add end
***LBG20080423.ADD.SN faliao - tuiliao >= ruku
L_CNT = 0.
L_RECONTROL = 'N'.
SELECT COUNT(*) INTO L_CNT FROM ZMM048 WHERE
WERKS = ZCM04TAB-WERKS AND BJECT = 'OVERRETURN'
AND VALUE = 'ACTIVE'.
IF L_CNT > 0.
L_RECONTROL = 'Y'.
ENDIF.
IF L_RECONTROL = 'Y'.
CLEAR: L_PSMNG, L_WEMNG, L_DAUAT.
SELECT SINGLE AFPO~PSMNG AFPO~WEMNG AFPO~DAUAT
INTO (L_PSMNG, L_WEMNG, L_DAUAT ) FROM AFPO
WHERE AUFNR EQ ZCM03-AUFNR
AND POSNR EQ '0001'.
ENDIF.
****lbg20080423.add.sn faliao - tuiliao >= ruku
L_NOPOSTRETURN = 0.
IF ZCM03-DOCTYPE = '2' AND L_RECONTROL = 'Y'.
PERFORM. RETURN_CONTROL.
ENDIF.
****lbg20080423.add.en
***LBG20080423.ADD.EN faliao - tuiliao >= ruku
CLEAR: L_ENMNG.
CLEAR: L_ALPGR.
CLEAR: L_ALPOS.
CLEAR: L_BAUGR.
CLEAR: L_REQUIREQTY.
CLEAR: L_QPA.
L_YINGFA = 0.
***lbg20080509.add.sn
CLEAR: L_VALUE,RES_FLAG.
SELECT SINGLE VALUE INTO L_VALUE FROM ZMM048
WHERE WERKS = ZCM04TAB-WERKS AND BJECT = 'DOCTYPE13'.
*Yuan-Yuan 20091024 add.sn
SELECT SINGLE VALUE INTO L_VALUE1 FROM ZMM048
WHERE WERKS = ZCM04TAB-WERKS AND BJECT = 'WORETURNGI'.
*Yuan-Yuan 20091024 add.en
*Ariel add090818.start ------------------------------------------*
SELECT SINGLE INDICATOR1 INTO RES_FLAG FROM ZPCECONTROLVALUE
WHERE WERKS = ZCM04TAB-WERKS AND CTYPE = 'RESCHECK'.
*Ariel add090818.end --------------------------------------------*
*Ariel add100114.start EPD2 SUB GROUP OVER GI CONTROL-------------*
SELECT COUNT( * ) INTO L_SGI FROM ZMM048
WHERE WERKS = ZCM04TAB-WERKS
AND BJECT = 'OVERISSUE3'
AND VALUE = 'ACTIVE'.
*Ariel add100114.end --------------------------------------------*
**********************************Aiking.sn
*Echo 20090806 add check valuation type.bn
CALL FUNCTION 'ZRFC_MM_PCE_0054'
EXPORTING
PLANT = ZCM04TAB-WERKS
PARTNO = ZCM04TAB-MATNR
SLOC = ZCM04TAB-LGORT
IMPORTING
VALUATION_TYPE = L_CHARG.
*Ariel add090818 RES_FLAG check
IF L_VALUE = '261'.
SELECT SINGLE RESB~RSNUM RESB~RSPOS RESB~ENMNG
RESB~BDMNG RESB~ALPGR RESB~ALPOS RESB~BAUGR
RESB~ESMNG "LBG20080419.ADD ying fa qty
INTO (L_RSNUM ,L_RSPOS, L_ENMNG ,
L_REQUIREQTY ,L_ALPGR ,L_ALPOS , L_BAUGR ,
L_QPA )
FROM RESB INNER JOIN AFKO ON RESB~RSNUM = AFKO~RSNUM
WHERE AFKO~AUFNR EQ ZCM03-AUFNR
AND RESB~MATNR EQ ZCM04TAB-MATNR
AND RESB~RSNUM EQ ZCM04TAB-RSNUM
AND RESB~RSPOS EQ ZCM04TAB-RSPOS
AND RESB~XLOEK NE 'X' AND RESB~BDMNG > 0
AND RESB~CHARG EQ ZCM04TAB-CHARG.
ELSE.
***lbg20080509.add.en
IF L_CHARG NE SPACE. "have valuation type
SELECT SINGLE RESB~RSNUM RESB~RSPOS RESB~ENMNG
RESB~BDMNG RESB~ALPGR RESB~ALPOS RESB~BAUGR
RESB~ESMNG "LBG20080419.ADD ying fa qty
INTO (L_RSNUM ,L_RSPOS, L_ENMNG ,
L_REQUIREQTY ,L_ALPGR ,L_ALPOS , L_BAUGR ,
L_QPA )
FROM RESB INNER JOIN AFKO ON RESB~RSNUM = AFKO~RSNUM
WHERE AFKO~AUFNR EQ ZCM03-AUFNR
AND RESB~MATNR EQ ZCM04TAB-MATNR
AND RESB~RSNUM EQ ZCM04TAB-RSNUM
AND RESB~RSPOS EQ ZCM04TAB-RSPOS.
ELSE.
SELECT SINGLE RESB~RSNUM RESB~RSPOS RESB~ENMNG
RESB~BDMNG RESB~ALPGR RESB~ALPOS RESB~BAUGR
RESB~ESMNG "LBG20080419.ADD ying fa qty
INTO (L_RSNUM ,L_RSPOS, L_ENMNG ,
L_REQUIREQTY ,L_ALPGR ,L_ALPOS , L_BAUGR ,
L_QPA )
FROM RESB INNER JOIN AFKO ON RESB~RSNUM = AFKO~RSNUM
WHERE AFKO~AUFNR EQ ZCM03-AUFNR
AND RESB~MATNR EQ ZCM04TAB-MATNR
AND RESB~RSNUM EQ ZCM04TAB-RSNUM
AND RESB~RSPOS EQ ZCM04TAB-RSPOS
AND RESB~CHARG EQ ZCM04TAB-CHARG.
ENDIF.
ENDIF.
**********************************Aiking.en
IF SY-SUBRC NE 0 .
* if sy-subrc ne0 or zcm03-doctype eq '2'."tuiliao bu kaoLV ITEM
***lbg20080509.add.sn
IF L_VALUE = '261'.
SELECT SINGLE RESB~RSNUM RESB~RSPOS RESB~ENMNG
RESB~BDMNG RESB~ALPGR RESB~ALPOS RESB~BAUGR
RESB~ESMNG
"LBG20080419.ADD ying fa qty
INTO (L_RSNUM ,L_RSPOS, L_ENMNG ,
L_REQUIREQTY,L_ALPGR ,L_ALPOS ,L_BAUGR ,L_QPA)
FROM RESB
INNER JOIN AFKO ON RESB~RSNUM = AFKO~RSNUM
WHERE AFKO~AUFNR EQ ZCM03-AUFNR
AND RESB~MATNR EQ ZCM04TAB-MATNR
AND RESB~XLOEK NE 'X' AND RESB~BDMNG > 0
AND RESB~CHARG EQ ZCM04TAB-CHARG.
ELSE.
***lbg20080509.add.en
IF L_CHARG EQ SPACE. "have not valuation type
SELECT SINGLE RESB~RSNUM RESB~RSPOS RESB~ENMNG
RESB~BDMNG RESB~ALPGR RESB~ALPOS RESB~BAUGR
RESB~ESMNG
"LBG20080419.ADD ying fa qty
INTO (L_RSNUM ,L_RSPOS, L_ENMNG ,
L_REQUIREQTY,L_ALPGR ,L_ALPOS ,L_BAUGR ,L_QPA)
FROM RESB
INNER JOIN AFKO ON RESB~RSNUM = AFKO~RSNUM
WHERE AFKO~AUFNR EQ ZCM03-AUFNR
AND RESB~MATNR EQ ZCM04TAB-MATNR
AND RESB~CHARG EQ ZCM04TAB-CHARG.
ELSE.
IF ZCM03-DOCTYPE = '2'. "only for return
SELECT SINGLE RESB~RSNUM RESB~RSPOS RESB~ENMNG
RESB~BDMNG RESB~ALPGR RESB~ALPOS RESB~BAUGR
RESB~ESMNG
"LBG20080419.ADD ying fa qty
INTO (L_RSNUM ,L_RSPOS, L_ENMNG ,
L_REQUIREQTY,L_ALPGR ,L_ALPOS ,L_BAUGR ,L_QPA)
FROM RESB
INNER JOIN AFKO ON RESB~RSNUM = AFKO~RSNUM
WHERE AFKO~AUFNR EQ ZCM03-AUFNR
AND RESB~MATNR EQ ZCM04TAB-MATNR.
ENDIF.
ENDIF.
ENDIF.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH 'No Reservation info of '
ZCM04TAB-DOCITEM "kelly 100203
ZCM04TAB-MATNR
ZCM04TAB-CHARG.
ENDIF.
ENDIF.
ZCM04TAB-RSNUM = L_RSNUM.
ZCM04TAB-RSPOS = L_RSPOS.
MODIFY ZCM04TAB.
IF ZCM03-DOCTYPE EQ '2' AND ZCM04TAB-WERKS CS 'TW'.
IF L_ENMNG < ZCM04TAB-ERFMG.
MESSAGE E000 WITH 'Error: Return Qty > Issue Qty'
ZCM04TAB-MATNR ZCM04TAB-CHARG.
ENDIF.
ENDIF.
*Yuan-Yuan 20091024 add NPD WO R-GI Control.sn
IF ZCM03-DOCTYPE EQ '2' AND L_VALUE1 EQ 'ACTIVE'.
CLEAR:L_ENMNG1, L_TOTALISSUE, L_TOTALRETURN.
SELECT SINGLE ZGROUP
INTO ZPCEMM045-ZGROUP
FROM ZPCEMM045
WHERE WERKS EQ ZCM04TAB-WERKS
AND LGORT EQ ZCM04TAB-LGORT.
SELECT SUM( MENGE )
INTO L_TOTALISSUE
FROM AUFM
WHERE AUFNR EQ ZCM03-AUFNR
AND SHKZG EQ 'H' "issue qty
AND MATNR EQ ZCM04TAB-MATNR
AND WERKS EQ ZCM04TAB-WERKS
AND LGORT IN
( SELECT LGORT
FROM ZPCEMM045
WHERE WERKS EQ ZCM04TAB-WERKS
AND ZGROUP EQ ZPCEMM045-ZGROUP ).
SELECT SUM( MENGE )
INTO L_TOTALRETURN
FROM AUFM
WHERE AUFNR EQ ZCM03-AUFNR
AND SHKZG EQ 'S' "return qty
AND MATNR EQ ZCM04TAB-MATNR
AND WERKS EQ ZCM04TAB-WERKS
AND LGORT IN
( SELECT LGORT
FROM ZPCEMM045
WHERE WERKS EQ ZCM04TAB-WERKS
AND ZGROUP EQ ZPCEMM045-ZGROUP ).
L_ENMNG1 = L_TOTALISSUE - L_TOTALRETURN.
IF SY-SUBRC <> 0.
MESSAGE E398(00) WITH ' Return Sloc ' ZCM04TAB-LGORT
' is error '.
ELSE.
IF ZCM04TAB-ERFMG > L_ENMNG1.
*kelly modi by 2010/2/3
L_MESSAGE2 = 'return qty :'.
L_MESSAGE3 = 'Item :'.
CONCATENATE L_MESSAGE3 ZCM04TAB-DOCITEM ZCM04TAB-MATNR
L_MESSAGE2 INTO L_MESSAGE1 SEPARATED BY SPACE.
MESSAGE E000 WITH L_MESSAGE1 ZCM04TAB-ERFMG
' > gi qty ' L_ENMNG1.
* message e398(00) with zcm04tab-docitem
* 'return qty ' zcm04tab-erfmg ' > gi qty ' l_enmng1.
*end kelly 2010/2/3
ENDIF.
ENDIF.
CLEAR ZPCEMM045.
ENDIF.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14397246/viewspace-666158/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14397246/viewspace-666158/