쌓고 쌓다

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

SAP/ABAP

FieldCatalog를 사용할때 ABAP Dictionary의 모든 필드 가져오기

승민아 2025. 4. 19. 15:24
반응형

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에 들어간 값들에 대해

필요한 필드 설정들을 변경하는 코드들을 작성해주면 된다.

 

추가적인 필드 카탈로그 정보들을 이전 포스팅을 참고하자.

[ABAP] Field Catalog, IT_FIELDCATALOG

반응형