반응형
개발을 하다보면, ALV를 정말 많이 만들곤 합니다. 하지만, ALV만들때 Custom control 객체를 만들고 또 그 위에 gird 객체를 올리는 등의 복잡한 과정이 필요합니다. 하지만 이를 간단하게 ALV를 출력하는 "REUSE_ALV_GRID_DISPLAY" function를 소개해보겠습니다.
기능설명
Internal Table에 있는 데이터들을 ALV로 간 단하게 보 여주기 위한 Function입니다. 앞에 서 설명한 REUSE_ALV_FIELDCATALOG_MERGE Function과 연계하여 사용하면 더욱 빠르고 쉽게 ALV를 출력할 수 있습니다. Screen Layout에서 Container를 따로 설정해주지 않아도 사용할 수 있습니다.
Signature
예시 코드
TABLES: sflight.
TYPES: BEGIN OF ty_sflight,
carrid TYPE sflight-carrid,
connid TYPE sflight-connid,
fldate TYPE sflight-fldate,
price TYPE sflight-price,
currency TYPE sflight-currency,
planetype TYPE sflight-planetype,
END OF ty_sflight.
TYPE-POOLS: slis.
DATA: gt_sflight TYPE TABLE OF ty_sflight,
gs_sflight TYPE ty_sflight.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,
gs_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid,
g_save TYPE c VALUE 'X',
g_variant TYPE disvariant,
gx_variant TYPE disvariant.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-b01.
PARAMETERS p_sfl TYPE sflight-carrid.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
gs_sflight-carrid = p_sfl.
* SFLIGHT 테이블에서 데이터 선택 사용자가 입력한 값에 따른
SELECT carrid connid fldate price currency planetype
FROM sflight
INTO TABLE gt_sflight
UP TO 100 ROWS
WHERE carrid = gs_sflight-carrid.
* 필드 카탈로그 생성
PERFORM build_fieldcat.
* 레이아웃 설정
gs_layout-zebra = 'X'.
gs_layout-colwidth_optimize = 'X'.
* ALV 그리드 표시 (별도의 화면을 구성하지 않아도 사용 가능)
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
"i_callback_top_of_page = 'TOP-OF-PAGE'
"i_callback_user_command = 'USER_COMMAND'
is_layout = gs_layout
it_fieldcat = gt_fieldcat
i_save = 'X'
is_variant = g_variant
TABLES
t_outtab = gt_sflight
EXCEPTIONS
program_error = 1
OTHERS = 2.
실행 화면
주의사항
- I_CALLBACK_PROGRAM의 프로그램은 항상 INCLUDE의 이름이 아닌 Report, Function group, Module pool or Form routine pool이어야 합니다.
- FieldCatalog Table의 TYPE이 cl_gui_alv_grid Class에서 흔히 쓰는 LVC_T_FCAT type이 아닌 slis_t_fieldcat_alv 이기 때문에 TYPE을 잘 확인하고 사용하셔야 합니다.
반응형
'ABAP Standard Function' 카테고리의 다른 글
[ABAP] SAPGUI_SET_FUNCTIONCODE / 강제로 User Command 실행하기 (0) | 2025.01.11 |
---|---|
[ABAP] SAPGUI_PROGRESS_INDICATOR / 진행 상황 및 로딩 중 표시하기 (0) | 2025.01.10 |
[ABAP] POPUP_TO_GET_ONE_VALUE / 입력 값 받는 POPUP 출력하기 (0) | 2025.01.08 |
[ABAP] POPUP_TO_DISPLAY_TEXT / Text POPUP 출력하기 (0) | 2025.01.07 |
[ABAP] POPUP_TO_CONFIRM / POPUP창 출력하여 반환 값 받기 (1) | 2025.01.06 |