Você está na página 1de 15

&---------------------------------------------------------------------* *& Report ZMMGR_AGEING *& *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* REPORT ZMMGR_AGEING. TABLES : MSEG, MKPF, MARA.

TYPE-POOLS: SLIS. DATA: IT_EVENTS TYPE SLIS_T_EVENT, IT_SORT TYPE SLIS_T_SORTINFO_ALV, IT_FCAT TYPE SLIS_T_FIELDCAT_ALV, IT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER. CONSTANTS: C_FLAG TYPE C VALUE 'X', C_LFT TYPE C VALUE 'L', C_RGT TYPE C VALUE 'R', C_TABNAME TYPE SLIS_TABNAME VALUE 'IT_FINAL'. DATA : FLAG. DATA: WA_LAYOUT TYPE SLIS_LAYOUT_ALV, WA_EVENT TYPE SLIS_ALV_EVENT, WA_SORT TYPE SLIS_SORTINFO_ALV, WA_FCAT TYPE SLIS_FIELDCAT_ALV, C_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SUB_PF_STATUS', " PF Status C_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'SUB_USER_COMMAND'." User . RANGES :RESBI FOR MDLG-BERID , "dfps RESWK FOR EKKO-RESWK, "sdp462 RESLO FOR EKPO-RESLO , "dfps SOBKZ FOR EKPO-SOBKZ. DATA: WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV. RANGES: ELIKZ FOR EKPO-ELIKZ, LOEKZ FOR EKPO-LOEKZ. SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. SELECT-OPTIONS : WERKS FOR MSEG-WERKS OBLIGATORY, LGORT FOR MSEG-LGORT, CHARG FOR MSEG-CHARG, MATNR FOR MSEG-MATNR, MTART FOR MARA-MTART, MATKL FOR MARA-MATKL, BUDAT FOR SY-DATUM DEFAULT SY-DATUM NO INTERVALS NO-EXTENSION O BLIGATORY. SELECTION-SCREEN END OF BLOCK B1. SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002. PARAMETERS : DAY1(3) TYPE N DEFAULT '030', DAY2(3) TYPE N DEFAULT '060', DAY3(3) TYPE N DEFAULT '090', DAY4(3) TYPE N DEFAULT '120', DAY5(3) TYPE N DEFAULT '150'. SELECTION-SCREEN END OF BLOCK B2. DATA : DAYS TYPE PEA_SCRDD, STK TYPE EKET-WEMNG, ISS TYPE EKET-WEMNG, FLG_S. DATA : IT_MSEG TYPE TABLE OF MSEG WITH HEADER LINE, IT_MKPF TYPE TABLE OF MKPF WITH HEADER LINE. DATA : IT_MSEG_T TYPE TABLE OF MSEG WITH HEADER LINE, IT_MSEG_F TYPE TABLE OF MSEG WITH HEADER LINE,

IT_MSEG_F1 TYPE TABLE OF MSEG WITH HEADER LINE, IT_MKPF_T TYPE TABLE OF MKPF WITH HEADER LINE. DATA : IT_MSEG_L TYPE TABLE OF MSEG WITH HEADER LINE, IT_MKPF_L TYPE TABLE OF MKPF WITH HEADER LINE, IT_EKET TYPE TABLE OF EKET WITH HEADER LINE, IT_MBEWH TYPE TABLE OF MBEWH WITH HEADER LINE, IT_MBEW TYPE TABLE OF MBEW WITH HEADER LINE, IT_MARA TYPE TABLE OF MARA WITH HEADER LINE. DATA : IT_T001W TYPE TABLE OF T001W WITH HEADER LINE, IT_MAKT TYPE TABLE OF MAKT WITH HEADER LINE, IT_MCHB TYPE TABLE OF MCHB WITH HEADER LINE, IT_MARD TYPE TABLE OF MARD WITH HEADER LINE. DATA : BEGIN OF IT_FINAL OCCURS 10, MATNR TYPE MATNR, MAKTX TYPE MAKTX, WERKS TYPE MSEG-WERKS, NAME1 TYPE NAME1, LGORT TYPE MSEG-LGORT, CHARG TYPE MSEG-CHARG, SUBC TYPE MSEG-MENGE, CONS TYPE MSEG-MENGE, TRANS TYPE MSEG-MENGE, STOCK TYPE MSEG-MENGE, STOCK1 TYPE MSEG-MENGE, STOCK2 TYPE MSEG-MENGE, STOCK3 TYPE MSEG-MENGE, STOCK4 TYPE MSEG-MENGE, STOCK5 TYPE MSEG-MENGE, STOCK6 TYPE MSEG-MENGE, VALUE1 TYPE MSEG-DMBTR, VALUE2 TYPE MSEG-DMBTR, VALUE3 TYPE MSEG-DMBTR, VALUE4 TYPE MSEG-DMBTR, VALUE5 TYPE MSEG-DMBTR, VALUE6 TYPE MSEG-DMBTR, VALUE TYPE MSEG-DMBTR, SPART TYPE MARA-SPART, MTART TYPE MARA-MTART, MEINS TYPE MARA-MEINS, END OF IT_FINAL. DATA: BEGIN OF XTAB6 OCCURS 0, WERKS LIKE EKPO-WERKS, MATNR LIKE EKPO-MATNR, MENGE LIKE EKBE-MENGE, MEINS LIKE EKPO-MEINS, DMBTR LIKE EKBE-DMBTR, WAERS LIKE EKBE-WAERS, NETWR LIKE EKPO-NETWR, BWAER LIKE EKKO-WAERS, EBELN LIKE EKBE-EBELN, EBELP LIKE EKBE-EBELP, SOBKZ LIKE MDBS-SOBKZ, PSTYP LIKE MDBS-PSTYP, BSTMG LIKE EKBE-MENGE, BSTME LIKE EKPO-MEINS, RESWK LIKE EKKO-RESWK, BSAKZ LIKE EKKO-BSAKZ, LGORT LIKE EKPO-LGORT, RESLO LIKE EKPO-RESLO,

"sdp462 "DFPS "DFPS

END OF XTAB6. DATA : IDX1 TYPE SY-TABIX. DATA : L_I1(3) TYPE N, L_I2(3) TYPE N, L_I3(3) TYPE N, L_I4(3) TYPE N, L_I5(3) TYPE N, L_I6(3) TYPE N, IDX TYPE SY-TABIX. DATA : STK1 TYPE SCRTEXT_L, STK2 TYPE SCRTEXT_L, STK3 TYPE SCRTEXT_L, STK4 TYPE SCRTEXT_L, STK5 TYPE SCRTEXT_L, STK6 TYPE SCRTEXT_L. DATA : VAL1 TYPE SCRTEXT_L, VAL2 TYPE SCRTEXT_L, VAL3 TYPE SCRTEXT_L, VAL4 TYPE SCRTEXT_L, VAL5 TYPE SCRTEXT_L, VAL6 TYPE SCRTEXT_L. START-OF-SELECTION. REFRESH: ELIKZ, LOEKZ. SELECT * FROM WHERE WERKS AND LGORT AND CHARG AND MATNR AND BWART AND BWART MSEG INTO TABLE IT_MSEG IN WERKS IN LGORT IN CHARG IN MATNR <> '641' AND BWART <> '642' <> '103' AND BWART <> '104'.

IF NOT IT_MSEG[] IS INITIAL. SELECT * FROM EKET INTO TABLE IT_EKET FOR ALL ENTRIES IN IT_MSEG WHERE EBELN = IT_MSEG-EBELN AND EBELP = IT_MSEG-EBELP. IT_MSEG_F[] = IT_MSEG[]. IT_MSEG_F1[] = IT_MSEG[]. SELECT * FROM MKPF INTO TABLE IT_MKPF FOR ALL ENTRIES IN IT_MSEG WHERE MBLNR = IT_MSEG-MBLNR AND MJAHR = IT_MSEG-MJAHR AND BUDAT LE BUDAT-LOW. SELECT * FROM MARA INTO TABLE IT_MARA FOR ALL ENTRIES IN IT_MSEG WHERE MATNR = IT_MSEG-MATNR AND MTART IN MTART AND MATKL IN MATKL. SELECT * FROM MCHB INTO TABLE IT_MCHB FOR ALL ENTRIES IN IT_MSEG WHERE MATNR = IT_MSEG-MATNR AND WERKS = IT_MSEG-WERKS

AND LGORT = IT_MSEG-LGORT AND CHARG = IT_MSEG-CHARG. SELECT * FROM MARD INTO TABLE IT_MARD FOR ALL ENTRIES IN IT_MSEG WHERE MATNR = IT_MSEG-MATNR AND WERKS = IT_MSEG-WERKS AND LGORT = IT_MSEG-LGORT. SELECT * FROM T001W INTO TABLE IT_T001W FOR ALL ENTRIES IN IT_MSEG WHERE WERKS = IT_MSEG-WERKS. SELECT * FROM MAKT INTO TABLE IT_MAKT FOR ALL ENTRIES IN IT_MSEG WHERE MATNR = IT_MSEG-MATNR AND SPRAS = 'E '. ENDIF. L_I1 L_I2 L_I3 L_I4 L_I5 = = = = = DAY1 DAY2 DAY3 DAY4 DAY5 + + + + + 1. 1. 1. 1. 1.

ELIKZ-SIGN = 'I'. ELIKZ-OPTION = 'EQ'. CLEAR ELIKZ-LOW. APPEND ELIKZ. LOEKZ-SIGN = 'I'. LOEKZ-OPTION = 'EQ'. CLEAR LOEKZ-LOW. APPEND LOEKZ. CALL FUNCTION 'MB_ADD_TRANSFER_QUANTITY' EXPORTING CUMULATE = ' ' I_CROSS_COMPANY = 'X' I_NON_CROSS_COMPANY = 'X' TABLES XMATNR = MATNR XWERKS = WERKS XRESWK = RESWK XSOBKZ = SOBKZ XELIKZ = ELIKZ XLOEKZ = LOEKZ XTAB6 = XTAB6 EXCEPTIONS OTHERS = 1. IT_MSEG_T[] = IT_MSEG[]. IT_MKPF_T[] = IT_MKPF[]. IT_MSEG_L[] = IT_MSEG[]. DATA: X_PERIOD LIKE T009B-POPER, X_YEAR LIKE CSSL-GJAHR. DATA: X_PERIOD1 LIKE T009B-POPER, X_YEAR1 LIKE CSSL-GJAHR. CALL FUNCTION 'DATE_TO_PERIOD_CONVERT' EXPORTING I_DATE = BUDAT-LOW I_PERIV = 'V3' IMPORTING

E_BUPER E_GJAHR EXCEPTIONS INPUT_FALSE T009_NOTFOUND T009B_NOTFOUND OTHERS

= X_PERIOD = X_YEAR = = = = 1 2 3 4.

CALL FUNCTION 'DATE_TO_PERIOD_CONVERT' EXPORTING I_DATE = SY-DATUM I_PERIV = 'V3' IMPORTING E_BUPER = X_PERIOD1 E_GJAHR = X_YEAR1 EXCEPTIONS INPUT_FALSE = 1 T009_NOTFOUND = 2 T009B_NOTFOUND = 3 OTHERS = 4. DELETE IT_MSEG WHERE BWART = '105' AND LGORT = SPACE. DELETE IT_MSEG WHERE BWART = '101' AND LGORT = SPACE. SORT IT_MKPF BY CPUDT CPUTM MBLNR . SORT IT_MSEG BY MBLNR SHKZG DESCENDING. LOOP AT IT_MKPF. LOOP AT IT_MSEG WHERE MBLNR = IT_MKPF-MBLNR AND MJAHR = IT_MKPF-MJAHR AND SM BLN IS INITIAL AND SHKZG = 'S'. CLEAR : STK,ISS,FLG_S. IF ( IT_MSEG-BWART = '641' OR IT_MSEG-BWART = '351' ) AND IT_MSEG-XAUTO = 'X' . "ISS = STK AND LOOP AT IT_MSEG_F WHERE EBELN = IT_MSEG-EBELN AND EBELP = IT_MSEG-EBELP AND BWART = '101'. READ TABLE IT_MSEG_F1 WITH KEY SMBLN = IT_MSEG_F-MBLNR SMBLP = IT_MSEG _F-ZEILE SJAHR = IT_MSEG_F-MJAHR. IF SY-SUBRC <> 0. FLG_S = 'X'. ENDIF. READ TABLE IT_MSEG_T WITH KEY MBLNR = IT_MSEG_F-MBLNR MJAHR = IT_MSEG_ F-MJAHR ZEILE = IT_MSEG_F-ZEILE. IF SY-SUBRC = 0. FLG_S = ' '. ENDIF. ENDLOOP. IF FLG_S IS INITIAL. CONTINUE. ENDIF. ENDIF. * IF ( it_mseg-bwart = '641' OR it_mseg-bwart = '351' ) AND it_mseg-xauto = 'X' . "ISS <> STK AND * IT_MSEG-MENGE = ISS - STK. * ENDIF. CHECK NOT ( IT_MSEG-BWART = '313' AND IT_MSEG-XAUTO = 'X' ). CLEAR IT_FINAL. READ TABLE IT_MSEG_T WITH KEY SMBLN = IT_MSEG-MBLNR SJAHR = IT_MSEG-MJA HR SMBLP = IT_MSEG-ZEILE. IF SY-SUBRC = 0.

CONTINUE. ENDIF. IT_FINAL-MATNR = IT_MSEG-MATNR. READ TABLE IT_MAKT WITH KEY MATNR = IT_FINAL-MATNR. IT_FINAL-MAKTX = IT_MAKT-MAKTX. READ TABLE IT_MARA WITH KEY MATNR = IT_FINAL-MATNR. IT_FINAL-SPART = IT_MARA-SPART. IT_FINAL-MTART = IT_MARA-MTART. IT_FINAL-MEINS = IT_MARA-MEINS. IT_FINAL-WERKS = IT_MSEG-WERKS. READ TABLE IT_T001W WITH KEY WERKS = IT_FINAL-WERKS. IT_FINAL-NAME1 = IT_T001W-NAME1. IT_FINAL-LGORT = IT_MSEG-LGORT. IT_FINAL-CHARG = IT_MSEG-CHARG. CALL FUNCTION 'HR_HK_DIFF_BT_2_DATES' EXPORTING DATE1 = BUDAT-LOW DATE2 = IT_MKPF-BUDAT OUTPUT_FORMAT = '02' IMPORTING DAYS = DAYS EXCEPTIONS INVALID_DATES_SPECIFIED = 1. IF DAYS GE 0 AND DAYS LE DAY1. IF IT_MSEG-SHKZG = 'S'. IT_FINAL-VALUE1 = IT_MSEG-DMBTR. IT_FINAL-STOCK1 = IT_MSEG-MENGE. ELSEIF IT_MSEG-SHKZG = 'H'. IT_FINAL-VALUE1 = - IT_MSEG-DMBTR. IT_FINAL-STOCK1 = - IT_MSEG-MENGE. ENDIF. ENDIF. IF DAYS GT DAY1 AND DAYS LE DAY2. IF IT_MSEG-SHKZG = 'S'. IT_FINAL-VALUE2 = IT_MSEG-DMBTR. IT_FINAL-STOCK2 = IT_MSEG-MENGE. ELSEIF IT_MSEG-SHKZG = 'H'. IT_FINAL-VALUE2 = - IT_MSEG-DMBTR. IT_FINAL-STOCK2 = - IT_MSEG-MENGE. ENDIF. ENDIF. IF DAYS GT DAY2 AND DAYS LE DAY3. IF IT_MSEG-SHKZG = 'S'. IT_FINAL-VALUE3 = IT_MSEG-DMBTR. IT_FINAL-STOCK3 = IT_MSEG-MENGE. ELSEIF IT_MSEG-SHKZG = 'H'. IT_FINAL-VALUE3 = - IT_MSEG-DMBTR. IT_FINAL-STOCK3 = - IT_MSEG-MENGE. ENDIF. ENDIF. IF DAYS GT DAY3 AND DAYS LE DAY4. IF IT_MSEG-SHKZG = 'S'. IT_FINAL-VALUE4 = IT_MSEG-DMBTR. IT_FINAL-STOCK4 = IT_MSEG-MENGE.

ELSEIF IT_MSEG-SHKZG = 'H'. IT_FINAL-VALUE4 = - IT_MSEG-DMBTR. IT_FINAL-STOCK4 = - IT_MSEG-MENGE. ENDIF. ENDIF. IF DAYS GT DAY4 AND DAYS LE DAY5. IF IT_MSEG-SHKZG = 'S'. IT_FINAL-VALUE5 = IT_MSEG-DMBTR. IT_FINAL-STOCK5 = IT_MSEG-MENGE. ELSEIF IT_MSEG-SHKZG = 'H'. IT_FINAL-VALUE5 = - IT_MSEG-DMBTR. IT_FINAL-STOCK5 = - IT_MSEG-MENGE. ENDIF. ENDIF. IF DAYS GT DAY5 . IF IT_MSEG-SHKZG = 'S'. IT_FINAL-VALUE6 = IT_MSEG-DMBTR. IT_FINAL-STOCK6 = IT_MSEG-MENGE. ELSEIF IT_MSEG-SHKZG = 'H'. IT_FINAL-VALUE6 = - IT_MSEG-DMBTR. IT_FINAL-STOCK6 = - IT_MSEG-MENGE. ENDIF. ENDIF. IF IT_MSEG-SOBKZ = 'O'. IT_FINAL-SUBC = IT_FINAL-STOCK1 + IT_FINAL-STOCK2 + IT_FINAL-STOCK3 + IT _FINAL-STOCK4 + IT_FINAL-STOCK5 + IT_FINAL-STOCK6 . ENDIF. IF IT_MSEG-SOBKZ = 'W' OR IT_MSEG-SOBKZ = 'V'. IT_FINAL-CONS = IT_FINAL-STOCK1 + IT_FINAL-STOCK2 + IT_FINAL-STOCK3 + IT _FINAL-STOCK4 + IT_FINAL-STOCK5 + IT_FINAL-STOCK6. ENDIF. COLLECT IT_FINAL. CLEAR IT_FINAL. ENDLOOP. ENDLOOP. LOOP AT IT_MKPF. LOOP AT IT_MSEG WHERE MBLNR = IT_MKPF-MBLNR AND MJAHR = IT_MKPF-MJAHR AND SM BLN IS INITIAL AND SHKZG = 'H'. CLEAR : STK,ISS. LOOP AT IT_EKET WHERE EBELN = IT_MSEG-EBELN AND EBELP = IT_MSEG-EBELP. STK = STK + IT_EKET-WEMNG. ISS = ISS + IT_EKET-WAMNG. ENDLOOP. IF ( IT_MSEG-BWART = '641' OR IT_MSEG-BWART = '351' ) AND IT_MSEG-XAUTO = 'X' . "ISS = STK AND CONTINUE. ENDIF. CHECK NOT ( IT_MSEG-BWART = '313' AND IT_MSEG-XAUTO = 'X' ). CLEAR IT_FINAL. READ TABLE IT_MSEG_T WITH KEY SMBLN = IT_MSEG-MBLNR HR SMBLP = IT_MSEG-ZEILE. IF SY-SUBRC = 0. CONTINUE. ENDIF. SJAHR = IT_MSEG-MJA

IT_FINAL-MATNR = IT_MSEG-MATNR. READ TABLE IT_MAKT WITH KEY MATNR = IT_FINAL-MATNR. IT_FINAL-MAKTX = IT_MAKT-MAKTX. IT_FINAL-WERKS = IT_MSEG-WERKS. READ TABLE IT_T001W WITH KEY WERKS = IT_FINAL-WERKS. IT_FINAL-NAME1 = IT_T001W-NAME1. IT_FINAL-LGORT = IT_MSEG-LGORT. IT_FINAL-CHARG = IT_MSEG-CHARG. IF it_mseg-shkzg = 'H'. LOOP AT IT_FINAL WHERE MATNR = IT_MSEG-MATNR AND WERKS = IT_MSEG-WERKS AND CHARG = IT_MSEG-CHARG AND LGORT = IT_MSEG-LGORT. IF IT_FINAL-STOCK6 IS NOT INITIAL AND IT_FINAL-VALUE6 = IT_FINAL-VALUE6 IT_FINAL-STOCK6 = IT_FINAL-STOCK6 IT_MSEG-MENGE = 0. IT_MSEG-DMBTR = 0. MODIFY IT_FINAL TRANSPORTING STOCK6 ELSEIF IT_FINAL-STOCK6 IS NOT INITIAL GE. IT_MSEG-DMBTR = IT_MSEG-MENGE = IT_FINAL-STOCK6 IT_FINAL-VALUE6 MODIFY IT_FINAL ENDIF. IT_MSEG-DMBTR - IT_FINAL-VALUE6. IT_MSEG-MENGE - IT_FINAL-STOCK6. = 0. = 0. TRANSPORTING STOCK6 VALUE6. IT_FINAL-STOCK5 GE IT_MSEG-MENGE. IT_MSEG-DMBTR. IT_MSEG-MENGE. VALUE5. AND IT_FINAL-STOCK5 LT IT_MSEG-MEN IT_FINAL-STOCK6 GE IT_MSEG-MENGE. IT_MSEG-DMBTR. IT_MSEG-MENGE. VALUE6. AND IT_FINAL-STOCK6 LT IT_MSEG-MEN

IF IT_FINAL-STOCK5 IS NOT INITIAL AND IT_FINAL-VALUE5 = IT_FINAL-VALUE5 IT_FINAL-STOCK5 = IT_FINAL-STOCK5 IT_MSEG-MENGE = 0. IT_MSEG-DMBTR = 0. MODIFY IT_FINAL TRANSPORTING STOCK5 ELSEIF IT_FINAL-STOCK5 IS NOT INITIAL GE. IT_MSEG-MENGE = IT_MSEG-DMBTR = IT_FINAL-VALUE5 IT_FINAL-STOCK5 MODIFY IT_FINAL ENDIF.

IT_MSEG-MENGE - IT_FINAL-STOCK5. IT_MSEG-DMBTR - IT_FINAL-VALUE5. = 0. = 0. TRANSPORTING STOCK5 VALUE5.

IF IT_FINAL-STOCK4 IS NOT INITIAL AND IT_FINAL-STOCK4 GE IT_MSEG-MENGE. IT_FINAL-VALUE4 = IT_FINAL-VALUE4 - IT_MSEG-DMBTR. IT_FINAL-STOCK4 = IT_FINAL-STOCK4 - IT_MSEG-MENGE. IT_MSEG-MENGE = 0.IT_MSEG-DMBTR = 0. MODIFY IT_FINAL TRANSPORTING STOCK4 VALUE4. ELSEIF IT_FINAL-STOCK4 IS NOT INITIAL AND IT_FINAL-STOCK4 LT IT_MSEG-MEN GE. IT_MSEG-MENGE = IT_MSEG-DMBTR = IT_FINAL-VALUE4 IT_FINAL-STOCK4 MODIFY IT_FINAL ENDIF. IT_MSEG-MENGE - IT_FINAL-STOCK4. IT_MSEG-DMBTR - IT_FINAL-VALUE4. = 0. = 0. TRANSPORTING STOCK4 VALUE4.

IF IT_FINAL-STOCK3 IS NOT INITIAL AND IT_FINAL-STOCK3 GE IT_MSEG-MENGE. IT_FINAL-VALUE3 = IT_FINAL-VALUE3 - IT_MSEG-DMBTR.

IT_FINAL-STOCK3 = IT_FINAL-STOCK3 - IT_MSEG-MENGE. IT_MSEG-MENGE = 0.IT_MSEG-DMBTR = 0. MODIFY IT_FINAL TRANSPORTING STOCK3 VALUE3. ELSEIF IT_FINAL-STOCK3 IS NOT INITIAL AND IT_FINAL-STOCK3 LT IT_MSEG-MEN GE. IT_MSEG-MENGE = IT_MSEG-DMBTR = IT_FINAL-STOCK3 IT_FINAL-VALUE3 MODIFY IT_FINAL ENDIF. IT_MSEG-MENGE - IT_FINAL-STOCK3. IT_MSEG-DMBTR - IT_FINAL-VALUE3. = 0. = 0. TRANSPORTING STOCK3 VALUE3. IT_FINAL-STOCK2 GE IT_MSEG-MENGE. IT_MSEG-DMBTR. IT_MSEG-MENGE. VALUE2. AND IT_FINAL-STOCK2 LT IT_MSEG-MEN

IF IT_FINAL-STOCK2 IS NOT INITIAL AND IT_FINAL-VALUE2 = IT_FINAL-VALUE2 IT_FINAL-STOCK2 = IT_FINAL-STOCK2 IT_MSEG-MENGE = 0. MODIFY IT_FINAL TRANSPORTING STOCK2 ELSEIF IT_FINAL-STOCK2 IS NOT INITIAL GE. IT_MSEG-MENGE = IT_MSEG-DMBTR = IT_FINAL-STOCK2 IT_FINAL-VALUE2 MODIFY IT_FINAL ENDIF.

IT_MSEG-MENGE - IT_FINAL-STOCK2. IT_MSEG-DMBTR - IT_FINAL-VALUE2. = 0. = 0. TRANSPORTING STOCK2 VALUE2. IT_FINAL-STOCK1 GE IT_MSEG-MENGE. IT_MSEG-DMBTR. IT_MSEG-MENGE. VALUE1. AND IT_FINAL-STOCK1 LT IT_MSEG-MEN

IF IT_FINAL-STOCK1 IS NOT INITIAL AND IT_FINAL-VALUE1 = IT_FINAL-VALUE1 IT_FINAL-STOCK1 = IT_FINAL-STOCK1 IT_MSEG-MENGE = 0. IT_MSEG-DMBTR = 0. MODIFY IT_FINAL TRANSPORTING STOCK1 ELSEIF IT_FINAL-STOCK1 IS NOT INITIAL GE. IT_MSEG-MENGE = IT_MSEG-DMBTR = IT_FINAL-STOCK1 IT_FINAL-VALUE1 MODIFY IT_FINAL ENDIF.

IT_MSEG-MENGE - IT_FINAL-STOCK1. IT_MSEG-DMBTR - IT_FINAL-VALUE1. = 0. = 0. TRANSPORTING STOCK1 VALUE1.

IF IT_MSEG-SOBKZ = 'O'. IT_FINAL-SUBC = IT_FINAL-STOCK1 + IT_FINAL-STOCK2 + IT_FINAL-STOCK3 + IT_FINAL-STOCK4 + IT_FINAL-STOCK5 + IT_FINAL-STOCK6 . MODIFY IT_FINAL TRANSPORTING SUBC. ENDIF. IF IT_MSEG-SOBKZ = 'W' OR IT_MSEG-SOBKZ = 'V'. IT_FINAL-CONS = IT_FINAL-STOCK1 + IT_FINAL-STOCK2 + IT_FINAL-STOCK3 + IT_FINAL-STOCK4 + IT_FINAL-STOCK5 + IT_FINAL-STOCK6. MODIFY IT_FINAL TRANSPORTING CONS. ENDIF. ENDLOOP. ENDLOOP. ENDLOOP. DELETE IT_FINAL WHERE STOCK1 IS INITIAL AND STOCK2 IS INITIAL AND STOCK3 IS IN ITIAL AND STOCK4 IS INITIAL AND STOCK5 IS INITIAL AND STOCK6 IS INITIAL. *if x_period = x_period1 AND x_year = x_year1.

IF NOT IT_FINAL[] IS INITIAL. SELECT * FROM MBEW INTO TABLE IT_MBEW FOR ALL ENTRIES IN IT_FINAL WHERE MATNR = IT_FINAL-MATNR AND BWKEY = IT_FINAL-WERKS. * AND lfgja = x_year " AND bwtar = it_final-charg * AND LFMON = x_period. *ELSE. SELECT * FROM MBEWH INTO TABLE IT_MBEWH FOR ALL ENTRIES IN IT_FINAL WHERE MATNR = IT_FINAL-MATNR AND BWKEY = IT_FINAL-WERKS AND LFGJA = X_YEAR AND LFMON = X_PERIOD. " AND bwtar = it_final-charg ENDIF. *endif. LOOP AT IT_FINAL. IDX = SY-TABIX. CLEAR : IT_FINAL-VALUE1, IT_FINAL-VALUE2, IT_FINAL-VALUE3, IT_FINAL-VALUE4, IT_FINAL-VALUE5, IT_FINAL-VALUE6, IT_MBEWH-VERPR, FLAG. * IF it_final-charg IS NOT INITIAL. * READ TABLE it_mchb WITH KEY matnr = it_final-matnr werks = it_final-werks lgort = it_final-lgort charg = it_final-charg. * IF sy-subrc = 0. * it_final-stock = it_mchb-clabs + it_mchb-cspem + it_mchb-cinsm . * MODIFY it_final INDEX idx TRANSPORTING stock . * ENDIF. * ELSE. * READ TABLE it_mard WITH KEY matnr = it_final-matnr werks = it_final-werks lgort = it_final-lgort. * IF sy-subrc = 0. * it_final-stock = it_mard-labst + it_mard-speme + it_mard-insme . * MODIFY it_final INDEX idx TRANSPORTING stock . * ENDIF. * * ENDIF. * IF it_final-lgort IS INITIAL AND it_final-charg IS INITIAL. * LOOP AT xtab6 WHERE matnr = it_final-matnr AND werks = it_final-werks. * it_final-trans = it_final-trans + xtab6-menge. * ENDLOOP. ** IF it_final-trans IS INITIAL. ** Delete it_final INDEX idx . ** ENDIF. * MODIFY it_final INDEX idx TRANSPORTING trans . * * ENDIF. * READ TABLE it_mbewh WITH KEY matnr = it_final-matnr bwkey = it_final-werk s bwtar = it_final-charg. IF X_PERIOD = X_PERIOD1 AND X_YEAR = X_YEAR1. ELSE. LOOP AT IT_MBEWH WHERE MATNR = IT_FINAL-MATNR AND BWKEY = IT_FINAL-WERKS.

IF IT_MBEWH-BWTAR = IT_FINAL-CHARG. FLAG = 'X'. EXIT. ENDIF. IF IT_MBEWH-BWTAR IS INITIAL. FLAG = 'X'. EXIT. ENDIF. ENDLOOP. IF IT_MBEWH-VERPR IS INITIAL. LOOP AT IT_MBEW WHERE MATNR = IT_FINAL-MATNR AND BWKEY = IT_FINAL-WERKS. IF IT_MBEW-BWTAR = IT_FINAL-CHARG. IT_MBEWH-VERPR = IT_MBEW-VERPR. FLAG = 'X'. EXIT. ENDIF. IF IT_MBEW-BWTAR IS INITIAL. IT_MBEWH-VERPR = IT_MBEW-VERPR. FLAG = 'X'. EXIT. ENDIF. ENDLOOP. ENDIF. ENDIF. IF X_PERIOD = X_PERIOD1 AND X_YEAR = X_YEAR1. LOOP AT IT_MBEW WHERE MATNR = IT_FINAL-MATNR AND BWKEY = IT_FINAL-WERKS. IF IT_MBEW-BWTAR = IT_FINAL-CHARG. IT_MBEWH-VERPR = IT_MBEW-VERPR. FLAG = 'X'. EXIT. ENDIF. IF IT_MBEW-BWTAR IS INITIAL. IT_MBEWH-VERPR = IT_MBEW-VERPR. FLAG = 'X'. EXIT. ENDIF. ENDLOOP. ENDIF. IF FLAG = 'X'. IT_FINAL-VALUE1 IT_FINAL-VALUE2 IT_FINAL-VALUE3 IT_FINAL-VALUE4 IT_FINAL-VALUE5 IT_FINAL-VALUE6 ENDIF. = = = = = = IT_FINAL-STOCK1 IT_FINAL-STOCK2 IT_FINAL-STOCK3 IT_FINAL-STOCK4 IT_FINAL-STOCK5 IT_FINAL-STOCK6 * * * * * * IT_MBEWH-VERPR. IT_MBEWH-VERPR. IT_MBEWH-VERPR. IT_MBEWH-VERPR. IT_MBEWH-VERPR. IT_MBEWH-VERPR.

IT_FINAL-VALUE = IT_FINAL-VALUE1 + IT_FINAL-VALUE2 + IT_FINAL-VALUE3 + IT_FI NAL-VALUE4 + IT_FINAL-VALUE5 + IT_FINAL-VALUE6. IT_FINAL-STOCK = IT_FINAL-STOCK1 + IT_FINAL-STOCK2 + IT_FINAL-STOCK3 + IT_FI NAL-STOCK4 + IT_FINAL-STOCK5 + IT_FINAL-STOCK6 - IT_FINAL-SUBC - IT_FI NAL-CONS. MODIFY IT_FINAL INDEX IDX TRANSPORTING STOCK VALUE VALUE1 VALUE2 VALUE3 VALU

E4 VALUE5 VALUE6. CLEAR IT_FINAL. ENDLOOP. SHIFT SHIFT SHIFT SHIFT SHIFT DAY1 DAY2 DAY3 DAY4 DAY5 LEFT LEFT LEFT LEFT LEFT DELETING DELETING DELETING DELETING DELETING DAY1 DAY2 DAY3 DAY4 DAY5 DAY5 DAY1 DAY2 DAY3 DAY4 DAY5 DAY5 LEADING LEADING LEADING LEADING LEADING '(Qty)' '(Qty)' '(Qty)' '(Qty)' '(Qty)' '(Qty)' '(Val)' '(Val)' '(val)' '(val)' '(val)' '(val)' '0'. '0'. '0'. '0'. '0'. INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO STK1 STK2 STK3 STK4 STK5 STK6 VAL1 VAL2 VAL3 VAL4 VAL5 VAL6 SEPARATED SEPARATED SEPARATED SEPARATED SEPARATED SEPARATED SEPARATED SEPARATED SEPARATED SEPARATED SEPARATED SEPARATED BY BY BY BY BY BY BY BY BY BY BY BY SPACE. SPACE. SPACE. SPACE. SPACE. SPACE. SPACE. SPACE. SPACE. SPACE. SPACE. SPACE. Format C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT, C_LFT.

CONCATENATE CONCATENATE CONCATENATE CONCATENATE CONCATENATE CONCATENATE CONCATENATE CONCATENATE CONCATENATE CONCATENATE CONCATENATE CONCATENATE

'0' '-' DAY1 '-' DAY2 '-' DAY3 '-' DAY4 '-' '>' '0' '-' DAY1 '-' DAY2 '-' DAY3 '-' DAY4 '-' '>'

PERFORM SUB_CREATE_CATALOG USING: * Field Name Column Heading 'MATNR' 'Material' 'MAKTX' 'Material Desc.' 'MTART' 'Material Type.' 'SPART' 'Division' 'MEINS' 'Base UOM' 'WERKS' 'Plant' 'NAME1' 'Plant Name' 'LGORT' 'Storage Loc' 'CHARG' 'Batch' 'SUBC' 'SubContracting Stock' 'CONS' 'Consignment Stock' 'STOCK' 'Total Stock' 'VALUE' 'Total Value' 'STOCK1' STK1 'STOCK2' STK2 'STOCK3' STK3 'STOCK4' STK4 'STOCK5' STK5 'STOCK6' STK6 'VALUE1' VAL1 'VALUE2' VAL2 'VALUE3' VAL3 'VALUE4' VAL4 'VALUE5' VAL5 'VALUE6' VAL6 PERFORM PERFORM PERFORM LOOP AT TOCK1' STOCK3'

hotspot do_sum SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE SPACE

SUB_POPULATE_LAYOUT. SUB_EVENT_BUILD. SUB_COMMENT_BUILD USING IT_LIST_TOP_OF_PAGE. IT_FCAT INTO WA_FIELDCAT WHERE FIELDNAME = 'MATNR' OR FIELDNAME = 'S OR FIELDNAME = 'STOCK2' OR FIELDNAME = ' OR FIELDNAME = 'STOCK4' OR FIELDNAME = '

STOCK5' OR FIELDNAME = 'STOCK6'

OR FIELDNAME = 'VALUE1' OR FIELDNAME = 'VALUE2' OR FIELDNAME = ' VALUE3' OR FIELDNAME = 'VALUE4' OR FIELDNAME = ' VALUE5' OR FIELDNAME = 'VALUE6' OR FIELDNAME = 'SUBC' OR FIELDNAME = 'CO NS' OR FIELDNAME = 'TRANS'. WA_FIELDCAT-NO_ZERO = 'X'. MODIFY IT_FCAT FROM WA_FIELDCAT TRANSPORTING NO_ZERO . ENDLOOP. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = SY-REPID IS_LAYOUT = WA_LAYOUT IT_FIELDCAT = IT_FCAT IT_SORT = IT_SORT IT_EVENTS = IT_EVENTS I_SAVE = 'A' TABLES T_OUTTAB = IT_FINAL EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. IF SY-SUBRC <> 0. MESSAGE 'Error in Display the list' TYPE 'I'. LEAVE TO LIST-PROCESSING. ENDIF. *&--------------------------------------------------------------------* *& Form sub_create_catalog *&--------------------------------------------------------------------* FORM SUB_CREATE_CATALOG USING VALUE(P_FLDNAME) TYPE SLIS_FIELDNAME P_COL_HEADING TYPE SCRTEXT_L VALUE(P_HOTSPOT) TYPE C VALUE(P_DOSUM) TYPE C VALUE(P_FORMAT) TYPE C. WA_FCAT-TABNAME WA_FCAT-FIELDNAME WA_FCAT-SELTEXT_L WA_FCAT-HOTSPOT WA_FCAT-DO_SUM WA_FCAT-JUST = = = = = = C_TABNAME. P_FLDNAME. P_COL_HEADING. P_HOTSPOT. P_DOSUM. P_FORMAT. " " " " " " Table name Field name Column heading Hot Spot Sum Format

APPEND WA_FCAT TO IT_FCAT. CLEAR WA_FCAT. ENDFORM. "sub_create_catalog

*&---------------------------------------------------------------------* *& Form sub_comment_build *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_IT_LIST_TOP_OF_PAGE text *----------------------------------------------------------------------* FORM SUB_COMMENT_BUILD USING IT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.

DATA: LS_LINE TYPE SLIS_LISTHEADER, L_HIGH TYPE CHAR10, L_LOW TYPE CHAR10. CLEAR LS_LINE. LS_LINE-TYP = 'H'. LS_LINE-INFO = 'Material Ageing Report'. APPEND LS_LINE TO IT_TOP_OF_PAGE. CLEAR LS_LINE. LS_LINE-TYP = 'I'. LS_LINE-KEY = 'FieldFresh Foods Private Limited'. APPEND LS_LINE TO IT_TOP_OF_PAGE. CLEAR LS_LINE.

ENDFORM.

" sub_comment_build

*&--------------------------------------------------------------------* *& Form TOP_OF_PAGE *&--------------------------------------------------------------------* FORM TOP_OF_PAGE. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = IT_LIST_TOP_OF_PAGE. ENDFORM. "top_of_page *&--------------------------------------------------------------------* *& Form sub_event_build *&--------------------------------------------------------------------* * This subroutine builds the table t_events *---------------------------------------------------------------------* * Parameters:None *---------------------------------------------------------------------* FORM SUB_EVENT_BUILD. CLEAR WA_EVENT. REFRESH IT_EVENTS. CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING I_LIST_TYPE = 0 IMPORTING ET_EVENTS = IT_EVENTS EXCEPTIONS LIST_TYPE_WRONG = 1 OTHERS = 2. IF SY-SUBRC EQ 0. READ TABLE IT_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'. IF SY-SUBRC EQ 0. WA_EVENT-FORM = 'TOP_OF_PAGE'. APPEND WA_EVENT TO IT_EVENTS. CLEAR WA_EVENT. ENDIF.

ENDIF. ENDFORM. "sub_event_build

*&---------------------------------------------------------------------* *& Form sub_populate_layout *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM SUB_POPULATE_LAYOUT. CLEAR: WA_LAYOUT. * Field name of the checkbox in report output WA_LAYOUT-ZEBRA = C_FLAG. WA_LAYOUT-COLWIDTH_OPTIMIZE = C_FLAG. ENDFORM. "sub_populate_layout

Você também pode gostar