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

Multiple ALV GRIDS on same report Output Screen

Former Member
0 Likes
1,080

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

4 REPLIES 4
Read only

Former Member
0 Likes
782

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

Read only

0 Likes
782

Hi,

I want it to be implemented through some function module not by screen Development.

Thanks,

Tasmia

Read only

Former Member
0 Likes
782

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.

Read only

0 Likes
782

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