-
[ABAP] #23 Report Program - ALV (2)SAP/ABAP 2026. 1. 5. 23:02
주요 EXPORTING 옵션
CALL METHOD go_alv->set_table_for_first_display EXPORTING * i_buffer_active = * i_bypassing_buffer = * i_consistency_check = i_structure_name = 'SCUSTOM' * is_variant = * i_save = * i_default = 'X' * is_layout = * is_print = * it_special_groups = * it_toolbar_excluding = * it_hyperlink = * it_alv_graphics = * it_except_qinfo = * ir_salv_adapter = CHANGING it_outtab = gt_data ...is_variant, i_save, i_default 세 가지 옵션은 Variant와 관련되어 있다.
1. is_variant
- ALV 레이아웃 Variant 정보를 담는 구조(disvariant).
- 정렬, 필터, 컬럼 배치 등을 저장·불러오기 위한 기준이 되며, Variant 기능을 사용할 경우 i_save와 함께 사용한다.
2. i_save
- ALV에서 레이아웃 Variant 저장 가능 여부를 설정한다.
값 의미 'A' 사용자 + 글로벌 'X' 저장 허용 (Global layout 만) 'U' 사용자(Local layout) 전용 space 저장 불가
3. i_default
- 저저장된 Variant 중 기본(Default) Variant가 존재할 경우, ALV 실행 시 자동으로 적용되도록 한다.
- Variant 사용할 때 거의 같이 씀
값 의미 'X' 기본 Variant 자동 적용 space 기본 Variant 자동 적용 안 함
예제 코드
DATA: gs_variant TYPE disvariant. INITIALIZATION. gs_variant-report = sy-cprog. gs_variant-username = sy-uname. gs_variant-handle = 'MAIN'.- report : Variant가 속한 프로그램 이름
- username : Variant 소유 사용자
- handle : 하나의 화면에 여러개의 ALV가 있는 경우 각 ALV마다 구분자가 필요하므로 구분자 지정해줌
CALL METHOD go_alv->set_table_for_first_display EXPORTING i_structure_name = 'BC400_S_FLIGHT' is_variant = gs_variant i_save = 'A' i_default = 'X' CHANGING it_outtab = gt_flight EXCEPTIONS invalid_parameter_combination = 1 program_error = 2 too_many_lines = 3 OTHERS = 4.

i_save = 'A'로 설정하여 variant를 저장할 수 있으며,
i_default = 'X'로 설정하여 저장된 Variant 중 기본(Default) Variant가 있을 경우 ALV 실행 시 자동으로 적용된다.
4. ALV 레이아웃 (is_layout)
- ALV의 전체적인 화면 구성과 표시 방식을 설정하는 기능이다.
- is_layout(lvc_s_layo) 구조를 사용하여 ALV 제목, 행 구분 표시, 선택 모드, 행/셀 색상 정보 필드와의 연결 등을 제어할 수 있다.
lvc_s_layo의 주요 속성
속성 설명 zebra 'X' : 행 줄무늬 cwidth_opt 'X' : 컬럼 폭 자동 조정 grid_title ALV 제목 no_headers 'X' : 필드명 행 전체 제거 sel_mode 선택 모드 no_toolbar 'X' : 툴바 숨김 totals_bef 'X' : 합계 행을 데이터 상단에 표시 excp_fname 상태/예외 필드 값이 저장된 필드명 excp_led excp_fname 필드를 LED 형태로 표시 info_fname 행 색상 값이 저장된 필드명 ctab_fname 셀 색상 값이 저장된 필드명
예제 코드
DATA: gs_layout TYPE lvc_s_layo.FORM set_layout . gs_layout-grid_title = 'Flight List'. " ALV 제목 " gs_layout-zebra = 'X'. " Row에 구분색을 넣는 속성 " gs_layout-sel_mode = 'C'. " 셀 선택 모드 " gs_layout-excp_fname = 'excp_fld'. " 상태/예외 값 담고 있는 변수명 알려줌 " gs_layout-excp_led = 'X'. " LED 표시 " gs_layout-info_fname = 'COL_FLD'. " 행 색상을 담고 있는 변수명 알려줌 " gs_layout-ctab_fname = 'LT_SCOL'. " 셀 색상을 담고 있는 변수명 알려줌 " ENDFORM.CALL METHOD go_alv->set_table_for_first_display EXPORTING i_structure_name = 'SFLIGHT' is_layout = gs_layout CHANGING it_outtab = gt_flight EXCEPTIONS invalid_parameter_combination = 1 program_error = 2 too_many_lines = 3 OTHERS = 4.
(1) sel_mode 속성 값
값 선택 가능 범위 ALV 왼쪽 체크박스(선택 컬럼) 존재 여부 space 'B'와 동일 미존재 'A' • 여러 컬럼 선택 가능
• 여러 행 선택 가능존재 'B' • 여러 컬럼 선택 가능
• 단일 행 선택미존재 'C' • 여러 컬럼 선택 가능
• 여러 행 선택 가능미존재 'D' • 여러 컬럼 선택 가능
• 여러 행 선택 가능
• 모든 셀 단위 선택 가능존재
(2) 상태/예외 필드 (excp_fname)
excp_fname는 ALV 행 단위 상태 또는 예외를 표시하기 위한 필드이다.
지정된 필드 값에 따라 빨강/노랑/초록 상태가 표현된다.- '1' : Negative (빨강)
- '2' : Critical (노랑)
- '3' : Positive (초록)
excp_led = 'X'를 설정하면 신호등(LED) 아이콘으로 표시되며, 설정하지 않으면 기본 상태 색상으로 표시된다.
DATA: BEGIN OF gs_flight. INCLUDE TYPE sflight. DATA: excp_fld TYPE char1, END OF gs_flight.gs_layout-excp_fname = 'excp_fld'. " 상태/예외 값 담고 있는 변수명 알려줌 " gs_layout-excp_led = 'X'. " LED 표시 "FORM get_data . SELECT * FROM sflight INTO CORRESPONDING FIELDS OF TABLE gt_flight WHERE carrid = pa_car AND connid IN so_con AND fldate IN so_fdt. IF sy-subrc = 0. LOOP AT gt_flight INTO gs_flight. IF gs_flight-seatsocc < 50. gs_flight-excp_fld = '1'. " 빨간색 " ELSEIF gs_flight-seatsocc >= 50 AND gs_flight-seatsocc <= 200. gs_flight-excp_fld = '2'. " 노란색 " ELSE. gs_flight-excp_fld = '3'. " 초록색 " ENDIF. MODIFY gt_flight FROM gs_flight TRANSPORTING excp_fld. ENDLOOP. ENDIF. ENDFOR
만약 excp_led = 'X'를 하지 않는다면 아래와 같은 결과가 나온다.

색상 필드 (info_fname / ctab_fname)
info_fname는 행(Row) 단위 색상 지정에 사용되며,
ctab_fname는 셀(Cell) 단위 색상 지정을 위해 lvc_t_scol, lvc_s_scol 구조를 사용한다.(3) 행 단위 색상 지정 (info_fname)
행 전체에 동일한 색상을 적용하며, 다음 형식의 문자열로 색상을 지정한다.

- 'C' : 고정값
- color_constant : 컬러값
- intensified : 색상 진하게(1), 연하게(0)
- inverse : 글자 색상(1), 배경 색상(0)
(4) 셀 단위 색상 지정 (ctab_fname)
셀 단위 색상은 각 컬럼마다 색상 정보가 다를 수 있으므로, 한 행 안에서 여러 개의 셀 색상을 관리하기 위해 인터널 테이블(lvc_t_scol) 형태로 관리한다.
각 셀마다 다음 정보를 가진 구조(lvc_s_scol)를 사용한다.

DATA: BEGIN OF gs_flight. INCLUDE TYPE sflight. DATA: excp_fld TYPE char1, col_fld TYPE char4, lt_scol TYPE lvc_t_scol, END OF gs_flight. DATA ls_scol TYPE lvc_s_scol.gs_layout-info_fname = 'COL_FLD'. gs_layout-ctab_fname = 'LT_SCOL'.FORM get_data . SELECT * FROM sflight INTO CORRESPONDING FIELDS OF TABLE gt_flight WHERE carrid = pa_car AND connid IN so_con AND fldate IN so_fdt. IF sy-subrc = 0. LOOP AT gt_flight INTO gs_flight. IF gs_flight-fldate(4) = sy-datum(4). gs_flight-col_fld = 'C' && col_positive && '10'. ENDIF. DATA seatsremain TYPE i. seatsremain = gs_flight-seatsmax - gs_flight-seatsocc. IF seatsremain < 10. ls_scol-fname = 'SEATSMAX'. ls_scol-color-col = '6'. ls_scol-color-int = '0'. ls_scol-color-inv = '1'. APPEND ls_scol TO gs_flight-lt_scol. CLEAR ls_scol. ls_scol-fname = 'SEATSOCC'. ls_scol-color-col = '6'. ls_scol-color-int = '0'. ls_scol-color-inv = '1'. APPEND ls_scol TO gs_flight-lt_scol. ENDIF. MODIFY gt_flight FROM gs_flight TRANSPORTING col_fld lt_scol. CLEAR gs_flight. ENDLOOP. ENDIF. ENDFORM.
(5) 그리드 선 지우기 (no_hgridln / no_vgridln)
gs_layout-no_hgridln = 'X'. " 그리드 선 지우기(세로선) " gs_layout-no_vgridln = 'X'. " 그리드 선 지우기(가로선) "
5. 툴바 설정 (it_toolbar_excluding)
- MC_FC_ : 단일 기능 버튼 (Function code)
- MC_MB_ : 여러 기능 묶음 (Menu Button)
- MC_FC_EXCL_ALL : 모든 툴바 버튼 숨김
DATA: gt_uifunc TYPE ui_functions.FORM set_uifunc . APPEND cl_gui_alv_grid=>mc_mb_sum TO gt_uifunc. " 합계 버튼 " APPEND cl_gui_alv_grid=>mc_fc_filter TO gt_uifunc. " 필터 버튼 " APPEND cl_gui_alv_grid=>mc_fc_excl_all TO gt_uifunc. " 버튼 전체 안보이게 " ENDFORM.PERFORM set_uifunc. CALL METHOD go_alv->set_table_for_first_display EXPORTING i_structure_name = 'SBOOK' is_layout = gs_layout it_toolbar_excluding = gt_uifunc CHANGING it_outtab = gt_data EXCEPTIONS invalid_parameter_combination = 1 program_error = 2 too_many_lines = 3 OTHERS = 4.툴바 버튼 자체를 없앨 수도 있다.
FORM set_layout . ... gs_layout-no_toolbar = 'X'. " 툴바버튼 전체 없애기 " ENDFORM.※ it_toolbar_excluding VS no_toolbar
- it_toolbar_excluding은 특정 버튼만 숨김
- no_toolbar = 'X'는 툴바 전체 제거 → 툴바 영역 자체를 제거
'SAP > ABAP' 카테고리의 다른 글
[ABAP] #25 ALV의 Event Class (0) 2026.01.10 [ABAP] #24 Report Program - ALV (3) (0) 2026.01.10 [ABAP] #22 Report Program - ALV (1) (0) 2026.01.04 [ABAP] #21 Report Program (1) (0) 2025.12.31 [ABAP] #20 Search Help (0) 2025.12.31