SAP/ABAP

[ABAP] Field Catalog, IT_FIELDCATALOG

승민아 2025. 2. 4. 19:55

Field Catalog

Field Catalog는 표시할 데이터의 포맷을 설명하는것이다.

 

이전의 ALV는 I_STRUCTURE_NAME으로 ABAP Dictionary에 정의된 스트럭쳐를 사용했기에

자동적으로 Field Catalog가 생성된 것이다.

 

Field Catalog는 Internal Table 타입이며, 조작하여 표시될 데이터를 조작할 수 있다.

Internal Table 타입은 LVC_T_FCAT,

테이블 타입의 Work area로 LVC_S_FCAT 이다. 

 

IT_FIELDCATALOG

SET_TABLE_FOR_FIRST_DISPLAY의 파라미터에 IT_FIELDCATALOG가 있다.

이곳에 Field Catalog를 위해 선언한  LVC_T_FCAT 타입 변수 GT_FCAT를 넘겨주면 된다.

 

이 변수로 Field Catalog를 조작하여 데이터를 보여줄 수 있다.

 

I_STRUCTURE_NAME과 IT_FIELDCATALOG

I_STRUCTURE_NAME에 ABAP Dictionary에 정의된 스트럭쳐를 작성한다.

이때 자동적으로 생성되는 Field Catalog를 사용하기에 Field Category는 변경이 불가능 했다.

 

IT_FIELDCATALOG 파라미터를 이용하면 I_STRUCTURE_NAME만 사용했을 때와 달리

어떤 차이점이 있는지 확인해보자.

 

I_STRUCTURE_NAME은 ABAP Dictionary에 선언된 Structure 타입만 넣어줄 수 있다.

필드는 F1, F2, F3, F4가 정의되어 있다고 하자.

 

하지만 프로그램에서 TYPES로 Structure에 선언된 필드 F1, F2, F3, F4 외에

Z 필드를 추가적으로 작성하여 ALV에 뿌려주고자 한다.

 

이해를 위해 설명을 덧붙이자면

ABAP Dictionary에 SBOOK Structure가 있지만

NAME, PHONE과 같은 추가적인 필드를 추가했다.

NAME, PHONE과 같은 추가적인 필드가 Z 필드이다.

 

I_STRUCTURE_NAME만 사용한다면 Z 필드는 ALV에 Display 할 수 없다.

 

하지만 I_STRUCTURE와 IT_FIELDCATALOG를 같이 사용한다면

추가적인 Z 필드도 Grid에 보여줄 수 있다.

 

위의 그림은 I_STRUCTURE_NAME을 사용하지 않고

IT_FIELDCATALOG만 사용했을 때 이다.

 

이때는 원하는 필드만을 ALV에 Display 할 수 도 있고,

프로그램에서 추가 선언한 Z 필드 또한 ALV에 뿌려줄 수 있다.

 

LVC_S_FCAT

Field Catalog 테이블 LVC_T_FCAT의 Work Area로 쓰는 LVC_S_FCAT Structrue에는

여러 필드가 있다.

 

대표적으로

FIELDNAME : OUTPUT Table(Internal Table)에 들어있는 컬럼 이름

REF_TABLE : 참조할 Structure의 이름

 

REF_FIELD : 참조할 Structure의 필드명

(REF_TABLE에 작성한 테이블명에 들어있는 REF_FIELD와

FIELDNAME의 필드명이 일치하지 않을때 작성한다.)

 

Adding and Changing Column

SBOOK Structure에 추가적인 필드 NAME, PHONE, CANC_ICON을 추가했다.

프로그램에서 추가한 Z 필드에 대해서는 ALV에 표시하고자 한다면

IT_FIELDCATALOG를 사용해야 한다.

 

TOP에 LVC_T_FCAT 타입으로 Internal Table을 선언

 

ALV Gird Display 이전에 추가한 필드에 NAME, PHONE, CALC_ICON 대한 값을 넣는다. 

 

SET_TABLE_FOR_FIRST_DISPLAY 호출 이전에

Field Catalog를 조작하는 SET_FCAT 서브루틴을 호출한다.

 

SET_FCAT 코드의 일부이다.

 

PHONE 필드에는 NAME 필드와 달리 REF_FIELD를 작성했는데

SCUSTOM 테이블에는 필드명이 TELEPHONE 이지만

내가 Z 필드로 추가한 필드명은 PHONE으로

다르기 때문에 작성한 것이다.

 

IT_FIELDCATALOG 파라미터에 GT_FCAT를 넣어주면

ALV Grid에도 추가된 필드들이 카탈로그에 반영되어 보인다.

 

LVC_S_FCAT Format

Check Box

 

DO_SUM

 

HOTSPOT, COL_POS

HOTSPOT으로 밑줄, COL_POS로 필드 순서를 지정할 수 있다.

 

EMPHASIZE

셀 모드로 색을 칠하는 것이 아니라 해당 컬럼에 색을 넣을 수 있다.

ToolTip

필드에 마우스를 올렸을때 출력될 텍스트를 작성할 수 있다.

 

그 외에도 다음과 같은 설정이 가능하다.