(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.