94817426 Ageing Report

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,

Transcript of 94817426 Ageing Report

Page 1: 94817426 Ageing Report

&---------------------------------------------------------------------**& 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 OBLIGATORY.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,

Page 2: 94817426 Ageing Report

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, "sdp462 LGORT LIKE EKPO-LGORT, "DFPS RESLO LIKE EKPO-RESLO, "DFPS

Page 3: 94817426 Ageing Report

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 MSEG INTO TABLE IT_MSEG WHERE WERKS IN WERKS AND LGORT IN LGORT AND CHARG IN CHARG AND MATNR IN MATNR AND BWART <> '641' AND BWART <> '642' AND BWART <> '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

Page 4: 94817426 Ageing Report

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 = DAY1 + 1. L_I2 = DAY2 + 1. L_I3 = DAY3 + 1. L_I4 = DAY4 + 1. L_I5 = DAY5 + 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

Page 5: 94817426 Ageing Report

E_BUPER = X_PERIOD E_GJAHR = X_YEAR EXCEPTIONS INPUT_FALSE = 1 T009_NOTFOUND = 2 T009B_NOTFOUND = 3 OTHERS = 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 SMBLN 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-MJAHR SMBLP = IT_MSEG-ZEILE. IF SY-SUBRC = 0.

Page 6: 94817426 Ageing Report

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.

Page 7: 94817426 Ageing Report

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 SMBLN 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 SJAHR = IT_MSEG-MJAHR SMBLP = IT_MSEG-ZEILE. IF SY-SUBRC = 0. CONTINUE. ENDIF.

Page 8: 94817426 Ageing Report

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-STOCK6 GE IT_MSEG-MENGE. IT_FINAL-VALUE6 = IT_FINAL-VALUE6 - IT_MSEG-DMBTR. IT_FINAL-STOCK6 = IT_FINAL-STOCK6 - IT_MSEG-MENGE. IT_MSEG-MENGE = 0. IT_MSEG-DMBTR = 0. MODIFY IT_FINAL TRANSPORTING STOCK6 VALUE6. ELSEIF IT_FINAL-STOCK6 IS NOT INITIAL AND IT_FINAL-STOCK6 LT IT_MSEG-MENGE. IT_MSEG-DMBTR = IT_MSEG-DMBTR - IT_FINAL-VALUE6. IT_MSEG-MENGE = IT_MSEG-MENGE - IT_FINAL-STOCK6. IT_FINAL-STOCK6 = 0. IT_FINAL-VALUE6 = 0. MODIFY IT_FINAL TRANSPORTING STOCK6 VALUE6. ENDIF.

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

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-MENGE. IT_MSEG-MENGE = IT_MSEG-MENGE - IT_FINAL-STOCK4. IT_MSEG-DMBTR = IT_MSEG-DMBTR - IT_FINAL-VALUE4. IT_FINAL-VALUE4 = 0. IT_FINAL-STOCK4 = 0. MODIFY IT_FINAL TRANSPORTING STOCK4 VALUE4. ENDIF.

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

Page 9: 94817426 Ageing Report

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-MENGE. IT_MSEG-MENGE = IT_MSEG-MENGE - IT_FINAL-STOCK3. IT_MSEG-DMBTR = IT_MSEG-DMBTR - IT_FINAL-VALUE3. IT_FINAL-STOCK3 = 0. IT_FINAL-VALUE3 = 0. MODIFY IT_FINAL TRANSPORTING STOCK3 VALUE3. ENDIF.

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

IF IT_FINAL-STOCK1 IS NOT INITIAL AND IT_FINAL-STOCK1 GE IT_MSEG-MENGE. IT_FINAL-VALUE1 = IT_FINAL-VALUE1 - IT_MSEG-DMBTR. IT_FINAL-STOCK1 = IT_FINAL-STOCK1 - IT_MSEG-MENGE. IT_MSEG-MENGE = 0. IT_MSEG-DMBTR = 0. MODIFY IT_FINAL TRANSPORTING STOCK1 VALUE1. ELSEIF IT_FINAL-STOCK1 IS NOT INITIAL AND IT_FINAL-STOCK1 LT IT_MSEG-MENGE. IT_MSEG-MENGE = IT_MSEG-MENGE - IT_FINAL-STOCK1. IT_MSEG-DMBTR = IT_MSEG-DMBTR - IT_FINAL-VALUE1. IT_FINAL-STOCK1 = 0. IT_FINAL-VALUE1 = 0. MODIFY IT_FINAL TRANSPORTING STOCK1 VALUE1. 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 . 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 INITIAL AND STOCK4 IS INITIAL AND STOCK5 IS INITIAL AND STOCK6 IS INITIAL.*if x_period = x_period1 AND x_year = x_year1.

Page 10: 94817426 Ageing Report

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-werks 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.

Page 11: 94817426 Ageing Report

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-STOCK1 * IT_MBEWH-VERPR. IT_FINAL-VALUE2 = IT_FINAL-STOCK2 * IT_MBEWH-VERPR. IT_FINAL-VALUE3 = IT_FINAL-STOCK3 * IT_MBEWH-VERPR. IT_FINAL-VALUE4 = IT_FINAL-STOCK4 * IT_MBEWH-VERPR. IT_FINAL-VALUE5 = IT_FINAL-STOCK5 * IT_MBEWH-VERPR. IT_FINAL-VALUE6 = IT_FINAL-STOCK6 * IT_MBEWH-VERPR. ENDIF.

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

Page 12: 94817426 Ageing Report

E4 VALUE5 VALUE6. CLEAR IT_FINAL. ENDLOOP.

SHIFT DAY1 LEFT DELETING LEADING '0'. SHIFT DAY2 LEFT DELETING LEADING '0'. SHIFT DAY3 LEFT DELETING LEADING '0'. SHIFT DAY4 LEFT DELETING LEADING '0'. SHIFT DAY5 LEFT DELETING LEADING '0'.

CONCATENATE '0' '-' DAY1 '(Qty)' INTO STK1 SEPARATED BY SPACE. CONCATENATE DAY1 '-' DAY2 '(Qty)' INTO STK2 SEPARATED BY SPACE. CONCATENATE DAY2 '-' DAY3 '(Qty)' INTO STK3 SEPARATED BY SPACE. CONCATENATE DAY3 '-' DAY4 '(Qty)' INTO STK4 SEPARATED BY SPACE. CONCATENATE DAY4 '-' DAY5 '(Qty)' INTO STK5 SEPARATED BY SPACE. CONCATENATE '>' DAY5 '(Qty)' INTO STK6 SEPARATED BY SPACE. CONCATENATE '0' '-' DAY1 '(Val)' INTO VAL1 SEPARATED BY SPACE. CONCATENATE DAY1 '-' DAY2 '(Val)' INTO VAL2 SEPARATED BY SPACE. CONCATENATE DAY2 '-' DAY3 '(val)' INTO VAL3 SEPARATED BY SPACE. CONCATENATE DAY3 '-' DAY4 '(val)' INTO VAL4 SEPARATED BY SPACE. CONCATENATE DAY4 '-' DAY5 '(val)' INTO VAL5 SEPARATED BY SPACE. CONCATENATE '>' DAY5 '(val)' INTO VAL6 SEPARATED BY SPACE.

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

PERFORM SUB_POPULATE_LAYOUT. PERFORM SUB_EVENT_BUILD. PERFORM SUB_COMMENT_BUILD USING IT_LIST_TOP_OF_PAGE. LOOP AT IT_FCAT INTO WA_FIELDCAT WHERE FIELDNAME = 'MATNR' OR FIELDNAME = 'STOCK1' OR FIELDNAME = 'STOCK2' OR FIELDNAME = 'STOCK3' OR FIELDNAME = 'STOCK4' OR FIELDNAME = 'STOCK5' OR FIELDNAME = 'STOCK6'

Page 13: 94817426 Ageing Report

OR FIELDNAME = 'VALUE1' OR FIELDNAME = 'VALUE2' OR FIELDNAME = 'VALUE3' OR FIELDNAME = 'VALUE4' OR FIELDNAME = 'VALUE5' OR FIELDNAME = 'VALUE6' OR FIELDNAME = 'SUBC' OR FIELDNAME = 'CONS' 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 = C_TABNAME. " Table name WA_FCAT-FIELDNAME = P_FLDNAME. " Field name WA_FCAT-SELTEXT_L = P_COL_HEADING. " Column heading WA_FCAT-HOTSPOT = P_HOTSPOT. " Hot Spot WA_FCAT-DO_SUM = P_DOSUM. " Sum WA_FCAT-JUST = P_FORMAT. " 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.

Page 14: 94817426 Ageing Report

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.

Page 15: 94817426 Ageing Report

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