2008 Dec 12 5:18 PM
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
2008 Dec 17 6:55 AM
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
&----
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
&----
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
&----
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
----
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
| User | Count |
|---|---|
| 5 | |
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |