SAP의 특정 테이블의 내용을 조회하는 Report 프로그램을 만들어야 할 경우 대부분 ALV로 리포트를 구현하는 프로그램을 만들게 됩니다.
ALV Report 프로그램을 개발할 때 출력하는 필드가 많은 경우 필드 Layout 정의하는 것이 다소 번거롭게 느껴지기도 합니다.
특히 특정 테이블의 전체 필드에 대해 ALV로 리포트를 만들어야 한다면 일일이 모든 필드를 프로그램에서 정의해 주어야 합니다.
하지만 특정 테이블(Dictionary structure) 또는 인터널 테이블(Internal table)의 필드(Field catalog)를 자동으로 만들어 주는 Function module을 사용하면 쉽게 필드를 정의할 수 있습니다.
이번 글에서는 ABAP GRID Object를 이용하여 쉽게 ALV Report를 구현 하는 방법에 대해 알아보겠습니다.
ABAP GRID Object를 이용하여 쉽게 ALV Report 구현하기 – ABAP 프로그램
▶ SAP ABAP Function Module : REUSE_ALV_FIELDCATALOG_MERGE
- SAP 테이블(Dictionary structure) 또는 인터널테이블(Internal table)의 Field catalog를 만들어 주는 Function 모듈입니다.
▼ 아래 ABAP 프로그램을 보면 알 수 있듯이 ALV 리포트를 만들기 위한 별도의 필드 Layout 정의 부분이 없습니다.
따라서 정말 간단하게 ALV 리포트를 만들 수 있게 됩니다.
- REUSE_ALV_FIELDCATALOG_MERGE에서 특정 테이블의 모든 필드가 자동으로 정의합니다.
- 실제 ALV를 출력하는 REUSE_ALV_GRID_DISPLAY에서 바로 사용하면 됩니다.
REPORT YMM0001.
TABLES : vbap.
DATA : pt_fieldcat TYPE slis_t_fieldcat_alv.
DATA : BEGIN OF i_vbap OCCURS 0.
INCLUDE STRUCTURE vbap.
DATA : END OF i_vbap.
*—
SELECT-OPTIONS w_vbeln FOR vbap-vbeln.
*—
START-OF-SELECTION.
SELECT * FROM vbap INTO TABLE i_vbap
WHERE vbeln IN w_vbeln.
* 필드 Layout을 구성함
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
EXPORTING
i_internal_tabname = ‘VBAP’
i_structure_name = ‘VBAP’
i_client_never_display = ‘X’
CHANGING
ct_fieldcat = pt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
* ALV GRID로 출력함
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
it_fieldcat = pt_fieldcat
TABLES
t_outtab = i_vbap.
|
ABAP GRID Object를 이용하여 쉽게 ALV Report 구현하기 – 실행화면
▶ 해당 ABAP 프로그램은 VBAP(영업문서: 품목데이타) 테이블에서 특정 영업문서에 대한 모든 품목데이터를 가져와서 ALV로 출력하는 예제 입니다.
▼ 조회할 영업문서를 지정하고 실행합니다.
▼ 선택한 영업 문서에 대한 품목 데이터를 모두 가져와서 보여주고 있습니다.
마무리
사실 ABAP 프로그램에서 특정 테이블의 전체 필드를 출력하는 경우는 거의 없습니다. 필요한 필드만 지정해서 출력하는 프로그램을 개발하는 것이 일반적입니다.
하지만 특별히 ALV의 Layout에 대한 구성보다 급하게 결과에 대한 출력물을 만들어야 하는 경우 앞에서 설명한 Function 모듈을 사용하여 쉽고 빠르게 구현해서 사용할 수 있습니다.
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
이 글이 도움이 되었기를 바랍니다. ^-^