OO TREE ALV USING CL_SIMPLE_TREE_MODEL


DATA : it_scarr TYPE TABLE OF scarr,

           wa_scarr TYPE scarr,

           it_spfli TYPE TABLE OF spfli,

          wa_spfli TYPE spfli,

          it_flight TYPE TABLE OF sflight,

          wa_flight TYPE sflight,

          ok_code TYPE sy-ucomm,

          o_tree TYPE REF TO cl_simple_tree_model,

          o_dock TYPE REF TO cl_gui_docking_container.

START-OF-SELECTION.

  PERFORM data_fetch.

END-OF-SELECTION.

  CALL SCREEN 100.

*———————————————————–*

FORM data_fetch .

  SELECT FROM scarr INTO TABLE it_scarr.

  IF it_scarr  IS NOT INITIAL.

    SELECT FROM spfli INTO TABLE  it_spfli

     FOR ALL ENTRIES IN it_scarr WHERE carrid = it_scarr-carrid.

  IF it_spfli IS NOT INITIAL.

  SELECT FROM sflight INTO TABLE  it_flight

   FOR ALL ENTRIES IN it_spfli WHERE carrid = it_spfli-carrid                                  AND connid = it_spfli-connid.

    ENDIF.

  ENDIF.

ENDFORM.                    ” DATA_FETCH

*————————————————————*

MODULE status_0100 OUTPUT.

  SET PF-STATUS ‘STATUS’.

*  SET TITLEBAR ‘xxx’.

ENDMODULE.                 ” STATUS_0100  OUTPUT

*————————————————————-*

MODULE process_container OUTPUT.

  IF o_dock IS NOT BOUND.

    CREATE OBJECT o_dock

      EXPORTING

        ratio = 30.

  ENDIF.

ENDMODULE.                 ” PROCESS_CONTAINER  OUTPUT

*————————————————————*

MODULE process_tree OUTPUT.

 IF o_tree IS NOT BOUND.

 CREATE OBJECT o_tree

  EXPORTING     node_selection_mode = cl_simple_tree_model=>node_sel_mode_single.

CALL METHOD o_tree->create_tree_control

 EXPORTING

   parent = o_dock.

    PERFORM add_nodes USING o_tree.

  ENDIF.

ENDMODULE.                 ” PROCESS_TREE  OUTPUT

*&————————————————————-*

*&      Module  USER_COMMAND_0100  INPUT

*&————————————————————-*

*       text

*———————————————————–*

MODULE user_command_0100 INPUT.

  CASE ok_code.

    WHEN ‘BACK’ OR ‘EXIT’ OR ‘CANCEL’.

      LEAVE PROGRAM.

  ENDCASE.

ENDMODULE.                 ” USER_COMMAND_0100  INPUT

*————————————————————*

FORM add_nodes  USING obj_tree TYPE REF TO cl_simple_tree_model.

  DATA : wa_node TYPE treemsnodt.

  DATA : date_text TYPE char10.

  CALL METHOD obj_tree->add_node

    EXPORTING

      node_key = ‘ROOT’

      isfolder = ‘X’

      text     ‘FLIGHT DETAILS’

      expander = ‘X’.

  LOOP AT it_scarr INTO wa_scarr.

    wa_node-node_key = wa_scarr-carrid.

    wa_node-text = wa_scarr-carrname.


CALL METHOD obj_tree->add_node

      EXPORTING

        node_key          = wa_node-node_key

        relative_node_key = ‘ROOT’

   relationship = cl_simple_tree_model=>relat_last_child

        isfolder          = ‘X’

        text              = wa_node-text

        expander          = ‘X’.

  ENDLOOP.


LOOP AT it_spfli INTO wa_spfli.

    CONCATENATE wa_spfli-carrid

                 wa_spfli-connid

                 INTO wa_node-node_key SEPARATED BY space.

    wa_node-relatkey = wa_spfli-carrid.

    CONCATENATE wa_spfli-carrid

                wa_spfli-connid ‘:’

                wa_spfli-cityfrom ‘->’

                wa_spfli-cityto INTO wa_node-text SEPARATED BY space.

    CALL METHOD obj_tree->add_node

      EXPORTING

        node_key          = wa_node-node_key

        relative_node_key = wa_node-relatkey

    relationship = cl_simple_tree_model=>relat_last_child

        isfolder          = ‘X’

        text              = wa_node-text

        expander          = ‘X’.

  ENDLOOP.


LOOP AT it_flight INTO wa_flight.

    CONCATENATE wa_flight-carrid

                wa_flight-connid

                wa_flight-fldate INTO wa_node-node_key 

                SEPARATED BY space.

    CONCATENATE wa_flight-carrid

                 wa_flight-connid INTO wa_node-relatkey  

                 SEPARATED BY space.

    WRITE wa_flight-fldate TO date_text.

    wa_node-text = date_text.

    CALL METHOD obj_tree->add_node

      EXPORTING

        node_key          = wa_node-node_key

        relative_node_key = wa_node-relatkey

    relationship = cl_simple_tree_model=>relat_last_child

        isfolder          = space

        text              = wa_node-text

        expander          = space.

  ENDLOOP.

ENDFORM.                    ” ADD_NODES

*————————————————————*

SCREEN 100 FLOW LOGIC

  PROCESS BEFORE OUTPUT.

   MODULE status_0100.

   MODULE process_container.

   MODULE process_tree.


PROCESS AFTER INPUT.

   MODULE user_command_0100.

 

*———————————————————–*

OUTPUT

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s