sap treeview 应用

本文介绍了一个使用ABAP编程语言初始化树状结构的过程。通过从数据库中读取数据并进行排序,构建了一个包含父节点和子节点关系的树状结构,并实现了双击节点事件的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 *----------------------------------------------------------------------*
***INCLUDE Z_INIT_TREO01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  INIT_TREE  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE INIT_TREE OUTPUT.

  DATA: NODE LIKE MTREESNODE,
            WA_ITAB1 TYPE TY_ITAB,
            WA_ITAB TYPE TY_ITAB.

  DATA: LCL_EVENT TYPE REF TO LCL_EVENT_RECIEVE.

  DATAEVENTS TYPE CNTL_SIMPLE_EVENTS,
          EVENT TYPE CNTL_SIMPLE_EVENT.

  SELECT * INTO CORRESPONDING FIELDS OF TABLE ITAB
     FROM ZTHR_ZZY.

  SORT ITAB BY PARENT.
  NODE-NODE_KEY = 'ROOT'.
  NODE-ISFOLDER     = 'X'.
  NODE-TEXT        = 'ALL'.
  APPEND NODE TO NODE_TABLE.

  CLEAR NODE.

  LOOP AT ITAB INTO WA_ITAB.
    READ TABLE ITAB INTO WA_ITAB1 WITH  KEY PARENT = WA_ITAB-ZKEY.
    IF SY-SUBRC EQ 0.
      WA_ITAB-ISFOLDER = 'X'.
    ELSE.
      WA_ITAB-ISFOLDER = ' '.
    ENDIF.
    MODIFY ITAB FROM WA_ITAB.
  ENDLOOP.

  LOOP AT ITAB INTO WA_ITAB.
    NODE-NODE_KEY = WA_ITAB-ZKEY.
    NODE-TEXT = WA_ITAB-TEXT.
*    NODE-ISFOLDER     = ''.
    IF WA_ITAB-ISFOLDER EQ 'X'.
      NODE-ISFOLDER  = 'X'.
    ELSE.
      NODE-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
    ENDIF.
    IF WA_ITAB-PARENT IS INITIAL.
      NODE-RELATKEY = 'ROOT'.
    ELSE.
      NODE-RELATKEY = WA_ITAB-PARENT.
    ENDIF.
    APPEND NODE TO NODE_TABLE.
    CLEAR NODE.
  ENDLOOP.

  IF MYCONTAINER IS INITIAL.
    CREATE OBJECT MYCONTAINER
      EXPORTING
        CONTAINER_NAME = 'CONTAINER'.

    CREATE OBJECT G_TREE
      EXPORTING
        PARENT              = MYCONTAINER
        NODE_SELECTION_MODE = G_TREE->NODE_SEL_MODE_MULTIPLE.



    CREATE OBJECT LCL_EVENT.

    SET HANDLER LCL_EVENT->NODE_DOUBLE_CLICK FOR G_TREE.

    CLEAR EVENT.
    CLEAR EVENTS.
    REFRESH EVENTS.

    EVENT-EVENTID = CL_GUI_SIMPLE_TREE=>EVENTID_NODE_DOUBLE_CLICK.
    EVENT-APPL_EVENT = ''.

    APPEND EVENT TO EVENTS.

    CALL METHOD G_TREE->SET_REGISTERED_EVENTS
      EXPORTING
        EVENTS = EVENTS.

    CALL METHOD G_TREE->ADD_NODES
      EXPORTING
        NODE_TABLE           = NODE_TABLE
        TABLE_STRUCTURE_NAME = 'NODE_STR'.
    CALL METHOD G_TREE->EXPAND_NODE
      EXPORTING
        NODE_KEY = 'ROOT'.
  ENDIF.

ENDMODULE.                 " INIT_TREE  OUTPUT 

 

 

 

 *&---------------------------------------------------------------------*
*&  包括                ZINC_EVENT_RECIEVE
*&---------------------------------------------------------------------*

CLASS LCL_EVENT_RECIEVE DEFINITION.
  PUBLIC SECTION.
    METHODS:NODE_DOUBLE_CLICK
      FOR EVENT NODE_DOUBLE_CLICK
      OF CL_GUI_SIMPLE_TREE
      IMPORTING NODE_KEY.
ENDCLASS.                    "lcl_event_recieve DEFINITION


*----------------------------------------------------------------------*
*       CLASS lcl_event_recieve IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_EVENT_RECIEVE IMPLEMENTATION.
  METHOD NODE_DOUBLE_CLICK.

    AAA = NODE_KEY.
    SET SCREEN 0.
    LEAVE SCREEN.
  ENDMETHOD.                    "node_double_click
ENDCLASS.                    "lcl_event_recieve IMPLEMENTATION  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值