10-29-2007 8:27 AM
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?
10-29-2007 9:28 AM
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
10-29-2007 8:30 AM
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
10-29-2007 8:36 AM
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.
10-29-2007 9:25 AM
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.
10-29-2007 8:41 AM
Hi,
check the below link for samplecode
http://www.sapdev.co.uk/reporting/alv/alvgrid_events.htm
Reward if helpful.
Regards,
Nagaraj
10-29-2007 9:28 AM
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
10-29-2007 9:31 AM
Could you please tell me how to suppress the lines using sy-linct , and sy-linno ?
10-29-2007 9:46 AM
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
10-29-2007 9:46 AM
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