cancel
Showing results for 
Search instead for 
Did you mean: 

Report

Former Member
0 Kudos

Hi All,

I want in Z report-> <b>GR item</b> but IR not done and <b>IR item</b> but GR not done .

I have all table and field but problem in logic,can anybody help me to define the logic.

Rgd

Amit

Accepted Solutions (0)

Answers (1)

Answers (1)

former_member404244
Active Contributor
0 Kudos

Hi,

plz check the code...

*

    • Program Logic : This report Provides the information about total*

  • dollar apend for GMP or MRO materials.We should *

  • consider total spend for PO that has both *

  • GR and IR,total spend on GR but no IR and total *

  • spend on IR but no GR.Finally dispaly an ALV *

  • report with material,material description,vendor*

    • vendorname,manufacturer part number,purchasing *

  • group,material group,Total PO Line Item Value, *

  • Total PO Value with both GR and IR,Total PO *

  • value with GR and no IR,Total PO value with IR *

  • and no GR. *

REPORT zptprpt001r_gmp_mro_totalspend NO STANDARD PAGE HEADING

MESSAGE-ID zmm .

************************************************************************

*TYPE POOLS *

************************************************************************

TYPE-POOLS : slis.

************************************************************************

  • Tables Declaration *

************************************************************************

TABLES : ekko, "Purchasing Document Header

ekpo. "Purchasing Document Item

************************************************************************

  • Global Constants *

************************************************************************

CONSTANTS:

c_top_of_page(15) TYPE c VALUE 'SUB_TOP_OF_PAGE', "#EC NOTEXT

c_chk(1) TYPE c VALUE 'X', "check

c_save(1) TYPE c VALUE 'A', "save

c_1(1) TYPE c VALUE '1',

c_2(1) TYPE c VALUE '2',

c_sto LIKE ekko-bsart VALUE 'UB'.

************************************************************************

  • Global Types Declaration *

************************************************************************

TYPES :

  • Type declaration for Purchasing Document Item

BEGIN OF t_ekpo,

ebeln TYPE ebeln, "Purchasing Document Number

ebelp TYPE ebelp, "Item Number of Purchasing Document

ekgrp TYPE bkgrp, "Purchasing Group

lifnr TYPE lifnr, "Vendor

aedat TYPE erdat, "Date on which the record was created

matkl TYPE matkl, "Material Group

matnr TYPE matnr, "Material Number

mtart TYPE mtart, "Material Type

mfrpn TYPE mfrpn, "Manufacturer part number

netwr TYPE bwert, "Net order value in PO currency

menge TYPE bstmg, "Purchase order quantity

netpr TYPE bprei, "Net price in purchasing document (in

" document currency)

END OF t_ekpo,

  • Type declaration for History per Purchasing Document

BEGIN OF t_ekbe,

ebeln TYPE ebeln, "Purchasing Document Number

ebelp TYPE ebelp, "Item Number of Purchasing Document

zekkn TYPE ekbe-zekkn,"Sequential number of account assignment

vgabe TYPE vgabe, "Transaction/event type,purchase order

gjahr TYPE ekbe-gjahr,"Material Document Year

belnr TYPE ekbe-belnr,"Number of Material Document

buzei TYPE ekbe-buzei,"Item in Material Document

dmbtr TYPE dmbtr, "Amount in local currency

"history

menge TYPE bstmg, "Quantity

shkzg TYPE ekbe-shkzg,"Debit/Credit indicator

END OF t_ekbe,

  • Type declaration for Material Descriptions

BEGIN OF t_matnr,

matnr TYPE matnr, "Material Number

maktx TYPE maktx, "Material Description

END OF t_matnr,

  • Type declaration for Vendor Master (General Section)

BEGIN OF t_lifnr,

lifnr TYPE lifnr, "Vendor

name1 TYPE name1_gp, "Name 1

END OF t_lifnr.

************************************************************************

  • Global Workareas Declaration *

************************************************************************

DATA:

  • For Variant

wa_variant TYPE disvariant,

  • For Variant

wa_variant1 TYPE disvariant,

  • To define ALV layout structure

wa_layout TYPE slis_layout_alv,

  • For ALV Print Structure

wa_print TYPE slis_print_alv,

  • For GR information

wa_gr TYPE t_ekbe,

  • For IR Information

wa_ir TYPE t_ekbe.

************************************************************************

  • Internal Tables Declaration *

************************************************************************

DATA:

  • For ALV events

i_events TYPE slis_t_event,

  • For ALV top of page

i_alv_top_of_page TYPE slis_t_listheader,

  • Field catalog for ALV

i_fieldcat TYPE slis_t_fieldcat_alv,

  • For records from EKKO

i_purchase TYPE STANDARD TABLE OF t_ekpo INITIAL SIZE 0,

  • For records from EKBE

i_ekbe TYPE STANDARD TABLE OF t_ekbe INITIAL SIZE 0,

  • For Records that contains GR information

i_gr TYPE STANDARD TABLE OF t_ekbe INITIAL SIZE 0,

  • For Records that contains IR information

i_ir TYPE STANDARD TABLE OF t_ekbe INITIAL SIZE 0,

  • For Material Description from MAKT

i_matnr TYPE STANDARD TABLE OF t_matnr INITIAL SIZE 0,

  • For vendor name from LFA1

i_lifnr TYPE STANDARD TABLE OF t_lifnr INITIAL SIZE 0,

  • Final internal table to display output

BEGIN OF i_final OCCURS 0,

matnr LIKE mara-matnr, "Material Number

maktx LIKE makt-maktx, "Material Description

lifnr LIKE ekko-lifnr, "Vendor

name1 LIKE lfa1-name1, "Vendor Name

mfrpn LIKE ekpo-mfrpn, "Manufacturer part number

matkl LIKE ekpo-matkl, "Material Group

ekgrp LIKE ekko-ekgrp, "Purchasing Group

netwr LIKE ekpo-netwr, "Net order value in PO currency

grir LIKE ekbe-dmbtr, "Total PO Value with both GR and IR

gr LIKE ekbe-dmbtr, "Total PO Value with GR and no IR

ir LIKE ekbe-dmbtr, "Total PO Value with IR and no GR

END OF i_final.

************************************************************************

  • Global Variables *

************************************************************************

DATA : v_repid TYPE sy-repid.

*&----


*& Selection Screen Declaration

*&----


SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

SELECT-OPTIONS : s_aedat FOR ekko-aedat OBLIGATORY, "Date on whcich

"document was posted

s_ekgrp FOR ekko-ekgrp, "Purchasing group

s_lifnr FOR ekko-lifnr, "Vendor

s_matkl FOR ekpo-matkl, "Material Group

s_matnr FOR ekpo-matnr

MATCHCODE OBJECT mat1, "Material Number

s_mtart FOR ekpo-mtart

OBLIGATORY DEFAULT 'ROH', "Material Type

s_ebeln FOR ekko-ebeln.

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.

PARAMETERS: p_varnt TYPE slis_vari. " Variant

SELECTION-SCREEN: END OF BLOCK b2.

----


  • INITIALIZATION

----


INITIALIZATION.

v_repid = sy-repid.

  • Variant Initialization.

PERFORM sub_variant_int.

************************************************************************

  • AT SELECTION-SCREEN ON VALUE-REQUEST

************************************************************************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_varnt.

  • Display List of Variants on pressing F4

PERFORM sub_f4_for_variant.

----


  • AT SELECTION-SCREEN

----


AT SELECTION-SCREEN.

  • For check variant

PERFORM sub_check_variant.

----


  • START-OF-SELECTION

----


START-OF-SELECTION.

  • Fetch data from EKKO

PERFORM sub_fetch_ekko.

  • Fetch data from EKBE

PERFORM sub_fetch_ekbe.

  • Fill GR/IR intrenal tables

PERFORM sub_fill_grir_tables.

  • Fetch data from MAKT

PERFORM sub_fetch_makt.

  • Fetch data from LFA1

PERFORM sub_fetch_lfa1.

----


  • END-OF-SELECTION

----


END-OF-SELECTION.

  • Move data to final internal table.

PERFORM sub-fetch_final.

  • To create events.

PERFORM sub_create_events.

  • To create Layout.

PERFORM sub_create_layout.

  • TO display ALV.

PERFORM sub_alv_display.

&----


*& Form sub_variant_int

&----


  • variant Initialization

----


FORM sub_variant_int .

CLEAR wa_variant.

wa_variant-report = v_repid.

  • Determine the default variant.

PERFORM sub_get_default_variant.

ENDFORM. " sub_variant_int

&----


*& Form sub_get_default_variant

&----


  • To determine the default ALV varint & assign it to the p_varint.

----


FORM sub_get_default_variant .

wa_variant1 = wa_variant.

  • Function module used for to get default variant.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

i_save = c_save

CHANGING

cs_variant = wa_variant1

EXCEPTIONS

wrong_input = 1

not_found = 2

program_error = 3

OTHERS = 4.

IF sy-subrc = 0.

p_varnt = wa_variant1-variant.

ENDIF.

ENDFORM. " sub_get_default_variant

&----


*& Form sub_f4_for_variant

&----


  • Variant on pressing F4

----


FORM sub_f4_for_variant .

  • Local declaration

DATA: lv_exit(1) TYPE c. "ALV exit

  • This function module for displaying list of Variants on pressing F4

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

is_variant = wa_variant

i_save = c_save

IMPORTING

e_exit = lv_exit

es_variant = wa_variant1

EXCEPTIONS

not_found = 1

program_error = 2.

IF sy-subrc <> 2 AND lv_exit IS INITIAL.

p_varnt = wa_variant1-variant.

ENDIF.

ENDFORM. " sub_f4_for_variant

&----


*& Form sub_check_variant

&----


  • Check variant

----


FORM sub_check_variant.

IF NOT p_varnt IS INITIAL.

CLEAR wa_variant1.

MOVE wa_variant TO wa_variant1.

MOVE p_varnt TO wa_variant1-variant.

  • This function module is used to check the variant existance

CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'

EXPORTING

i_save = c_save

CHANGING

cs_variant = wa_variant1.

wa_variant = wa_variant1.

ENDIF. " IF NOT p_varnt IS INITIAL.

ENDFORM. " sub_check_variant

&----


*& Form sub_fetch_ekko

&----


  • Fetch the data from EKPO

----


FORM sub_fetch_ekko .

SELECT ekko~ebeln

ebelp

ekgrp

lifnr

ekpo~aedat

matkl

matnr

mtart

mfrpn

netwr

menge

netpr

FROM ekko JOIN ekpo

ON ekpoebeln = ekkoebeln

INTO TABLE I_PURCHASE

WHERE ekgrp IN s_ekgrp

AND lifnr IN s_lifnr

AND ekko~aedat IN s_aedat

AND matkl IN s_matkl

AND matnr IN s_matnr

AND mtart IN s_mtart

AND bsart NE c_sto "cdtp00029224

AND ekko~ebeln IN s_ebeln. " testing purposes

IF sy-subrc NE 0.

MESSAGE i545.

LEAVE LIST-PROCESSING.

ELSE.

SORT i_purchase BY ebeln.

ENDIF.

ENDFORM. " sub_fetch_ekko

&----


*& Form sub_fetch_ekbe

&----


  • Fetch data from EKBE

----


FORM sub_fetch_ekbe .

IF NOT i_purchase[] IS INITIAL.

SELECT ebeln

ebelp

zekkn

vgabe

gjahr

belnr

buzei

dmbtr

menge

shkzg

FROM ekbe

INTO TABLE i_ekbe

FOR ALL ENTRIES IN i_purchase

WHERE ebeln = i_purchase-ebeln

AND ebelp = i_purchase-ebelp

AND vgabe IN (c_1,c_2).

IF sy-subrc EQ 0.

SORT i_ekbe BY ebeln ebelp .

ENDIF.

ENDIF. " IF NOT i_purchase[] IS INITIAL.

ENDFORM. " sub_fetch_ekbe

&----


*& Form sub_fill_grir_tables

&----


  • Filling the GR/IR internal tables

----


FORM sub_fill_grir_tables .

  • Declaration of local workareas

DATA : lwa_ekbe TYPE t_ekbe.

CONSTANTS: lc_h TYPE c VALUE 'H'.

IF NOT i_ekbe[] IS INITIAL.

LOOP AT i_ekbe INTO lwa_ekbe.

*->> Move the GR's & IR's in to there respective tables

IF lwa_ekbe-vgabe = c_1.

MOVE : lwa_ekbe-ebeln TO wa_gr-ebeln,

lwa_ekbe-ebelp TO wa_gr-ebelp.

*->> Check the debit/cedit indicator .

IF lwa_ekbe-shkzg = lc_h.

wa_gr-dmbtr = -1 * lwa_ekbe-dmbtr.

wa_gr-menge = -1 * lwa_ekbe-menge.

ELSE.

wa_gr-dmbtr = lwa_ekbe-dmbtr.

wa_gr-menge = lwa_ekbe-menge.

ENDIF.

COLLECT wa_gr INTO i_gr.

ELSEIF lwa_ekbe-vgabe = c_2.

MOVE : lwa_ekbe-ebeln TO wa_ir-ebeln,

lwa_ekbe-ebelp TO wa_ir-ebelp,

lwa_ekbe-menge TO wa_ir-menge,

lwa_ekbe-dmbtr TO wa_ir-dmbtr.

*->> Check the debit/cedit indicator

IF lwa_ekbe-shkzg = lc_h.

wa_ir-dmbtr = -1 * lwa_ekbe-dmbtr.

wa_ir-menge = -1 * lwa_ekbe-menge.

ELSE.

wa_ir-dmbtr = lwa_ekbe-dmbtr.

wa_ir-menge = lwa_ekbe-menge.

ENDIF.

COLLECT wa_ir INTO i_ir.

ENDIF. "IF lwa_ekbe-vgabe = c_1.

ENDLOOP. " LOOP AT i_ekbe INTO lwa_ekbe.

ENDIF. " IF NOT i_ekbe[] IS INITIAL.

ENDFORM. " sub_fill_grir_tables

&----


*& Form sub_fetch_makt

&----


  • Fetch data from MAKT

----


FORM sub_fetch_makt .

IF NOT i_purchase[] IS INITIAL.

SELECT matnr

maktx

FROM makt

INTO TABLE i_matnr

FOR ALL ENTRIES IN i_purchase

WHERE matnr = i_purchase-matnr AND

spras = sy-langu.

IF sy-subrc EQ 0.

SORT i_matnr BY matnr.

ENDIF.

ENDIF. " IF NOT i_purchase[] IS INITIAL.

ENDFORM. " sub_fetch_makt

&----


*& Form sub_fetch_lfa1

&----


  • Fetch data from LFA1

----


FORM sub_fetch_lfa1 .

IF NOT i_purchase[] IS INITIAL.

SELECT lifnr

name1

FROM lfa1

INTO TABLE i_lifnr

FOR ALL ENTRIES IN i_purchase

WHERE lifnr = i_purchase-lifnr.

IF sy-subrc EQ 0.

SORT i_lifnr BY lifnr.

ENDIF.

ENDIF. " IF NOT i_purchase[] IS INITIAL.

ENDFORM. " sub_fetch_lfa1

&----


*& Form sub-fetch_final

&----


  • Move data to final internal table

----


FORM sub-fetch_final .

  • Declaration of local workareas

DATA : lwa_ekpo TYPE t_ekpo,

lwa_final LIKE i_final,

lwa_matnr TYPE t_matnr,

lwa_lifnr TYPE t_lifnr.

  • Declaration of local variables

DATA : lv_gr TYPE bwert,

lv_ir TYPE bwert,

lv_dmbtr TYPE bwert.

CLEAR lwa_ekpo.

LOOP AT i_purchase INTO lwa_ekpo.

  • Start of Comment for the total error by jeyandu

**->> Read the purchase order history

  • READ TABLE i_ekbe TRANSPORTING NO FIELDS

  • WITH KEY ebeln = lwa_ekpo-ebeln

  • ebelp = lwa_ekpo-ebelp BINARY SEARCH

  • .

*

  • IF sy-subrc EQ 0.

*End of Comment for the total error by jeyandu

*->> read the vendor master

READ TABLE i_lifnr INTO lwa_lifnr

WITH KEY lifnr = lwa_ekpo-lifnr BINARY SEARCH.

IF sy-subrc EQ 0.

MOVE : lwa_lifnr-name1 TO lwa_final-name1.

ENDIF.

  • Read the internal table and get the material description

READ TABLE i_matnr INTO lwa_matnr

WITH KEY matnr = lwa_ekpo-matnr BINARY SEARCH.

IF sy-subrc EQ 0.

MOVE : lwa_matnr-maktx TO lwa_final-maktx.

ENDIF.

*->> Move the other details for reporting

MOVE : lwa_ekpo-ekgrp TO lwa_final-ekgrp,

lwa_ekpo-lifnr TO lwa_final-lifnr,

lwa_ekpo-matkl TO lwa_final-matkl,

lwa_ekpo-matnr TO lwa_final-matnr,

lwa_ekpo-mfrpn TO lwa_final-mfrpn,

lwa_ekpo-netwr TO lwa_final-netwr.

CLEAR : wa_gr,

wa_ir.

  • Read the GR internal table

READ TABLE i_gr INTO wa_gr WITH KEY ebeln = lwa_ekpo-ebeln

ebelp = lwa_ekpo-ebelp.

IF sy-subrc NE 0.

CLEAR wa_gr.

ENDIF.

  • Read the IR internal table

READ TABLE i_ir INTO wa_ir WITH KEY ebeln = lwa_ekpo-ebeln

ebelp = lwa_ekpo-ebelp.

IF sy-subrc NE 0.

CLEAR wa_ir.

ENDIF.

  • Check the quantity for GR and IR

IF wa_gr-menge = wa_ir-menge.

  • Calcualate the Total PO Value with both GR and IR

lv_gr = wa_gr-menge * lwa_ekpo-netpr.

lv_ir = wa_ir-menge * lwa_ekpo-netpr.

lv_dmbtr = lv_gr.

MOVE : lv_dmbtr TO lwa_final-grir.

CLEAR : lv_gr,

lv_ir,

lv_dmbtr.

  • If GR qty > IR qty

ELSEIF wa_gr-menge > wa_ir-menge.

  • Calcualate the Total PO Value with both GR and IR

lv_gr = wa_gr-menge * lwa_ekpo-netpr.

lv_ir = wa_ir-menge * lwa_ekpo-netpr.

  • Get the GR quantity

lv_dmbtr = lv_gr - lv_ir.

  • If there is no IR qty

IF lv_ir = 0.

MOVE : lv_dmbtr TO lwa_final-gr.

ELSE.

  • If there is IR qty

MOVE : lv_ir TO lwa_final-grir,

lv_dmbtr TO lwa_final-gr.

ENDIF.

CLEAR : lv_gr,

lv_ir,

lv_dmbtr.

  • If GR qty < IR qty

ELSEIF wa_gr-menge < wa_ir-menge.

  • Calcualate the Total PO Value with both GR and IR

lv_gr = wa_gr-menge * lwa_ekpo-netpr.

lv_ir = wa_ir-menge * lwa_ekpo-netpr.

  • Get the IR quantity

lv_dmbtr = lv_ir - lv_gr.

  • If there is no GR qty

IF lv_gr = 0.

MOVE : lv_dmbtr TO lwa_final-ir.

ELSE.

  • If there is GR qty

MOVE : lv_gr TO lwa_final-grir,

lv_dmbtr TO lwa_final-ir.

ENDIF.

ENDIF. " IF wa_gr-menge = wa_ir-menge.

COLLECT lwa_final INTO i_final.

CLEAR :lv_gr,

lv_ir,

lv_dmbtr.

*Commented for the total error by jeyandu

  • ENDIF. " IF sy-subrc EQ 0 EKKO

CLEAR : lwa_ekpo,

wa_gr,

wa_ir,

lv_dmbtr,

lwa_final.

ENDLOOP. " LOOP AT i_purchase INTO lwa_ekpo.

ENDFORM. " sub-fetch_final

&----


*& Form sub_create_events

&----


  • Define ALV Events

----


FORM sub_create_events .

  • Local variable for event

DATA: wa_event TYPE slis_alv_event. "Events

  • Events for the ALV

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

i_list_type = 1 "2

IMPORTING

et_events = i_events.

  • Sort by Name

SORT i_events BY name.

CLEAR wa_event.

READ TABLE i_events INTO wa_event WITH KEY name = slis_ev_top_of_page

BINARY SEARCH.

IF sy-subrc = 0.

MOVE c_top_of_page TO wa_event-form.

MODIFY i_events FROM wa_event TRANSPORTING form

WHERE name = slis_ev_top_of_page.

ENDIF.

CLEAR : wa_event.

ENDFORM. " sub_create_events

----


  • FORM sub_top_of_page

----


  • For defining Top Of Page

----


FORM sub_top_of_page. "#EC CALLED

DATA lv_title TYPE string. "For Title

lv_title = 'GMP MRO Total Spend'(006).

CALL FUNCTION 'Z_REPORT_HEADER_ALVGRID'

EXPORTING

report_header = lv_title

TABLES

t_header = i_alv_top_of_page

EXCEPTIONS

user_error = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

  • This funcation module will diplay the top of the page

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = i_alv_top_of_page.

REFRESH i_alv_top_of_page.

ENDFORM. "sub_a_top_of_page

&----


*& Form sub_create_layout

&----


  • Create layout set

----


FORM sub_create_layout .

wa_layout-box_tabname = 'I_FINAL'.

wa_layout-no_input = c_chk.

wa_layout-colwidth_optimize = c_chk.

wa_layout-zebra = c_chk.

wa_layout-cell_merge = c_chk.

ENDFORM. " sub_create_layout

&----


*& Form sub_alv_display

&----


  • ALV Display

----


FORM sub_alv_display .

  • Declaration of local workareas and internal tables

DATA: li_sort TYPE slis_t_sortinfo_alv, "For Sort ALV

lwa_fieldcat TYPE slis_fieldcat_alv.

  • Declaration of local constants

CONSTANTS : lc_long_text(1) TYPE c VALUE 'L'.

*pt_fieldcat TYPE ty_fieldcat

*--Call the functino module to get the field catalog.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = v_repid

i_internal_tabname = 'I_FINAL'

i_inclname = v_repid

CHANGING

ct_fieldcat = i_fieldcat

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

LOOP AT i_fieldcat INTO lwa_fieldcat.

CASE lwa_fieldcat-fieldname.

WHEN 'GRIR'.

lwa_fieldcat-ddictxt = lc_long_text.

lwa_fieldcat-seltext_l = text-003.

lwa_fieldcat-do_sum = 'X'.

MODIFY i_fieldcat FROM lwa_fieldcat

INDEX sy-tabix TRANSPORTING ddictxt seltext_l do_sum.

CLEAR lwa_fieldcat.

WHEN 'GR'.

lwa_fieldcat-ddictxt = lc_long_text.

lwa_fieldcat-seltext_l = text-004.

lwa_fieldcat-do_sum = 'X'.

MODIFY i_fieldcat FROM lwa_fieldcat

INDEX sy-tabix TRANSPORTING ddictxt seltext_l do_sum.

CLEAR lwa_fieldcat.

WHEN 'IR'.

lwa_fieldcat-ddictxt = lc_long_text.

lwa_fieldcat-seltext_l = text-005.

lwa_fieldcat-do_sum = 'X'.

MODIFY i_fieldcat FROM lwa_fieldcat

INDEX sy-tabix TRANSPORTING ddictxt seltext_l do_sum.

CLEAR lwa_fieldcat.

WHEN 'NETWR'.

lwa_fieldcat-do_sum = 'X'.

MODIFY i_fieldcat FROM lwa_fieldcat

INDEX sy-tabix TRANSPORTING do_sum.

CLEAR lwa_fieldcat.

ENDCASE. " CASE lwa_fieldcat-fieldname

ENDLOOP. " LOOP AT i_fieldcat INTO lwa_fieldcat

ENDIF. " IF sy-subrc <> 0

  • This function module is used for displaying the ALV report

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = v_repid

is_layout = wa_layout

it_fieldcat = i_fieldcat

i_default = c_chk

i_save = c_save

is_variant = wa_variant

it_events = i_events

is_print = wa_print

it_sort = li_sort

TABLES

t_outtab = i_final

EXCEPTIONS

program_error = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDFORM. " sub_alv_display

Reward points if u find useful.

Regards,

Nagaraj