Sie sind auf Seite 1von 12

*----------------------------------------------------------------------* * Report: ZM_MC_STOCK_ON_HAND * Version no.: 1.0 * * Author: Daisy Nguyen * * Application: Material Management * * Date created: 16/04/2002.

* * Description: This Program is to list Stock Quantity (Include Quantity * in transit) & Open P/O Quantity. *----------------------------------------------------------------------* * Modification history * *----------------------------------------------------------------------* * Request no. |Date |Programmer |Description * * |16/04/2002|K.Prabhu |Change plant to Mcleod/conco * | | |old plant and download RPT * |29/04/2002|K.Prabhu |Change back old->new prod Id* * 0001 |03/06/2002|K.Prabhu |Add Specific Stoc.Loc to Mard * 0002 |04/12/2002|Daisy Nguyen |Change Plants from Old System * | | |to New Plant (P511~P516) and * | | |add 'MaterialGrp' into condi. * 0003 |12/02/2003|Daisy Nguyen |Add 'Product Hier' column. * 0004 |19/02/2003|V.Mahesh |Downloading at Application * | | |Server - Option added * * 0005 |03/03/2003|Daisy Nguyen |Change "Material Grp" field *----------------------------------------------------------------------* REPORT ZM_MC_STOCK_ON_HAND NO STANDARD PAGE HEADING LINE-SIZE 80 LINE-COUNT 58 . *----------------------------------------------------------------------* * Tables *----------------------------------------------------------------------* TABLES: EKKO, "Purchasing Document Header EKPO, "Purchasing Document Item EKBE, "History per Purchasing Document EKET, "Scheduling Agreement Schedule Lines MARC, "Plant Data for Material LFA1, "Vendor Master (General Section) MARA, "General Material Data VBAP, "Sales Document: Item Data VBUP, "Sales Document: Item Status VBEP, "Sales Document: Schedule Line Data VBFA, "Sales Document Flow LIPS, "SD document: Delivery: Item data VAPMA, "Sales Index: Order Items by Material MARM, "Units of Measure for Material MVKE, "Sales Data for Material TVKWZ. "Org.Unit: Allowed Plants per Sales Organization *----------------------------------------------------------------------* * Structures and Internal tables *----------------------------------------------------------------------* * internal table to hold data from EKKO and EKPO DATA: BEGIN OF T_FIN OCCURS 0, MATNR LIKE EKPO-MATNR, WERKS LIKE EKPO-WERKS, MENGE LIKE EKPO-MENGE, WEMNG LIKE EKET-WEMNG, END OF T_FIN. DATA: BEGIN OF T_FIN0 OCCURS 0. INCLUDE STRUCTURE T_FIN.

DATA: END OF T_FIN0. DATA: BEGIN OF S_FIN1 OCCURS 0, MATNR LIKE EKPO-MATNR, MVGR5 LIKE MVKE-MVGR5, VMSTA LIKE MVKE-VMSTA, MMSTA LIKE MARC-MMSTA, PRDHA LIKE MARA-PRDHA, * TEMPO(1) TYPE C, WERKS LIKE EKPO-WERKS, LBKUM LIKE MBEW-LBKUM, OMENG LIKE VBBE-OMENG, MENGE LIKE EKPO-MENGE, END OF S_FIN1. DATA: T_FIN1 T_MCLEOD_RES T_CONCO_RES T_DWNLOAD LIKE LIKE LIKE LIKE S_FIN1 S_FIN1 S_FIN1 S_FIN1 OCCURS OCCURS OCCURS OCCURS 0 0 0 0 WITH WITH WITH WITH

"0002 "0003 " STK On Hand " Back Order Qty " Order Qty HEADER HEADER HEADER HEADER LINE, LINE, LINE, LINE. "0004

*-| DATA: BEGIN OF T_DNL OCCURS 0, MATNR(18) TYPE C, MVGR5(9) TYPE C, VMSTA(2) TYPE C, MMSTA(2) TYPE C, PRDHA(18) TYPE C, WERKS(4) TYPE C, LBKUM(18) TYPE C, OMENG(18) TYPE C, MENGE(18) TYPE C, END OF T_DNL. DATA V_TEXTDNL(200). *-DATA: BEGIN OF T_MARC0 OCCURS 0, MATNR TYPE MARC-MATNR, WERKS TYPE MARC-WERKS, TRAME TYPE MARC-TRAME, SOBSL TYPE MARC-SOBSL, MMSTA LIKE MARC-MMSTA, PRDHA LIKE MARA-PRDHA, END OF T_MARC0. DATA: BEGIN OF T_MARC OCCURS 0. INCLUDE STRUCTURE T_MARC0. DATA: END OF T_MARC. DATA: BEGIN OF T_MARD OCCURS 0, MATNR TYPE MARC-MATNR, WERKS TYPE MARC-WERKS, LGORT TYPE MARD-LGORT, LBKUM TYPE MBEW-LBKUM, END OF T_MARD. DATA: BEGIN VBELN POSNR MATNR OF I_OPORD OCCURS 0, LIKE VBAP-VBELN, LIKE VBAP-POSNR, LIKE VBAP-MATNR,

"0003

WERKS LIKE VBAP-WERKS, END OF I_OPORD. DATA: BEGIN OF W MATNR LIKE WERKS LIKE MENGE LIKE END OF W. OCCURS 0, VBAP-MATNR, VBAP-WERKS, VBAP-KWMENG,

* INTERNAL TABLE TO HOLD DATA FOR FIELD NAMES DATA: BEGIN OF T_FIELDS OCCURS 0, NAME(10) TYPE C, END OF T_FIELDS. DATA DATA DATA DATA DATA: V_LBKUM LIKE MARD-LABST. V_RESSTK LIKE MARD-LABST. V_MENGE LIKE VBBE-OMENG. V_BACK_QTY LIKE VBBE-OMENG. V_FLAG(6) TYPE C, V_WERKS LIKE VBAP-WERKS, V_BISMT LIKE MARA-BISMT, V_FILE LIKE RLGRAP-FILENAME, V_STAMP(14) TYPE C, V_STK_TRF_TOT TYPE I. " Total Stock in Transfer

DATA: BEGIN OF T_MVKE0 OCCURS 0, MATNR TYPE MARD-MATNR, WERKS TYPE MARD-WERKS, LGORT LIKE MARD-LGORT, * VKORG LIKE TVKWZ-VKORG, * VTWEG LIKE TVKWZ-VTWEG, VMSTA LIKE MVKE-VMSTA, LABST TYPE MARD-LABST, MVGR5 LIKE MVKE-MVGR5, END OF T_MVKE0. DATA: BEGIN OF T_MVKE. INCLUDE STRUCTURE T_MVKE0. DATA: END OF T_MVKE.

" 0005

*----------------------------------------------------------------------* * Selection-screen *----------------------------------------------------------------------* SELECTION-SCREEN COMMENT /1(60) TEXT-I01. SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001. SELECT-OPTIONS: S_WERKS FOR EKPO-WERKS, S_LIFNR FOR EKKO-LIFNR, S_MATNR FOR EKPO-MATNR, S_MVGR5 FOR MVKE-MVGR5, "0002 S_VMSTA FOR MVKE-VMSTA, S_MMSTA FOR MARC-MMSTA. *-| "0004 *PARAMETERS: P_FILE LIKE RLGRAP-FILENAME * DEFAULT 'C:\Rsoh.txt' OBLIGATORY. SELECTION-SCREEN END OF BLOCK BLK1. "0004 SELECTION-SCREEN BEGIN OF BLOCK D_BLK WITH FRAME TITLE TEXT-002. PARAMETERS: RBPC RADIOBUTTON GROUP GRP1 DEFAULT 'X', "PC Download RBBG RADIOBUTTON GROUP GRP1, "BG Download P_FILE LIKE RLGRAP-FILENAME DEFAULT 'C:\Rsoh.txt' OBLIGATORY

. "File name SELECTION-SCREEN END OF BLOCK D_BLK. *-*----------------------------------------------------------------------* * Start-of-selection. *----------------------------------------------------------------------* START-OF-SELECTION. PERFORM 100_COLLECT_DB_RECS. PERFORM 200_PROCESS_DB_RECS. PERFORM 300_DOWNLOAD_RECS. TOP-OF-PAGE. PERFORM DISPLAY_HEADER. *&---------------------------------------------------------------------* *& Form 100_collect_db_recs *&---------------------------------------------------------------------* FORM 100_COLLECT_DB_RECS. **Get Stock Quantity. SELECT C~MATNR C~WERKS C~TRAME C~SOBSL C~MMSTA A~PRDHA "0002 & 0003 INTO TABLE T_MARC FROM ( MARC AS C INNER JOIN MARA AS A ON A~MATNR EQ C~MATNR ) WHERE C~MATNR IN S_MATNR AND C~WERKS IN S_WERKS AND C~MMSTA IN S_MMSTA. SELECT M~MATNR D~WERKS D~LGORT M~VMSTA D~LABST M~MVGR5 INTO TABLE T_MVKE0 FROM ( MVKE AS M INNER JOIN TVKWZ AS T ON M~VKORG EQ T~VKORG AND M~VTWEG EQ T~VTWEG ) INNER JOIN MARD AS D ON M~MATNR = D~MATNR AND T~WERKS = D~WERKS WHERE M~MATNR IN S_MATNR AND D~WERKS IN S_WERKS AND M~VMSTA IN S_VMSTA AND M~MVGR5 IN S_MVGR5 "0005 AND D~LGORT IN ('SL01', 'SL88','SL80'). SELECT P~MATNR P~WERKS K~MENGE K~WEMNG INTO TABLE T_FIN0 FROM ( EKKO AS E INNER JOIN EKPO AS P ON E~EBELN = P~EBELN ) INNER JOIN EKET AS K ON K~EBELN EQ P~EBELN AND K~EBELP EQ P~EBELP WHERE E~BSART EQ 'NB' AND E~LOEKZ EQ SPACE AND E~LIFNR IN S_LIFNR AND P~LOEKZ EQ SPACE AND P~MATNR IN S_MATNR AND P~WERKS IN S_WERKS AND P~ELIKZ EQ SPACE AND K~MENGE > K~WEMNG. LOOP AT T_FIN0. MOVE-CORRESPONDING T_FIN0 TO T_FIN.

COLLECT T_FIN. CLEAR T_FIN. ENDLOOP. SELECT INTO FROM ON AND WHERE AND AND AND AND U~VBELN U~POSNR U~MATNR U~WERKS TABLE I_OPORD ( VAPMA AS U INNER JOIN VBUP AS A U~VBELN = A~VBELN U~POSNR = A~POSNR ) U~WERKS IN S_WERKS U~MATNR IN S_MATNR A~LFSTA BETWEEN 'A' AND 'B' A~ABSTA NE 'C' A~BESTA NE 'C'.

ENDFORM. " 100_collect_db_recs *&---------------------------------------------------------------------* *& Form 200_process_db_recs *&---------------------------------------------------------------------* FORM 200_PROCESS_DB_RECS. SORT T_MARC BY MATNR WERKS. SORT T_FIN BY MATNR WERKS. SORT T_MVKE0 BY MATNR WERKS LGORT. SORT I_OPORD BY MATNR WERKS. LOOP AT T_MARC. MOVE-CORRESPONDING T_MARC TO T_FIN1. READ TABLE T_FIN WITH KEY MATNR = T_MARC-MATNR WERKS = T_MARC-WERKS. IF SY-SUBRC EQ 0. T_FIN1-MENGE = T_FIN-MENGE - T_FIN-WEMNG. ENDIF. LOOP AT T_MVKE0 WHERE MATNR = T_MARC-MATNR AND WERKS = T_MARC-WERKS. T_FIN1-VMSTA = T_MVKE0-VMSTA. T_FIN1-MVGR5 = T_MVKE0-MVGR5. IF T_MVKE0-LGORT = 'SL80'. ADD T_MVKE0-LABST TO V_RESSTK. ELSE. ADD T_MVKE0-LABST TO V_LBKUM. ENDIF. ENDLOOP. PERFORM GET_BACK_ORDER. T_FIN1-OMENG = V_BACK_QTY. T_FIN1-MENGE = T_FIN1-MENGE + V_RESSTK. T_FIN1-LBKUM = V_LBKUM + T_MARC-TRAME. CLEAR: V_LBKUM,V_RESSTK, V_BACK_QTY. * Determine the stock in Transist IF T_MARC-SOBSL EQ SPACE. PERFORM DETERMINE_STOCK_TRANSFER USING T_MARC-MATNR T_MARC-WERKS. T_FIN1-LBKUM = T_FIN1-LBKUM - V_STK_TRF_TOT. ELSE. PERFORM DETERMINE_STOCK_TRANSFER_STOCK USING T_MARC-MATNR T_MARC-WERKS. T_FIN1-LBKUM = T_FIN1-LBKUM + V_STK_TRF_TOT.

ENDIF. CLEAR V_STK_TRF_TOT. COLLECT T_FIN1. CLEAR T_FIN1. ENDLOOP. ENDFORM. " 200_process_db_recs *&---------------------------------------------------------------------* *& Form 300_download_recs *&---------------------------------------------------------------------* FORM 300_DOWNLOAD_RECS. SORT T_FIN1 BY WERKS MATNR. LOOP AT T_FIN1. V_WERKS = T_FIN1-WERKS. PERFORM DETERMINE_PLANT_MATERIAL USING T_FIN1-WERKS. perform determine_stock_transfer_stock. IF V_FLAG EQ 'MCLEOD'. IF T_FIN1-MVGR5 EQ 'MCL'. MOVE T_FIN1-MATNR TO T_MCLEOD_RES-MATNR. MOVE T_FIN1-MVGR5 TO T_MCLEOD_RES-MVGR5. MOVE T_FIN1-VMSTA TO T_MCLEOD_RES-VMSTA. MOVE T_FIN1-MMSTA TO T_MCLEOD_RES-MMSTA. MOVE SPACE TO T_MCLEOD_RES-TEMPO. MOVE T_FIN1-PRDHA TO T_MCLEOD_RES-PRDHA. MOVE V_WERKS TO T_MCLEOD_RES-WERKS. MOVE T_FIN1-LBKUM TO T_MCLEOD_RES-LBKUM. MOVE T_FIN1-OMENG TO T_MCLEOD_RES-OMENG. MOVE T_FIN1-MENGE TO T_MCLEOD_RES-MENGE. APPEND T_MCLEOD_RES. CLEAR T_MCLEOD_RES. ELSE. ELSEIF T_FIN1-MVGR5 EQ 'COC'. MOVE T_FIN1-MATNR TO T_CONCO_RES-MATNR. MOVE T_FIN1-MVGR5 TO T_CONCO_RES-MVGR5. MOVE T_FIN1-VMSTA TO T_CONCO_RES-VMSTA. MOVE T_FIN1-MMSTA TO T_CONCO_RES-MMSTA. MOVE SPACE TO T_CONCO_RES-TEMPO. MOVE T_FIN1-PRDHA TO T_CONCO_RES-PRDHA. MOVE V_WERKS TO T_CONCO_RES-WERKS. MOVE T_FIN1-LBKUM TO T_CONCO_RES-LBKUM. MOVE T_FIN1-OMENG TO T_CONCO_RES-OMENG. MOVE T_FIN1-MENGE TO T_CONCO_RES-MENGE. APPEND T_CONCO_RES. CLEAR T_CONCO_RES. ELSE. WRITE: /02 'Not a McLeod/Conco Material', 30 T_FIN1-MATNR. ENDIF. ENDIF. CLEAR: V_FLAG, V_WERKS. ENDLOOP. IF NOT T_MCLEOD_RES[] IS INITIAL. SORT T_MCLEOD_RES BY WERKS MATNR . MOVE T_MCLEOD_RES[] TO T_DWNLOAD[]. ELSE. WRITE: /02 'No McLeod Current Stock on Hand Data'. ENDIF. IF NOT T_CONCO_RES[] IS INITIAL.

"0002

* *

"0005 "0002 "0002 "0002 "0003

"0002 "0002 "0002 "0002 "0003

SORT T_CONCO_RES BY WERKS MATNR. IF NOT T_DWNLOAD[] IS INITIAL. APPEND LINES OF T_CONCO_RES[] TO T_DWNLOAD[]. ELSE. MOVE T_CONCO_RES[] TO T_DWNLOAD[]. ENDIF. ELSE. WRITE: /02 'No Conco Current Stock on Hand Data'. ENDIF. MOVE P_FILE TO V_FILE. *-| "0004 IF RBPC EQ 'X'. "PC Download PERFORM 400_DOWNLOAD_FILE USING T_DWNLOAD V_FILE. WRITE: /02 'McLeod/Conco File Downloaded to - ', V_FILE. ELSE. "BG Download PERFORM 500_DOWNLOAD_FILE USING T_DWNLOAD V_FILE. WRITE: /02 'McLeod/Conco File Downloaded to - ', V_FILE. ENDIF. *-~ SKIP. ENDFORM. " 300_download_recs *&---------------------------------------------------------------------* *& Form display_header *&---------------------------------------------------------------------* FORM DISPLAY_HEADER. WRITE: /02 'Prog-Id:',SY-REPID, 65 'Date:',SY-DATUM, /02 'User-Id:',SY-UNAME, 65 'Page:',SY-PAGNO. ULINE /(80). WRITE: /26 '-- CURRENT STOCK ON HAND --'. ULINE /(80). ENDFORM. " display_header *&---------------------------------------------------------------------* *& Form DETERMINE_PLANT_MATERIAL *&---------------------------------------------------------------------* FORM DETERMINE_PLANT_MATERIAL USING PLANT. CASE PLANT. "0002 WHEN 'P521'. MOVE 'P516' TO V_WERKS. WHEN 'P522'. MOVE 'P512' TO V_WERKS. WHEN 'P523'. MOVE 'P513' TO V_WERKS. WHEN 'P524'. MOVE 'P514' TO V_WERKS. WHEN 'P525'. MOVE 'P515' TO V_WERKS. ENDCASE. * CASE PLANT. * WHEN 'P511'. * MOVE '10' TO V_WERKS. * MOVE 'MCLEOD' TO V_FLAG. * WHEN 'P512'. * MOVE '20' TO V_WERKS. * MOVE 'MCLEOD' TO V_FLAG. * WHEN 'P513'.

* MOVE '30' TO V_WERKS. * MOVE 'MCLEOD' TO V_FLAG. * WHEN 'P514'. * MOVE '50' TO V_WERKS. * MOVE 'MCLEOD' TO V_FLAG. * WHEN 'P515'. * MOVE '40' TO V_WERKS. * MOVE 'MCLEOD' TO V_FLAG. * WHEN 'P521'. * MOVE '40' TO V_WERKS. * MOVE 'CONCO' TO V_FLAG. * WHEN 'P522'. * MOVE '20' TO V_WERKS. * MOVE 'CONCO' TO V_FLAG. * WHEN 'P523'. * MOVE '30' TO V_WERKS. * MOVE 'CONCO' TO V_FLAG. * WHEN 'P524'. * MOVE '50' TO V_WERKS. * MOVE 'CONCO' TO V_FLAG. * WHEN 'P525'. * MOVE '60' TO V_WERKS. * MOVE 'CONCO' TO V_FLAG. * ENDCASE. ENDFORM. " DETERMINE_PLANT_MATERIAL *&---------------------------------------------------------------------* *& Form 400_DOWNLOAD_FILE *&---------------------------------------------------------------------* FORM 400_DOWNLOAD_FILE USING VALUE(S_FIN1) LIKE T_DWNLOAD V_FILE. * * * * * * * * * * * * * * * * * * T_FIELDS-NAME = 'PRODUCT ID'. APPEND T_FIELDS. CLEAR T_FIELDS. T_FIELDS-NAME = 'BLANK '. APPEND T_FIELDS. CLEAR T_FIELDS. T_FIELDS-NAME = 'BRANCH ID'. APPEND T_FIELDS. CLEAR T_FIELDS. T_FIELDS-NAME = 'STOCK QTY'. APPEND T_FIELDS. CLEAR T_FIELDS. T_FIELDS-NAME = 'BACK ORDER QTY'. APPEND T_FIELDS. CLEAR T_FIELDS. T_FIELDS-NAME = 'ORDER QTY'. APPEND T_FIELDS. CLEAR T_FIELDS. IF NOT T_DWNLOAD[] IS INITIAL. CALL FUNCTION 'WS_DOWNLOAD' EXPORTING CODEPAGE FILENAME FILETYPE TABLES DATA_TAB FIELDNAMES EXCEPTIONS FILE_OPEN_ERROR

"0004

= 'IBM' = V_FILE = 'DAT' = T_DWNLOAD = T_FIELDS = 1

FILE_WRITE_ERROR INVALID_FILESIZE INVALID_TYPE NO_BATCH UNKNOWN_ERROR INVALID_TABLE_WIDTH GUI_REFUSE_FILETRANSFER CUSTOMER_ERROR OTHERS .

= = = = = = = = =

2 3 4 5 6 7 8 9 10 "0004

ELSE. WRITE: /02 'No data found to be Downloaded.'. ENDIF. IF SY-SUBRC <> 0. MESSAGE S008(ZM). " Unable to create the Download File STOP. ENDIF.

ENDFORM. " 400_DOWNLOAD_FILE *-| *&---------------------------------------------------------------------* *& Form 500_DOWNLOAD_FILE "0004 *&---------------------------------------------------------------------* FORM 500_DOWNLOAD_FILE USING VALUE(S_FIN1) LIKE T_DWNLOAD V_FILE. * Downloading file to Application Server IF NOT T_DWNLOAD[] IS INITIAL. OPEN DATASET V_FILE FOR OUTPUT IN TEXT MODE. IF SY-SUBRC EQ 0. LOOP AT T_DWNLOAD. MOVE-CORRESPONDING T_DWNLOAD TO T_DNL. CONCATENATE T_DNL-MATNR ',' T_DNL-MVGR5 ',' T_DNL-VMSTA ',' T_DNL-MMSTA ',' T_DNL-PRDHA ',' T_DNL-WERKS ',' T_DNL-LBKUM ',' T_DNL-OMENG ',' T_DNL-MENGE ',' INTO V_TEXTDNL. TRANSFER V_TEXTDNL TO V_FILE. CLEAR: T_DWNLOAD, T_DNL, V_TEXTDNL. ENDLOOP. ELSE. WRITE: /02 'Error While Downloading data to File : ', V_FILE. ENDIF. CLOSE DATASET V_FILE. ELSE. WRITE: /02 'No data found to be Downloaded.'. ENDIF. IF SY-SUBRC <> 0. MESSAGE S008(ZM). STOP.

ENDIF. ENDFORM. " 500_DOWNLOAD_FILE *-*&---------------------------------------------------------------------* *& Form get_open_qty *&---------------------------------------------------------------------* *FORM GET_OPEN_QTY. * DATA: ZDELIVERED LIKE LIPS-LFIMG. * * LOOP AT I_OPORD. * CLEAR: ZDELIVERED. "How much of order is already delivered? * * SELECT VBELN POSNN INTO CORRESPONDING FIELDS OF VBFA * FROM VBFA "Get delivery documents * WHERE VBELV = I_OPORD-VBELN * AND POSNV = I_OPORD-POSNR * AND VBTYP_N IN ('I','J'). * * SELECT SINGLE MATNR LFIMG VRKME * INTO CORRESPONDING FIELDS OF LIPS FROM LIPS * WHERE VBELN = VBFA-VBELN * AND POSNR = VBFA-POSNN. * * IF SY-SUBRC EQ 0. * IF LIPS-VRKME <> I_OPORD-MEINS. * IF LIPS-VRKME <> ''. * PERFORM CONV_UNIT USING LIPS-MATNR "Product * LIPS-LFIMG "Qty * LIPS-VRKME. "Qty Unit * ENDIF. * ENDIF. * ENDIF. * * ZDELIVERED = ZDELIVERED + LIPS-LFIMG. * ENDSELECT. * * SELECT MBDAT WMENG VRKME "How much is ordered when? * INTO CORRESPONDING FIELDS OF VBEP * FROM VBEP * WHERE VBELN = I_OPORD-VBELN * AND POSNR = I_OPORD-POSNR * AND WMENG > 0 * ORDER BY MBDAT. * * IF VBEP-VRKME <> I_OPORD-MEINS. * IF VBEP-VRKME <> ''. * PERFORM CONV_UNIT USING I_OPORD-MATNR "Product * VBEP-WMENG "Qty * VBEP-VRKME. "Qty Unit * ENDIF. * ENDIF. * * ZDELIVERED = ZDELIVERED - VBEP-WMENG. "Is it already delivered? * IF ZDELIVERED < 0. * W-MATNR = I_OPORD-MATNR. * W-WERKS = I_OPORD-WERKS. * W-MENGE = ZDELIVERED * -1. * COLLECT W. * CLEAR W.

* ZDELIVERED = 0. * ENDIF. * ENDSELECT. * ENDLOOP. *ENDFORM. *&---------------------------------------------------------------------* *& Form CONV_UNIT *&---------------------------------------------------------------------* FORM CONV_UNIT USING MATNR QTY QTY_UNIT. DATA: ZQUOTIENT TYPE F, ZRESULT TYPE F. * TRANSLATE QTY USING ', '. SELECT SINGLE * FROM MARM WHERE MATNR = MATNR AND MEINH = QTY_UNIT. ZQUOTIENT = MARM-UMREZ / MARM-UMREN. ZRESULT = QTY * ZQUOTIENT. QTY = ZRESULT. ENDFORM. " CONV_UNIT *&---------------------------------------------------------------------* *& Form determine_stock_transfer_stock *&---------------------------------------------------------------------* FORM DETERMINE_STOCK_TRANSFER_STOCK USING MATNR WERKS. DATA: L_MENGE LIKE EKPO-MENGE, L_WAMNG LIKE EKET-WAMNG. SELECT X~MENGE Y~WAMNG X~EBELN X~EBELP INTO (L_MENGE, L_WAMNG,EKPO-EBELN,EKPO-EBELP) FROM ( EKPO AS X INNER JOIN EKET AS Y ON X~EBELN = Y~EBELN AND X~EBELP = Y~EBELP ) WHERE X~MATNR EQ MATNR AND X~WERKS EQ WERKS AND X~PSTYP EQ '7' AND X~LOEKZ EQ SPACE AND X~MENGE NE Y~WAMNG. * AND Y~EINDT GT SY-DATUM. IF NOT L_WAMNG GT L_MENGE. V_STK_TRF_TOT = V_STK_TRF_TOT + ( L_MENGE - L_WAMNG ). ENDIF. CLEAR: L_MENGE, L_WAMNG. ENDSELECT. COMMIT WORK. ENDFORM. " determine_stock_transfer_stock *&---------------------------------------------------------------------* *& Form get_back_order *&---------------------------------------------------------------------* FORM GET_BACK_ORDER. LOOP AT I_OPORD WHERE MATNR = T_MARC-MATNR AND WERKS = T_MARC-WERKS. CLEAR : V_MENGE.

CALL FUNCTION 'ZV_BACK_ORDER_DETERMINE' EXPORTING VBELN = I_OPORD-VBELN POSNR = I_OPORD-POSNR * LFIMG = IMPORTING * KWMENG = KBMENG = V_MENGE. V_BACK_QTY = V_MENGE + V_BACK_QTY. ENDLOOP. ENDFORM. " get_back_order *&---------------------------------------------------------------------* *& Form DETERMINE_STOCK_TRANSFER *&---------------------------------------------------------------------* FORM DETERMINE_STOCK_TRANSFER USING MATNR WERKS. DATA: L_MENGE LIKE EKPO-MENGE, L_WAMNG LIKE EKET-WAMNG. SELECT X~MENGE Y~WAMNG X~EBELN X~EBELP INTO (L_MENGE, L_WAMNG,EKPO-EBELN,EKPO-EBELP) FROM ( EKPO AS X INNER JOIN EKET AS Y ON X~EBELN = Y~EBELN AND X~EBELP = Y~EBELP ) WHERE X~MATNR EQ MATNR AND X~PSTYP EQ '7' AND X~WERKS NE WERKS AND X~LOEKZ EQ SPACE AND X~MENGE NE Y~WAMNG. * AND Y~EINDT GT SY-DATUM. IF NOT L_WAMNG GT L_MENGE. V_STK_TRF_TOT = V_STK_TRF_TOT + ( L_MENGE - L_WAMNG ). ENDIF. CLEAR: L_MENGE, L_WAMNG. ENDSELECT. COMMIT WORK. ENDFORM. " DETERMINE_STOCK_TRANSFER

Das könnte Ihnen auch gefallen