REPORT zddtest001.
TYPE-POOLS: slis.
DATA: ok_code TYPE sy-ucomm,
save_ok LIKE ok_code.
DATA: wa_container TYPE scrfname VALUE 'TREE1',
wa_containeralv TYPE scrfname VALUE 'ALV1',
wa_custom_container TYPE REF TO cl_gui_custom_container,
wa_custom_containeralv TYPE REF TO cl_gui_custom_container,
wa_tree TYPE REF TO cl_gui_simple_tree,
wa_alv TYPE REF TO cl_gui_alv_grid.
DATA: gt_fieldcat TYPE lvc_t_fcat.
DATA: node_table LIKE TABLE OF mtreesnode,
wa_node TYPE mtreesnode.
DATA: wa_spfli TYPE spfli,
wa_sflight TYPE sflight.
DATA: it_spfli LIKE TABLE OF wa_spfli,
it_sflight LIKE TABLE OF wa_sflight.
CLASS lcl_application DEFINITION DEFERRED.
DEFINE tree_struct.
clear wa_node.
wa_node-node_key = &1.
wa_node-relatkey = &2.
wa_node-relatship = cl_gui_simple_tree=>relat_last_child.
wa_node-hidden = ''.
wa_node-disabled = ''.
wa_node-isfolder = 'X'.
clear wa_node-n_image.
clear wa_node-expander.
clear wa_node-exp_image.
wa_node-text = &3.
append wa_node to node_table.
END-OF-DEFINITION.
CLASS lcl_application DEFINITION.
PUBLIC SECTION.
METHODS handele_node_double_click
FOR EVENT node_double_click
OF cl_gui_simple_tree
IMPORTING node_key.
ENDCLASS. "LCL_APPLICATION DEFINITION
CLASS lcl_application IMPLEMENTATION.
METHOD handele_node_double_click.
CLEAR wa_node.
READ TABLE node_table INTO wa_node
WITH KEY node_key = node_key.
CLEAR wa_spfli.
SELECT * INTO CORRESPONDING FIELDS OF TABLE it_spfli
FROM spfli WHERE cityfrom = wa_node-text.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SPFLI'
CHANGING
ct_fieldcat = gt_fieldcat[].
CALL METHOD wa_alv->set_table_for_first_display
CHANGING
it_outtab = it_spfli
it_fieldcatalog = gt_fieldcat.
ENDMETHOD. "handele_node_double_click
ENDCLASS. "LCL_APPLICATION IMPLEMENTATION
DATA: g_application TYPE REF TO lcl_application.
START-OF-SELECTION.
CREATE OBJECT g_application.
SET SCREEN 9002.
MODULE user_command_9002 INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN '&EXIT' OR '&BACK' OR 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. "USER_COMMAND_9001 INPUT
MODULE status_9002 OUTPUT.
SET PF-STATUS 'ZSTATUS'.
IF wa_custom_container IS INITIAL.
PERFORM create_tree.
ENDIF.
ENDMODULE. "STATUS_9001 OUTPUT
FORM create_tree.
DATA: events TYPE cntl_simple_events,
event1 TYPE cntl_simple_event.
CREATE OBJECT wa_custom_container
EXPORTING
container_name = wa_container.
CREATE OBJECT wa_custom_containeralv
EXPORTING
container_name = wa_containeralv.
CREATE OBJECT wa_alv
EXPORTING
i_parent = wa_custom_containeralv.
CREATE OBJECT wa_tree
EXPORTING
parent = wa_custom_container
node_selection_mode =
cl_gui_simple_tree=>node_sel_mode_single
EXCEPTIONS
lifetime_error = 1
cntl_system_error = 2
create_error = 3
failed = 4
illegal_node_selection_mode = 5
OTHERS = 6
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CLEAR wa_node.
wa_node-node_key = 'COUNTRY'.
CLEAR wa_node-relatkey.
CLEAR wa_node-relatship.
wa_node-hidden = ''.
wa_node-disabled = ''.
wa_node-isfolder = 'X'.
CLEAR wa_node-n_image.
CLEAR wa_node-exp_image.
CLEAR wa_node-expander.
wa_node-text = 'From Country'.
APPEND wa_node TO node_table.
tree_struct 'USA' 'COUNTRY' 'America'.
tree_struct 'GMY' 'COUNTRY' 'Germany'.
tree_struct 'NY' 'USA' 'NEW YORK'.
tree_struct 'FK' 'GMY' 'FRANKFURT'.
tree_struct 'BL' 'GMY' 'BERLIN'.
tree_struct 'SF' 'USA' 'SAN FRANCISCO'.
CALL METHOD wa_tree->add_nodes
EXPORTING
table_structure_name = 'MTREESNODE'
node_table = node_table.
event1-eventid = cl_gui_simple_tree=>eventid_node_double_click.
event1-appl_event = 'X'.
APPEND event1 TO events.
CALL METHOD wa_tree->set_registered_events
EXPORTING
events = events
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
SET HANDLER g_application->handele_node_double_click FOR wa_tree.
ENDFORM. "CREATE_TREE
|