‎2006 Dec 14 1:12 PM
hi all,
I am able to display dynamic alv, but i have 2 lists to display.
Since both lists are field symbols rather than internal tables, am unable to use reuse_block_list_append.
Thanks,
Srikar
‎2006 Dec 14 1:19 PM
Hi Srikar,
try with REUSE_ALV_LIST_DISPLAY or REUSE_ALV_GRID_DISPLAY
‎2006 Dec 14 2:10 PM
Hi Srikar,
You can use dockingcontainer and split into ToP and Bottom and display the two lists.
Refer sample code:
*-- ALV Grid data declaration
DATA : o_splitter TYPE REF TO cl_gui_splitter_container,
<b>o_alvgrid1</b> TYPE REF TO cl_gui_alv_grid,
<b>o_alvgrid2</b> TYPE REF TO cl_gui_alv_grid,
o_dockingcontainer TYPE REF TO cl_gui_docking_container,
o_container TYPE REF TO cl_gui_custom_container,
cont_on_100 TYPE scrfname VALUE 'SCREEN', " SCREEN
o_container1 TYPE REF TO cl_gui_container,
o_container2 TYPE REF TO cl_gui_container,
i_fieldcat TYPE slis_t_fieldcat_alv,
<b>i_fldcatalog1</b> TYPE lvc_t_fcat,
<b>i_fldcatalog2</b> TYPE lvc_t_fcat,
v_ratio TYPE i,
w_layout1 TYPE lvc_s_layo,
w_layout2 TYPE lvc_s_layo,
w_fldcatalog TYPE lvc_s_fcat,
ok_code LIKE sy-ucomm.
&----
*& Form f0420_create_objects
&----
Create ALV Objects
----
FORM f0420_create_objects.
v_ratio = 95.
PERFORM objects_create USING:
'o_dockingcontainer' '' v_ratio '' '',
'o_splitter' o_dockingcontainer '' '2' '1'.
IF cl_gui_alv_grid=>offline( ) IS INITIAL.
CALL METHOD o_splitter->get_container EXPORTING row = 1
column = 1
RECEIVING container = o_container1.
CALL METHOD o_splitter->get_container EXPORTING row = 2
column = 1
RECEIVING container = o_container2.
Set where the splits on the screen comes
CALL METHOD o_splitter->set_row_height
EXPORTING
id = 1
height = 65
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
IF NOT sy-subrc IS INITIAL.
PERFORM error_handle USING text-024.
ENDIF.
ENDIF.
Create the alv grids
PERFORM objects_create
USING: <b>'o_alvgrid1' o_container1</b> '' '' '',
<b>'o_alvgrid2' o_container2</b> '' '' ''.
ENDFORM. " f0420_create_objects
&----
*& Form objects_create
&----
Create Objects
----
FORM objects_create USING value(pobject)
pparent
value(pratio)
value(prows)
value(pcolumns).
CASE pobject.
WHEN 'o_dockingcontainer'.
IF cl_gui_alv_grid=>offline( ) IS INITIAL.
IF o_dockingcontainer IS INITIAL.
CREATE OBJECT o_dockingcontainer
EXPORTING
ratio = pratio "amount of screen
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
others = 6.
CHECK NOT sy-subrc EQ 0.
PERFORM error_handle USING text-022.
ENDIF.
ENDIF.
WHEN 'o_splitter'.
IF cl_gui_alv_grid=>offline( ) IS INITIAL.
IF o_splitter IS INITIAL.
CREATE OBJECT o_splitter
EXPORTING
parent = pparent
rows = prows
columns = pcolumns
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
others = 3.
CHECK NOT sy-subrc EQ 0.
PERFORM error_handle USING text-023.
ENDIF.
ENDIF.
WHEN 'o_alvgrid1'.
IF <b>o_alvgrid1</b> IS INITIAL.
CREATE OBJECT o_alvgrid1
EXPORTING
i_parent = pparent.
CHECK NOT sy-subrc EQ 0.
PERFORM error_handle USING text-024.
ENDIF.
WHEN <b>'o_alvgrid2'.</b>
IF o_alvgrid2 IS INITIAL.
CREATE OBJECT o_alvgrid2
EXPORTING
i_parent = pparent.
CHECK NOT sy-subrc EQ 0.
PERFORM error_handle USING text-024.
ENDIF.
WHEN OTHERS.
do nothing
ENDCASE.
ENDFORM. " objects_create
&----
*& Form f0430_set_layout
&----
Set Grid Layout
----
FORM f0430_set_layout.
w_layout1-grid_title = sy-title.
w_layout1-zebra = c_x.
w_layout1-sel_mode = 'A'.
w_layout1-cwidth_opt = c_x.
w_layout2-grid_title = 'Error Records'.
w_layout2-zebra = c_x.
w_layout2-sel_mode = 'A'.
w_layout2-cwidth_opt = c_x.
w_layout2-no_toolbar = c_x.
w_variant-report = sy-repid.
ENDFORM. " f0430_set_layout
&----
*& Form f0440_alv_output
&----
Display output in ALV Grid
----
FORM f0440_alv_output.
PERFORM <b>display_data_grid1</b> TABLES <i_table>
i_fldcatalog1
USING w_layout1.
DELETE ADJACENT DUPLICATES FROM i_error COMPARING ALL FIELDS.
PERFORM <b>display_data_grid2</b> TABLES i_error
i_fldcatalog2
USING w_layout2.
ENDFORM. " f0440_alv_output
&----
*& Form display_data
&----
ALV Grid Display
----
FORM display_data_grid1 TABLES p_output
p_fieldcat
USING value(p_layout).
CALL METHOD o_alvgrid1->set_table_for_first_display
EXPORTING
is_variant = w_variant
i_save = c_a
is_layout = p_layout
CHANGING
it_outtab = p_output[]
it_fieldcatalog = p_fieldcat[]
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE i004 WITH text-026.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " display_data_grid1
&----
*& Form display_data
&----
ALV Grid Display
----
FORM display_data_grid2 TABLES p_output
p_fieldcat
USING value(p_layout).
CALL METHOD o_alvgrid2->set_table_for_first_display
EXPORTING
i_save = c_a
is_layout = p_layout
CHANGING
it_outtab = p_output[]
it_fieldcatalog = p_fieldcat[]
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE i004 WITH text-026.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " display_data_grid1
&----
*& Module USER_COMMAND_9000 INPUT
&----
PAI
----
MODULE user_command_9000 INPUT.
CASE ok_code.
WHEN 'EXIT' OR 'CANC'.
PERFORM free_objects:
USING o_alvgrid1 'ALV' text-027,
USING o_alvgrid2 'ALV' text-027,
USING o_dockingcontainer 'DOCKING' text-028.
LEAVE.
WHEN 'BACK'.
PERFORM free_objects:
USING o_alvgrid1 'ALV' text-027,
USING o_alvgrid2 'ALV' text-027,
USING o_dockingcontainer 'DOCKING' text-028.
SET SCREEN '0'.
LEAVE SCREEN.
WHEN OTHERS.
ENDCASE.
ENDMODULE. " USER_COMMAND_9000 INPUT
&----
*& Form free_objects
&----
Free Objects
----
FORM free_objects USING pobject
value(ptype)
value(ptext).
DATA: l_objectalv TYPE REF TO cl_gui_alv_grid.
CASE ptype.
WHEN 'ALV'.
l_objectalv = pobject.
IF NOT ( l_objectalv IS INITIAL ).
CALL METHOD l_objectalv->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
CALL METHOD cl_gui_cfw=>flush.
CLEAR: pobject, l_objectalv.
CHECK NOT sy-subrc EQ 0.
PERFORM error_handle USING ptext.
ENDIF.
WHEN 'DOCKING'.
DATA: lobjectdock TYPE REF TO cl_gui_docking_container.
lobjectdock = pobject.
IF NOT ( lobjectdock IS INITIAL ).
CALL METHOD lobjectdock->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
CLEAR: pobject, lobjectdock.
CHECK NOT sy-subrc EQ 0.
PERFORM error_handle USING ptext.
ENDIF.
WHEN OTHERS.
sy-subrc = 1.
PERFORM error_handle
USING text-025.
ENDCASE.
ENDFORM. " free_objects
&----
*& Form error_handle
&----
Error Message
----
FORM error_handle USING value(ptext).
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = text-021
txt2 = sy-subrc
txt1 = ptext.
ENDFORM. " error_handle
Reward points if this Helps.
Manish
Message was edited by:
Manish Kumar
‎2006 Dec 14 3:14 PM
Read my weblog....It might help you -;)
<a href="/people/alvaro.tejadagalindo/blog/2006/11/27/dynamic-alv-list-display ALV List Display</a>
Greetings,
Blag.