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/