ABAP ALV Tree

Code listing for: ZDDTEST001

Description: ALV TREE TEST

*&---------------------------------------------------------------------*
*& Report  ZDDTEST001
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

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
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
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
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
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_9001 INPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
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_9001 OUTPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
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
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
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
*    lifetime                    =
      parent                      = wa_custom_container
*    shellstyle                  =
      node_selection_mode         =
      cl_gui_simple_tree=>node_sel_mode_single
*    hide_selection              =
*    name                        =
  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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值