Application Development 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: 

How to display footer in an ALV report?

Former Member
0 Kudos

I am trying to display some information in an ALV footer, i have created subroutine for event END-OF-PAGE, now I want to display some text in footer, how to do this stuff?

1 ACCEPTED SOLUTION

Former Member
0 Kudos

for using end-of-page event alv u must use reserve line by the starting of u r program.

and u have to supress the lines using sy-linct , and sy-linno.

go through this program u will get idea on end of page..........

tables mara.

type-pools :slis.

types : begin of tmara ,

matnr like mara-matnr,

meins like mara-meins,

ersda like mara-ersda,

color(4) type c,

sel type c,

light type c,

end of tmara.

types: begin of tmakt,

matnr like makt-matnr,

maktx like makt-maktx,

maktg like makt-maktg,

sel type c,

color(4),

end of tmakt.

data: itab type tmara occurs 0 with header line,

itab1 type tmakt occurs 0 with header line,

wa_fieldcat type slis_fieldcat_alv,

fieldcat type slis_fieldcat_alv occurs 0,

i_layout type slis_layout_alv,

wa_listheader type slis_listheader,

i_listheader type slis_listheader occurs 0,

v_events type slis_t_event ,

wa_event type slis_alv_event,

i_title_mara type lvc_title value 'FIRST LIST DISPLAYED',

i_title_makt type lvc_title value 'SECONDRY LIST DISPLAYED',

sort type slis_t_sortinfo_alv with header line,

print_cont type slis_print_alv.

*----


  • SELECTION SCREE

*----


selection-screen begin of block screen1 with frame title text-001.

selection-screen skip.

selection-screen comment /32(35) comm1.

selection-screen uline /27(35).

selection-screen skip.

select-options matnr for mara-matnr.

selection-screen skip.

selection-screen uline.

selection-screen comment /30(50) comm2.

selection-screen uline /27(40).

selection-screen skip.

select-options ersda for mara-ersda.

selection-screen skip.

selection-screen end of block screen1.

*----


  • INITIALIZATION

*----


initialization.

matnr-low = '23'.

matnr-high = '1000'.

matnr-option = 'BT'.

matnr-sign = 'I'.

append matnr.

ersda-low = '20030124'.

ersda-high = '20050302' .

append ersda.

perform fillfield.

perform filllayout.

perform build_print_params.

perform fill_sort.

perform event_call.

perform populate_event.

*----


  • SELECTION-SCREEN OUTPUT

*----


at selection-screen output.

comm1 ='SELECT MATERIAL NUMBER RANGE'.

comm2 ='SELECT MATERIAL CREATION DATE'.

*----


  • START-OF-SELECTION

*----


start-of-selection.

perform readdata.

perform popdata.

&----


*& Form READDATA

&----


  • text

----


form readdata .

call function 'CONVERSION_EXIT_ALPHA_INPUT'

exporting

input = matnr-low

importing

output = matnr-low.

call function 'CONVERSION_EXIT_ALPHA_INPUT'

exporting

input = matnr-high

importing

output = matnr-high.

select matnr

ersda

meins

from mara

into corresponding fields of

table itab

where matnr in matnr and ersda in ersda.

loop at itab.

data id_color type i value 1.

data id_colors(2) type c.

if itab-matnr < '000000000000000100'.

itab-light = '1'.

elseif itab-matnr < '000000000000000150' and itab-matnr >

'000000000000000100' .

itab-light = '2'.

else.

itab-light = '3'.

endif.

id_color = id_color + 1.

if id_color > 7.

id_color = 1.

endif.

id_colors = id_color.

concatenate 'C' id_colors '10' into itab-color.

modify itab.

clear itab.

endloop.

endform. " READDATA

----


  • Form FILLFIELD

----


form fillfield .

wa_fieldcat-fieldname = 'MATNR'.

wa_fieldcat-key = 'X'.

wa_fieldcat-col_pos = '1'.

wa_fieldcat-outputlen = 20.

wa_fieldcat-hotspot = 'X'.

wa_fieldcat-seltext_m = 'MATERIAL NUMBER'.

*WA_FIELDCAT-EMPHASIZE = 'C210'.

append wa_fieldcat to fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'MEINS'.

wa_fieldcat-col_pos = '2'.

*WA_FIELDCAT-EMPHASIZE = 'C510'.

wa_fieldcat-outputlen = 10.

wa_fieldcat-seltext_m = 'UNIT'.

append wa_fieldcat to fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'ERSDA'.

wa_fieldcat-col_pos = '3'.

wa_fieldcat-outputlen = 15.

*WA_FIELDCAT-EDIT_MASK = 'DD.MM.YYYY'.

*WA_FIELDCAT-EMPHASIZE = 'C710'.

wa_fieldcat-seltext_m = 'CREAT DATE'.

append wa_fieldcat to fieldcat.

clear wa_fieldcat.

endform. "FILLFIELD

&----


  • Setup print parameters

----


form build_print_params.

print_cont-reserve_lines = '3'. "Lines reserved for footer

print_cont-no_coverpage = 'X'.

endform. " BUILD_PRINT_PARAMS

----


  • Form POPDATA

----


form popdata .

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

i_callback_program = sy-repid

  • I_CALLBACK_PF_STATUS_SET = ' '

i_callback_user_command = 'USER-COMMAND'

i_callback_top_of_page = 'TOPPAGE'

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

i_grid_title = i_title_mara

  • I_GRID_SETTINGS =

is_layout = i_layout

it_fieldcat = fieldcat

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

it_sort = sort[]

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

it_events = v_events

  • IT_EVENT_EXIT =

is_print = print_cont

tables

t_outtab = itab

exceptions

program_error = 1

others = 2

.

endform. " POPDATA

----


  • Form TOPPAGE

----


form toppage.

refresh i_listheader.

data: ld_lines type i,

ld_linesc(10) type c,

i_date(10) type c,

i_info like wa_listheader-info.

wa_listheader-typ = 'H'.

wa_listheader-info = 'MATERIAL DETAIL'.

append wa_listheader to i_listheader.

clear wa_listheader.

wa_listheader-typ = 'S'.

wa_listheader-key = 'DATE :'.

concatenate sy-datum+6(2) '.'

sy-datum+4(2) '.'

sy-datum(4) into i_date.

wa_listheader-info = i_date.

append wa_listheader to i_listheader.

clear wa_listheader.

describe table itab lines ld_lines.

ld_linesc = ld_lines.

concatenate 'TOTAL NUMBER OF RECORD SELECTED: ' ld_linesc

into i_info separated by space.

wa_listheader-typ = 'A'.

wa_listheader-info = i_info.

append wa_listheader to i_listheader.

clear: wa_listheader , i_info.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = i_listheader

i_logo = 'ENJOYSAP_LOGO'.

endform. "TOPPAGE

----


  • Form FILLLAYOUT

----


form filllayout .

i_layout-zebra = 'X'.

i_layout-info_fieldname = 'COLOR'.

i_layout-box_fieldname = 'SEL'.

i_layout-lights_fieldname = 'LIGHT'.

i_layout-edit ='X'.

i_layout-colwidth_optimize = 'X'.

i_layout-window_titlebar = 'EXAMPLE FOR ALV GRID'.

i_layout-no_totalline = 'X'.

endform. "FILLLAYOUT

----


  • Form FILL_SORT

----


form fill_sort .

sort-down = 'X'.

sort-spos = 1.

sort-fieldname = 'MATNR'.

sort-tabname = 'MARA'.

append sort.

endform. " FILL_SORT

----


  • Form EVENT_CALL

----


form event_call .

data: i_event like v_events.

call function 'REUSE_ALV_EVENTS_GET'

exporting

i_list_type = 0

importing

et_events = v_events.

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. " EVENT_CALL

----


  • Form POPULATE_EVENT

----


form populate_event .

read table v_events into wa_event with key name = 'USER_COMMAND'.

if sy-subrc eq 0.

wa_event-form = 'USER_COMMAND'.

modify v_events from wa_event transporting form where name =

wa_event-name.

read table v_events with key name = slis_ev_end_of_page

into wa_event.

if sy-subrc = 0.

move 'END_OF_PAGE' to wa_event-form.

modify v_events from wa_event transporting form where name =

wa_event-name.

endif.

endif.

endform. "POPULATE_EVENT

*----


form end_of_page.

write: sy-uline(50).

skip.

write:/40 'Page:', sy-pagno .

endform.

&----


*& Form USER_COMMAND

----


form user_command using r_ucomm like sy-ucomm

rs_selfield type slis_selfield.

case r_ucomm.

when '&IC1'.

case rs_selfield-fieldname.

when 'MATNR'.

read table itab with key matnr = rs_selfield-value.

if sy-subrc = 0.

perform data_retrieval_makt using rs_selfield-value.

perform build_fieldcatlog_makt.

perform filllayout_makt.

perform display_alv_makt.

clear rs_selfield.

endif.

endcase.

endcase.

endform. "user_command

----


  • Form DATA_RETRIEVAL_MAKT

----


form data_retrieval_makt using tmatnr .

select matnr

maktx

maktg

up to 100 rows

from makt

into table itab1

where spras = 'EN' and matnr = tmatnr.

loop at itab1.

data id_color type i value 1.

data id_colors(2) type c.

id_color = id_color + 1.

if id_color > 7.

id_color = 1.

endif.

id_colors = id_color.

concatenate 'C' id_colors '10' into itab1-color.

modify itab1.

clear itab1.

endloop.

endform. "DATA_RETRIEVAL_MAKT

----


  • Form FILLLAYOUT_MAKT

----


form filllayout_makt .

clear i_layout.

i_layout-zebra = 'X'.

i_layout-info_fieldname = 'COLOR'.

i_layout-box_fieldname = 'SEL'.

i_layout-edit ='X'.

i_layout-colwidth_optimize = 'X'.

i_layout-window_titlebar = 'EXAMPLE FOR ALV GRID'.

endform. " LAYOUT_MAKT

----


  • Form BUILD_FIELDCATLOG_MAKT

----


form build_fieldcatlog_makt .

refresh fieldcat.

wa_fieldcat-fieldname = 'MATNR'.

wa_fieldcat-key = 'X'.

wa_fieldcat-col_pos = '1'.

*WA_FIELDCAT-EDIT_MASK = 'DD.MM.YYYY'.

wa_fieldcat-emphasize = 'C510'.

wa_fieldcat-seltext_m = 'MATERIAL NUMBER'.

append wa_fieldcat to fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'MAKTX'.

wa_fieldcat-col_pos = '2'.

wa_fieldcat-emphasize = 'C710'.

wa_fieldcat-seltext_m = 'MATERIAL DESCRIPTION'.

append wa_fieldcat to fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'MAKTG'.

wa_fieldcat-col_pos = '3'.

wa_fieldcat-emphasize = 'C210'.

wa_fieldcat-seltext_m = 'MATERIAL DESCRIPTION'.

append wa_fieldcat to fieldcat.

clear wa_fieldcat.

endform. " BUILD_FIELDCATLOG_MAKT

----


  • Form DISPLAY_ALV_MAKT

----


form top-of-page.

refresh i_listheader.

data: ld_lines type i,

ld_linesc(10) type c,

i_date(10) type c,

i_info like wa_listheader-info.

wa_listheader-typ = 'H'.

wa_listheader-info = 'MATERIAL DESCRIPTION FOR SELECTED NUMBER'.

append wa_listheader to i_listheader.

clear wa_listheader.

wa_listheader-typ = 'S'.

wa_listheader-key = 'DATE :'.

concatenate sy-datum+6(2) '.'

sy-datum+4(2) '.'

sy-datum(4) into i_date.

wa_listheader-info = i_date.

append wa_listheader to i_listheader.

clear wa_listheader.

describe table itab1 lines ld_lines.

ld_linesc = ld_lines.

concatenate 'TOTAL NUMBER OF RECORD SELECTED: ' ld_linesc

into i_info separated by space.

wa_listheader-typ = 'A'.

wa_listheader-info = i_info.

append wa_listheader to i_listheader.

clear: wa_listheader , i_info.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = i_listheader

i_logo = 'ENJOYSAP_LOGO'.

  • I_END_OF_LIST_GRID =

  • I_ALV_FORM =

endform. "TOP-OF-PAGE

&----


*& Form DISPLAY_ALV_MAKT

&----


  • text

----


form display_alv_makt .

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = sy-repid

i_callback_top_of_page = 'TOP-OF-PAGE'

i_grid_title = i_title_makt

is_layout = i_layout

it_fieldcat = fieldcat

tables

t_outtab = itab1

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. " DISPLAY_ALV_MAKT

8 REPLIES 8

Former Member
0 Kudos

Hi

Below is the code, with needed info in BOLD.

&----


*& Report Z_UP_MLA *

*& *

&----


*& *

*& *

&----


report z_up_mla.

type-pools : slis.

types : begin of t_file,

data(200) type c,

end of t_file.

data: tb_file type standard table of t_file with header line,

ls_events type slis_alv_event,

flag type i.

data: c_space type c value space.

data: begin of itab1 occurs 10,

brand(2) type c,

business_area(2) type c,

months(10) type c,

material(35) type c,

channel(40) type c,

sumofqty(30) type c,

sumofmrp_value(30) type c,

list_price(30) type c,

sumofdisc_val(30) type c,

sumofed_value(30) type c,

sumofnsv(30) type c,

sumoffabric_cost(30) type c,

trim_cost(30) type c,

sumofconvrcost(30) type c,

wash_wrfree(30) type c,

tap_vap(30) type c,

om(4) type c,

sumofother_var(30) type c,

sumoftotal_pc(30) type c,

sumofgross_profit(30) type c,

sumofdormancy(30) type c,

sumoftotal_vse(30) type c,

sumofcba(30) type c,

sumofadvt(30) type c,

sumofoverheads_direct(30) type c,

sumofoverheads_allocated(30) type c,

sumoflicensing_income(30) type c,

sumofles_depreciation(30) type c,

sumofless_interest_wc(30) type c,

sumofblock_interest(30) type c,

sumofbrand_depreciation(30) type c,

period(16) type c,

end of itab1.

data: lt_fieldcat type slis_fieldcat_alv occurs 0,

ls_fieldcat type slis_fieldcat_alv,

gs_layout type slis_layout_alv,

gt_events1 type slis_t_event,

gt_events2 type slis_t_event,

gt_events3 type slis_t_event.

data: itab2 like itab1 occurs 0 with header line,

itab3 like itab1 occurs 0 with header line.

call function 'GUI_UPLOAD'

exporting

filename = 'D:\last_year.csv'

filetype = 'ASC'

tables

data_tab = tb_file.

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

split tb_file at ',' into itab1-brand

itab1-business_area

itab1-months

itab1-material

itab1-channel

itab1-sumofqty

itab1-sumofmrp_value

itab1-list_price

itab1-sumofdisc_val

itab1-sumofed_value

itab1-sumofnsv

itab1-sumoffabric_cost

itab1-trim_cost

itab1-sumofconvrcost

itab1-wash_wrfree

itab1-tap_vap

itab1-om

itab1-sumofother_var

itab1-sumoftotal_pc

itab1-sumofgross_profit

itab1-sumofdormancy

itab1-sumoftotal_vse

itab1-sumofcba

itab1-sumofadvt

itab1-sumofoverheads_direct

itab1-sumofoverheads_allocated

itab1-sumoflicensing_income

itab1-sumofles_depreciation

itab1-sumofless_interest_wc

itab1-sumofblock_interest

itab1-sumofbrand_depreciation

itab1-period.

append itab1.

clear itab1.

endloop.

endif.

refresh tb_file.

call function 'GUI_UPLOAD'

exporting

filename = 'D:\budget.csv'

filetype = 'ASC'

tables

data_tab = tb_file.

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

split tb_file at ',' into itab2-brand

itab2-business_area

itab2-months

itab2-material

itab2-channel

itab2-sumofqty

itab2-sumofmrp_value

itab2-list_price

itab2-sumofdisc_val

itab2-sumofed_value

itab2-sumofnsv

itab2-sumoffabric_cost

itab2-trim_cost

itab2-sumofconvrcost

itab2-wash_wrfree

itab2-tap_vap

itab2-om

itab2-sumofother_var

itab2-sumoftotal_pc

itab2-sumofgross_profit

itab2-sumofdormancy

itab2-sumoftotal_vse

itab2-sumofcba

itab2-sumofadvt

itab2-sumofoverheads_direct

itab2-sumofoverheads_allocated

itab2-sumoflicensing_income

itab2-sumofles_depreciation

itab2-sumofless_interest_wc

itab2-sumofblock_interest

itab2-sumofbrand_depreciation

itab2-period.

append itab2.

clear itab2.

endloop.

endif.

refresh tb_file.

call function 'GUI_UPLOAD'

exporting

filename = 'D:\This_year.csv'

filetype = 'ASC'

tables

data_tab = tb_file.

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

split tb_file at ',' into itab3-brand

itab3-business_area

itab3-months

itab3-material

itab3-channel

itab3-sumofqty

itab3-sumofmrp_value

itab3-list_price

itab3-sumofdisc_val

itab3-sumofed_value

itab3-sumofnsv

itab3-sumoffabric_cost

itab3-trim_cost

itab3-sumofconvrcost

itab3-wash_wrfree

itab3-tap_vap

itab3-om

itab3-sumofother_var

itab3-sumoftotal_pc

itab3-sumofgross_profit

itab3-sumofdormancy

itab3-sumoftotal_vse

itab3-sumofcba

itab3-sumofadvt

itab3-sumofoverheads_direct

itab3-sumofoverheads_allocated

itab3-sumoflicensing_income

itab3-sumofles_depreciation

itab3-sumofless_interest_wc

itab3-sumofblock_interest

itab3-sumofbrand_depreciation

itab3-period.

append itab3.

clear itab3.

endloop.

endif.

perform modify_fieldcat using:

'ITAB1' 'BRAND' 'Brand',

'ITAB1' 'BUSINESS_AREA' 'Business Area',

'ITAB1' 'MONTHS' 'Months',

'ITAB1' 'MATERIAL' 'Material',

'ITAB1' 'CHANNEL' 'Channel',

'ITAB1' 'SUMOFQTY' 'Sum of Quantity',

'ITAB1' 'SUMOFMRP_VALUE' 'Sum of MRP Value',

'ITAB1' 'LIST_PRICE' 'List Price',

'ITAB1' 'SUMOFDISC_VAL' 'Sum of Disc Value',

'ITAB1' 'SUMOFED_VALUE' 'Sum of ED Value',

'ITAB1' 'SUMOFNSV' 'Sum of NSV',

'ITAB1' 'SUMOFFABRIC_COST' 'Sum of Fabric Cost',

'ITAB1' 'TRIM_COST' 'Trim Cost',

'ITAB1' 'SUMOFCONVRCOST' 'Sum of Convr Cost',

'ITAB1' 'WASH_WRFREE' 'Wash WR Free',

'ITAB1' 'TAP_VAP' 'Tap Vap',

'ITAB1' 'OM' 'OM',

'ITAB1' 'SUMOFOTHER_VAR' 'Sum of Other Var',

'ITAB1' 'SUMOFTOTAL_PC' 'Sum of Total PC',

'ITAB1' 'SUMOFGROSS_PROFIT' 'Sum of Gross Profit',

'ITAB1' 'SUMOFDORMANCY' 'Sum of Dormancy',

'ITAB1' 'SUMOFTOTAL_VSE' 'Sum of Total VSE',

'ITAB1' 'SUMOFCBA' 'Sum of CBA',

'ITAB1' 'SUMOFADVT' 'Sum of ADVT',

'ITAB1' 'SUMOFOVERHEADS_DIRECT' 'Sum of Overheads Direct',

'ITAB1' 'SUMOFOVERHEADS_ALLOCATED'

'Sum of Overheads Allocated',

'ITAB1' 'SUMOFLICENSING_INCOME' 'Sum of Licencing Income',

'ITAB1' 'SUMOFLES_DEPRECIATION' 'Sum of Les Depriciation',

'ITAB1' 'SUMOFLESS_INTEREST_WC' 'Sum of Les Interest WC',

'ITAB1' 'SUMOFBLOCK_INTEREST' 'Sum of Block Interest',

'ITAB1' 'SUMOFBRAND_DEPRECIATION' 'Sum of Brand Depriciation'

,

'ITAB1' 'PERIOD' 'Period'.

call function 'REUSE_ALV_BLOCK_LIST_INIT'

exporting

i_callback_program = sy-repid.

perform build_events using '1'

changing gt_events1.

call function 'REUSE_ALV_BLOCK_LIST_APPEND'

exporting

is_layout = gs_layout

it_fieldcat = lt_fieldcat

i_tabname = 'ITAB1'

it_events = gt_events1

tables

t_outtab = itab1

exceptions

program_error = 1

maximum_of_appends_reached = 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.

endif.

perform build_events using '2'

changing gt_events2.

call function 'REUSE_ALV_BLOCK_LIST_APPEND'

exporting

is_layout = gs_layout

it_fieldcat = lt_fieldcat

i_tabname = 'ITAB2'

it_events = gt_events2

tables

t_outtab = itab2

exceptions

program_error = 1

maximum_of_appends_reached = 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.

endif.

perform build_events using '3'

changing gt_events3.

call function 'REUSE_ALV_BLOCK_LIST_APPEND'

exporting

is_layout = gs_layout

it_fieldcat = lt_fieldcat

i_tabname = 'ITAB3'

it_events = gt_events3

tables

t_outtab = itab3

exceptions

program_error = 1

maximum_of_appends_reached = 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.

endif.

call function 'REUSE_ALV_BLOCK_LIST_DISPLAY'

  • EXPORTING

  • I_INTERFACE_CHECK = ' '

  • IS_PRINT =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

.

if sy-subrc = 0.

message i000(zdemo).

endif.

&----


*& Form modify_fieldcat

&----


  • text

----


  • -->P_0257 text

  • -->P_0258 text

----


form modify_fieldcat using pa_tabname type string

pa_fieldname type string

pa_seltext_m type string.

clear ls_fieldcat.

ls_fieldcat-tabname = pa_tabname.

ls_fieldcat-fieldname = pa_fieldname.

ls_fieldcat-seltext_m = pa_seltext_m.

ls_fieldcat-outputlen = '15'.

append ls_fieldcat to lt_fieldcat.

endform. " modify_fieldcat

<b>&----


*& Form top_of_page1

&----


form top_of_page1.

write: 'Last Year'.

endform. "TOP_OF_PAGE1

&----


*& Form top_of_page2

&----


form top_of_page2.

write: 'Budget'.

endform. "TOP_OF_PAGE2

&----


*& Form top_of_page3

&----


form top_of_page3.

write: 'This year'.

endform. "TOP_OF_PAGE3

&----


*& Form build_events

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form build_events using flag

changing pa_events type slis_t_event.

*Get all possible events

call function 'REUSE_ALV_EVENTS_GET'

exporting

i_list_type = 0

importing

et_events = pa_events

exceptions

list_type_wrong = 1

others = 2.

if sy-subrc <> 0.

endif.

  • Specify events used in selection screen

read table pa_events with key name = slis_ev_top_of_page

into ls_events.

if sy-subrc = 0.

if flag = 1.

ls_events-form = 'TOP_OF_PAGE1'.

elseif flag = 2.

ls_events-form = 'TOP_OF_PAGE2'.

else.

ls_events-form = 'TOP_OF_PAGE3'.

endif.

modify pa_events from ls_events index sy-tabix.

clear ls_events.

endif.

endform. "build_events</b>

Same u can apply for END-OF-PAGE event.

Reward points if found useful.

Message was edited by:

Vasudha L

Former Member
0 Kudos

HI,

to get the footer use END_OF_LIST event.

REPORT ZBHALV_LIST_GRID2.

TABLES:MARA.

DATA:BEGIN OF ITAB OCCURS 0,

MATNR LIKE MARA-MATNR,

ERSDA LIKE MARA-ERSDA,

ERNAM LIKE MARA-ERNAM,

MBRSH LIKE MARA-MBRSH,

END OF ITAB.

TYPE-POOLS:SLIS.

DATA:AFIELD TYPE SLIS_FIELDCAT_ALV.

DATA:FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV.

DATA:FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.

<b>DATA:EVE TYPE SLIS_T_EVENT WITH HEADER LINE.</b>

DATA:HEAD TYPE SLIS_T_LISTHEADER WITH HEADER LINE.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = SY-REPID

I_INTERNAL_TABNAME = 'ITAB'

  • I_STRUCTURE_NAME = 'ITAB'

  • I_CLIENT_NEVER_DISPLAY = 'X'

I_INCLNAME = SY-REPID

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

CHANGING

CT_FIELDCAT = FIELDCAT1.

CLEAR AFIELD.

AFIELD-Col_pos = 1.

AFIELD-fieldname = 'MATNR'.

AFIELD-KEY = 'X'.

APPEND AFIELD TO FIELDCAT.

CLEAR FIELDCAT.

CLEAR AFIELD.

AFIELD-Col_pos = 2.

AFIELD-fieldname = 'ERSDA'.

AFIELD-KEY = 'X'.

APPEND AFIELD TO FIELDCAT.

CLEAR FIELDCAT.

CLEAR AFIELD.

AFIELD-Col_pos = 3.

AFIELD-fieldname = 'ERNAM'.

APPEND AFIELD TO FIELDCAT.

CLEAR FIELDCAT.

CLEAR AFIELD.

AFIELD-Col_pos = 4.

AFIELD-fieldname = 'MBRSH'.

APPEND AFIELD TO FIELDCAT.

CLEAR FIELDCAT.

EVE-NAME = 'TOP_OF_PAGE'.

EVE-FORM = 'HEADER'.

APPEND EVE.

CLEAR EVE.

<b>EVE-NAME = 'END_OF_LIST'.

EVE-FORM = 'LISTEND'.

APPEND EVE.

CLEAR EVE.</b>

EVE-NAME = 'TOP_OF_LIST'.

EVE-FORM = 'LISTTOP'.

APPEND EVE.

CLEAR EVE.

SELECT * FROM MARA INTO CORRESPONDING FIELDS OF TABLE ITAB UP TO 20 ROWS

.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

  • I_STRUCTURE_NAME = 'ITAB'

IT_FIELDCAT = FIELDCAT1

I_DEFAULT = 'X'

I_SAVE = 'A'

<b> IT_EVENTS = EVE[]</b>

TABLES

T_OUTTAB = ITAB.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

  • I_STRUCTURE_NAME = 'ITAB'

IT_FIELDCAT = FIELDCAT[]

I_DEFAULT = 'X'

I_SAVE = 'A'

<b> IT_EVENTS = EVE[]</b>

TABLES

T_OUTTAB = ITAB.

FORM HEADER.

REFRESH HEAD.

HEAD-TYP = 'H'.

HEAD-INFO = 'GENERAL MATERIAL DATA'.

APPEND HEAD.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = HEAD[].

ENDFORM.

<b>FORM LISTEND.

REFRESH HEAD.

HEAD-TYP = 'H'.

HEAD-INFO = 'END OF THE LIST'.

APPEND HEAD.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = HEAD[].

ENDFORM.</b>

FORM LISTTOP.

REFRESH HEAD.

HEAD-TYP = 'H'.

HEAD-INFO = 'TOP OF THE LIST'.

APPEND HEAD.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = HEAD[].

ENDFORM.

rgds,

bharat.

0 Kudos

The thing is not working ,,, i had tried following code,, my END-OF-LIST subroutine is getting triggered but i'm getting no foooter? Do i need to reserve some lines for footer in report stament?

PLZ take a look..

REPORT z_mm_rsa1 MESSAGE-ID zshpr.

*NO STANDARD PAGE HEADING LINE-SIZE 100 LINE-COUNT 100(10)

  • MESSAGE-ID zshpr.

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

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

*G L O B A L D A T A D E C L E R A T I O N *

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

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

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

*T Y P E S *

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

TYPES:

BEGIN OF t_wrsz,

asort TYPE asort, "Assortment

locnr TYPE locnr, "Customer number for plant

END OF t_wrsz,

BEGIN OF t_t001w,

werks TYPE werks_d, "Plant

kunnr TYPE kunnr_wk, "Customer number of plant

END OF t_t001w,

BEGIN OF t_final,

asort TYPE asort, "Assortment

werks TYPE werks_d, "Customer number for plant

END OF t_final,

BEGIN OF t_vbak,

vbeln TYPE vbeln_va, "Sales Document

kunnr TYPE kunag, "Sold-to party

vkorg TYPE vkorg, "Sales Organization

vtweg TYPE vtweg, "Distribution Channel

spart TYPE spart, "Division

END OF t_vbak,

BEGIN OF t_kna1,

kunnr TYPE kunnr, "Customer Number 1

werks TYPE werks_d, "Plant

END OF t_kna1,

BEGIN OF t_knvp,

kunnr TYPE kunag, "Sold-to party

vkorg TYPE vkorg, "Sales Organization

vtweg TYPE vtweg, "Distribution Channel

spart TYPE spart, "Division

kunn2 TYPE kunn2, "Customer number of business partner

parvw TYPE parvw, "Partner function

END OF t_knvp,

BEGIN OF t_final1,

vbeln TYPE vbeln_va, "Sales Document

asort TYPE asort, "Assortment

END OF t_final1,

BEGIN OF t_final2,

vbeln TYPE vbeln_va, "Sales Document

matnr TYPE matnr, "Material Number

END OF t_final2,

BEGIN OF t_final3,

matnr TYPE matnr, "Material Number

asort TYPE asort, "Assortment

name1 TYPE asorttext40, "Description of Assortments

END OF t_final3,

BEGIN OF t_wrst,

asort TYPE asort, "Assortment

name1 TYPE asorttext40, "Description of Assortments

END OF t_wrst,

BEGIN OF t_message,

text TYPE sy-msgv1, "Message

END OF t_message.

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

*T A B L E S T Y P E S *

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

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

*INTERNAL TABLES, WORK AREAS & VARIABLES *

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

DATA:

*Internal Table

i_wrsz TYPE STANDARD TABLE OF t_wrsz,

i_t001w TYPE STANDARD TABLE OF t_t001w,

i_final TYPE STANDARD TABLE OF t_final,

i_vbak TYPE STANDARD TABLE OF t_vbak,

i_kna1 TYPE STANDARD TABLE OF t_kna1,

i_knvp TYPE STANDARD TABLE OF t_knvp,

i_final1 TYPE STANDARD TABLE OF t_final1,

i_final2 TYPE STANDARD TABLE OF t_final2,

i_final3 TYPE STANDARD TABLE OF t_final3,

i_wrst TYPE STANDARD TABLE OF t_wrst,

i_message TYPE STANDARD TABLE OF t_message,

*Work Area

wa_wrsz TYPE t_wrsz,

wa_t001w TYPE t_t001w,

wa_final TYPE t_final,

wa_vbak TYPE t_vbak,

wa_kna1 TYPE t_kna1,

wa_knvp TYPE t_knvp,

wa_final1 TYPE t_final1,

wa_final2 TYPE t_final2,

wa_final3 TYPE t_final3,

wa_wrst TYPE t_wrst,

wa_message TYPE t_message,

*Variable

v_vkorg TYPE vbak-vkorg,

v_vtweg TYPE vbak-vtweg,

v_auart TYPE vbak-auart,

v_vbeln TYPE vbak-vbeln,

v_erdat TYPE vbak-erdat,

v_asort TYPE wrsz-asort.

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

*ALV data declarations

TYPE-POOLS: slis.

DATA:

  • Internal Tables

i_fieldcatalog TYPE STANDARD TABLE OF slis_fieldcat_alv,

i_slas1 TYPE STANDARD TABLE OF slis_layout_alv_spec1,

i_events TYPE STANDARD TABLE OF slis_alv_event,

it_listheader TYPE STANDARD TABLE OF slis_listheader,

  • Wrok Area

wa_layout TYPE slis_layout_alv,

wa_fieldcatalog TYPE slis_fieldcat_alv,

wa_event TYPE slis_alv_event,

  • Variables

v_repname LIKE sy-repid ,

tab_group TYPE slis_t_sp_group_alv,

layout TYPE slis_layout_alv,

repid LIKE sy-repid.

*Constants

CONSTANTS:

c_fld1 TYPE fieldname VALUE 'MATNR',

c_fld2 TYPE fieldname VALUE 'ASORT',

c_fld3 TYPE fieldname VALUE 'NAME1',

*Constants for Field Descriptions:

c_text1 TYPE descr_40 VALUE 'Material',

c_text2 TYPE descr_40 VALUE 'ASSORTMENT',

c_text3 TYPE descr_40 VALUE 'Description',

*General Constants:

c_fld TYPE char05 VALUE 'C_FLD',

c_text TYPE char6 VALUE 'C_TEXT'.

*FIELD SYMBOL

FIELD-SYMBOLS: <fs1> TYPE fieldname,

<fs2> TYPE descr_40.

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

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

*S E L E C T I O N - S C R E E N D E F I N I T I O N *

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

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

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

SELECT-OPTIONS: s_vkorg FOR v_vkorg OBLIGATORY,

s_vtweg FOR v_vtweg OBLIGATORY,

s_auart FOR v_auart OBLIGATORY,

s_vbeln FOR v_vbeln,

s_erdat FOR v_erdat OBLIGATORY,

s_asort FOR v_asort OBLIGATORY.

PARAMETERS: p_datum TYPE sy-datum OBLIGATORY.

SELECTION-SCREEN: END OF BLOCK blk1.

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

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

  • M A I N P R O G R A M *

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

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

INITIALIZATION.

v_repname = sy-repid.

*Populating all events in ALV in internal table

PERFORM populate_event.

  • Validating the user inputs

AT SELECTION-SCREEN.

PERFORM validate_distribution_chain.

  • perfrom validate

START-OF-SELECTION.

  • Fetching Assortment data

PERFORM get_assortment_data.

  • Fetching Sales data

PERFORM get_sales_order_data.

  • Fetching Sales Order Items Data and populating the internal table

PERFORM populate_final_data.

  • Building fieldcatalog

PERFORM build_fieldcatlog.

  • Making the Layout

PERFORM build_layout.

  • Building list header

PERFORM build_listheader.

  • Display the final report

PERFORM display_report.

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

  • S U B R O U T I N E S *

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

&----


*& Form get_assortment_data

&----


  • Read Assortment

----


  • --> p1 text

  • <-- p2 text

----


FORM get_assortment_data.

  • Fetching customer for assortments in selection criteria

SELECT asort

locnr

FROM wrsz

INTO TABLE i_wrsz

WHERE asort IN s_asort

AND ( datab < p_datum AND datbi > p_datum ).

IF sy-subrc IS INITIAL.

SORT i_wrsz BY locnr.

  • Fetching plants from PLANT master table T001w based on locnr EQUALS kunnr

SELECT werks

kunnr

FROM t001w

INTO TABLE i_t001w

FOR ALL ENTRIES IN i_wrsz

WHERE kunnr = i_wrsz-locnr.

ELSE.

MESSAGE i000. "No data found for this selection

ENDIF.

*Populating plant and customer data in Final internal table

IF sy-subrc IS INITIAL.

SORT i_t001w BY kunnr.

LOOP AT i_t001w INTO wa_t001w.

READ TABLE i_wrsz INTO wa_wrsz WITH KEY locnr = wa_t001w-kunnr.

wa_final-asort = wa_wrsz-asort.

wa_final-werks = wa_t001w-werks.

APPEND wa_final TO i_final.

ENDLOOP.

ELSE.

MESSAGE i000. "No data found for this selection

ENDIF.

ENDFORM. "Get_assortment_data

&----


*& Form get_sales_order_data

&----


  • Reading sales order

----


  • --> p1 text

  • <-- p2 text

----


FORM get_sales_order_data.

*Local Variable

DATA: lv_kunn2 TYPE kunn2.

*Fetching data from VBAK

SELECT vbeln

kunnr

vkorg

vtweg

spart

FROM vbak

INTO TABLE i_vbak

WHERE vkorg IN s_vkorg

AND vtweg IN s_vtweg

AND auart IN s_auart

AND vbeln in s_vbeln

AND erdat IN s_erdat.

  • Fetching data from KNA1

SELECT kunnr

werks

FROM kna1

INTO TABLE i_kna1

FOR ALL ENTRIES IN i_vbak

WHERE kunnr = i_vbak-kunnr.

*Fetching data from KNVP

SELECT kunnr

vkorg

vtweg

kunn2

parvw

FROM knvp

INTO TABLE i_knvp

FOR ALL ENTRIES IN i_vbak

WHERE kunnr = i_vbak-kunnr.

  • Reading WERKS field in KNA1 for each customer

LOOP AT i_vbak INTO wa_vbak.

READ TABLE i_kna1 INTO wa_kna1 WITH KEY kunnr = wa_vbak-kunnr.

IF wa_kna1-werks = space. "If Plant (Werks) field is blank

  • Reading the data from KNVP

READ TABLE i_knvp INTO wa_knvp WITH KEY vkorg = wa_vbak-vkorg

vtweg = wa_vbak-vtweg

spart = wa_vbak-spart

parvw = 'WE'.

  • If Customer (KUNNR) itself is SHIP-TO-CUSTOMER (KUNN2)

IF wa_knvp-kunn2 = wa_kna1-kunnr.

READ TABLE i_final INTO wa_final WITH KEY werks = wa_kna1-werks.

wa_final1-vbeln = wa_vbak-vbeln. "Sales Document

wa_final1-asort = wa_final-asort. "Assort

APPEND wa_final1 TO i_final1.

ENDIF.

ELSE.

wa_message = wa_vbak-vbeln. "Writing Invalid sales order number to internal table for messages

APPEND wa_message TO i_message.

ENDIF.

ENDLOOP.

ENDFORM. "get_sales_order_data

&----


*& Form populate_final_data

&----


  • Fetching Sales Item Data and populating in final internal table

----


  • --> p1 text

  • <-- p2 text

----


FORM populate_final_data.

  • Fetching material number from VBAP table

SELECT vbeln

matnr

FROM vbap

INTO TABLE i_final2

FOR ALL ENTRIES IN i_final1

WHERE vbeln = i_final1-vbeln.

  • Fetching Description of asort from WRST table

SELECT asort

name1

FROM wrst

INTO TABLE i_wrst

FOR ALL ENTRIES IN i_final3

WHERE asort = i_final3-asort

AND spras = 'EN'.

  • Populating Final internal table with material no. and assortment

LOOP AT i_final2 INTO wa_final2.

READ TABLE i_final1 INTO wa_final1 WITH KEY vbeln = wa_final2-vbeln.

READ TABLE i_wrst INTO wa_wrst WITH KEY asort = wa_final1-asort.

wa_final3-matnr = wa_final2-matnr.

wa_final3-asort = wa_final1-asort.

wa_final3-name1 = wa_wrst-name1.

APPEND wa_final3 TO i_final3.

ENDLOOP.

ENDFORM. " populate_final_data

&----


*& Form build_fieldcatlog

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM build_fieldcatlog .

DATA: lv_count TYPE i VALUE 3,

lv_index(10) TYPE c VALUE 0,

lv_str1 TYPE fieldname,

lv_str2 TYPE descr_40.

DO lv_count TIMES.

CLEAR: lv_count , lv_index , lv_str1 , lv_str2 , wa_fieldcatalog.

lv_index = sy-index.

CONDENSE lv_index.

ASSIGN lv_str1 TO <fs1>.

ASSIGN lv_str2 TO <fs2>.

CONCATENATE c_fld lv_index INTO lv_str1.

CONCATENATE c_text lv_index INTO lv_str2.

ASSIGN (lv_str1) TO <fs1>.

ASSIGN (lv_str2) TO <fs2>.

wa_fieldcatalog-col_pos = lv_index.

wa_fieldcatalog-fieldname = <fs1>.

wa_fieldcatalog-seltext_l = <fs2>.

APPEND wa_fieldcatalog TO i_fieldcatalog.

ENDDO.

ENDFORM. " build_fieldcatlog

&----


*& Form build_layout

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM build_layout .

layout-no_input = 'X'.

layout-colwidth_optimize = 'X'.

layout-totals_text = 'Totals'(201).

  • layout-totals_only = 'X'.

  • layout-f2code = 'DISP'. "Sets fcode for when double

  • "click(press f2)

layout-zebra = 'X'.

  • layout-group_change_edit = 'X'.

  • layout-header_text = 'helllllo'.

ENDFORM. " build_layout

&----


*& Form display_report

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_report .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

i_callback_program = v_repname

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE =

  • I_GRID_SETTINGS =

  • IS_LAYOUT =

it_fieldcat = i_fieldcatalog

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

i_save = 'A'

  • IS_VARIANT =

it_events = i_events

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_HTML_HEIGHT_TOP = 0

  • I_HTML_HEIGHT_END = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • IR_SALV_FULLSCREEN_ADAPTER =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

t_outtab = i_final3

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. " display_report

&----


*& Form populate_event

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM populate_event .

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

i_list_type = 0

IMPORTING

et_events = i_events

  • EXCEPTIONS

  • LIST_TYPE_WRONG = 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.

*Populating the Events

READ TABLE i_events INTO wa_event WITH KEY name = 'TOP_OF_PAGE'.

IF sy-subrc = 0.

wa_event-form = 'TOP_OF_PAGE'.

MODIFY i_events FROM wa_event TRANSPORTING form WHERE name = wa_event-name.

ENDIF.

READ TABLE i_events INTO wa_event WITH KEY name = 'END_OF_PAGE'.

IF sy-subrc EQ 0.

wa_event-form = 'END_OF_PAGE'.

MODIFY i_events FROM wa_event TRANSPORTING form WHERE name = wa_event-name.

ENDIF.

READ TABLE i_events INTO wa_event WITH KEY name = 'END_OF_LIST'.

IF sy-subrc EQ 0.

wa_event-form = 'END_OF_LIST'.

MODIFY i_events FROM wa_event TRANSPORTING form WHERE name = wa_event-name.

ENDIF.

ENDFORM. " populate_event

&----


*& Form END_OF_LIST

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM end_of_list.

ENDFORM. "end_of_list

&----


*& Form END_OF_PAGE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM end_of_page.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = it_listheader

  • I_LOGO =

  • I_END_OF_LIST_GRID =

  • I_ALV_FORM =

.

ENDFORM. "END_OF_PAGE

&----


*& Form TOP_OF_PAGE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM top_of_page.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = it_listheader

  • I_LOGO = 'CAPGEMINI'

  • I_END_OF_LIST_GRID =

  • I_ALV_FORM =

.

ENDFORM. "TOP_OF_PAGE

&----


*& Form build_listheader

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM build_listheader.

DATA: wa_listheader TYPE slis_listheader.

wa_listheader-typ = 'H'.

wa_listheader-key = ''.

wa_listheader-info = 'Retail Selection Analysis Report'.

APPEND wa_listheader TO it_listheader.

ENDFORM. " build_listheader

&----


*& Form validate_distribution_chain

&----


  • Validating the sales organisation and distribution chain combination

----


  • --> p1 text

  • <-- p2 text

----


FORM validate_distribution_chain .

DATA: lv_vkorg TYPE vkorg, "Sales organisation

lv_vtweg TYPE VTWEG. "Distribution chain

SELECT SINGLE vkorg

vtweg

FROM tvkov

INTO (lv_vkorg, lv_vtweg)

WHERE vkorg IN s_vkorg AND vtweg IN s_vtweg.

IF sy-subrc NE 0.

MESSAGE e006. "Invalid combination of sales organisation and distribution chain

ENDIF.

former_member404244
Active Contributor
0 Kudos

Hi,

check the below link for samplecode

http://www.sapdev.co.uk/reporting/alv/alvgrid_events.htm

Reward if helpful.

Regards,

Nagaraj

Former Member
0 Kudos

for using end-of-page event alv u must use reserve line by the starting of u r program.

and u have to supress the lines using sy-linct , and sy-linno.

go through this program u will get idea on end of page..........

tables mara.

type-pools :slis.

types : begin of tmara ,

matnr like mara-matnr,

meins like mara-meins,

ersda like mara-ersda,

color(4) type c,

sel type c,

light type c,

end of tmara.

types: begin of tmakt,

matnr like makt-matnr,

maktx like makt-maktx,

maktg like makt-maktg,

sel type c,

color(4),

end of tmakt.

data: itab type tmara occurs 0 with header line,

itab1 type tmakt occurs 0 with header line,

wa_fieldcat type slis_fieldcat_alv,

fieldcat type slis_fieldcat_alv occurs 0,

i_layout type slis_layout_alv,

wa_listheader type slis_listheader,

i_listheader type slis_listheader occurs 0,

v_events type slis_t_event ,

wa_event type slis_alv_event,

i_title_mara type lvc_title value 'FIRST LIST DISPLAYED',

i_title_makt type lvc_title value 'SECONDRY LIST DISPLAYED',

sort type slis_t_sortinfo_alv with header line,

print_cont type slis_print_alv.

*----


  • SELECTION SCREE

*----


selection-screen begin of block screen1 with frame title text-001.

selection-screen skip.

selection-screen comment /32(35) comm1.

selection-screen uline /27(35).

selection-screen skip.

select-options matnr for mara-matnr.

selection-screen skip.

selection-screen uline.

selection-screen comment /30(50) comm2.

selection-screen uline /27(40).

selection-screen skip.

select-options ersda for mara-ersda.

selection-screen skip.

selection-screen end of block screen1.

*----


  • INITIALIZATION

*----


initialization.

matnr-low = '23'.

matnr-high = '1000'.

matnr-option = 'BT'.

matnr-sign = 'I'.

append matnr.

ersda-low = '20030124'.

ersda-high = '20050302' .

append ersda.

perform fillfield.

perform filllayout.

perform build_print_params.

perform fill_sort.

perform event_call.

perform populate_event.

*----


  • SELECTION-SCREEN OUTPUT

*----


at selection-screen output.

comm1 ='SELECT MATERIAL NUMBER RANGE'.

comm2 ='SELECT MATERIAL CREATION DATE'.

*----


  • START-OF-SELECTION

*----


start-of-selection.

perform readdata.

perform popdata.

&----


*& Form READDATA

&----


  • text

----


form readdata .

call function 'CONVERSION_EXIT_ALPHA_INPUT'

exporting

input = matnr-low

importing

output = matnr-low.

call function 'CONVERSION_EXIT_ALPHA_INPUT'

exporting

input = matnr-high

importing

output = matnr-high.

select matnr

ersda

meins

from mara

into corresponding fields of

table itab

where matnr in matnr and ersda in ersda.

loop at itab.

data id_color type i value 1.

data id_colors(2) type c.

if itab-matnr < '000000000000000100'.

itab-light = '1'.

elseif itab-matnr < '000000000000000150' and itab-matnr >

'000000000000000100' .

itab-light = '2'.

else.

itab-light = '3'.

endif.

id_color = id_color + 1.

if id_color > 7.

id_color = 1.

endif.

id_colors = id_color.

concatenate 'C' id_colors '10' into itab-color.

modify itab.

clear itab.

endloop.

endform. " READDATA

----


  • Form FILLFIELD

----


form fillfield .

wa_fieldcat-fieldname = 'MATNR'.

wa_fieldcat-key = 'X'.

wa_fieldcat-col_pos = '1'.

wa_fieldcat-outputlen = 20.

wa_fieldcat-hotspot = 'X'.

wa_fieldcat-seltext_m = 'MATERIAL NUMBER'.

*WA_FIELDCAT-EMPHASIZE = 'C210'.

append wa_fieldcat to fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'MEINS'.

wa_fieldcat-col_pos = '2'.

*WA_FIELDCAT-EMPHASIZE = 'C510'.

wa_fieldcat-outputlen = 10.

wa_fieldcat-seltext_m = 'UNIT'.

append wa_fieldcat to fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'ERSDA'.

wa_fieldcat-col_pos = '3'.

wa_fieldcat-outputlen = 15.

*WA_FIELDCAT-EDIT_MASK = 'DD.MM.YYYY'.

*WA_FIELDCAT-EMPHASIZE = 'C710'.

wa_fieldcat-seltext_m = 'CREAT DATE'.

append wa_fieldcat to fieldcat.

clear wa_fieldcat.

endform. "FILLFIELD

&----


  • Setup print parameters

----


form build_print_params.

print_cont-reserve_lines = '3'. "Lines reserved for footer

print_cont-no_coverpage = 'X'.

endform. " BUILD_PRINT_PARAMS

----


  • Form POPDATA

----


form popdata .

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

i_callback_program = sy-repid

  • I_CALLBACK_PF_STATUS_SET = ' '

i_callback_user_command = 'USER-COMMAND'

i_callback_top_of_page = 'TOPPAGE'

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

i_grid_title = i_title_mara

  • I_GRID_SETTINGS =

is_layout = i_layout

it_fieldcat = fieldcat

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

it_sort = sort[]

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

it_events = v_events

  • IT_EVENT_EXIT =

is_print = print_cont

tables

t_outtab = itab

exceptions

program_error = 1

others = 2

.

endform. " POPDATA

----


  • Form TOPPAGE

----


form toppage.

refresh i_listheader.

data: ld_lines type i,

ld_linesc(10) type c,

i_date(10) type c,

i_info like wa_listheader-info.

wa_listheader-typ = 'H'.

wa_listheader-info = 'MATERIAL DETAIL'.

append wa_listheader to i_listheader.

clear wa_listheader.

wa_listheader-typ = 'S'.

wa_listheader-key = 'DATE :'.

concatenate sy-datum+6(2) '.'

sy-datum+4(2) '.'

sy-datum(4) into i_date.

wa_listheader-info = i_date.

append wa_listheader to i_listheader.

clear wa_listheader.

describe table itab lines ld_lines.

ld_linesc = ld_lines.

concatenate 'TOTAL NUMBER OF RECORD SELECTED: ' ld_linesc

into i_info separated by space.

wa_listheader-typ = 'A'.

wa_listheader-info = i_info.

append wa_listheader to i_listheader.

clear: wa_listheader , i_info.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = i_listheader

i_logo = 'ENJOYSAP_LOGO'.

endform. "TOPPAGE

----


  • Form FILLLAYOUT

----


form filllayout .

i_layout-zebra = 'X'.

i_layout-info_fieldname = 'COLOR'.

i_layout-box_fieldname = 'SEL'.

i_layout-lights_fieldname = 'LIGHT'.

i_layout-edit ='X'.

i_layout-colwidth_optimize = 'X'.

i_layout-window_titlebar = 'EXAMPLE FOR ALV GRID'.

i_layout-no_totalline = 'X'.

endform. "FILLLAYOUT

----


  • Form FILL_SORT

----


form fill_sort .

sort-down = 'X'.

sort-spos = 1.

sort-fieldname = 'MATNR'.

sort-tabname = 'MARA'.

append sort.

endform. " FILL_SORT

----


  • Form EVENT_CALL

----


form event_call .

data: i_event like v_events.

call function 'REUSE_ALV_EVENTS_GET'

exporting

i_list_type = 0

importing

et_events = v_events.

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. " EVENT_CALL

----


  • Form POPULATE_EVENT

----


form populate_event .

read table v_events into wa_event with key name = 'USER_COMMAND'.

if sy-subrc eq 0.

wa_event-form = 'USER_COMMAND'.

modify v_events from wa_event transporting form where name =

wa_event-name.

read table v_events with key name = slis_ev_end_of_page

into wa_event.

if sy-subrc = 0.

move 'END_OF_PAGE' to wa_event-form.

modify v_events from wa_event transporting form where name =

wa_event-name.

endif.

endif.

endform. "POPULATE_EVENT

*----


form end_of_page.

write: sy-uline(50).

skip.

write:/40 'Page:', sy-pagno .

endform.

&----


*& Form USER_COMMAND

----


form user_command using r_ucomm like sy-ucomm

rs_selfield type slis_selfield.

case r_ucomm.

when '&IC1'.

case rs_selfield-fieldname.

when 'MATNR'.

read table itab with key matnr = rs_selfield-value.

if sy-subrc = 0.

perform data_retrieval_makt using rs_selfield-value.

perform build_fieldcatlog_makt.

perform filllayout_makt.

perform display_alv_makt.

clear rs_selfield.

endif.

endcase.

endcase.

endform. "user_command

----


  • Form DATA_RETRIEVAL_MAKT

----


form data_retrieval_makt using tmatnr .

select matnr

maktx

maktg

up to 100 rows

from makt

into table itab1

where spras = 'EN' and matnr = tmatnr.

loop at itab1.

data id_color type i value 1.

data id_colors(2) type c.

id_color = id_color + 1.

if id_color > 7.

id_color = 1.

endif.

id_colors = id_color.

concatenate 'C' id_colors '10' into itab1-color.

modify itab1.

clear itab1.

endloop.

endform. "DATA_RETRIEVAL_MAKT

----


  • Form FILLLAYOUT_MAKT

----


form filllayout_makt .

clear i_layout.

i_layout-zebra = 'X'.

i_layout-info_fieldname = 'COLOR'.

i_layout-box_fieldname = 'SEL'.

i_layout-edit ='X'.

i_layout-colwidth_optimize = 'X'.

i_layout-window_titlebar = 'EXAMPLE FOR ALV GRID'.

endform. " LAYOUT_MAKT

----


  • Form BUILD_FIELDCATLOG_MAKT

----


form build_fieldcatlog_makt .

refresh fieldcat.

wa_fieldcat-fieldname = 'MATNR'.

wa_fieldcat-key = 'X'.

wa_fieldcat-col_pos = '1'.

*WA_FIELDCAT-EDIT_MASK = 'DD.MM.YYYY'.

wa_fieldcat-emphasize = 'C510'.

wa_fieldcat-seltext_m = 'MATERIAL NUMBER'.

append wa_fieldcat to fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'MAKTX'.

wa_fieldcat-col_pos = '2'.

wa_fieldcat-emphasize = 'C710'.

wa_fieldcat-seltext_m = 'MATERIAL DESCRIPTION'.

append wa_fieldcat to fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'MAKTG'.

wa_fieldcat-col_pos = '3'.

wa_fieldcat-emphasize = 'C210'.

wa_fieldcat-seltext_m = 'MATERIAL DESCRIPTION'.

append wa_fieldcat to fieldcat.

clear wa_fieldcat.

endform. " BUILD_FIELDCATLOG_MAKT

----


  • Form DISPLAY_ALV_MAKT

----


form top-of-page.

refresh i_listheader.

data: ld_lines type i,

ld_linesc(10) type c,

i_date(10) type c,

i_info like wa_listheader-info.

wa_listheader-typ = 'H'.

wa_listheader-info = 'MATERIAL DESCRIPTION FOR SELECTED NUMBER'.

append wa_listheader to i_listheader.

clear wa_listheader.

wa_listheader-typ = 'S'.

wa_listheader-key = 'DATE :'.

concatenate sy-datum+6(2) '.'

sy-datum+4(2) '.'

sy-datum(4) into i_date.

wa_listheader-info = i_date.

append wa_listheader to i_listheader.

clear wa_listheader.

describe table itab1 lines ld_lines.

ld_linesc = ld_lines.

concatenate 'TOTAL NUMBER OF RECORD SELECTED: ' ld_linesc

into i_info separated by space.

wa_listheader-typ = 'A'.

wa_listheader-info = i_info.

append wa_listheader to i_listheader.

clear: wa_listheader , i_info.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = i_listheader

i_logo = 'ENJOYSAP_LOGO'.

  • I_END_OF_LIST_GRID =

  • I_ALV_FORM =

endform. "TOP-OF-PAGE

&----


*& Form DISPLAY_ALV_MAKT

&----


  • text

----


form display_alv_makt .

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = sy-repid

i_callback_top_of_page = 'TOP-OF-PAGE'

i_grid_title = i_title_makt

is_layout = i_layout

it_fieldcat = fieldcat

tables

t_outtab = itab1

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. " DISPLAY_ALV_MAKT

0 Kudos

Could you please tell me how to suppress the lines using sy-linct , and sy-linno ?

0 Kudos

Hi,

do like this

data : gd_prntparams type slis_print_alv.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = gd_repid

i_callback_top_of_page = 'TOP-OF-PAGE'

is_layout = gd_layout

it_fieldcat = fieldcatalog[]

it_events = gt_events

is_print = gd_prntparams

i_save = 'X'

tables

t_outtab = it_ekko

exceptions

program_error = 1

others = 2.

perform build_events.

perform build_print_params.

&----


*& Form BUILD_EVENTS

&----


  • Build events table

----


form build_events.

data: ls_event type slis_alv_event.

call function 'REUSE_ALV_EVENTS_GET'

exporting

i_list_type = 0

importing

et_events = gt_events[].

read table gt_events with key name = slis_ev_end_of_page

into ls_event.

if sy-subrc = 0.

move 'END_OF_PAGE' to ls_event-form.

append ls_event to gt_events.

endif.

read table gt_events with key name = slis_ev_end_of_list

into ls_event.

if sy-subrc = 0.

move 'END_OF_LIST' to ls_event-form.

append ls_event to gt_events.

endif.

endform. " BUILD_EVENTS

&----


*& Form BUILD_PRINT_PARAMS

&----


  • Setup print parameters

----


form build_print_params.

gd_prntparams-reserve_lines = '3'. "Lines reserved for footer

gd_prntparams-no_coverpage = 'X'.

endform. " BUILD_PRINT_PARAMS

&----


*& Form END_OF_PAGE

&----


form END_OF_PAGE.

data: listwidth type i,

ld_pagepos(10) type c,

ld_page(10) type c.

write: sy-uline(50).

skip.

write:/40 'Page:', sy-pagno .

endform.

&----


*& Form END_OF_LIST

&----


form END_OF_LIST.

data: listwidth type i,

ld_pagepos(10) type c,

ld_page(10) type c.

skip.

write:/40 'Page:', sy-pagno .

endform.

Regards,

Nagaraj

Former Member
0 Kudos

Hi Amit,

In order to add event functionality such as 'END_OF_PAGE' to the ALV grid you need to setup the

IT_EVENTS option of the ALV function module. Also depending on which event you are using you

may also need to setup the print parameters by activating the IS_PRINT option. Please note for events

such as end_of_page, end_of_list etc they will not be displayed on screen but only in the printed

output.

Step 1. Add data declaration for events and print parameters

Step 2. Update 'REUSE_ALV_GRID_DISPLAY' FM call to include parameter 'it_events' and 'is_print'

Step 3. Add code to setup events table and print parameters

Step 4. Create event FORM(s), which are executed when event is triggered

DATA: gt_events type slis_t_event,

gd_prntparams type slis_print_alv.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = gd_repid

i_callback_top_of_page = 'TOP-OF-PAGE'

is_layout = gd_layout

it_fieldcat = fieldcatalog[]

it_events = gt_events

is_print = gd_prntparams

i_save = 'X'

tables

t_outtab = it_ekko

exceptions

program_error = 1

others = 2.

perform build_events.

perform build_print_params.

&----


*& Form BUILD_EVENTS

&----


  • Build events table

----


form build_events.

data: ls_event type slis_alv_event.

call function 'REUSE_ALV_EVENTS_GET'

exporting

i_list_type = 0

importing

et_events = gt_events[].

read table gt_events with key name = slis_ev_end_of_page

into ls_event.

if sy-subrc = 0.

move 'END_OF_PAGE' to ls_event-form.

append ls_event to gt_events.

endif.

read table gt_events with key name = slis_ev_end_of_list

into ls_event.

if sy-subrc = 0.

move 'END_OF_LIST' to ls_event-form.

append ls_event to gt_events.

endif.

endform. " BUILD_EVENTS

&----


*& Form BUILD_PRINT_PARAMS

&----


  • Setup print parameters

----


form build_print_params.

gd_prntparams-reserve_lines = '3'. "Lines reserved for footer

gd_prntparams-no_coverpage = 'X'.

endform. " BUILD_PRINT_PARAMS

&----


*& Form END_OF_PAGE

&----


form END_OF_PAGE.

data: listwidth type i,

ld_pagepos(10) type c,

ld_page(10) type c.

write: sy-uline(50).

skip.

write:/40 'Page:', sy-pagno .

endform.

&----


*& Form END_OF_LIST

&----


form END_OF_LIST.

data: listwidth type i,

ld_pagepos(10) type c,

ld_page(10) type c.

skip.

write:/40 'Page:', sy-pagno .

endform.

Reward if Useful,

Regards,

Chitra