300x250
728x90
# SAP ALV Tree 1편
2024.11.22 - [.ABAP/..ALV] - SAP ALV Tree 정리 - 1
# 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 ) , 예제
# 05. 이어서
# LOOP문 끝나면 ( 07. ALV에 데이터 Call 보내기 )를 이어서가 보자.
# 06. 더블클릭 시 이벤트 설정..
728x90
'.ABAP > ..ALV' 카테고리의 다른 글
SAP ALV Data Changed, Data Changed Finished 정리 (0) | 2025.01.07 |
---|---|
SAP ALV Toolbar Button(버튼) 설정 (0) | 2024.12.05 |
SAP ALV Tree 정리 - 1 ( 데이터에 따른 노드 설정 ) (0) | 2024.11.22 |
SAP ALV 일관성 점검( Consistency Check ) (0) | 2024.11.21 |
SAP ALV ROW Color 설정 (0) | 2024.11.07 |