CS Student’s SAP&Tech Journey✨
[SAP] ALV (5) 사용자 정의 컬럼 구성 - Field Catalog 설정 및 아이콘 출력하기 본문
SAP ALV를 활용해 데이터를 출력할 때, 단순히 구조체만 넘겨주는 방식으로는 세부 제어가 어렵습니다. 실무에서는 사용자의 요구에 맞춰 컬럼을 커스터마이징하거나, 기존 컬럼은 숨기고 새로운 시각적 요소를 추가해야 할 때가 많습니다.
이럴 때 사용하는 가장 강력한 도구가 바로 Field Catalog입니다. Field Catalog를 통해 각 컬럼에 대해 데이터 타입, 표시 순서, 출력 여부, 참조 테이블 정보 등을 자유롭게 제어할 수 있습니다.
이번 포스팅에서는 예제를 통해 Field Catalog를 어떻게 활용하는지 단계별로 정리해보겠습니다.
✅ Field Catalog 설정 (사용자 정의 컬럼)
Field Catalog는 ALV 각 필드에 대한 정보들을 구성합니다. 컬럼마다 어떤 형식, 어떤 의미를 가지고 있는지를 제어할 수 있어, 실무에서는 필수적으로 사용되는 요소입니다.
ALV 필드 구성 방식은 크게 세 가지로 나눌 수 있습니다.
1. I_STRUCTURE_NAME : 구조 이름만 넘기면 자동으로 필드 구성
2. I_STRUCTURE_NAME + IT_FIELDCATALOG : 구조 기반에 일부 필드만 커스터마이징 가능 (가장 많이 사용됨)
3. IT_FIELDCATALOG only : 완전 커스텀 형태로 필드 구성
실습에서는 두 번째 방식, 즉 구조 기반 + Field Catalog 일부 수정 방식을 사용하겠습니다.
▶ TOP
DATA GT_FCAT TYPE lvc_t_fcat.
DATA GS_FCAT TYPE lvc_s_fcat.
Field Catalog 타입 정의합니다.
TYPES: BEGIN OF GTY_CONN,
INCLUDE TYPE SDYN_CONN,
LIGHT TYPE C LENGTH 1,
LCOLOR TYPE C LENGTH 4,
CARRNAME TYPE SCARR-CARRNAME, " 항공사명 "
COUNTRYFR_T TYPE T005T-LANDX, " 출발 국가 텍스트 "
COUNTRYTO_T TYPE T005T-LANDX, " 도착 국가 텍스트 "
ICON_FTYPE TYPE ICON-ID " 전세기 여부 아이콘 "
END OF GTY_CONN.
DATA GT_CONN TYPE TABLE OF GTY_CONN.
DATA GS_CONN TYPE GTY_CONN.
인터널 테이블을 정의합니다.
▶ XXXXXO01(PBO) : Field Catalog 구성하기 - 출발/도착 국가 텍스트 추가
* 새롭게 추가된 2개 컬럼 정보를 ALV에게 알려줌
* 정보: FIELDNAME, REF_TABLE, REF_FIELD
CLEAR gs_fcat.
gs_fcat-fieldname = 'COUNTRYFR_T'. "인터널 테이블에 추가된 이름.
gs_fcat-ref_table = 'T005T'. "텍스트 테이블
gs_fcat-ref_field = 'LANDX'. "국가 이름을 가지고 있는 컬럼 이름
gs_fcat-col_pos = 5. "4번째 컬럼 위치에 삽입
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.
gs_fcat-fieldname = 'COUNTRYTO_T'. "인터널 테이블에 추가된 이름.
gs_fcat-ref_table = 'T005T'. "텍스트 테이블
gs_fcat-ref_field = 'LANDX'. "국가 이름을 가지고 있는 컬럼 이름
gs_fcat-col_pos = 9. "8번째 컬럼 위치에 삽입
APPEND gs_fcat TO gt_fcat.
▶ 출발/도착 국가에 대한 텍스트 취득하기
LOOP AT gt_conn INTO gs_conn.
" 출발/도착 국가에 대한 텍스트 취득하기 (함수: DR_GET_COUNTRY_NAME)
CALL FUNCTION 'DR_GET_COUNTRY_NAME'
EXPORTING
country = gs_conn-countryfr
* LANGUAGE = SY-LANGU
IMPORTING
name = gs_conn-countryfr_t.
CALL FUNCTION 'DR_GET_COUNTRY_NAME'
EXPORTING
country = gs_conn-countryto
* LANGUAGE = SY-LANGU
IMPORTING
name = gs_conn-countryto_t.
MODIFY gt_conn FROM gs_conn
TRANSPORTING light lcolor countryfr_t countryto_t. " 인터널 테이블 업데이트 잊지 말기!
ENDLOOP.
▶ SET_TABLE_FOR_FIRST_DISPLAY 연결
FORM display_alv .
CALL METHOD go_alv->set_table_for_first_display
EXPORTING
i_structure_name = 'SDYN_CONN'
is_variant = GS_VARIANT
i_save = GV_SAVE
is_layout = GS_LAYOUT
it_toolbar_excluding = GT_EXCLUDED
CHANGING
it_outtab = gt_conn
it_fieldcatalog = gt_fcat. "추가"
ENDFORM.
▶ 필드 이름 적용된 것 확인하기

✅ 전세기 아이콘으로 대체 출력하기
▶ TOP
TYPES: BEGIN OF GTY_CONN.
INCLUDE TYPE SDYN_CONN.
TYPES LIGHT TYPE C LENGTH 1.
TYPES LCOLOR TYPE C LENGTH 4.
TYPES: COUNTRYFR_T TYPE T005T-landx,
COUNTRYTO_T TYPE T005T-landx.
" 전세기 컬럼을 아이콘으로 출력하기 위한 컬럼 추가 "
TYPES ICON_FTYPE TYPE ICON-id.
TYPES: END OF GTY_CONN.
인터널 테이블을 정의합니다.
▶ XXXXXO01(PBO) : Field Catalog 아이콘 구성하기
" 기존 전세기 컬럼 숨기기
CLEAR gs_fcat.
gs_fcat-fieldname = 'FLTYPE'. "인터널 테이블에 추가된 이름.
gs_fcat-no_out = 'X'.
APPEND gs_fcat TO gt_fcat.
" 신규로 추가한 아이콘 컬럼 삽입하기 5번째 위치
CLEAR gs_fcat.
gs_fcat-fieldname = 'ICON_FTYPE'. "인터널 테이블에 추가된 이름.
* gs_fcat-no_out = 'X'.
gs_fcat-col_pos = 5.
gs_fcat-coltext = 'Charter'.
APPEND gs_fcat TO gt_fcat.
▶ SET_TABLE_FOR_FIRST_DISPLAY 연결
" 전세기(Charter Flight)인 경우 노란색으로 출력하기
IF gs_conn-fltype = 'X'.
gs_conn-lcolor = 'C300'.
" 아이콘 설정
gs_conn-icon_ftype = icon_checked.
ENDIF.
MODIFY gt_conn FROM gs_conn
TRANSPORTING light lcolor countryfr_t countryto_t icon_ftype.
▶ 아이콘 변경 확인
'SAP > ALV' 카테고리의 다른 글
[SAP] ALV (4) 시각적 제어 기능 - 신호등, 컬러 강조, FREE 함수 / 코드 리펙토링 (0) | 2025.03.28 |
---|---|
[SAP] ALV (3) 사용자별 레이아웃 저장 / Layout Variant 설정 (IS_VARIANT, I_SAVE) (0) | 2025.03.28 |
[SAP] ALV (2) 화면 갱신 / refresh_table_display 메서드로 데이터 반영하기 (0) | 2025.03.25 |
[SAP] ALV (1) 기본 개념 / 객체지향 ALV(CL_GUI_ALV_GRID)로 화면 구성하기 (0) | 2025.03.21 |