쌓고 쌓다
FieldCatalog를 사용할때 ABAP Dictionary의 모든 필드 가져오기 본문

FieldCatalog를 사용하지 않으면
I_STRUCTURE_NAME에 넘겨준 ABAP Dictionary 필드를 그대로 모두 사용할 수 밖에없다.
FieldCatalog를 사용하여 추가적인 필드 Z를 설정할 수 있을 뿐만 아니라
I_STRUCTURE_NAME을 사용하지 않고 FieldCatalog만 사용해서
필요한 필드들만 뽑아 사용할 수 있다.
현재 나는
ALV에서 보여줄 필드의 추가 및 변경 사항에
유연하게 대응하기 위해서
FieldCatalog만 이용해 ALV에 데이터를 표시하고자 했다.
현재 전표 헤더 목록을 조회하는 ALV를 구현하고자 했다.

전표 헤더 테이블 ZTFC_FIT020에서 보여줄 기본 필드들이 있기에
INCLUDE TYPE으로 로컬 타입을 선언했다.
전표 헤더 데이터를 담을 GT_HEADER_DATA를 선언하고
이 데이터를 보여주기 위한 Field Catalog Table인 GT_HEADER_FCAT를 선언했다.
위처럼 ALV 표시에 필요한 필드들을 FieldCatalog에 담아 추가/변경에 유연하게 대응하고자 했다.

위와 같이 서브루틴 SET_HEADER_FCAT로 필드 설정을해주고
IT_OUTTAB, IT_FIELDCATALOG 파라미터에 값을 넘겨주는 방식을 생각했다.

필드 카탈로그를 설정하는 서브루틴 코드의 일부이다.
이처럼 필요한 코드들이 생길때마다 작성해줘야한다.

그래야 ALV에서 필드를 보여줄 수 있다.
위의 방법도 좋지만
ABAP Dictionary에 있는 모든 필드를 일단 추가하고
필요하지 않은 필드를 노출하지 않는 방법이 있어 알려주고자 한다.
'LVC_FIELDCATALOG_MERGE'
위의 메소드를 사용하여 ABAP Dictionary에 정의된 필드들을 모두 가져와
FieldCatalog에 설정할 수 있다.

I_STRUCTURE_NAME에 ABAP Dictionary에 정의된 테이블 이름을 넣어주고
CT_FIELDCAT에 필드 카탈로그 Table를 받을 변수명을 적어주면된다.

그럼 해당 ABAP Dictionary에 정의된 모든 필드에 대해
FieldCatalog를 자동으로 작성할 수 있다.
이후에 GT_HEADER_FCAT에 들어간 값들에 대해
필요한 필드 설정들을 변경하는 코드들을 작성해주면 된다.
추가적인 필드 카탈로그 정보들을 이전 포스팅을 참고하자.
'SAP > ABAP' 카테고리의 다른 글
| ALV Grid Event, 클래스 이벤트 사용시 PBO 타는 방법 (4) | 2025.04.28 |
|---|---|
| [ABAP] Number Range 연도를 붙여서 사용하는 방법 (3) | 2025.04.21 |
| 유효한 값이 들어가게 Check Table(외래키) 이용하기 (2) | 2025.04.15 |
| [ABAP] SELECTION SCREEN에서 LISTBOX와 WHERE절 (4) | 2025.02.26 |
| [ABAP] ALV 버튼 컬럼 추가 및 버튼 클릭 이벤트 (4) | 2025.02.25 |