Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Abapteur Note

심플 트리 (SIMPLE TREE) 본문

SAP/ABAP

심플 트리 (SIMPLE TREE)

아밥추어 2024. 1. 25. 22:42

SAP에서는 화면에 데이터를 띄우는 방법은 여러가지이다. 

ALV, 모듈 풀 등..

 

ABAP에서는 SIMPLE TREE, COLUMN TREE, ALV TREE, LIST TREE 구조가 존재한다.

오늘 포스팅은 SIMPLE TREE이다.


Simple Tree

 

CL_GUI_SIMPLE_TREE 클래스를 사용하는 트리 구조이다.

최상위 노드인 ROOT와 하위 노드를 이루고 있다. 

<TREE>

 

* 체크박스, 추가적인 아이콘을 사용할 수 없다.

* 헤더라인이 존재하지 않는다.

 

 

TYPES: NODE_TABLE_TYPE LIKE TABLE OF MTREESNODE WITH DEFAULT KEY.

DATA: TREE_CON_REF TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
      G_TREE       TYPE REF TO CL_GUI_SIMPLE_TREE.

TABLES: SFLIGHT, SCARR.


DATA: BEGIN OF GS_SFLIGHT.
        INCLUDE STRUCTURE SFLIGHT.
      DATA:END OF GS_SFLIGHT.


DATA GT_SFLIGHT LIKE TABLE OF GS_SFLIGHT.


DATA: GS_TAB  TYPE SFLIGHT,
      GT_TAB  TYPE TABLE OF SFLIGHT,
      GS_TAB2 TYPE SCARR,
      GT_TAB2 TYPE TABLE OF SCARR.

DATA: OK_CODE TYPE SY-UCOMM.

DATA: GO_CONTAINER_0100 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
      GO_ALV_GRID_0100  TYPE REF TO CL_GUI_ALV_GRID,

      GS_VARIANT        TYPE DISVARIANT,
      GV_SAVE           TYPE C VALUE 'A', " 저장모드 A: 개인용(U) + 공개용 (X)

      GS_LAYOUT_0100    TYPE LVC_S_LAYO,
      GS_FIELDCAT_0100  TYPE LVC_S_FCAT,
      GT_FIELDCAT_0100  TYPE LVC_T_FCAT.


FIELD-SYMBOLS : <FCAT> TYPE LVC_T_FCAT.

 

TOP 선언부: TREE 관련 내용 참고

MTREESNODE, CL_GUI_SIMPLE_TREE 등

 

MODULE INIT_TREE OUTPUT.

  IF G_TREE IS INITIAL.
    DATA NODE_TABLE TYPE NODE_TABLE_TYPE.
    DATA: G_APPLICATION TYPE REF TO LCL_APPLICATION.
    DATA: EVENTS TYPE CNTL_SIMPLE_EVENTS.
    DATA: EVENT  TYPE CNTL_SIMPLE_EVENT.

    CREATE OBJECT TREE_CON_REF
      EXPORTING
        CONTAINER_NAME = 'TREE_CONTAINER'.                 " Name of the Screen CustCtrl Name to Link Container To
    IF SY-SUBRC <> 0.
      MESSAGE 'TREE_CON_REF 생성 실패' TYPE 'E'.
    ENDIF.

    CREATE OBJECT G_TREE
      EXPORTING
        PARENT              = TREE_CON_REF                 " Parent Container
        NODE_SELECTION_MODE = CL_GUI_SIMPLE_TREE=>NODE_SEL_MODE_SINGLE.

    PERFORM BUILD_NODE_TABLE USING NODE_TABLE.

    CALL METHOD G_TREE->ADD_NODES
      EXPORTING
        TABLE_STRUCTURE_NAME = 'MTREESNODE'                 " Name of Structure of Node Table
        NODE_TABLE           = NODE_TABLE.                 " Node table


    CREATE OBJECT G_APPLICATION.
    EVENT-EVENTID = CL_GUI_SIMPLE_TREE=>EVENTID_NODE_DOUBLE_CLICK.
    EVENT-APPL_EVENT = 'X'.
    APPEND EVENT TO EVENTS.

    CALL METHOD G_TREE->SET_REGISTERED_EVENTS
      EXPORTING
        EVENTS                    = EVENTS                 " Event Table
      EXCEPTIONS
        OTHERS                    = 1
      .

    SET HANDLER G_APPLICATION->HANDLE_NODE_DOUBLE_CLICK FOR G_TREE.

  ENDIF.
ENDMODULE.

 

TREE MODULE 선언부 

 

PERFORM BUILD_NODE_TABLE 를 통해 노드를 구성한다

G_APPLICATION 클래스를 이용하여 노드 클릭시 발생하는 이벤트 생성

SET_REGISTERED_EVENT 메소드를 통해 이벤트 등록

SET HANDLER 또한 상동 (ALV와 클래스 등록 방식이 비슷함)

 

FORM BUILD_NODE_TABLE  USING NODE_TABLE TYPE NODE_TABLE_TYPE.

  DATA NODE LIKE MTREESNODE.

  CLEAR NODE.
  NODE-NODE_KEY = 'Root'.
  NODE-ISFOLDER = 'X'.
  NODE-TEXT = 'AIRPLANE'.
  APPEND NODE TO NODE_TABLE.


  CLEAR NODE.
  NODE-NODE_KEY = 'Child1'.
  NODE-RELATKEY = 'Root'.
  NODE-ISFOLDER = 'X'.
  NODE-TEXT = 'CARRID'.
  NODE-EXPANDER = ''.
  APPEND NODE TO NODE_TABLE.


  CLEAR NODE.
  NODE-NODE_KEY = 'AA'.
  NODE-RELATKEY = 'Child1'.
  NODE-ISFOLDER = 'X'.
  NODE-TEXT = 'AA'.
  APPEND NODE TO NODE_TABLE.

  CLEAR NODE.
  NODE-NODE_KEY = 'AZ'.
  NODE-RELATKEY = 'Child1'.
  NODE-N_IMAGE = '@10@'.
  NODE-TEXT = 'AZ'.
  APPEND NODE TO NODE_TABLE.

  CLEAR NODE.
  NODE-NODE_KEY = 'DL'.
  NODE-RELATKEY = 'Child1'.
  NODE-EXPANDER = ''.
  NODE-DISABLED = ''.
  NODE-TEXT = 'DL'.
  APPEND NODE TO NODE_TABLE.

  CLEAR NODE.
  NODE-NODE_KEY = 'LH'.
  NODE-RELATKEY = 'Child1'.
  NODE-EXPANDER = ''.
  NODE-DISABLED = ''.
  NODE-TEXT = 'LH'.
  APPEND NODE TO NODE_TABLE.
ENDFORM.

노드 구성 부분

 

CLASS LCL_APPLICATION DEFINITION.
  PUBLIC SECTION.
    METHODS: HANDLE_NODE_DOUBLE_CLICK FOR EVENT NODE_DOUBLE_CLICK OF CL_GUI_SIMPLE_TREE
                                      IMPORTING NODE_KEY.
ENDCLASS.


CLASS LCL_APPLICATION IMPLEMENTATION.
  METHOD HANDLE_NODE_DOUBLE_CLICK.
    PERFORM NODE_DOUBLE_CLICK_0100 USING NODE_KEY.
    PERFORM REFRESH_ALV.
  ENDMETHOD.
ENDCLASS.

클래스 선언부

 

 

 

더블클릭시 BUILD_NODE_TABLE에서 구성한 노드의 NODE-KEY 기준으로 데이터를 조회하여 ALV를 띄워준다.

 

'AA' 노드 클릭시 NODE_KEY에는 AA값이 들어간다.

 

 

'SAP > ABAP' 카테고리의 다른 글

ALV EDIT 모드 전환  (0) 2024.03.10
컬럼 트리(Column 트리)  (0) 2024.02.01
BDC  (0) 2023.12.31
SEARCH HELP 생성 <파라미터, 셀렉트옵션>  (0) 2023.12.19
필드 심볼 <FIELD SYMBOL>  (0) 2023.12.17