Dynamic Column Create¶
목적¶
Table의 Column을 상황에 따라
동적으로 생성하는 방법을 설명한다.
주요 단계¶
1. Table Model 선언¶
1.1 Row와 Column Binding을 위한 Model 선언¶
해당 Model은 Global로 사용하기 위해 Public Section에 선언한다.
PUBLIC SECTION.
INTERFACES /U4A/IF_SERVER.
" Column Table
TYPES:
BEGIN OF GTY_COLUMN,
NAME TYPE STRING,
END OF GTY_COLUMN.
" Rows Table
TYPES:
BEGIN OF GTY_ROW,
F01 TYPE STRING,
F02 TYPE STRING,
F03 TYPE STRING,
F04 TYPE STRING,
F05 TYPE STRING,
END OF GTY_ROW.
DATA:
GT_COLUMN TYPE TABLE OF GTY_COLUMN,
GT_ROW TYPE TABLE OF GTY_ROW.

<사진 1> 동적 테이블 구성 대상 Columns과 Rows Binding 구성 화면
2. Column 및 Rows 데이터 구성¶
실행 시 Column이 동적으로 생성되도록
On_init 영역에 해당 로직을 작성한다.
DATA : LS_COLUMN TYPE GTY_COLUMN,
LS_ROW TYPE GTY_ROW,
LV_INDEX TYPE N LENGTH 2,
LV_ROW TYPE STRING,
LV_COLUMN TYPE STRING.
FIELD-SYMBOLS: <FS_ROW> TYPE STRING.
*--------------------------------------------------------------------*
" COLUMN 생성
DO 5 TIMES.
" 현재 인덱스
LV_INDEX = SY-INDEX.
" COLUMN 명 생성 (F01, F02, ...)
CONCATENATE 'F' LV_INDEX INTO LV_COLUMN.
LS_COLUMN-NAME = LV_COLUMN.
APPEND LS_COLUMN TO GT_COLUMN.
CLEAR LS_COLUMN.
ENDDO.
" ROW 생성 및 값 설정
LOOP AT GT_COLUMN INTO LS_COLUMN.
CONCATENATE 'LS_ROW-' LS_COLUMN-NAME INTO LV_ROW.
ASSIGN (LV_ROW) TO <FS_ROW>.
CHECK <FS_ROW> IS ASSIGNED.
" 필드값 설정
<FS_ROW> = 'X'.
APPEND LS_ROW TO GT_ROW.
CLEAR LS_ROW.
ENDLOOP.
3. 실행 결과 확인¶
3.1 Column Table 설정 기준¶
- Column명은 Rows Table의 Field명과 동일하게 설정
(예: F01, F02, F03 …)
3.2 Rows Table 설정 기준¶
- 각 Field에 값이 반드시 설정되어야 함
(예시:'X'값 설정)
3.3 실행 결과¶
- Column이 정상적으로 동적 생성되었는지 확인
- 각 필드 값이 정상 입력되었는지 확인

<사진 2> 동적으로 생성된 테이블 화면