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

Dynamic multiple alv

Former Member
0 Likes
1,030

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

3 REPLIES 3
Read only

Former Member
0 Likes
707

Hi Srikar,

try with REUSE_ALV_LIST_DISPLAY or REUSE_ALV_GRID_DISPLAY

Read only

Former Member
0 Likes
707

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

Read only

0 Likes
707

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.