Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Report correction Urgent

Former Member
0 Likes
635

Hi,

I am doing Inventory ageing report. The report is giving correct result if I go with material wise selection upto 100 materials at a time. If I run the same report based on Material Group it is giving wrong result. I am pasting the code.

Kindly correct the report it is urgent. Please help to solve this.

Waiting for quick reply

regards,

Ram

REPORT ZMMR0024 LINE-SIZE 170 NO STANDARD PAGE HEADING .

TYPE-POOLS : SLIS.

TABLES : T001, T023, T001K, MARA, marv, MAKT, MBEW, MSEG, ekpo.

*----


  • Constants

*----


CONSTANTS : GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE

'TOP_OF_PAGE'.

*----


  • Internal Tables

*----


DATA : BEGIN OF GT_FINAL OCCURS 0,

MATKL LIKE MARA-MATKL,

MATNR LIKE MARA-MATNR,

LBKUM LIKE MBEW-LBKUM,

tot_val type p decimals 2,

MAKTX LIKE MAKT-MAKTX,

tot_amt type p decimals 2,

price type p decimals 2,

meins like mara-meins,

END OF GT_FINAL,

DETAIL_FINAL LIKE GT_FINAL OCCURS 0 WITH HEADER LINE.

DATA : BEGIN OF MAT_FINAL OCCURS 0,

MATKL LIKE MARA-MATKL,

TOT_VAL LIKE MSEG-MENGE,

TOT_AMT LIKE MBEW-SALK3,

PRICE LIKE MBEW-SALK3,

meins like mara-meins,

END OF MAT_FINAL.

DATA : BEGIN OF I_MARA OCCURS 0,

MATNR LIKE MARA-MATNR,

MATKL LIKE MARA-MATKL,

MAKTX LIKE MAKT-MAKTX,

MEINS LIKE MARA-MEINS,

LBKUM LIKE MBEWH-LBKUM,

TOT_AMT LIKE MBEW-SALK3,

END OF I_MARA.

DATA : BEGIN OF I_MKPF_MSEG OCCURS 0,

MATNR LIKE MARA-MATNR,

MBLNR LIKE MSEG-MBLNR,

ZEILE LIKE MSEG-ZEILE,

MENGE LIKE MSEG-MENGE,

BWART LIKE MSEG-BWART,

BUDAT LIKE MKPF-BUDAT,

NET_VAL LIKE MSEG-MENGE,

ebeln like mseg-ebeln,

ebelp like mseg-ebelp,

lfbnr like mseg-lfbnr,

lfpos like mseg-lfpos,

SHKZG LIKE MSEG-SHKZG,

meins like mara-meins,

END OF I_MKPF_MSEG,

WA_TEMP LIKE I_MKPF_MSEG.

DATA : BEGIN OF I_MBEWH OCCURS 0,

MATNR LIKE MARA-MATNR,

LBKUM LIKE MBEW-LBKUM,

SALK3 LIKE MBEW-SALK3,

BWKEY LIKE MBEW-BWKEY,

END OF I_MBEWH.

DATA : I_MBEWH1 LIKE I_MBEWH OCCURS 0 WITH HEADER LINE.

DATA : BEGIN OF I_TEMP OCCURS 0,

MATNR LIKE MARA-MATNR,

NET_VAL LIKE MSEG-MENGE,

meins like mara-meins,

END OF I_TEMP.

RANGES : RANGE_WERK FOR T001W-WERKS,

RANGE_DATE FOR SY-DATUM,

S_BWTAR FOR BWTAR.

DATA : PERIOD LIKE BAPI0002_4-FISCAL_PERIOD,

FISCAL_YEAR LIKE BAPI0002_4-FISCAL_YEAR,

CUR_VAL LIKE MSEG-MENGE,

NET_VAL LIKE MSEG-MENGE,

TOT_VAL LIKE MSEG-MENGE,

TOT_QTY LIKE MSEG-MENGE,

TOT_AMT1 LIKE MBEW-SALK3,

RES_DATE LIKE SY-DATUM,

NUM LIKE MBEW-SALK3,

UOM LIKE MARA-MEINS.

*----


  • Data declarations for alv

*----


DATA : GV_PAGE TYPE N VALUE 0.

DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

GT_SORT TYPE SLIS_T_SORTINFO_ALV,

GT_FILTER TYPE SLIS_T_FILTER_ALV,

GT_SP_GROUP TYPE SLIS_T_SP_GROUP_ALV,

GT_EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE,

GV_REPID LIKE SY-REPID,

GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,

GV_SAVE(1) TYPE C,

GT_VARIANT LIKE DISVARIANT,

GV_DOMNAME LIKE DD07V-DOMNAME,

GV_DOMVAL LIKE DD07V-DOMVALUE_L,

GW_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

*----


  • Selection screen

*----


SELECTION-SCREEN BEGIN OF BLOCK SEL WITH FRAME TITLE TEXT-001.

PARAMETERS : GS_BUKRS LIKE T001K-BUKRS OBLIGATORY.

SELECT-OPTIONS : GS_MATKL FOR MARA-MATKL,

GS_MATNR FOR MARA-MATNR.

PARAMETERS : gs_ped like s031-spmon OBLIGATORY,

GS_DAYS(3) TYPE n,

MG1 RADIOBUTTON GROUP GR1,

MT2 RADIOBUTTON GROUP GR1.

SELECTION-SCREEN END OF BLOCK SEL.

  • Validations on selection screen

AT SELECTION-SCREEN ON GS_BUKRS.

PERFORM F00_VALIDATE_COMPANY_CODE.

AT SELECTION-SCREEN ON GS_MATKL.

IF NOT GS_MATKL[] IS INITIAL.

PERFORM F01_VALIDATE_MATERIAL_GROUP.

ENDIF.

AT SELECTION-SCREEN ON GS_MATNR.

IF NOT GS_MATNR[] IS INITIAL.

PERFORM F01_VALIDATE_MATERIAL.

ENDIF.

AT SELECTION-SCREEN ON GS_days.

if gs_days = ''.

gs_days = 0.

endif.

START-OF-SELECTION.

GV_REPID = SY-REPID.

PERFORM F20_EVENTTAB_BUILD CHANGING GT_EVENTS[].

PERFORM F30_SELECT_PRIMARY_DATA.

IF MG1 = 'X'.

PERFORM F11_DATA_FORMAT_GROUP.

PERFORM F50_MATERIAL_GROUP_DATA.

PERFORM F40_DISPLAY_REPORT TABLES MAT_FINAL.

ELSEIF MT2 = 'X'.

PERFORM F10_DATA_FORMAT_MAT.

PERFORM F40_DISPLAY_REPORT TABLES GT_FINAL.

ENDIF.

&----


*& Form F20_EVENTTAB_BUILD

&----


FORM F20_EVENTTAB_BUILD CHANGING LT_EVENTS TYPE SLIS_T_EVENT.

CONSTANTS: LC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE

'TOP_OF_PAGE',

LC_FORMNAME_USER_COMMAND TYPE SLIS_FORMNAME VALUE

'USER_COMMAND'.

DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = LT_EVENTS.

  • note : lt_events has all the events

READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE

INTO LS_EVENT.

IF SY-SUBRC = 0.

MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.

APPEND LS_EVENT TO LT_EVENTS.

ENDIF.

READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_USER_COMMAND

INTO LS_EVENT.

IF SY-SUBRC = 0.

MOVE LC_FORMNAME_USER_COMMAND TO LS_EVENT-FORM.

APPEND LS_EVENT TO LT_EVENTS.

ENDIF.

ENDFORM. "F20_EVENTTAB_BUILD

&----


*& Form F12_E04_COMMENT_BUILD

&----


FORM F12_E04_COMMENT_BUILD USING E04_LT_TOP_OF_PAGE TYPE

SLIS_T_LISTHEADER.

DATA : LS_LINE TYPE SLIS_LISTHEADER,

LV_TEXT(100) TYPE C,

LV_DAYLOW(2) TYPE C,

LV_MONTHLOW(2) TYPE C,

LV_YEARHIGH(4) TYPE C,

LV_DAYHIGH(2) TYPE C,

LV_MONTHHIGH(2) TYPE C,

LV_YEARLOW(4) TYPE C,

LV_DATFORMAT1(10),

LV_DATFORMAT2(10).

CONCATENATE 'Company Code :' ' ' GS_BUKRS

INTO LV_TEXT SEPARATED BY SPACE.

CLEAR LS_LINE.

LS_LINE-TYP = 'H'.

LS_LINE-INFO = LV_TEXT.

APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.

CLEAR LV_TEXT.

IF NOT GS_MATKL[] IS INITIAL.

IF GS_MATKL-HIGH IS INITIAL AND NOT GS_MATKL-LOW IS INITIAL.

CONCATENATE 'Material Group :' ' ' GS_MATKL-LOW

INTO LV_TEXT SEPARATED BY SPACE.

ELSE .

CONCATENATE 'Material Group :' GS_MATKL-LOW ' to'

GS_MATKL-HIGH INTO LV_TEXT SEPARATED BY SPACE.

ENDIF.

ENDIF.

CLEAR LS_LINE.

LS_LINE-TYP = 'H'.

LS_LINE-INFO = LV_TEXT.

APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.

CLEAR LV_TEXT.

IF NOT GS_MATNR[] IS INITIAL.

IF GS_MATNR-HIGH IS INITIAL AND NOT GS_MATNR-LOW IS INITIAL.

CONCATENATE 'Material :' ' ' GS_MATNR-LOW

INTO LV_TEXT SEPARATED BY SPACE.

ELSE .

CONCATENATE 'Material :' GS_MATNR-LOW ' to'

GS_MATNR-HIGH INTO LV_TEXT SEPARATED BY SPACE.

ENDIF.

ENDIF.

CLEAR LS_LINE.

LS_LINE-TYP = 'H'.

LS_LINE-INFO = LV_TEXT.

APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.

CLEAR LV_TEXT.

  • LV_YEARLOW = gs_ped+0(4).

  • LV_MONTHLOW = gs_ped+4(2).

  • LV_DAYLOW = gs_ped+6(2).

*

  • CONCATENATE LV_DAYLOW LV_MONTHLOW LV_YEARLOW INTO LV_DATFORMAT1

*SEPARATED BY '.'.

CONCATENATE 'Key month : ' gs_ped

INTO LV_TEXT SEPARATED BY SPACE.

CLEAR LS_LINE.

LS_LINE-TYP = 'H'.

LS_LINE-INFO = LV_TEXT.

APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.

CLEAR LV_TEXT.

CONCATENATE 'Number of days :' ' ' GS_DAYS

INTO LV_TEXT SEPARATED BY SPACE.

CLEAR LS_LINE.

LS_LINE-TYP = 'H'.

LS_LINE-INFO = LV_TEXT.

APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.

CLEAR LV_TEXT.

GV_PAGE = GV_PAGE + 1.

CONCATENATE 'PAGE NO : ' ' ' GV_PAGE

INTO LV_TEXT SEPARATED BY SPACE.

CLEAR LS_LINE.

LS_LINE-TYP = 'H'.

LS_LINE-INFO = LV_TEXT.

APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.

ENDFORM. "F12_E04_COMMENT_BUILD

----


  • FORM TOP_OF_PAGE *

----


FORM TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.

ENDFORM. "TOP_OF_PAGE

&----


*& Form validate_sales_organization

&----


  • text

----


FORM F00_VALIDATE_COMPANY_CODE .

SELECT SINGLE BUKRS

FROM T001

INTO T001-BUKRS

WHERE BUKRS = GS_BUKRS.

IF SY-SUBRC = 0.

ELSE.

MESSAGE E000(ZCBOM) WITH 'Please enter the valid material group'.

ENDIF.

ENDFORM. " validate_sales_organization

&----


*& Form VALIDATE_PLANT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM F01_VALIDATE_MATERIAL_GROUP.

SELECT SINGLE MATKL

FROM T023

INTO T023-MATKL

WHERE MATKL IN GS_MATKL.

IF SY-SUBRC = 0.

ELSE.

MESSAGE E000(ZCBOM) WITH 'Please enter the valid material group'.

ENDIF.

ENDFORM. " VALIDATE_PLANT

&----


*& Form VALIDATE_MATERIAL

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM F01_VALIDATE_MATERIAL.

SELECT SINGLE MATNR

FROM MARA

INTO MARA-MATNR

WHERE MATNR IN GS_MATNR.

IF SY-SUBRC = 0.

ELSE.

MESSAGE E000(ZCBOM) WITH 'Please enter the valid material '.

ENDIF.

ENDFORM. " VALIDATE_MATERIAL

&----


*& Form F40_DISPLAY_REPORT

&----


FORM F40_DISPLAY_REPORT TABLES IT.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = GV_REPID

I_CALLBACK_USER_COMMAND = 'USER_COMMAND '

IT_FIELDCAT = GT_FIELDCAT[]

IT_SPECIAL_GROUPS = GT_SP_GROUP[]

IT_SORT = GT_SORT[]

I_SAVE = GV_SAVE

IS_VARIANT = GT_VARIANT

IT_EVENTS = GT_EVENTS[]

TABLES

T_OUTTAB = IT. "it_1.

CLEAR:GT_FIELDCAT.

REFRESH:GT_FIELDCAT.

ENDFORM. " F40_DISPLAY_REPORT

&----


*& Form F30_SELECT_PRIMARY_DATA

&----


  • text

----


FORM F30_SELECT_PRIMARY_DATA .

  • subroutine to get the actual data

  • to get the plants for the given company code

data : temp_bukrs like BAPI0002_2-COMP_CODE,

temp_date like BAPI0002_4-POSTING_DATE.

data : last_day(2) type n,

from_date like sy-datum,

temp_date1 like sy-datum,

cal_month(2) type n,

cal_year(4) type n.

SELECT DISTINCT BWKEY FROM T001K INTO RANGE_WERK-LOW WHERE BUKRS = GS_BUKRS.

RANGE_WERK-SIGN = 'I'.

RANGE_WERK-OPTION = 'EQ'.

APPEND RANGE_WERK.

ENDSELECT.

*selecting material that is relevant to the selection criteria

SELECT MARAMATNR MARAMATKL MARAMEINS MAKTMAKTX

FROM MARA JOIN MAKT

ON MAKTMATNR = MARAMATNR

INTO CORRESPONDING FIELDS OF TABLE I_MARA

WHERE MARA~MATKL IN GS_MATKL

AND MARA~MATNR IN GS_MATNR

AND MAKT~SPRAS = 'EN'.

temp_bukrs = gs_bukrs.

cal_month = gs_ped+4(2).

cal_year = gs_ped+0(4).

concatenate cal_year cal_month '01' into temp_date.

*temp_date = temp_date1.

CALL FUNCTION 'BAPI_COMPANYCODE_GET_PERIOD'

EXPORTING

COMPANYCODEID = temp_bukrs

POSTING_DATE = temp_date

IMPORTING

FISCAL_YEAR = fiscal_year

FISCAL_PERIOD = period.

select single * from marv into marv where bukrs = temp_bukrs.

  • temp_date1 = temp_date.

if sy-subrc = 0.

if ( marv-lfmon ne period or marv-lfgja ne fiscal_year ).

CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'

EXPORTING

DAY_IN = temp_date

IMPORTING

LAST_DAY_OF_MONTH = from_date

EXCEPTIONS

DAY_IN_NO_DATE = 1

OTHERS = 2.

else.

from_date = sy-datum.

endif.

endif.

  • to define the range for posting date

RES_DATE = from_date - GS_DAYS.

RANGE_DATE-LOW = RES_DATE.

RANGE_DATE-HIGH = from_date.

RANGE_DATE-OPTION = 'BT'.

RANGE_DATE-SIGN = 'I'.

APPEND RANGE_DATE.

  • to select documents and their quantities for the given range of posting dates

  • with goods movement type 101 105 657 453 459 501 521 and their reversals

if range_date-low ne range_date-high.

SELECT MSEG~MATNR MSEG~MBLNR MSEG~ZEILE MSEG~MENGE MSEG~BWART mseg~ebeln mseg~ebelp

MKPF~BUDAT MSEG~SHKZG

FROM MKPF

JOIN MSEG ON MSEG~MBLNR = MKPF~MBLNR

AND MSEG~MJAHR = MKPF~MJAHR

INTO CORRESPONDING FIELDS OF TABLE I_MKPF_MSEG

FOR ALL ENTRIES IN I_MARA

WHERE MSEG~MATNR = I_MARA-MATNR

AND MSEG~WERKS IN RANGE_WERK

AND MKPF~BUDAT IN RANGE_DATE

AND MSEG~BWART IN ('101','105','561','501','301','309','951','953','955','957','712','657','658',

'521','522','303','304','102','562','502','952','954','956','958','302').

DELETE I_MKPF_MSEG WHERE ( BWART = '309' AND SHKZG = 'H' )

OR ( BWART = '303' AND SHKZG = 'H' )

OR ( BWART = '304' AND SHKZG = 'S' )

OR ( BWART = '657' AND SHKZG = 'H' )

OR ( BWART = '658' AND SHKZG = 'S' ).

endif.

SORT I_MKPF_MSEG BY MATNR MBLNR.

LOOP AT I_MKPF_MSEG.

if i_mkpf_mseg-bwart = '101' or i_mkpf_mseg-bwart = '102'.

select single * from ekpo where ebeln = i_mkpf_mseg-ebeln

and ebelp = i_mkpf_mseg-ebelp.

if ekpo-pstyp = 7.

delete i_mkpf_mseg where ebeln = i_mkpf_mseg-ebeln

and ebelp = i_mkpf_mseg-ebelp.

CLEAR I_MKPF_MSEG-MENGE.

endif.

endif.

.

IF ( I_MKPF_MSEG-BWART = '101' OR I_MKPF_MSEG-BWART = '105' OR I_MKPF_MSEG-BWART = '712' OR

I_MKPF_MSEG-BWART = '657' OR I_MKPF_MSEG-BWART = '453' OR I_MKPF_MSEG-BWART = '459' OR

I_MKPF_MSEG-BWART = '501' OR I_MKPF_MSEG-BWART = '701' OR

I_MKPF_MSEG-BWART = '521' OR I_MKPF_MSEG-BWART = '561' ).

NET_VAL = NET_VAL + I_MKPF_MSEG-MENGE.

ENDIF.

IF ( I_MKPF_MSEG-BWART = '102' OR I_MKPF_MSEG-BWART = '106' OR

I_MKPF_MSEG-BWART = '658' OR I_MKPF_MSEG-BWART = '454' OR

I_MKPF_MSEG-BWART = '460' OR I_MKPF_MSEG-BWART = '502' OR

I_MKPF_MSEG-BWART = '522' OR I_MKPF_MSEG-BWART = '562').

NET_VAL = NET_VAL - I_MKPF_MSEG-MENGE.

ENDIF.

WA_TEMP = I_MKPF_MSEG.

AT END OF MATNR.

I_TEMP-MATNR = WA_TEMP-MATNR.

I_TEMP-NET_VAL = NET_VAL.

APPEND I_TEMP.

CLEAR NET_VAL.

ENDAT.

  • ENDIF.

ENDLOOP.

SORT I_MARA BY MATNR.

SORT I_TEMP BY MATNR.

SELECT MATNR LBKUM SALK3 BWKEY

FROM MBEWH

INTO CORRESPONDING FIELDS OF TABLE I_MBEWH

FOR ALL ENTRIES IN I_MARA

WHERE MATNR = I_MARA-MATNR

AND BWKEY IN RANGE_WERK

AND BWTAR IN S_BWTAR

AND LFGJA = FISCAL_YEAR

AND LFMON = PERIOD.

.

SELECT MATNR LBKUM SALK3 BWKEY

FROM MBEW

INTO CORRESPONDING FIELDS OF TABLE I_MBEWH1

FOR ALL ENTRIES IN I_MARA

WHERE MATNR = I_MARA-MATNR

AND BWKEY IN RANGE_WERK.

  • AND LFMON = PERIOD

  • AND LFGJA = FISCAL_YEAR.

SORT I_MBEWH BY MATNR BWKEY.

SORT I_MBEWH1 BY MATNR BWKEY.

LOOP AT I_MBEWH.

LOOP AT I_MBEWH1 WHERE MATNR = I_MBEWH-MATNR

AND BWKEY = I_MBEWH-BWKEY.

DELETE I_MBEWH1.

ENDLOOP.

ENDLOOP.

APPEND LINES OF I_MBEWH1 TO I_MBEWH.

CLEAR : I_MBEWH1.

REFRESH I_MBEWH1.

SORT I_MBEWH BY MATNR.

LOOP AT I_MBEWH .

I_MBEWH1 = I_MBEWH.

AT END OF MATNR.

SUM.

I_MBEWH1-LBKUM = I_MBEWH-LBKUM.

I_MBEWH1-SALK3 = I_MBEWH-SALK3.

APPEND I_MBEWH1.

ENDAT.

ENDLOOP.

DELETE I_MBEWH1 WHERE LBKUM <= 0.

LOOP AT I_MARA.

CLEAR : CUR_VAL,

NUM,

TOT_VAL,

TOT_AMT1,

I_MBEWH1.

GT_FINAL-MATNR = I_MARA-MATNR.

GT_FINAL-MATKL = I_MARA-MATKL.

GT_FINAL-MAKTX = I_MARA-MAKTX.

gt_final-meins = I_MARA-MEINS.

READ TABLE I_MBEWH1 WITH KEY MATNR = I_MARA-MATNR.

GT_FINAL-LBKUM = I_MBEWH1-LBKUM.

  • to get the net inward movement vale that is to be subtracted from current value

READ TABLE I_TEMP WITH KEY MATNR = I_MARA-MATNR.

IF SY-SUBRC = 0 .

IF GT_FINAL-LBKUM > 0.

TOT_VAL = gt_final-lbkum - I_TEMP-NET_VAL.

if tot_val gt 0.

GT_FINAL-TOT_VAL = TOT_VAL.

GT_FINAL-PRICE = I_MBEWH1-SALK3 / gt_final-lbkum."TOT_VAL.

GT_FINAL-TOT_AMT = GT_FINAL-PRICE * GT_FINAL-TOT_VAL.

APPEND GT_FINAL.

endif.

ENDIF.

else.

if gt_final-lbkum > 0.

gt_final-tot_val = gt_final-lbkum.

GT_FINAL-PRICE = I_MBEWH1-SALK3 / gt_final-lbkum.

GT_FINAL-TOT_AMT = GT_FINAL-PRICE * GT_FINAL-TOT_VAL.

APPEND GT_FINAL.

endif.

ENDIF.

ENDLOOP.

DELETE GT_FINAL WHERE LBKUM LE 0.

ENDFORM. " F30_SELECT_PRIMARY_DATA

&----


*& Form f10_DATA_FORMAT

&----


  • text

----


FORM F10_DATA_FORMAT_MAT .

  • populating the field catalog table

  • MATNR

PERFORM F11_E01_FIELDCAT_INIT USING 'MARA' 'MATNR' 'MATNR' '1'

TEXT-003 'GT_FINAL' '15'.

  • MAKTX

PERFORM F11_E01_FIELDCAT_INIT USING 'MARA' 'MATKL' 'MATKL' '2'

TEXT-004 'GT_FINAL' '24'.

  • DESC

PERFORM F11_E01_FIELDCAT_INIT USING 'MAKT' 'MAKTX' 'MAKTX' '3'

TEXT-005 'GT_FINAL' '35'.

  • qty

PERFORM F11_E01_FIELDCAT_INIT USING '' 'TOT_VAL' 'MENGE' '4'

TEXT-006 'GT_FINAL' '15'.

  • MEINS

PERFORM F11_E01_FIELDCAT_INIT USING '' 'MEINS' 'MEINS' '4'

TEXT-008 'GT_FINAL' '15'.

  • TOTAL COST

PERFORM F11_E01_FIELDCAT_INIT USING '' 'TOT_AMT' 'SALK3' '5'

TEXT-007 'GT_FINAL' '24'.

PERFORM F12_E04_COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].

GV_SAVE = 'A'.

CLEAR GT_EVENTS.

REFRESH GT_EVENTS.

GT_EVENTS-NAME = 'TOP_OF_PAGE'.

GT_EVENTS-FORM = 'TOP_OF_PAGE'.

APPEND GT_EVENTS.

ENDFORM. " f10_DATA_FORMAT

&----


*& Form F11_E01_FIELDCAT_INIT

&----


  • text

----


FORM F11_E01_FIELDCAT_INIT USING T1 T2 T3 T4 T5 T6 T7.

CLEAR GW_FIELDCAT.

GW_FIELDCAT-REF_TABNAME = T1.

GW_FIELDCAT-FIELDNAME = T2.

GW_FIELDCAT-REF_FIELDNAME = T3.

GW_FIELDCAT-COL_POS = T4.

GW_FIELDCAT-SELTEXT_L = T5.

GW_FIELDCAT-TABNAME = T6.

GW_FIELDCAT-OUTPUTLEN = T7.

APPEND GW_FIELDCAT TO GT_FIELDCAT.

ENDFORM. " F11_E01_FIELDCAT_INIT

&----


*& Form f40_material_group_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM F50_MATERIAL_GROUP_DATA .

SORT GT_FINAL BY MATKL.

LOOP AT GT_FINAL.

TOT_QTY = GT_FINAL-TOT_VAL + TOT_QTY.

TOT_AMT1 = GT_FINAL-TOT_AMT + TOT_AMT1.

UOM = GT_FINAL-MEINS.

AT END OF MATKL.

MAT_FINAL-MATKL = GT_FINAL-MATKL.

MAT_FINAL-TOT_VAL = TOT_QTY.

MAT_FINAL-TOT_AMT = TOT_AMT1.

MAT_FINAL-MEINS = UOM.

APPEND MAT_FINAL.

CLEAR : TOT_QTY,

TOT_AMT1.

ENDAT.

ENDLOOP.

ENDFORM. " f40_material_group_data

&----


*& Form BUILD_DETAIL

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BUILD_DETAIL .

DETAIL_FINAL[] = GT_FINAL[].

DELETE DETAIL_FINAL WHERE MATKL NE MAT_FINAL-MATKL.

ENDFORM. " BUILD_DETAIL

&----


*& Form f11_data_format_group

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM F11_DATA_FORMAT_GROUP .

    • MATNR

  • PERFORM F11_E01_FIELDCAT_INIT USING 'MARA' 'MATNR' 'MATNR' '1'

  • TEXT-003 'GT_FINAL' '15'.

REFRESH GT_FIELDCAT[].

  • MAKTX

PERFORM F11_E01_FIELDCAT_INIT USING 'MARA' 'MATKL' 'MATKL' '2'

TEXT-004 'MAT_FINAL' '24'.

*

    • DESC

  • PERFORM F11_E01_FIELDCAT_INIT USING 'MAKT' 'MAKTX' 'MAKTX' '3'

  • TEXT-005 'GT_FINAL' '35'.

  • qty

PERFORM F11_E01_FIELDCAT_INIT USING '' 'TOT_VAL' 'MENGE' '4'

TEXT-006 'MAT_FINAL' '15'.

  • qty

PERFORM F11_E01_FIELDCAT_INIT USING '' 'MEINS' 'MEINS' '5'

TEXT-008 'MAT_FINAL' '15'.

  • TOTAL COST

PERFORM F11_E01_FIELDCAT_INIT USING '' 'TOT_AMT' 'SALK3' '6'

TEXT-007 'MAT_FINAL' '24'.

PERFORM F12_E04_COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].

GV_SAVE = 'A'.

CLEAR GT_EVENTS.

REFRESH GT_EVENTS.

GT_EVENTS-NAME = 'TOP_OF_PAGE'.

GT_EVENTS-FORM = 'TOP_OF_PAGE'.

APPEND GT_EVENTS.

ENDFORM. " f11_data_format_group

&----


*& Form DETAIL_FORMAT_FIELDCAT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DETAIL_FORMAT_FIELDCAT .

REFRESH GT_FIELDCAT[].

  • MATNR

PERFORM F11_E01_FIELDCAT_INIT USING 'MARA' 'MATNR' 'MATNR' '1'

TEXT-003 'DETAIL_FINAL' '15'.

  • MAKTL

PERFORM F11_E01_FIELDCAT_INIT USING 'MARA' 'MATKL' 'MATKL' '2'

TEXT-004 'DETAIL_FINAL' '24'.

  • MAKTX

PERFORM F11_E01_FIELDCAT_INIT USING 'MAKT' 'MAKTX' 'MAKTX' '3'

TEXT-005 'DETAIL_FINAL' '35'.

  • qty

PERFORM F11_E01_FIELDCAT_INIT USING '' 'TOT_VAL' 'MENGE' '4'

TEXT-006 'DETAIL_FINAL' '15'.

  • UOM

PERFORM F11_E01_FIELDCAT_INIT USING '' 'MEINS' 'MEINS' '5'

TEXT-008 'DETAIL_FINAL' '15'.

  • TOTAL COST

PERFORM F11_E01_FIELDCAT_INIT USING '' 'TOT_AMT' 'SALK3' '6'

TEXT-007 'DETAIL_FINAL' '24'.

  • PERFORM F12_E04_COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].

GV_SAVE = 'A'.

*

  • CLEAR GT_EVENTS.

  • REFRESH GT_EVENTS.

  • GT_EVENTS-NAME = 'TOP_OF_PAGE'.

  • GT_EVENTS-FORM = 'TOP_OF_PAGE'.

  • APPEND GT_EVENTS.

*

ENDFORM. " DETAIL_FORMAT_FIELDCAT

----


  • FORM USER_COMMAND *

----


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

CASE R_UCOMM.

WHEN '&IC1'. "doubleclick

IF RS_SELFIELD-TABNAME = 'MAT_FINAL'.

READ TABLE MAT_FINAL INDEX RS_SELFIELD-TABINDEX .

PERFORM BUILD_DETAIL.

PERFORM DETAIL_FORMAT_FIELDCAT.

PERFORM F20_EVENTTAB_BUILD CHANGING GT_EVENTS[].

PERFORM F40_DISPLAY_REPORT TABLES DETAIL_FINAL.

CLEAR DETAIL_FINAL[].

ENDIF.

CLEAR R_UCOMM.

ENDCASE.

ENDFORM. "USER_COMMAND

Hi,

I am doing Inventory ageing report. The report is giving correct result if I go with material wise selection upto 100 materials at a time. If I run the same report based on Material Group it is giving wrong result. I am pasting the code.

Kindly correct the report it is urgent. Please help to solve this.

Waiting for quick reply

regards,

Ram

REPORT ZMMR0024 LINE-SIZE 170 NO STANDARD PAGE HEADING .

TYPE-POOLS : SLIS.

TABLES : T001, T023, T001K, MARA, marv, MAKT, MBEW, MSEG, ekpo.

*----


  • Constants

*----


CONSTANTS : GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE

'TOP_OF_PAGE'.

*----


  • Internal Tables

*----


DATA : BEGIN OF GT_FINAL OCCURS 0,

MATKL LIKE MARA-MATKL,

MATNR LIKE MARA-MATNR,

LBKUM LIKE MBEW-LBKUM,

tot_val type p decimals 2,

MAKTX LIKE MAKT-MAKTX,

tot_amt type p decimals 2,

price type p decimals 2,

meins like mara-meins,

END OF GT_FINAL,

DETAIL_FINAL LIKE GT_FINAL OCCURS 0 WITH HEADER LINE.

DATA : BEGIN OF MAT_FINAL OCCURS 0,

MATKL LIKE MARA-MATKL,

TOT_VAL LIKE MSEG-MENGE,

TOT_AMT LIKE MBEW-SALK3,

PRICE LIKE MBEW-SALK3,

meins like mara-meins,

END OF MAT_FINAL.

DATA : BEGIN OF I_MARA OCCURS 0,

MATNR LIKE MARA-MATNR,

MATKL LIKE MARA-MATKL,

MAKTX LIKE MAKT-MAKTX,

MEINS LIKE MARA-MEINS,

LBKUM LIKE MBEWH-LBKUM,

TOT_AMT LIKE MBEW-SALK3,

END OF I_MARA.

DATA : BEGIN OF I_MKPF_MSEG OCCURS 0,

MATNR LIKE MARA-MATNR,

MBLNR LIKE MSEG-MBLNR,

ZEILE LIKE MSEG-ZEILE,

MENGE LIKE MSEG-MENGE,

BWART LIKE MSEG-BWART,

BUDAT LIKE MKPF-BUDAT,

NET_VAL LIKE MSEG-MENGE,

ebeln like mseg-ebeln,

ebelp like mseg-ebelp,

lfbnr like mseg-lfbnr,

lfpos like mseg-lfpos,

SHKZG LIKE MSEG-SHKZG,

meins like mara-meins,

END OF I_MKPF_MSEG,

WA_TEMP LIKE I_MKPF_MSEG.

DATA : BEGIN OF I_MBEWH OCCURS 0,

MATNR LIKE MARA-MATNR,

LBKUM LIKE MBEW-LBKUM,

SALK3 LIKE MBEW-SALK3,

BWKEY LIKE MBEW-BWKEY,

END OF I_MBEWH.

DATA : I_MBEWH1 LIKE I_MBEWH OCCURS 0 WITH HEADER LINE.

DATA : BEGIN OF I_TEMP OCCURS 0,

MATNR LIKE MARA-MATNR,

NET_VAL LIKE MSEG-MENGE,

meins like mara-meins,

END OF I_TEMP.

RANGES : RANGE_WERK FOR T001W-WERKS,

RANGE_DATE FOR SY-DATUM,

S_BWTAR FOR BWTAR.

DATA : PERIOD LIKE BAPI0002_4-FISCAL_PERIOD,

FISCAL_YEAR LIKE BAPI0002_4-FISCAL_YEAR,

CUR_VAL LIKE MSEG-MENGE,

NET_VAL LIKE MSEG-MENGE,

TOT_VAL LIKE MSEG-MENGE,

TOT_QTY LIKE MSEG-MENGE,

TOT_AMT1 LIKE MBEW-SALK3,

RES_DATE LIKE SY-DATUM,

NUM LIKE MBEW-SALK3,

UOM LIKE MARA-MEINS.

*----


  • Data declarations for alv

*----


DATA : GV_PAGE TYPE N VALUE 0.

DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

GT_SORT TYPE SLIS_T_SORTINFO_ALV,

GT_FILTER TYPE SLIS_T_FILTER_ALV,

GT_SP_GROUP TYPE SLIS_T_SP_GROUP_ALV,

GT_EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE,

GV_REPID LIKE SY-REPID,

GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,

GV_SAVE(1) TYPE C,

GT_VARIANT LIKE DISVARIANT,

GV_DOMNAME LIKE DD07V-DOMNAME,

GV_DOMVAL LIKE DD07V-DOMVALUE_L,

GW_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

*----


  • Selection screen

*----


SELECTION-SCREEN BEGIN OF BLOCK SEL WITH FRAME TITLE TEXT-001.

PARAMETERS : GS_BUKRS LIKE T001K-BUKRS OBLIGATORY.

SELECT-OPTIONS : GS_MATKL FOR MARA-MATKL,

GS_MATNR FOR MARA-MATNR.

PARAMETERS : gs_ped like s031-spmon OBLIGATORY,

GS_DAYS(3) TYPE n,

MG1 RADIOBUTTON GROUP GR1,

MT2 RADIOBUTTON GROUP GR1.

SELECTION-SCREEN END OF BLOCK SEL.

  • Validations on selection screen

AT SELECTION-SCREEN ON GS_BUKRS.

PERFORM F00_VALIDATE_COMPANY_CODE.

AT SELECTION-SCREEN ON GS_MATKL.

IF NOT GS_MATKL[] IS INITIAL.

PERFORM F01_VALIDATE_MATERIAL_GROUP.

ENDIF.

AT SELECTION-SCREEN ON GS_MATNR.

IF NOT GS_MATNR[] IS INITIAL.

PERFORM F01_VALIDATE_MATERIAL.

ENDIF.

AT SELECTION-SCREEN ON GS_days.

if gs_days = ''.

gs_days = 0.

endif.

START-OF-SELECTION.

GV_REPID = SY-REPID.

PERFORM F20_EVENTTAB_BUILD CHANGING GT_EVENTS[].

PERFORM F30_SELECT_PRIMARY_DATA.

IF MG1 = 'X'.

PERFORM F11_DATA_FORMAT_GROUP.

PERFORM F50_MATERIAL_GROUP_DATA.

PERFORM F40_DISPLAY_REPORT TABLES MAT_FINAL.

ELSEIF MT2 = 'X'.

PERFORM F10_DATA_FORMAT_MAT.

PERFORM F40_DISPLAY_REPORT TABLES GT_FINAL.

ENDIF.

&----


*& Form F20_EVENTTAB_BUILD

&----


FORM F20_EVENTTAB_BUILD CHANGING LT_EVENTS TYPE SLIS_T_EVENT.

CONSTANTS: LC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE

'TOP_OF_PAGE',

LC_FORMNAME_USER_COMMAND TYPE SLIS_FORMNAME VALUE

'USER_COMMAND'.

DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = LT_EVENTS.

  • note : lt_events has all the events

READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE

INTO LS_EVENT.

IF SY-SUBRC = 0.

MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.

APPEND LS_EVENT TO LT_EVENTS.

ENDIF.

READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_USER_COMMAND

INTO LS_EVENT.

IF SY-SUBRC = 0.

MOVE LC_FORMNAME_USER_COMMAND TO LS_EVENT-FORM.

APPEND LS_EVENT TO LT_EVENTS.

ENDIF.

ENDFORM. "F20_EVENTTAB_BUILD

&----


*& Form F12_E04_COMMENT_BUILD

&----


FORM F12_E04_COMMENT_BUILD USING E04_LT_TOP_OF_PAGE TYPE

SLIS_T_LISTHEADER.

DATA : LS_LINE TYPE SLIS_LISTHEADER,

LV_TEXT(100) TYPE C,

LV_DAYLOW(2) TYPE C,

LV_MONTHLOW(2) TYPE C,

LV_YEARHIGH(4) TYPE C,

LV_DAYHIGH(2) TYPE C,

LV_MONTHHIGH(2) TYPE C,

LV_YEARLOW(4) TYPE C,

LV_DATFORMAT1(10),

LV_DATFORMAT2(10).

CONCATENATE 'Company Code :' ' ' GS_BUKRS

INTO LV_TEXT SEPARATED BY SPACE.

CLEAR LS_LINE.

LS_LINE-TYP = 'H'.

LS_LINE-INFO = LV_TEXT.

APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.

CLEAR LV_TEXT.

IF NOT GS_MATKL[] IS INITIAL.

IF GS_MATKL-HIGH IS INITIAL AND NOT GS_MATKL-LOW IS INITIAL.

CONCATENATE 'Material Group :' ' ' GS_MATKL-LOW

INTO LV_TEXT SEPARATED BY SPACE.

ELSE .

CONCATENATE 'Material Group :' GS_MATKL-LOW ' to'

GS_MATKL-HIGH INTO LV_TEXT SEPARATED BY SPACE.

ENDIF.

ENDIF.

CLEAR LS_LINE.

LS_LINE-TYP = 'H'.

LS_LINE-INFO = LV_TEXT.

APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.

CLEAR LV_TEXT.

IF NOT GS_MATNR[] IS INITIAL.

IF GS_MATNR-HIGH IS INITIAL AND NOT GS_MATNR-LOW IS INITIAL.

CONCATENATE 'Material :' ' ' GS_MATNR-LOW

INTO LV_TEXT SEPARATED BY SPACE.

ELSE .

CONCATENATE 'Material :' GS_MATNR-LOW ' to'

GS_MATNR-HIGH INTO LV_TEXT SEPARATED BY SPACE.

ENDIF.

ENDIF.

CLEAR LS_LINE.

LS_LINE-TYP = 'H'.

LS_LINE-INFO = LV_TEXT.

APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.

CLEAR LV_TEXT.

  • LV_YEARLOW = gs_ped+0(4).

  • LV_MONTHLOW = gs_ped+4(2).

  • LV_DAYLOW = gs_ped+6(2).

*

  • CONCATENATE LV_DAYLOW LV_MONTHLOW LV_YEARLOW INTO LV_DATFORMAT1

*SEPARATED BY '.'.

CONCATENATE 'Key month : ' gs_ped

INTO LV_TEXT SEPARATED BY SPACE.

CLEAR LS_LINE.

LS_LINE-TYP = 'H'.

LS_LINE-INFO = LV_TEXT.

APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.

CLEAR LV_TEXT.

CONCATENATE 'Number of days :' ' ' GS_DAYS

INTO LV_TEXT SEPARATED BY SPACE.

CLEAR LS_LINE.

LS_LINE-TYP = 'H'.

LS_LINE-INFO = LV_TEXT.

APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.

CLEAR LV_TEXT.

GV_PAGE = GV_PAGE + 1.

CONCATENATE 'PAGE NO : ' ' ' GV_PAGE

INTO LV_TEXT SEPARATED BY SPACE.

CLEAR LS_LINE.

LS_LINE-TYP = 'H'.

LS_LINE-INFO = LV_TEXT.

APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.

ENDFORM. "F12_E04_COMMENT_BUILD

----


  • FORM TOP_OF_PAGE *

----


FORM TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.

ENDFORM. "TOP_OF_PAGE

&----


*& Form validate_sales_organization

&----


  • text

----


FORM F00_VALIDATE_COMPANY_CODE .

SELECT SINGLE BUKRS

FROM T001

INTO T001-BUKRS

WHERE BUKRS = GS_BUKRS.

IF SY-SUBRC = 0.

ELSE.

MESSAGE E000(ZCBOM) WITH 'Please enter the valid material group'.

ENDIF.

ENDFORM. " validate_sales_organization

&----


*& Form VALIDATE_PLANT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM F01_VALIDATE_MATERIAL_GROUP.

SELECT SINGLE MATKL

FROM T023

INTO T023-MATKL

WHERE MATKL IN GS_MATKL.

IF SY-SUBRC = 0.

ELSE.

MESSAGE E000(ZCBOM) WITH 'Please enter the valid material group'.

ENDIF.

ENDFORM. " VALIDATE_PLANT

&----


*& Form VALIDATE_MATERIAL

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM F01_VALIDATE_MATERIAL.

SELECT SINGLE MATNR

FROM MARA

INTO MARA-MATNR

WHERE MATNR IN GS_MATNR.

IF SY-SUBRC = 0.

ELSE.

MESSAGE E000(ZCBOM) WITH 'Please enter the valid material '.

ENDIF.

ENDFORM. " VALIDATE_MATERIAL

&----


*& Form F40_DISPLAY_REPORT

&----


FORM F40_DISPLAY_REPORT TABLES IT.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = GV_REPID

I_CALLBACK_USER_COMMAND = 'USER_COMMAND '

IT_FIELDCAT = GT_FIELDCAT[]

IT_SPECIAL_GROUPS = GT_SP_GROUP[]

IT_SORT = GT_SORT[]

I_SAVE = GV_SAVE

IS_VARIANT = GT_VARIANT

IT_EVENTS = GT_EVENTS[]

TABLES

T_OUTTAB = IT. "it_1.

CLEAR:GT_FIELDCAT.

REFRESH:GT_FIELDCAT.

ENDFORM. " F40_DISPLAY_REPORT

&----


*& Form F30_SELECT_PRIMARY_DATA

&----


  • text

----


FORM F30_SELECT_PRIMARY_DATA .

  • subroutine to get the actual data

  • to get the plants for the given company code

data : temp_bukrs like BAPI0002_2-COMP_CODE,

temp_date like BAPI0002_4-POSTING_DATE.

data : last_day(2) type n,

from_date like sy-datum,

temp_date1 like sy-datum,

cal_month(2) type n,

cal_year(4) type n.

SELECT DISTINCT BWKEY FROM T001K INTO RANGE_WERK-LOW WHERE BUKRS = GS_BUKRS.

RANGE_WERK-SIGN = 'I'.

RANGE_WERK-OPTION = 'EQ'.

APPEND RANGE_WERK.

ENDSELECT.

*selecting material that is relevant to the selection criteria

SELECT MARAMATNR MARAMATKL MARAMEINS MAKTMAKTX

FROM MARA JOIN MAKT

ON MAKTMATNR = MARAMATNR

INTO CORRESPONDING FIELDS OF TABLE I_MARA

WHERE MARA~MATKL IN GS_MATKL

AND MARA~MATNR IN GS_MATNR

AND MAKT~SPRAS = 'EN'.

temp_bukrs = gs_bukrs.

cal_month = gs_ped+4(2).

cal_year = gs_ped+0(4).

concatenate cal_year cal_month '01' into temp_date.

*temp_date = temp_date1.

CALL FUNCTION 'BAPI_COMPANYCODE_GET_PERIOD'

EXPORTING

COMPANYCODEID = temp_bukrs

POSTING_DATE = temp_date

IMPORTING

FISCAL_YEAR = fiscal_year

FISCAL_PERIOD = period.

select single * from marv into marv where bukrs = temp_bukrs.

  • temp_date1 = temp_date.

if sy-subrc = 0.

if ( marv-lfmon ne period or marv-lfgja ne fiscal_year ).

CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'

EXPORTING

DAY_IN = temp_date

IMPORTING

LAST_DAY_OF_MONTH = from_date

EXCEPTIONS

DAY_IN_NO_DATE = 1

OTHERS = 2.

else.

from_date = sy-datum.

endif.

endif.

  • to define the range for posting date

RES_DATE = from_date - GS_DAYS.

RANGE_DATE-LOW = RES_DATE.

RANGE_DATE-HIGH = from_date.

RANGE_DATE-OPTION = 'BT'.

RANGE_DATE-SIGN = 'I'.

APPEND RANGE_DATE.

  • to select documents and their quantities for the given range of posting dates

  • with goods movement type 101 105 657 453 459 501 521 and their reversals

if range_date-low ne range_date-high.

SELECT MSEG~MATNR MSEG~MBLNR MSEG~ZEILE MSEG~MENGE MSEG~BWART mseg~ebeln mseg~ebelp

MKPF~BUDAT MSEG~SHKZG

FROM MKPF

JOIN MSEG ON MSEG~MBLNR = MKPF~MBLNR

AND MSEG~MJAHR = MKPF~MJAHR

INTO CORRESPONDING FIELDS OF TABLE I_MKPF_MSEG

FOR ALL ENTRIES IN I_MARA

WHERE MSEG~MATNR = I_MARA-MATNR

AND MSEG~WERKS IN RANGE_WERK

AND MKPF~BUDAT IN RANGE_DATE

AND MSEG~BWART IN ('101','105','561','501','301','309','951','953','955','957','712','657','658',

'521','522','303','304','102','562','502','952','954','956','958','302').

DELETE I_MKPF_MSEG WHERE ( BWART = '309' AND SHKZG = 'H' )

OR ( BWART = '303' AND SHKZG = 'H' )

OR ( BWART = '304' AND SHKZG = 'S' )

OR ( BWART = '657' AND SHKZG = 'H' )

OR ( BWART = '658' AND SHKZG = 'S' ).

endif.

SORT I_MKPF_MSEG BY MATNR MBLNR.

LOOP AT I_MKPF_MSEG.

if i_mkpf_mseg-bwart = '101' or i_mkpf_mseg-bwart = '102'.

select single * from ekpo where ebeln = i_mkpf_mseg-ebeln

and ebelp = i_mkpf_mseg-ebelp.

if ekpo-pstyp = 7.

delete i_mkpf_mseg where ebeln = i_mkpf_mseg-ebeln

and ebelp = i_mkpf_mseg-ebelp.

CLEAR I_MKPF_MSEG-MENGE.

endif.

endif.

.

IF ( I_MKPF_MSEG-BWART = '101' OR I_MKPF_MSEG-BWART = '105' OR I_MKPF_MSEG-BWART = '712' OR

I_MKPF_MSEG-BWART = '657' OR I_MKPF_MSEG-BWART = '453' OR I_MKPF_MSEG-BWART = '459' OR

I_MKPF_MSEG-BWART = '501' OR I_MKPF_MSEG-BWART = '701' OR

I_MKPF_MSEG-BWART = '521' OR I_MKPF_MSEG-BWART = '561' ).

NET_VAL = NET_VAL + I_MKPF_MSEG-MENGE.

ENDIF.

IF ( I_MKPF_MSEG-BWART = '102' OR I_MKPF_MSEG-BWART = '106' OR

I_MKPF_MSEG-BWART = '658' OR I_MKPF_MSEG-BWART = '454' OR

I_MKPF_MSEG-BWART = '460' OR I_MKPF_MSEG-BWART = '502' OR

I_MKPF_MSEG-BWART = '522' OR I_MKPF_MSEG-BWART = '562').

NET_VAL = NET_VAL - I_MKPF_MSEG-MENGE.

ENDIF.

WA_TEMP = I_MKPF_MSEG.

AT END OF MATNR.

I_TEMP-MATNR = WA_TEMP-MATNR.

I_TEMP-NET_VAL = NET_VAL.

APPEND I_TEMP.

CLEAR NET_VAL.

ENDAT.

  • ENDIF.

ENDLOOP.

SORT I_MARA BY MATNR.

SORT I_TEMP BY MATNR.

SELECT MATNR LBKUM SALK3 BWKEY

FROM MBEWH

INTO CORRESPONDING FIELDS OF TABLE I_MBEWH

FOR ALL ENTRIES IN I_MARA

WHERE MATNR = I_MARA-MATNR

AND BWKEY IN RANGE_WERK

AND BWTAR IN S_BWTAR

AND LFGJA = FISCAL_YEAR

AND LFMON = PERIOD.

.

SELECT MATNR LBKUM SALK3 BWKEY

FROM MBEW

INTO CORRESPONDING FIELDS OF TABLE I_MBEWH1

FOR ALL ENTRIES IN I_MARA

WHERE MATNR = I_MARA-MATNR

AND BWKEY IN RANGE_WERK.

  • AND LFMON = PERIOD

  • AND LFGJA = FISCAL_YEAR.

SORT I_MBEWH BY MATNR BWKEY.

SORT I_MBEWH1 BY MATNR BWKEY.

LOOP AT I_MBEWH.

LOOP AT I_MBEWH1 WHERE MATNR = I_MBEWH-MATNR

AND BWKEY = I_MBEWH-BWKEY.

DELETE I_MBEWH1.

ENDLOOP.

ENDLOOP.

APPEND LINES OF I_MBEWH1 TO I_MBEWH.

CLEAR : I_MBEWH1.

REFRESH I_MBEWH1.

SORT I_MBEWH BY MATNR.

LOOP AT I_MBEWH .

I_MBEWH1 = I_MBEWH.

AT END OF MATNR.

SUM.

I_MBEWH1-LBKUM = I_MBEWH-LBKUM.

I_MBEWH1-SALK3 = I_MBEWH-SALK3.

APPEND I_MBEWH1.

ENDAT.

ENDLOOP.

DELETE I_MBEWH1 WHERE LBKUM <= 0.

LOOP AT I_MARA.

CLEAR : CUR_VAL,

NUM,

TOT_VAL,

TOT_AMT1,

I_MBEWH1.

GT_FINAL-MATNR = I_MARA-MATNR.

GT_FINAL-MATKL = I_MARA-MATKL.

GT_FINAL-MAKTX = I_MARA-MAKTX.

gt_final-meins = I_MARA-MEINS.

READ TABLE I_MBEWH1 WITH KEY MATNR = I_MARA-MATNR.

GT_FINAL-LBKUM = I_MBEWH1-LBKUM.

  • to get the net inward movement vale that is to be subtracted from current value

READ TABLE I_TEMP WITH KEY MATNR = I_MARA-MATNR.

IF SY-SUBRC = 0 .

IF GT_FINAL-LBKUM > 0.

TOT_VAL = gt_final-lbkum - I_TEMP-NET_VAL.

if tot_val gt 0.

GT_FINAL-TOT_VAL = TOT_VAL.

GT_FINAL-PRICE = I_MBEWH1-SALK3 / gt_final-lbkum."TOT_VAL.

GT_FINAL-TOT_AMT = GT_FINAL-PRICE * GT_FINAL-TOT_VAL.

APPEND GT_FINAL.

endif.

ENDIF.

else.

if gt_final-lbkum > 0.

gt_final-tot_val = gt_final-lbkum.

GT_FINAL-PRICE = I_MBEWH1-SALK3 / gt_final-lbkum.

GT_FINAL-TOT_AMT = GT_FINAL-PRICE * GT_FINAL-TOT_VAL.

APPEND GT_FINAL.

endif.

ENDIF.

ENDLOOP.

DELETE GT_FINAL WHERE LBKUM LE 0.

ENDFORM. " F30_SELECT_PRIMARY_DATA

&----


*& Form f10_DATA_FORMAT

&----


  • text

----


FORM F10_DATA_FORMAT_MAT .

  • populating the field catalog table

  • MATNR

PERFORM F11_E01_FIELDCAT_INIT USING 'MARA' 'MATNR' 'MATNR' '1'

TEXT-003 'GT_FINAL' '15'.

  • MAKTX

PERFORM F11_E01_FIELDCAT_INIT USING 'MARA' 'MATKL' 'MATKL' '2'

TEXT-004 'GT_FINAL' '24'.

  • DESC

PERFORM F11_E01_FIELDCAT_INIT USING 'MAKT' 'MAKTX' 'MAKTX' '3'

TEXT-005 'GT_FINAL' '35'.

  • qty

PERFORM F11_E01_FIELDCAT_INIT USING '' 'TOT_VAL' 'MENGE' '4'

TEXT-006 'GT_FINAL' '15'.

  • MEINS

PERFORM F11_E01_FIELDCAT_INIT USING '' 'MEINS' 'MEINS' '4'

TEXT-008 'GT_FINAL' '15'.

  • TOTAL COST

PERFORM F11_E01_FIELDCAT_INIT USING '' 'TOT_AMT' 'SALK3' '5'

TEXT-007 'GT_FINAL' '24'.

PERFORM F12_E04_COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].

GV_SAVE = 'A'.

CLEAR GT_EVENTS.

REFRESH GT_EVENTS.

GT_EVENTS-NAME = 'TOP_OF_PAGE'.

GT_EVENTS-FORM = 'TOP_OF_PAGE'.

APPEND GT_EVENTS.

ENDFORM. " f10_DATA_FORMAT

&----


*& Form F11_E01_FIELDCAT_INIT

&----


  • text

----


FORM F11_E01_FIELDCAT_INIT USING T1 T2 T3 T4 T5 T6 T7.

CLEAR GW_FIELDCAT.

GW_FIELDCAT-REF_TABNAME = T1.

GW_FIELDCAT-FIELDNAME = T2.

GW_FIELDCAT-REF_FIELDNAME = T3.

GW_FIELDCAT-COL_POS = T4.

GW_FIELDCAT-SELTEXT_L = T5.

GW_FIELDCAT-TABNAME = T6.

GW_FIELDCAT-OUTPUTLEN = T7.

APPEND GW_FIELDCAT TO GT_FIELDCAT.

ENDFORM. " F11_E01_FIELDCAT_INIT

&----


*& Form f40_material_group_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM F50_MATERIAL_GROUP_DATA .

SORT GT_FINAL BY MATKL.

LOOP AT GT_FINAL.

TOT_QTY = GT_FINAL-TOT_VAL + TOT_QTY.

TOT_AMT1 = GT_FINAL-TOT_AMT + TOT_AMT1.

UOM = GT_FINAL-MEINS.

AT END OF MATKL.

MAT_FINAL-MATKL = GT_FINAL-MATKL.

MAT_FINAL-TOT_VAL = TOT_QTY.

MAT_FINAL-TOT_AMT = TOT_AMT1.

MAT_FINAL-MEINS = UOM.

APPEND MAT_FINAL.

CLEAR : TOT_QTY,

TOT_AMT1.

ENDAT.

ENDLOOP.

ENDFORM. " f40_material_group_data

&----


*& Form BUILD_DETAIL

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BUILD_DETAIL .

DETAIL_FINAL[] = GT_FINAL[].

DELETE DETAIL_FINAL WHERE MATKL NE MAT_FINAL-MATKL.

ENDFORM. " BUILD_DETAIL

&----


*& Form f11_data_format_group

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM F11_DATA_FORMAT_GROUP .

    • MATNR

  • PERFORM F11_E01_FIELDCAT_INIT USING 'MARA' 'MATNR' 'MATNR' '1'

  • TEXT-003 'GT_FINAL' '15'.

REFRESH GT_FIELDCAT[].

  • MAKTX

PERFORM F11_E01_FIELDCAT_INIT USING 'MARA' 'MATKL' 'MATKL' '2'

TEXT-004 'MAT_FINAL' '24'.

*

    • DESC

  • PERFORM F11_E01_FIELDCAT_INIT USING 'MAKT' 'MAKTX' 'MAKTX' '3'

  • TEXT-005 'GT_FINAL' '35'.

  • qty

PERFORM F11_E01_FIELDCAT_INIT USING '' 'TOT_VAL' 'MENGE' '4'

TEXT-006 'MAT_FINAL' '15'.

  • qty

PERFORM F11_E01_FIELDCAT_INIT USING '' 'MEINS' 'MEINS' '5'

TEXT-008 'MAT_FINAL' '15'.

  • TOTAL COST

PERFORM F11_E01_FIELDCAT_INIT USING '' 'TOT_AMT' 'SALK3' '6'

TEXT-007 'MAT_FINAL' '24'.

PERFORM F12_E04_COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].

GV_SAVE = 'A'.

CLEAR GT_EVENTS.

REFRESH GT_EVENTS.

GT_EVENTS-NAME = 'TOP_OF_PAGE'.

GT_EVENTS-FORM = 'TOP_OF_PAGE'.

APPEND GT_EVENTS.

ENDFORM. " f11_data_format_group

&----


*& Form DETAIL_FORMAT_FIELDCAT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DETAIL_FORMAT_FIELDCAT .

REFRESH GT_FIELDCAT[].

  • MATNR

PERFORM F11_E01_FIELDCAT_INIT USING 'MARA' 'MATNR' 'MATNR' '1'

TEXT-003 'DETAIL_FINAL' '15'.

  • MAKTL

PERFORM F11_E01_FIELDCAT_INIT USING 'MARA' 'MATKL' 'MATKL' '2'

TEXT-004 'DETAIL_FINAL' '24'.

  • MAKTX

PERFORM F11_E01_FIELDCAT_INIT USING 'MAKT' 'MAKTX' 'MAKTX' '3'

TEXT-005 'DETAIL_FINAL' '35'.

  • qty

PERFORM F11_E01_FIELDCAT_INIT USING '' 'TOT_VAL' 'MENGE' '4'

TEXT-006 'DETAIL_FINAL' '15'.

  • UOM

PERFORM F11_E01_FIELDCAT_INIT USING '' 'MEINS' 'MEINS' '5'

TEXT-008 'DETAIL_FINAL' '15'.

  • TOTAL COST

PERFORM F11_E01_FIELDCAT_INIT USING '' 'TOT_AMT' 'SALK3' '6'

TEXT-007 'DETAIL_FINAL' '24'.

  • PERFORM F12_E04_COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].

GV_SAVE = 'A'.

*

  • CLEAR GT_EVENTS.

  • REFRESH GT_EVENTS.

  • GT_EVENTS-NAME = 'TOP_OF_PAGE'.

  • GT_EVENTS-FORM = 'TOP_OF_PAGE'.

  • APPEND GT_EVENTS.

*

ENDFORM. " DETAIL_FORMAT_FIELDCAT

----


  • FORM USER_COMMAND *

----


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

CASE R_UCOMM.

WHEN '&IC1'. "doubleclick

IF RS_SELFIELD-TABNAME = 'MAT_FINAL'.

READ TABLE MAT_FINAL INDEX RS_SELFIELD-TABINDEX .

PERFORM BUILD_DETAIL.

PERFORM DETAIL_FORMAT_FIELDCAT.

PERFORM F20_EVENTTAB_BUILD CHANGING GT_EVENTS[].

PERFORM F40_DISPLAY_REPORT TABLES DETAIL_FINAL.

CLEAR DETAIL_FINAL[].

ENDIF.

CLEAR R_UCOMM.

ENDCASE.

ENDFORM. "USER_COMMAND

1 REPLY 1
Read only

Former Member
0 Likes
493

Hi,

Any report code for Inventory ageing material group wise. kindly help me.

regards,

Ram