ALV Split이란?
ALV( ABAP List View )을 여러 개 보여주고 싶거나 분할해서 보여주거나 등등...
말 그대로 ALV 화면 분할이라고 생각하면 된다.
시작하기 앞서
우리가 필요로 하는 OBJECT와 Grid을 생성해 주어야 한다.
ALV Split을 하기위해서 필요한 Container와 Grid이다.
# Docking Container
- Customer Container 대신 Docking Container을 사용하는 이유는 스크린과 크기를 직접 지정할 수 있기 때문이다.
# Splitter Container
- 몇 개의 행 or 열로 나눌 것인지 정하는 곳.
# Container 2개
# Grid 2개
- 분리하는 만큼의 Container와 Grid 갯수가 달라진다.
다음과 같은 ALV을 만들어보자.
# 참고
Screen 100이 만들어져있어야 하는 상태이다.
Screen 100에서 PBO를 다루는 내용이다.
TOP
1. 다음과 같이 선언해 보자.
DATA:
GO_DOCK_CONT01 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
GO_SPLIT TYPE REF TO CL_GUI_SPLITTER_CONTAINER.
DATA:
GO_CONT01 TYPE REF TO CL_GUI_CONTAINER,
GO_CONT02 TYPE REF TO CL_GUI_CONTAINER.
DATA:
GO_GRID01 TYPE REF TO CL_GUI_ALV_GRID,
GO_GRID02 TYPE REF TO CL_GUI_ALV_GRID.
PBO ( Screen 100 )
# Process Before Output
# MODULE ALV_CL_PROCESS_0100.
1. Create Object을 통해서 Docking Container을 지정해 주자.
CREATE OBJECT GO_DOCK_CONT01
EXPORTING
repid = sy-repid " 프로그램 명 "
dynnr = sy-dynnr " 스크린 넘버 "
side = cl_gui_docking_container=>DOCK_AT_LEFT " Left, Top, Bottom, Right "
extension = 1500. " 크기 "
2. 위에서 설정한 Docking Container을 Split(분할)을 해줘야 한다. 우리는 세로 분할 해야 하기 때문에 다음과 같이 설정해 보자.
# 여기서 Rows, Columns을 설정한 숫자들을 잘 기억하고 있어야한다.
CREATE OBJECT GO_SPLIT
EXPORTING
PARENT = GO_DOCK_CONT01
ROWS = 1 " 몇 개의 가로(행) 분할 할 것인지 "
COLUMNS = 2. " 몇 개의 세로(열) 분할 할 것인지 "
# 이대로 실행을 해보면 다음과 같이 분할된 것을 볼 수 있다.
# 만약에 가로로 나누고싶으면 반대로 설정하면 되는 것이다.
3. 이제 Container와 Grid을 지정해 주자.
"GET_CONTAINER"을 통해서 Split Contaniner을 각자 해당하는 Container에 Row, Column을 지정해 주고 지정한 Contaniner을 Grid와 연결해 주자.
# 여기서 Ref 변수 이름들은 자기가 이해하기 쉽게 지정을 하면 된다.,
CALL METHOD GO_SPLIT->GET_CONTAINER
EXPORTING
ROW = 1
COLUMN = 1
RECEIVING
CONTAINER = GO_CONT01.
CALL METHOD GO_SPLIT->GET_CONTAINER
EXPORTING
ROW = 1
COLUMN = 2
RECEIVING
CONTAINER = GO_CONT02.
CREATE OBJECT GO_GRID01
EXPORTING
I_PARENT = GO_CONT01.
CREATE OBJECT GO_GRID02
EXPORTING
I_PARENT = GO_CONT02.
# 그럼 다음과 같은 화면이 나오게 되는 걸 볼 수 있다.
4. 마지막으로 " SET_TABLE_FOR_FIRST_DISPLAY "을 통해서 화면에 데이터를 보여주면 된다.
# 간단하게 SFLGITH Table과 SCARR Table을 보여주겠다.
왼쪽에는 SFLIGHT Table을 보여줘야 하기 때문에 왼쪽인 GO_GRID01
오른쪽에는 SCARR Table을 보여줘야 하기 때문에 오른쪽인 GO_GRID02
# 다음과 같은 화면이 나오게 된다.
# Split Continer 너비(Width) 설정
( SET_COLUMN_WIDTH )
- ID는 위에서 GET_CONTANINER을 통해서 설정한 Column을 통해서 변경하고 싶은 Container을 지정해 보자.
- WIDTH는 변경하고 싶은 너비만큼 변경해 주면 된다. ( 1~100 )
# 다음과 같이 너비가 변경된 것을 볼 수 있다.
# Split Continer 높이(Height) 설정
( SET_ROW_HEIGHT )
1. 다음과 같이 설정이 되어있다고 해보자.
2. 위에서 설명한 거랑 똑같이 변경하고 싶은 Row을 선택한 후? HEIGHT 설정해 주면 끝이다.
도움이 되셨으면 하단에 있는 광고 한번씩 눌러주세유!!
끝!
DATA:
GO_DOCK_CONT01 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
GO_SPLIT TYPE REF TO CL_GUI_SPLITTER_CONTAINER.
DATA:
GO_CONT01 TYPE REF TO CL_GUI_CONTAINER,
GO_CONT02 TYPE REF TO CL_GUI_CONTAINER.
DATA:
GO_GRID01 TYPE REF TO CL_GUI_ALV_GRID,
GO_GRID02 TYPE REF TO CL_GUI_ALV_GRID.
CREATE OBJECT GO_DOCK_CONT01
EXPORTING
REPID = SY-REPID " 프로그램 명 "
DYNNR = SY-DYNNR " 스크린 넘버 "
SIDE = CL_GUI_DOCKING_CONTAINER=>DOCK_AT_LEFT " Left, Top, Bottom, Right "
EXTENSION = 1500. " 크기 "
CREATE OBJECT GO_SPLIT
EXPORTING
PARENT = GO_DOCK_CONT01
ROWS = 2 " 몇 개의 가로(행) 분할 할 것인지 "
COLUMNS = 1. " 몇 개의 세로(열) 분할 할 것인지 "
CALL METHOD GO_SPLIT->GET_CONTAINER
EXPORTING
ROW = 1
COLUMN = 1
RECEIVING
CONTAINER = GO_CONT01.
CALL METHOD GO_SPLIT->GET_CONTAINER
EXPORTING
ROW = 2
COLUMN = 1
RECEIVING
CONTAINER = GO_CONT02.
* CALL METHOD GO_SPLIT->SET_ROW_HEIGHT
* EXPORTING
* ID = 1 " Row ID "
* HEIGHT = 75. " Height "
* CALL METHOD GO_SPLIT->SET_COLUMN_WIDTH
* EXPORTING
* ID = 1 " Column ID "
* WIDTH = 65. " NPlWidth "
CREATE OBJECT GO_GRID01
EXPORTING
I_PARENT = GO_CONT01.
CREATE OBJECT GO_GRID02
EXPORTING
I_PARENT = GO_CONT02.
CALL METHOD GO_GRID01->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_BUFFER_ACTIVE = 'X'
I_BYPASSING_BUFFER = 'X'
I_STRUCTURE_NAME = 'SFLIGHT'
I_SAVE = 'A'
CHANGING
IT_OUTTAB = GT_LIST01[].
CALL METHOD GO_GRID02->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_BUFFER_ACTIVE = 'X'
I_BYPASSING_BUFFER = 'X'
I_STRUCTURE_NAME = 'SCARR'
I_SAVE = 'A'
CHANGING
IT_OUTTAB = GT_LIST02[].
TOP-OF-PAGE에 대한 정보를 얻고싶으면 밑에 링크를 클릭
2023.08.13 - [.SAP/..ABAP] - SAP TOP OF PAGE( ALV ) 정리
'.ABAP > ..ALV' 카테고리의 다른 글
SAP ALV Blank(공백) 정리 (1) | 2024.01.04 |
---|---|
SAP ALV LIST Button(버튼) 추가 (4) | 2023.10.17 |
SAP TOP OF PAGE( ALV ) 정리 (0) | 2023.08.13 |
SAP ALV Buffer 초기화 (2) | 2022.09.16 |
SAP ALV cell edit 설정( Enabled, Disabled ) (3) | 2022.04.15 |