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

Problem in ALV Tree display

Former Member
0 Likes
1,100

I have a requirement wherein I select a row from ALV grid and then click on custom buttom in the ALV pane I get the detail view. This detail view is designed using ALV Tree which is implemented using a FM.

Now I click on another button which goes to a different screen displaying ALV grid. There if I select an item and press on the detail functionality which is implemented using the same FM, I get an empty screen. I debugged and found that the nodes are getting created but the ALV tree is not displayed.

This is the code I have implemented

PBO

IF gt_fieldcatalog[] IS INITIAL.

PERFORM build_fieldcatalog.

ENDIF.

IF tree1 IS INITIAL.

PERFORM init_tree.

ELSE.

CALL METHOD tree1->delete_all_nodes.

ENDIF.

PERFORM create_hierarchy.

CALL METHOD cl_gui_cfw=>flush.

PAI

IF ok_code = 'EXIT'.

CLEAR ok_code.

LEAVE PROGRAM.

ELSEIF ok_code = 'BACK' OR ok_code = 'CANC'.

CLEAR ok_code.

SET SCREEN 0.LEAVE SCREEN.

perform init_tree

l_tree_container_name = 'TREE1'.

IF sy-batch IS INITIAL.

CREATE OBJECT l_custom_container

EXPORTING

container_name = l_tree_container_name

EXCEPTIONS

cntl_error = 1

cntl_system_error = 2

create_error = 3

lifetime_error = 4

lifetime_dynpro_dynpro_link = 5.

IF sy-subrc <> 0.

MESSAGE x208(00) WITH 'ERROR'. "#EC NOTEXT

ENDIF.

ENDIF.

CREATE OBJECT tree1

EXPORTING

parent = l_custom_container

node_selection_mode = cl_gui_column_tree=>node_sel_mode_single

item_selection = 'X'

no_html_header = ''

no_toolbar = ''

EXCEPTIONS

cntl_error = 1

cntl_system_error = 2

create_error = 3

lifetime_error = 4

illegal_node_selection_mode = 5

failed = 6

illegal_column_name = 7.

IF sy-subrc <> 0.

MESSAGE x208(00) WITH 'ERROR'. "#EC NOTEXT

ENDIF.

PERFORM build_hierarchy_header CHANGING l_hierarchy_header.

PERFORM build_comment USING

lt_list_commentary

l_logo.

ls_variant-report = sy-repid.

PERFORM define_toolbar_excluding CHANGING l_toolbar_excluding.

REFRESH g_t_display.

CALL METHOD tree1->set_table_for_first_display

EXPORTING

is_hierarchy_header = l_hierarchy_header

it_list_commentary = lt_list_commentary

i_logo = l_logo

i_background_id = 'WHITE' "ALV_BACKGROUND

i_save = 'A'

is_variant = ls_variant

it_toolbar_excluding = l_toolbar_excluding

CHANGING

it_outtab = g_t_display "table must be emty !!

it_fieldcatalog = gt_fieldcatalog.

  • PERFORM create_hierarchy.

PERFORM change_toolbar.

PERFORM register_events.

CALL METHOD tree1->update_calculations.

Please give me some inputs of how to solve the problem

Thanks in advance

Nilanjan Dey

I have a requirement wherein I select a row from ALV grid and then click on custom buttom in the ALV pane I get the detail view. This detail view is designed using ALV Tree which is implemented using a FM.

Now I click on another button which goes to a different screen displaying ALV grid. There if I select an item and press on the detail functionality which is implemented using the same FM, I get an empty screen. I debugged and found that the nodes are getting created but the ALV tree is not displayed.

This is the code I have implemented

PBO

IF gt_fieldcatalog[] IS INITIAL.

PERFORM build_fieldcatalog.

ENDIF.

IF tree1 IS INITIAL.

PERFORM init_tree.

ELSE.

CALL METHOD tree1->delete_all_nodes.

ENDIF.

PERFORM create_hierarchy.

CALL METHOD cl_gui_cfw=>flush.

PAI

IF ok_code = 'EXIT'.

CLEAR ok_code.

LEAVE PROGRAM.

ELSEIF ok_code = 'BACK' OR ok_code = 'CANC'.

CLEAR ok_code.

SET SCREEN 0.LEAVE SCREEN.

perform init_tree

l_tree_container_name = 'TREE1'.

IF sy-batch IS INITIAL.

CREATE OBJECT l_custom_container

EXPORTING

container_name = l_tree_container_name

EXCEPTIONS

cntl_error = 1

cntl_system_error = 2

create_error = 3

lifetime_error = 4

lifetime_dynpro_dynpro_link = 5.

IF sy-subrc <> 0.

MESSAGE x208(00) WITH 'ERROR'. "#EC NOTEXT

ENDIF.

ENDIF.

CREATE OBJECT tree1

EXPORTING

parent = l_custom_container

node_selection_mode = cl_gui_column_tree=>node_sel_mode_single

item_selection = 'X'

no_html_header = ''

no_toolbar = ''

EXCEPTIONS

cntl_error = 1

cntl_system_error = 2

create_error = 3

lifetime_error = 4

illegal_node_selection_mode = 5

failed = 6

illegal_column_name = 7.

IF sy-subrc <> 0.

MESSAGE x208(00) WITH 'ERROR'. "#EC NOTEXT

ENDIF.

PERFORM build_hierarchy_header CHANGING l_hierarchy_header.

PERFORM build_comment USING

lt_list_commentary

l_logo.

ls_variant-report = sy-repid.

PERFORM define_toolbar_excluding CHANGING l_toolbar_excluding.

REFRESH g_t_display.

CALL METHOD tree1->set_table_for_first_display

EXPORTING

is_hierarchy_header = l_hierarchy_header

it_list_commentary = lt_list_commentary

i_logo = l_logo

i_background_id = 'WHITE' "ALV_BACKGROUND

i_save = 'A'

is_variant = ls_variant

it_toolbar_excluding = l_toolbar_excluding

CHANGING

it_outtab = g_t_display "table must be emty !!

it_fieldcatalog = gt_fieldcatalog.

  • PERFORM create_hierarchy.

PERFORM change_toolbar.

PERFORM register_events.

CALL METHOD tree1->update_calculations.

Please give me some inputs of how to solve the problem

Thanks in advance

Nilanjan Dey

1 REPLY 1
Read only

Former Member
0 Likes
512

Hi,

Go through this program.....

REPORT yh_alvtreedemo1.TYPE-POOLS : fibs,stree.

TYPE-POOLS:slis.

DATA : t_node TYPE snodetext.DATA : it_node LIKE TABLE OF t_node,

wa_node LIKE t_node.DATA: t_fieldcat TYPE slis_t_fieldcat_alv,

fs_fieldcat TYPE slis_fieldcat_alv.DATA:w_repid LIKE sy-repid.*Internal Table declarations

DATA: BEGIN OF fs_scarr,

carrid LIKE scarr-carrid,

END OF fs_scarr.DATA:BEGIN OF fs_spfli,

carrid LIKE spfli-carrid,

connid LIKE spfli-connid,

END OF fs_spfli.DATA:BEGIN OF fs_sflight,

carrid LIKE sflight-carrid,

connid LIKE sflight-connid,

fldate LIKE sflight-fldate,

END OF fs_sflight.DATA:BEGIN OF fs_sbook,

carrid LIKE sbook-carrid,

connid LIKE sbook-connid,

fldate LIKE sbook-fldate,

bookid LIKE sbook-bookid,

END OF fs_sbook.DATA:t_scarr LIKE TABLE OF fs_scarr,

t_spfli LIKE TABLE OF fs_spfli,

t_sflight LIKE TABLE OF fs_sflight,

t_sbook LIKE TABLE OF fs_sbook.START-OF-SELECTION. PERFORM get_data.

PERFORM build_tree.

PERFORM display_tree.&----


*& Form get_data

&----


FORM get_data . SELECT carrid

FROM scarr

INTO TABLE t_scarr. SELECT carrid

connid

FROM spfli

INTO TABLE t_spfli

FOR ALL ENTRIES IN t_scarr

WHERE carrid EQ t_scarr-carrid.ENDFORM. " get_data

&----


*& Form build_tree

&----


FORM build_tree .

CLEAR: it_node,

wa_node. SORT: t_scarr BY carrid,

t_spfli BY carrid connid,

t_sflight BY carrid connid fldate,

t_sbook BY carrid connid fldate bookid. wa_node-type = 'T'.

wa_node-name = 'Flight Details'.

wa_node-tlevel = '01'.

wa_node-nlength = '15'.

wa_node-color = '4'.

wa_node-text = 'Flight'.

wa_node-tlength ='20'.

wa_node-tcolor = 3.

APPEND wa_node TO it_node.

CLEAR wa_node. LOOP AT t_scarr INTO fs_scarr. wa_node-type = 'P'.

wa_node-name = 'CARRID'.

wa_node-tlevel = '02'.

wa_node-nlength = '8'.

wa_node-color = '1'.

wa_node-text = fs_scarr-carrid.

wa_node-tlength ='20'.

wa_node-tcolor = 4.

APPEND wa_node TO it_node.

CLEAR wa_node. LOOP AT t_spfli INTO fs_spfli WHERE carrid EQ fs_scarr-carrid. wa_node-type = 'P'.

wa_node-name = 'CONNID'.

wa_node-tlevel = '03'.

wa_node-nlength = '8'.

wa_node-color = '1'.

wa_node-text = fs_spfli-connid.

wa_node-tlength ='20'.

wa_node-tcolor = 4.

APPEND wa_node TO it_node.

CLEAR wa_node. ENDLOOP.

ENDLOOP.

ENDFORM. " build_tree

&----


*& Form display_tree

&----


FORM display_tree .

CALL FUNCTION 'RS_TREE_CONSTRUCT'

TABLES

nodetab = it_node. w_repid = sy-repid. CALL FUNCTION 'RS_TREE_LIST_DISPLAY'

EXPORTING

callback_program = w_repid

callback_user_command = 'USER_COMMAND'

callback_gui_status = 'SET_PF'.

ENDFORM. " display_tree

&----


*& Form pick

&----


  • -->COMMAND text

  • -->NODE text

----


FORM user_command TABLES pt_nodes STRUCTURE seucomm

USING pv_command TYPE c

CHANGING pv_exit TYPE c

pv_list_refresh TYPE c. pv_list_refresh = 'X'. IF pt_nodes-tlevel = '03'. CLEAR t_fieldcat[]. SELECT carrid

connid

fldate

FROM sflight

INTO TABLE t_sflight

WHERE connid EQ pt_nodes-text. fs_fieldcat-col_pos = 1.

fs_fieldcat-fieldname = 'CARRID'.

fs_fieldcat-seltext_m = 'Airlinecarrier'.

fs_fieldcat-key = 'X'.

fs_fieldcat-hotspot = 'X'.

APPEND fs_fieldcat TO t_fieldcat.

CLEAR fs_fieldcat. fs_fieldcat-col_pos = 2.

fs_fieldcat-fieldname = 'CONNID'.

fs_fieldcat-seltext_m = 'Connection No'.

fs_fieldcat-key = 'X'.

fs_fieldcat-hotspot = 'X'.

APPEND fs_fieldcat TO t_fieldcat.

CLEAR fs_fieldcat. fs_fieldcat-col_pos = 3.

fs_fieldcat-fieldname = 'FLDATE'.

fs_fieldcat-seltext_m = 'Flight Date'.

fs_fieldcat-key = 'X'.

fs_fieldcat-hotspot = 'X'.

APPEND fs_fieldcat TO t_fieldcat.

CLEAR fs_fieldcat. w_repid = sy-repid. CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = w_repid

it_fieldcat = t_fieldcat[]

TABLES

t_outtab = t_sflight.

ENDIF.

ENDFORM. "pick&----


*& Form set_pf

&----


  • text

----


FORM set_pf.

SET PF-STATUS 'MYPF'.

ENDFORM. "set_pf