2008 Feb 22 7:23 AM
Hi Everybody,
I want to implement Multiple ALV Grids (Not ALV List) on a single screen using report programming(not using Module Pool).
Is it possible??? .Kindly provide some Blogs or Documents for the Same.
<REMOVED BY MODERATOR>
Thanks,
Tasmia
Edited by: Alvaro Tejada Galindo on Feb 22, 2008 4:45 PM
Hi Everybody,
I want to implement Multiple ALV Grids (Not ALV List) on a single screen using report programming(not using Module Pool).
Is it possible??? .Kindly provide some Blogs or Documents for the Same.
<REMOVED BY MODERATOR>
Thanks,
Tasmia
Edited by: Alvaro Tejada Galindo on Feb 22, 2008 4:45 PM
2008 Feb 22 7:27 AM
Here is an example, simply create screen 100, and put two custom containers in this screen, call the first one 'ALV_CONTAINER' and the second 'ALV_CONTAINER2'. Make sure to create the PBO and PAI modules, as well as the gui-status and title, the gui status only needs to have the "BACK" button activated. Activate and Run.
report zrich_0006.
tables: mara.
type-pools: slis.
Internal Tables
data: begin of ialv occurs 0,
matnr type mara-matnr,
maktx type makt-maktx,
end of ialv .
Internal Tables
data: begin of ialv2 occurs 0,
matnr type mard-matnr,
werks type mard-werks,
lgort type mard-lgort,
end of ialv2 .
***********************************************************************
CLASS lcl_event_receiver DEFINITION Handles Double Click
***********************************************************************
class lcl_event_receiver definition.
public section.
methods handle_hotspot_click
for event hotspot_click of cl_gui_alv_grid
importing e_row_id.
private section.
endclass.
***********************************************************************
CLASS lCL_EVENT_RECEIVER IMPLEMENTATION Handles Double Click
***********************************************************************
class lcl_event_receiver implementation.
method handle_hotspot_click.
perform get_details using e_row_id-index.
endmethod.
endclass.
data: alv_container type ref to cl_gui_custom_container,
event_receiver type ref to lcl_event_receiver,
alv_grid type ref to cl_gui_alv_grid,
alv_container2 type ref to cl_gui_custom_container,
alv_grid2 type ref to cl_gui_alv_grid,
ok_code like sy-ucomm,
fieldcat type lvc_t_fcat,
fieldcat2 type lvc_t_fcat.
select-options: s_matnr for mara-matnr.
start-of-selection.
perform get_data.
call screen 100.
************************************************************************
Module status_0100 OUTPUT
************************************************************************
module status_0100 output.
data: variant type disvariant.
data: lt_exclude type ui_functions.
data: ls_fcat type lvc_s_fcat.
set pf-status '0100'.
set titlebar '0100'.
check alv_container is initial.
Code for first ALV Grid
Create Controls
create object alv_container
exporting container_name = 'ALV_CONTAINER'.
create Event Receiver
create object event_receiver.
create object alv_grid
exporting i_parent = alv_container.
clear fieldcat. refresh: fieldcat.
clear: ls_fcat.
ls_fcat-reptext = 'Material Number'.
ls_fcat-coltext = 'Material Number'.
ls_fcat-fieldname = 'MATNR'.
ls_fcat-ref_table = 'IALV'.
ls_fcat-hotspot = 'X'.
ls_fcat-outputlen = '18'.
ls_fcat-col_pos = 1.
append ls_fcat to fieldcat.
clear: ls_fcat.
ls_fcat-reptext = 'Material Description'.
ls_fcat-coltext = 'Material Description'.
ls_fcat-fieldname = 'MATKX'.
ls_fcat-ref_table = 'IALV'.
ls_fcat-outputlen = '40'.
ls_fcat-col_pos = 2.
append ls_fcat to fieldcat.
call method alv_grid->set_table_for_first_display
changing
it_outtab = ialv[]
it_fieldcatalog = fieldcat[].
handler for ALV grid
set handler event_receiver->handle_hotspot_click for alv_grid.
Code for second ALV Grid
Create Controls
create object alv_container2
exporting container_name = 'ALV_CONTAINER2'.
create Event Receiver
create object alv_grid2
exporting i_parent = alv_container2.
clear fieldcat. refresh: fieldcat.
clear: ls_fcat.
ls_fcat-reptext = 'Material Number'.
ls_fcat-coltext = 'Material Number'.
ls_fcat-fieldname = 'MATNR'.
ls_fcat-ref_table = 'IALV2'.
ls_fcat-outputlen = '18'.
append ls_fcat to fieldcat2.
clear: ls_fcat.
ls_fcat-reptext = 'Plant'.
ls_fcat-coltext = 'Plant'.
ls_fcat-fieldname = 'MATNR'.
ls_fcat-ref_table = 'IALV2'.
ls_fcat-outputlen = '4'.
append ls_fcat to fieldcat2.
clear: ls_fcat.
ls_fcat-reptext = 'Store Loc'.
ls_fcat-coltext = 'Store Loc'.
ls_fcat-fieldname = 'LGORT'.
ls_fcat-ref_table = 'IALV2'.
ls_fcat-outputlen = '4'.
append ls_fcat to fieldcat2.
call method alv_grid2->set_table_for_first_display
changing
it_outtab = ialv2[]
it_fieldcatalog = fieldcat2[].
endmodule.
************************************************************************
Module USER_COMMAND_0100 INPUT
************************************************************************
module user_command_0100 input.
case sy-ucomm.
when 'BACK' or 'CANC'.
if not alv_container is initial.
call method alv_container->free.
clear: alv_container.
free : alv_container.
endif.
if not alv_container2 is initial.
call method alv_container2->free.
clear: alv_container2.
free : alv_container2.
endif.
if sy-subrc = 0.
set screen 0.
leave screen.
else.
leave program.
endif.
endcase.
endmodule.
*********************************************************************
FORM GET_DATA.
*********************************************************************
form get_data.
select maramatnr maktmaktx
into corresponding fields of table ialv
from mara
inner join makt
on maramatnr = maktmatnr
where mara~matnr in s_matnr
and makt~spras = sy-langu.
sort ialv ascending by matnr.
endform.
*********************************************************************
FORM GET_MORE_DATA.
*********************************************************************
form get_more_data.
select matnr werks lgort
into corresponding fields of table ialv2
from mard
where matnr = ialv-matnr.
sort ialv2 ascending by matnr.
endform.
************************************************************************
GET_DETAILS
************************************************************************
form get_details using index.
read table ialv index index.
if sy-subrc = 0.
perform get_more_data.
call method alv_grid2->refresh_table_display.
endif.
endform.
In the screen flow logic of your screen 100, did you uncomment these modules?
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100. "<---Uncomment this
*
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100. "<---Uncomment this
2008 Feb 22 7:31 AM
Hi,
I want it to be implemented through some function module not by screen Development.
Thanks,
Tasmia
2008 Feb 22 7:35 AM
Hi,
*
----
TYPE-POOLS *
----
TYPE-POOLS: slis.
----
TABLES *
----
TABLES: scarr, spfli.
----
VARIABLES *
----
DATA: g_fieldcat TYPE slis_t_fieldcat_alv,
g_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE,
gt_print TYPE slis_print_alv,
gs_layout TYPE slis_layout_alv,
gt_events TYPE slis_t_event,
g_program TYPE sy-repid,
tab_name TYPE string,
w_tabix TYPE string.
----
TYPES *
----
TYPES: BEGIN OF ty_spfli,
mandt TYPE spfli-mandt,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
countryfr TYPE spfli-countryfr,
cityfrom TYPE spfli-cityfrom,
airpfrom TYPE spfli-airpfrom,
countryto TYPE spfli-countryto,
cityto TYPE spfli-cityto.
TYPES: END OF ty_spfli.
TYPES: BEGIN OF ty_stuff,
tabname TYPE tabname,
tdref TYPE REF TO data,
END OF ty_stuff.
DATA t_stuff TYPE TABLE OF ty_stuff WITH NON-UNIQUE KEY tabname.
DATA: descr_struct_ref TYPE REF TO cl_abap_structdescr,
dataref TYPE REF TO data,
wa_fcat TYPE lvc_s_fcat,
it_fieldcatalog TYPE lvc_t_fcat.
----
FIELD-SYMBOLS *
----
FIELD-SYMBOLS: <line> TYPE ANY,
<field> TYPE ANY,
<component> TYPE abap_compdescr,
<dyn_table> TYPE STANDARD TABLE,
<fs> TYPE ANY,
<dyn_wa>,
<table>.
----
INTERNAL TABLES *
----
DATA: t_spfli TYPE STANDARD TABLE OF ty_spfli WITH HEADER LINE,
t_spfli_header TYPE STANDARD TABLE OF ty_spfli WITH HEADER LINE,
t_spfli_detail TYPE STANDARD TABLE OF ty_spfli WITH HEADER LINE.
----
MACROS *
----
DEFINE clean_table.
clear &1.
refresh &1.
END-OF-DEFINITION.
----
SELECTION SCREEN *
----
SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-b01.
SELECT-OPTIONS:
s_carrid FOR scarr-carrid.
SELECTION-SCREEN END OF BLOCK b01.
----
PRINCIPAL
----
START-OF-SELECTION.
PERFORM get_data.
PERFORM generate_alv.
PERFORM generate_alv_list.
----
FORM GET_DATA *
----
Retrieve data *
----
FORM get_data.
SELECT mandt carrid connid countryfr cityfrom
airpfrom countryto cityto
INTO TABLE t_spfli
FROM spfli
WHERE carrid IN s_carrid.
IF NOT t_spfli[] IS INITIAL.
t_spfli_header[] = t_spfli[].
DELETE ADJACENT DUPLICATES FROM t_spfli_header
COMPARING carrid.
ENDIF.
ENDFORM. "GET_DATA
&----
*& Form GENERATE_ALV *
&----
Generate the ALV *
----
FORM generate_alv.
IF NOT t_spfli_header[] IS INITIAL.
PERFORM custom_data_alv USING g_fieldcat[].
PERFORM build_sort.
ENDIF.
ENDFORM. "GENERATE_ALV
&----
*& Form CUSTOM_DATA_ALV *
&----
Create ALV Catalog. *
----
FORM custom_data_alv USING t_fieldcat TYPE slis_t_fieldcat_alv.
DATA: l_fieldcat TYPE slis_fieldcat_alv.
CLEAR: t_fieldcat.
REFRESH: t_fieldcat.
CLEAR l_fieldcat.
l_fieldcat-tabname = 'T_SPFLI'.
l_fieldcat-fieldname = 'CARRID'.
l_fieldcat-seltext_l = 'Airline carrier ID'.
l_fieldcat-col_pos = 1.
l_fieldcat-outputlen = 15.
APPEND l_fieldcat TO t_fieldcat.
CLEAR l_fieldcat.
l_fieldcat-tabname = 'T_SPFLI'.
l_fieldcat-fieldname = 'CONNID'.
l_fieldcat-seltext_l = 'Flight connection Id'.
l_fieldcat-col_pos = 2.
l_fieldcat-outputlen = 15.
APPEND l_fieldcat TO t_fieldcat.
CLEAR l_fieldcat.
l_fieldcat-tabname = 'T_SPFLI'.
l_fieldcat-fieldname = 'COUNTRYFR'.
l_fieldcat-seltext_l = 'Country key'.
l_fieldcat-col_pos = 3.
l_fieldcat-outputlen = 15.
APPEND l_fieldcat TO t_fieldcat.
CLEAR l_fieldcat.
l_fieldcat-tabname = 'T_SPFLI'.
l_fieldcat-fieldname = 'CITYFROM'.
l_fieldcat-seltext_l = 'City of departure'.
l_fieldcat-col_pos = 4.
l_fieldcat-outputlen = 15.
APPEND l_fieldcat TO t_fieldcat.
CLEAR l_fieldcat.
l_fieldcat-tabname = 'T_SPFLI'.
l_fieldcat-fieldname = 'AIRPFROM'.
l_fieldcat-seltext_l = 'Airport of departure'.
l_fieldcat-col_pos = 5.
l_fieldcat-outputlen = 15.
APPEND l_fieldcat TO t_fieldcat.
CLEAR l_fieldcat.
l_fieldcat-tabname = 'T_SPFLI'.
l_fieldcat-fieldname = 'COUNTRYTO'.
l_fieldcat-seltext_l = 'Country key'.
l_fieldcat-col_pos = 6.
l_fieldcat-outputlen = 15.
APPEND l_fieldcat TO t_fieldcat.
CLEAR l_fieldcat.
l_fieldcat-tabname = 'T_SPFLI'.
l_fieldcat-fieldname = 'CITYTO'.
l_fieldcat-seltext_l = 'Arrival city'.
l_fieldcat-col_pos = 7.
l_fieldcat-outputlen = 15.
APPEND l_fieldcat TO t_fieldcat.
ENDFORM. "CUSTOM_DATA_ALV
&----
*& Form BUILD_SORT *
&----
Build Sort table *
----
FORM build_sort.
CLEAR g_sort.
g_sort-spos = 1.
g_sort-fieldname = 'CARRID'.
g_sort-up = 'X'.
APPEND g_sort.
ENDFORM. "BUILD_SORT
----
FORM GENERATE_ALV_LIST *
----
Generate ALV list *
----
FORM generate_alv_list.
DATA l_stuff TYPE ty_stuff.
g_program = sy-repid.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
i_callback_program = g_program.
LOOP AT t_spfli_header.
w_tabix = sy-tabix.
clean_table t_spfli_detail.
LOOP AT t_spfli INTO t_spfli_detail
WHERE carrid EQ t_spfli_header-carrid.
APPEND t_spfli_detail.
ENDLOOP.
CONCATENATE 'TABLE_' w_tabix INTO
tab_name.
PERFORM create_table USING 'SPFLI' tab_name.
LOOP AT t_spfli_detail ASSIGNING <line>.
ASSIGN <dyn_wa> TO <table>.
<table> = <line>.
APPEND <dyn_wa> TO <dyn_table>.
ENDLOOP.
PERFORM create_alv_list TABLES <dyn_table>.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
EXPORTING
is_print = gt_print.
ENDFORM. "GENERATE_ALV_LIST
----
FORM CREATE_ALV_LIST *
----
Create ALV List *
----
FORM create_alv_list TABLES t_table STRUCTURE t_spfli_detail.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
it_fieldcat = g_fieldcat
is_layout = gs_layout
i_tabname = 'T_SPFLI'
it_events = gt_events
TABLES
t_outtab = t_table.
ENDFORM. "CREATE_ALV_LIST
----
FORM CREATE_TABLE *
----
Create dynamic table *
----
FORM create_table USING my_tab tab_name.
DATA l_stuff TYPE ty_stuff.
CREATE DATA dataref TYPE (my_tab).
ASSIGN dataref->* TO <fs>.
descr_struct_ref ?= cl_abap_typedescr=>describe_by_data( <fs> ).
clean_table it_fieldcatalog.
LOOP AT descr_struct_ref->components ASSIGNING <component>.
wa_fcat-fieldname = <component>-name.
wa_fcat-ref_table = my_tab.
wa_fcat-ref_field = <component>-name.
APPEND wa_fcat TO it_fieldcatalog.
ENDLOOP.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fieldcatalog
IMPORTING
ep_table = dataref
EXCEPTIONS
OTHERS = 1.
ASSIGN dataref->* TO <dyn_table>.
l_stuff-tabname = tab_name.
CREATE DATA l_stuff-tdref LIKE LINE OF <dyn_table>.
ASSIGN l_stuff-tdref->* TO <dyn_wa>.
ENDFORM. "CREATE_TABLE
It is a sample program for multiple alv. i think only 20 alv list can be generated in the page. its SAP standard.
Regards,
Priya.
2008 Feb 22 7:41 AM
Hi,
I am looking for Multiple ALV Grids and not ALV LIsts.
Kindly let me know if implementation of multiple ALV GRIDs on one output screen is.
My requirement is to display 4 ALV Grids on execution of the program without using screen development.
Thanks,
Tasmia
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |