CS Student’s SAP&Tech Journey✨

[SAP] ALV (5) 사용자 정의 컬럼 구성 - Field Catalog 설정 및 아이콘 출력하기 본문

SAP/ALV

[SAP] ALV (5) 사용자 정의 컬럼 구성 - Field Catalog 설정 및 아이콘 출력하기

인포마틱 2025. 3. 28. 15:43

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.

 

▶ 아이콘 변경 확인