FORM. GETDATA_MAIN.
DATA: L_BUKRS LIKE T001-BUKRS,
L_WKG(6) TYPE C,
L_QTY LIKE COSB-WKG001,
L_LEN TYPE I,
L_BTRQTY LIKE COEP-WKGBTR,
L_COUNT TYPE I.
DATA: STRCOND(50) TYPE C,
ISTRCOND LIKE TABLE OF STRCOND(50).
RANGES R_OBJNR FOR COEP-OBJNR.
RANGES R_BUKRS FOR T001-BUKRS.
IF P_BUKRS <> ''.
L_BUKRS = P_BUKRS.
ELSE.
SELECT SINGLE BUKRS INTO L_BUKRS FROM COEP
WHERE WERKS = P_WERKS AND OBJNR LIKE 'OR%'
AND GJAHR = P_GJAHR AND PERIO = P_PERIO.
ENDIF.
SELECT SINGLE WAERS SAKLN INTO (L_WAERS,L_SAKLN)
FROM T001 INNER JOIN T004 ON T001~KTOPL = T004~KTOPL
WHERE BUKRS = L_BUKRS.
R_BUKRS-SIGN = 'I'.
R_BUKRS-OPTION = 'EQ'.
R_BUKRS-LOW = L_BUKRS.
APPEND R_BUKRS.
IF L_WAERS = 'NTD'.
EXCHANGE_R = 100.
ELSE.
EXCHANGE_R = 1.
ENDIF.
IF P_AUFNR <> ''.
LOOP AT P_AUFNR.
IF P_AUFNR-LOW <> '' AND P_AUFNR-HIGH <> ''.
R_OBJNR-LOW = 'OR'.
R_OBJNR-HIGH = 'OR'.
R_OBJNR-LOW+2 = P_AUFNR-LOW.
R_OBJNR-HIGH+2 = P_AUFNR-HIGH.
R_OBJNR-SIGN = 'I'.
R_OBJNR-OPTION = 'BT'.
ELSEIF P_AUFNR-LOW <> '' AND P_AUFNR-HIGH = ''.
R_OBJNR-LOW = 'OR'.
R_OBJNR-LOW+2 = P_AUFNR-LOW.
R_OBJNR-SIGN = 'I'.
R_OBJNR-OPTION = 'EQ'.
ENDIF.
APPEND R_OBJNR.
SELECT DISTINCT OBJNR INTO ITAB-OBJNR
FROM COEP
WHERE WERKS = P_WERKS AND GJAHR = P_GJAHR AND OBJNR LIKE 'OR%'
AND PERIO = P_PERIO AND BUKRS IN R_BUKRS
AND MATNR IN P_MATNR AND OBJNR IN R_OBJNR.
APPEND ITAB.
ENDSELECT.
CLEAR R_OBJNR.
REFRESH R_OBJNR.
ENDLOOP.
ELSE.
SELECT DISTINCT OBJNR INTO ITAB-OBJNR
FROM COEP
WHERE WERKS = P_WERKS AND GJAHR = P_GJAHR AND OBJNR LIKE 'OR%'
AND PERIO = P_PERIO AND BUKRS IN R_BUKRS
AND MATNR IN P_MATNR AND OBJNR IN R_OBJNR.
APPEND ITAB.
ENDSELECT.
ENDIF.
CLEAR R_OBJNR .
REFRESH R_OBJNR.
L_LEN = STRLEN( P_PERIO ).
CONCATENATE 'WKG' P_PERIO INTO L_WKG.
DATA:ICOUNT TYPE I,
INUM TYPE I,
IRECORD TYPE I,
LINECOUNT TYPE I.
CLEAR:ITMP,ITMP_E.
REFRESH:ITMP,ITMP_E.
LOOP AT ITAB.
ICOUNT = ICOUNT + 1.
R_OBJNR_1-SIGN = 'I'.
R_OBJNR_1-OPTION = 'EQ'.
R_OBJNR_1-LOW = ITAB-OBJNR.
APPEND R_OBJNR_1.
IF ICOUNT = 2000.
IF R1 = 'X'.
PERFORM. GET_WKG_FIRST USING L_WKG .
PERFORM. GET_WKG_END USING L_WKG .
ELSE.
PERFORM. GET_MEG_WKG.
ENDIF.
PERFORM. GET_BTR USING 'MAT'.
PERFORM. GET_BTR USING 'SUB'.
PERFORM. GET_BTR USING 'OVH'.
CLEAR:ICOUNT,R_OBJNR_1.
REFRESH R_OBJNR_1.
ENDIF.
ENDLOOP.
IF ICOUNT > 0 AND ICOUNT < 2000.
IF R1 = 'X'.
PERFORM. GET_WKG_FIRST USING L_WKG .
PERFORM. GET_WKG_END USING L_WKG .
ELSE.
PERFORM. GET_MEG_WKG.
ENDIF.
PERFORM. GET_BTR USING 'MAT'.
PERFORM. GET_BTR USING 'SUB'.
PERFORM. GET_BTR USING 'OVH'.
CLEAR:ICOUNT,R_OBJNR_1.
REFRESH R_OBJNR_1.
ENDIF.
CLEAR: L_COUNT,L_PAGENO.
DESCRIBE TABLE ITAB LINES IRECORD.
LINECOUNT = 25.
IRECORD = IRECORD - LINECOUNT + 1.
LOOP AT ITAB.
INUM = INUM + 1.
L_COUNT = L_COUNT + 1.
IF INUM < IRECORD.
IF L_COUNT > LINECOUNT.
L_PAGENO = L_PAGENO + 1.
L_COUNT = 1.
ENDIF.
ELSEIF INUM = IRECORD.
L_PAGENO = L_PAGENO + 2.
ENDIF.
ITAB_MAIN-PAGENO = L_PAGENO.
ITAB_MAIN-AUFNR = ITAB-OBJNR+2(12).
IF R1 = 'X'.
LOOP AT ITMP WHERE ZLNID = 'MAT' AND BJNR = ITAB-OBJNR.
ITAB_MAIN-WKGFMAT = ITMP-WKGQTY * EXCHANGE_R.
ENDLOOP.
LOOP AT ITMP WHERE ZLNID = 'SUB' AND BJNR = ITAB-OBJNR.
ITAB_MAIN-WKGFSUB = ITMP-WKGQTY * EXCHANGE_R.
ENDLOOP.
LOOP AT ITMP WHERE ZLNID = 'OVH' AND BJNR = ITAB-OBJNR.
ITAB_MAIN-WKGFOVH = ITMP-WKGQTY * EXCHANGE_R.
ENDLOOP.
LOOP AT ITMP_E WHERE ZLNID = 'MAT' AND BJNR = ITAB-OBJNR.
ITAB_MAIN-WKGEMAT = ITMP-WKGQTY * EXCHANGE_R.
ENDLOOP.
LOOP AT ITMP_E WHERE ZLNID = 'SUB' AND BJNR = ITAB-OBJNR.
ITAB_MAIN-WKGESUB = ITMP-WKGQTY * EXCHANGE_R.
ENDLOOP.
LOOP AT ITMP_E WHERE ZLNID = 'OVH' AND BJNR = ITAB-OBJNR.
ITAB_MAIN-WKGEOVH = ITMP-WKGQTY * EXCHANGE_R.
ENDLOOP.
ELSE.
SELECT SINGLE MATNR INTO (ITAB_MAIN-MATNR)
FROM AFPO WHERE AUFNR = ITAB_MAIN-AUFNR.
LOOP AT ITAB_MEG_WKG WHERE BJNR = ITAB-OBJNR.
ITAB_MAIN-MEGBTRALL = ITAB_MEG_WKG-MEGBTR.
ITAB_MAIN-WKGBTRALL = ITAB_MEG_WKG-WKGBTR * EXCHANGE_R.
ENDLOOP.
ENDIF.
LOOP AT ITAB_BTR_MAT WHERE BJNR = ITAB-OBJNR.
ITAB_MAIN-BTRMAT = ITAB_BTR_MAT-WKGBTR * EXCHANGE_R.
ENDLOOP.
LOOP AT ITAB_BTR_SUB WHERE BJNR = ITAB-OBJNR.
ITAB_MAIN-BTRSUB = ITAB_BTR_SUB-WKGBTR * EXCHANGE_R.
ENDLOOP.
LOOP AT ITAB_BTR_OVH WHERE BJNR = ITAB-OBJNR.
ITAB_MAIN-BTROVH = ITAB_BTR_OVH-WKGBTR * EXCHANGE_R.
ENDLOOP.
APPEND ITAB_MAIN.
CLEAR ITAB_MAIN.
ENDLOOP.
ENDFORM. " GETDATA_MAIN
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14397246/viewspace-666308/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14397246/viewspace-666308/