(ABAP ALV) ALV SIMPLE TREE - TBU

(ABAP ALV) ALV SIMPLE TREE - TBU

ALV Simple Tree -

1. Customer Container 2개 생성 -

Tree 용 Data 용

2. Data용 Container는 기존에 생성하는 것과 동일하게 생성.

3. TREE 생성.

* 컨테이너 생성

CREATE OBJECT GO_TREE_CONTAINER

EXPORTING

CONTAINER_NAME = 'TREE_CONTAINER'.

* TREE 컨트롤 생성, CLASS를 INSTANCE

CREATE OBJECT GO_TREE

EXPORTING

PARENT = GO_TREE_CONTAINER

* 노드를 하나만 클릭할 수 있는가, 여러개 클릭할 수 있는가

NODE_SELECTION_MODE = CL_GUI_SIMPLE_TREE=>NODE_SEL_MODE_SINGLE.

* NODE_SELECTION_MODE = CL_GUI_SIMPLE_TREE=>NODE_SEL_MODE_MULTIPLE.

3. 노드 추가

DATA: gs_node LIKE mtreesnode,

gt_node like table of gs_node.

node-node_key = 'ROOT'. " Tree 상위

node-isfolder = 'X'. " 폴더

node-text = 'CARRNAME'.

APPEND gs_node TO gt_node. CLEAR gs_node.

node-node_key = 'CHILD1'. " Root 하위

node-relatkey = 'ROOT'.

node-isfolder = 'X'.

node-text = 'CARRID'.

node-expander = 'X'. " 폴더 확장 여부

APPEND gs_node TO gt_node. CLEAR gs_node.

LOOP AT gt_sflight INTO gs_sflight.

node-node_key = gs_sflight-carrid.

node-relatkey = 'CHILD1'.

node-n_image = '원하는 아이콘 아무거나'

node-isfolder = ''.

node-expander = ''.

node-text = gs_sflight-carrname.

APPEND gs_node TO gt_node.

CLEAR gs_node, gs_sflight.

ENDLOOP.

* 트리 노드 추가

CALL METHOD G_TREE->ADD_NODES

EXPORTING

TABLE_STRUCTURE_NAME = 'MTREESNODE'

NODE_TABLE = gt_node[].

3. 이벤트추가

DATA: LT_EVENTS TYPE CNTL_SIMPLE_EVENTS, " 더블클릭 이벤트

LS_EVENT TYPE CNTL_SIMPLE_EVENT.

* 이벤트 등록

CREATE OBJECT LO_EVENT_HANDLER.

LS_EVENT-EVENTID = CL_GUI_SIMPLE_TREE=>EVENTID_NODE_DOUBLE_CLICK.

LS_EVENT-APPL_EVENT = 'X'.

APPEND LS_EVENT TO LT_EVENTS.

* 트리 이벤트 등록

CALL METHOD GO_TREE->SET_REGISTERED_EVENTS

EXPORTING

EVENTS = LT_EVENTS[]

EXCEPTIONS

CNTL_ERROR = 1

CNTL_SYSTEM_ERROR = 2

ILLEGAL_EVENT_COMBINATION = 3.

* 이벤트 핸들러

SET HANDLER LO_EVENT_HANDLER->NODE_DOUBLE_CLICK.

from http://haramang.tistory.com/82 by ccl(A) rewrite - 2021-10-21 17:00:24