Sunday, November 7, 2010

Display two or more ALVs on one screen using Splitter Control

Data: custom_container TYPE REF TO cl_gui_custom_container,
splitter TYPE REF TO cl_gui_splitter_container,
graphic_parent1 TYPE REF TO cl_gui_container,
graphic_parent2 TYPE REF TO cl_gui_container.

DATA ref_grid TYPE REF TO cl_gui_alv_grid.
DATA ref_grid1 TYPE REF TO cl_gui_alv_grid.

** create container in which to place splitter
** (place it in the custom control named CONTAINER
** defined using screenpainter in dynpro 100)

CREATE OBJECT custom_container
EXPORTING
container_name = 'CONTAINER'. "use uppercase letters!
*
** create splitter container in which to place graphics
CREATE OBJECT splitter
EXPORTING
parent = custom_container
rows = 2
columns = 1
align = 15. " (splitter fills the hole custom container)

** get part of splitter container for 1st table
CALL METHOD splitter->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = graphic_parent1.
** get part of splitter container for 2nd table
CALL METHOD splitter->get_container
EXPORTING
row = 2
column = 1
RECEIVING
container = graphic_parent2.

CREATE OBJECT ref_grid EXPORTING i_parent = graphic_parent1.
** Display first ALV
PERFORM set_display.

CREATE OBJECT ref_grid1 EXPORTING i_parent = graphic_parent2.
** Display second ALV
PERFORM set_display1.

*&--------------------------------------------------------------------*
*& Form set_display
*&--------------------------------------------------------------------*
* text Display first ALV
*---------------------------------------------------------------------*
FORM set_display.
CALL METHOD ref_grid->set_table_for_first_display
EXPORTING
is_variant = st_var
i_save = save
is_layout = loyo
CHANGING
it_outtab = itab_final[]
it_fieldcatalog = fcat.
ENDFORM. "set_display

*&--------------------------------------------------------------------*
*& Form set_display1
*&--------------------------------------------------------------------*
* text Display second ALV
*---------------------------------------------------------------------*
FORM set_display1.
CALL METHOD ref_grid1->set_table_for_first_display
EXPORTING
is_variant = st_var
i_save = save
is_layout = loyo1
CHANGING
it_outtab = itab_final1[]
it_fieldcatalog = fcat1.
ENDFORM. "set_display1

ref:http://wiki.sdn.sap.com/wiki/display/ABAP/Display+two+or+more+ALVs+on+one+screen+using+Splitter+Control

0 comments: