300x250
728x90

# SAP ALV Tree 1편 


2024.11.22 - [.ABAP/..ALV] - SAP ALV Tree 정리 - 1

 

SAP ALV Tree 정리 - 1

# ALV Tree이란?# SAP ALV Tree는 트리 구조 데이터를 시각화하는 데 필요한 기능이다. ALV Tree는 계층적인 데이터를 구조를 시각화하고 관리할 수 있도록 확장된 형태이다.  (예시) Tree #. 계층 구조 표

potato98.tistory.com

 

 

# SAP ALV Tree 2편에서는 데이터넣는 방법을 알아보자.

 

 

# 시작하기 전 


# 데이터를 설정할 곳은 PBO에서 한 번, 이벤트 때 한 번 , 크게 두 가지로 나뉜다. 

 

# 또한 우리가 앞에서 빈 값인 인터널 테이블 설정하였음을 참고해 보자. 

 

 

# PBO에서는 순서를 지켜보자.

 

 

# 01. 6번째) 데이터 가져오기


# 앞에서 얘기했던 것처럼 "GT_SFLIGHT"에 값을 넣지 말고,

# 새로운 인터널 테이블"GT_DB_SFLIGHT"을 넣어야 한다. 

 

# 02. 상위 / 하위 PERFORM문 생성


# 크게 두 가지로 나뉜다. 

 

- 상위 노드 데이터 넣기


FORM ADD_HEAD_LINE
  USING
    PS_LIST     TYPE SFLIGHT
    P_RELAT_KEY TYPE LVC_NKEY
  CHANGING
    P_NODE_KEY  TYPE LVC_NKEY.


  DATA:
    LT_ITEM_LAYOUT TYPE LVC_T_LAYI,
    LS_ITEM_LAYOUT TYPE LVC_S_LAYI.

* 노드 레이아웃 꾸미기
  LS_ITEM_LAYOUT-T_IMAGE = '@7T@'.
  LS_ITEM_LAYOUT-FIELDNAME = G_TREE->C_HIERARCHY_COLUMN_NAME.
  APPEND LS_ITEM_LAYOUT TO LT_ITEM_LAYOUT.


  DATA:
    LV_NAME TYPE SCARR-CARRNAME,
    L_NODE_TEXT TYPE LVC_VALUE.

  SELECT SINGLE CARRNAME
    FROM SCARR
    INTO LV_NAME
    WHERE
      CARRID EQ PS_LIST-CARRID.

  " 노드 텍스트 넣기 "
  L_NODE_TEXT =  |{ PS_LIST-CARRID }__{ LV_NAME }|.


  DATA:
    LS_SFLIGHT  TYPE SFLIGHT.


  " Node 추가하기 "
  CALL METHOD G_TREE->ADD_NODE
    EXPORTING
      I_RELAT_NODE_KEY = P_RELAT_KEY
      I_RELATIONSHIP   = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
      I_NODE_TEXT      = L_NODE_TEXT
      IS_OUTTAB_LINE   = LS_SFLIGHT
      IT_ITEM_LAYOUT   = LT_ITEM_LAYOUT
    IMPORTING
      E_NEW_NODE_KEY = P_NODE_KEY.

ENDFORM.                               " ADD_HEAD_LINE

 

# 노드 레이아웃 꾸미기 설정 : 아이콘은 Table : [ ICON ]에서 참고하자. 

 

# 노드 텍스트 넣기 : 노드원하는 텍스트를 넣어 설정하면 된다. 

 

 

- 하위 노드 데이터 넣기 


FORM ADD_COMPLETE_LINE
  USING
    PS_LIST     TYPE SFLIGHT
    P_RELAT_KEY TYPE LVC_NKEY
  CHANGING
    P_NODE_KEY  TYPE LVC_NKEY.


  DATA: L_NODE_TEXT TYPE LVC_VALUE.



 " 노드 레이아웃 꾸미기 "
  DATA: LT_ITEM_LAYOUT TYPE LVC_T_LAYI,
        LS_ITEM_LAYOUT TYPE LVC_S_LAYI.


  LS_ITEM_LAYOUT-FIELDNAME = G_TREE->C_HIERARCHY_COLUMN_NAME.
  APPEND LS_ITEM_LAYOUT TO LT_ITEM_LAYOUT.


  " 노드 텍스트 넣기 "
  L_NODE_TEXT =  PS_LIST-CONNID.


  " Add complete line "
  CALL METHOD G_TREE->ADD_NODE
    EXPORTING
          I_RELAT_NODE_KEY = P_RELAT_KEY
          I_RELATIONSHIP   = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
          IS_OUTTAB_LINE   = PS_LIST
          I_NODE_TEXT      = L_NODE_TEXT
          IT_ITEM_LAYOUT   = LT_ITEM_LAYOUT
       IMPORTING
          E_NEW_NODE_KEY = P_NODE_KEY.
ENDFORM.                               " ADD_COMPLETE_LINE

 

 

# 03. 상위 / 하위 노드 정리 


# 여기서 중요한 것상위/하위 노드 똑같이 해당된다. 

 

## [ PS_LIST ]에는 다음과 같이 데이터가 있는 Workarea를 넣어줘야 한다. 

 

## [ P_RELAT_KEY ] or [ P_NODE_KEY ]는 상위 / 하위를 나누는 기준이다. 

 

# 제일 상위 노드는 다음과 같이 [ '   ' ] 값을 안 넣어주면 된다.

 

# 그다음 하위 노드상위 노드 값( L_HEAD_KEY )그다음 노드 값( L_LAST_KEY )을 가져오기 위해 다음과 같이 설정한다. 

 

# 만약 여러 단계로 나누어진다 하면 똑같은 패턴으로 다음과 같이 설정하면 된다. 

 

# 04. Node 설정 로직  


# 전체적인 로직이며, LOOP을 돌면서 AT문을 사용해서 데이터를 넣어주었다. 

    DATA:
      L_HEAD_KEY TYPE LVC_NKEY,
      L_LAST_KEY TYPE LVC_NKEY.

    LOOP AT GT_DB_SFLIGHT INTO GS_SFLIGHT.

      ON CHANGE OF GS_SFLIGHT-CARRID.
        " Head 넣는 PERFORM문 "
        PERFORM ADD_HEAD_LINE
          USING
            GS_SFLIGHT
            ''
          CHANGING
            L_HEAD_KEY.
      ENDON.

      ON CHANGE OF GS_SFLIGHT-CONNID.
        " Complete 넣는 PERFORM문 "
        PERFORM ADD_COMPLETE_LINE
          USING
            GS_SFLIGHT
            L_HEAD_KEY
          CHANGING
            L_LAST_KEY.
      ENDON.

    ENDLOOP.

 

# LOOP AT문이 궁금하다면?

2024.04.11 - [.ABAP/..모든 것] - SAP LOOP AT 정리( FIRST, NEW, END, LAST ) , 예제

 

SAP LOOP AT 정리( FIRST, NEW, END, LAST ) , 예제

SAP LOOP AT에 대해서 # LOOP에서 사용되는 ( First, New, End, Last )에 대해서 # 총계, 소계 등 계산할 때 자주 사용하는 구문, LOOP문을 제어할 때 많이 쓰이기도 한다. # 한 번쯤 써보게 되는 LOOP AT 문 # 시작

potato98.tistory.com

 

 

# 05. 이어서


# LOOP문 끝나면 ( 07. ALV에 데이터 Call 보내기 )를 이어서가 보자.

 

# 06. 더블클릭 시 이벤트 설정.. 


 

 

 

도움이 되셨으면 하단에 있는 광고 한번씩 눌러주세유!!

728x90