SAP ALV(ABAP List Viewer) 정리
SAP의 ALV (ABAP List Viewer)는 데이터를 화면에 보기 좋게 출력하고, 정렬, 필터링, 합계 등의 기능을 손쉽게 구현할 수 있도록 제공되는 강력한 도구입니다. 과거엔 WRITE 구문을 이용한 LIST 화면을 구성하였는데, 이렇게 화면을 구성할 경우, 조회된 데이터를 엑셀로 다운로드하는 기능을 추가하려면 GUI STATUS를 생성하여 버튼을 화면에 추가하고 사용자가 버튼을 클릭 시 이벤트 스크립트를 기술하는 등의 구현작업이 필요했습니다. ALV는 이러한 작업들이 포함된 패키지 프로그램으로 제공하여 개발자에게 편의성을 제공합니다.
최신 ALV는 객체지향(OOP) 방식과 함수 모듈(Function Module) 방식을 모두 지원하며, SAP HANA 환경에서는 효율적인 ALV 구현이 더욱 중요해지고 있습니다.

1. ALV의 주요 기능
ALV를 사용하면 다음과 같은 기능을 쉽게 구현할 수 있습니다.
✅ 컬럼 정렬 및 필터링
✅ 합계 및 서브토탈 계산
✅ 컬럼 레이아웃 변경 및 사용자 설정 저장
✅ CSV, Excel 내보내기 및 프린트 출력 기능
✅ 데이터 색상 강조 및 조건부 서식 지정
✅ 인터랙티브 ALV 기능 지원
2. ALV 구현 방법
ALV는 구현 방식에 따라 Function Module 방식, Object-Oriented 방식, 그리고 SAP GUI Grid 방식이 있습니다.
① Function Module 방식(ALV Grid Display)
가장 기본적인 방식으로, SAP에서 제공하는 REUSE_ALV_LIST_DISPLAY 또는 REUSE_ALV_GRID_DISPLAY 함수 모듈을 사용하여 데이터를 출력하는 방법입니다.
✅ 기본적인 ALV 목록 출력 예제
DATA: lt_list TYPE TABLE OF sflight. "출력할 데이터 선언"
SELECT * FROM sflight INTO TABLE lt_list. "데이터 가져오기"
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid "현재 프로그램 이름"
TABLES
t_outtab = lt_list. "출력할 내부 테이블"
✔ REUSE_ALV_LIST_DISPLAY는 기본적인 리스트 형식의 ALV를 출력합니다.
✔ REUSE_ALV_GRID_DISPLAY를 사용하면 그리드 형태의 ALV를 출력할 수 있습니다.
② 객체지향 방식 (OOP 기반 ALV)
SAP NetWeaver 7.0 이후부터는 객체지향 방식의 CL_SALV_TABLE 클래스를 사용하여 ALV를 구현하는 것이 권장됩니다.
✅ OOP 기반 ALV 그리드 출력 예제
DATA: lo_alv TYPE REF TO cl_salv_table, "ALV 객체 선언"
lt_list TYPE TABLE OF sflight. "데이터 테이블 선언"
SELECT * FROM sflight INTO TABLE lt_list. "데이터 가져오기"
TRY.
" ALV 객체 생성 "
cl_salv_table=>factory( IMPORTING r_salv_table = lo_alv CHANGING t_table = lt_list ).
" ALV 출력 "
lo_alv->display( ).
CATCH cx_salv_msg INTO DATA(lx_msg).
MESSAGE lx_msg->get_text( ) TYPE 'E'.
ENDTRY.
✔ CL_SALV_TABLE을 사용하면 별도의 레이아웃 설정 없이 기본적인 ALV 기능을 바로 활용할 수 있습니다.
✔ 기존 REUSE_ALV_GRID_DISPLAY보다 코드가 간결하며, 객체지향적인 접근 방식이므로 유지보수가 쉽습니다.
③ ALV Grid Control 방식 (SAP GUI ALV)
SAP GUI 환경에서는 CL_GUI_ALV_GRID 클래스를 사용하여 ALV 그리드를 구현할 수도 있습니다.
✅ SAP GUI에서 ALV Grid를 활용한 예제
DATA: go_container TYPE REF TO cl_gui_custom_container, "컨테이너 객체"
go_grid TYPE REF TO cl_gui_alv_grid, "ALV Grid 객체"
lt_list TYPE TABLE OF sflight. "데이터 테이블"
SELECT * FROM sflight INTO TABLE lt_list. "데이터 조회"
# 화면 컨테이너 생성
CREATE OBJECT go_container
EXPORTING
container_name = 'ALV_CONTAINER'.
# ALV Grid 객체 생성
CREATE OBJECT go_grid
EXPORTING
i_parent = go_container.
# ALV 데이터 출력
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
it_outtab = lt_list.
✔ 이 방식은 SAP GUI 화면에서 동적으로 ALV를 구현할 때 유용합니다.
✔ 다만, Web Dynpro 또는 최신 Fiori 환경에서는 권장되지 않습니다.
3. ALV 필수 설정
ALV의 기본적인 기능을 향상시키기 위해 여러 가지 설정을 추가할 수 있습니다.
① ALV 필드 설정 (Field Catalog 생성)
각 컬럼의 이름, 너비, 정렬 방식 등을 설정하려면 필드 카탈로그를 정의해야 합니다.
DATA: lt_fcat TYPE slis_t_fieldcat_alv, "필드 카탈로그 테이블"
ls_fcat TYPE slis_fieldcat_alv. "개별 필드 속성"
" 첫 번째 컬럼 설정"
ls_fcat-fieldname = 'CARRID'. "컬럼에 표시될 필드명"
ls_fcat-seltext_m = '항공사 코드'. "컬럼 제목"
ls_fcat-outputlen = 10. "출력 길이"
APPEND ls_fcat TO lt_fcat.
" ALV 호출 시 필드 카탈로그 적용"
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = lt_fcat
TABLES
t_outtab = lt_list.
② 정렬 및 필터 기능 추가
SAP ALV는 기본적으로 정렬(SORT)과 필터(FILTER) 기능을 제공합니다.
DATA: lt_sort TYPE slis_t_sortinfo_alv, "정렬 정보"
ls_sort TYPE slis_sortinfo_alv.
ls_sort-fieldname = 'CARRID'. "정렬할 필드"
ls_sort-up = 'X'. "오름차순 정렬"
APPEND ls_sort TO lt_sort.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_sort = lt_sort
TABLES
t_outtab = lt_list.
✔ SLIS_T_SORTINFO_ALV 구조를 사용하여 정렬 기준을 정의할 수 있습니다.
4. ALV의 최신 기능 (SAP HANA 최적화)
SAP HANA 환경에서는 ALV 성능을 최적화하기 위해 다음과 같은 기능을 활용할 수 있습니다.
① CDS View를 사용한 ALV 구현
CDS View를 활용하면 SAP HANA의 강력한 데이터 처리 기능을 사용할 수 있습니다.
SELECT * FROM zcds_my_alv_view INTO TABLE lt_list.
cl_salv_table=>factory( IMPORTING r_salv_table = lo_alv CHANGING t_table = lt_list ).
lo_alv->display( ).
✔ 기존 SELECT 문 대신 CDS View를 사용하면 데이터베이스에서 직접 복잡한 데이터를 처리할 수 있습니다.
✔ Code Pushdown을 통해 SAP HANA의 성능을 극대화할 수 있습니다.
5. SAP ABAP ALV 심화 활용 가이드 🚀
SAP ALV(ABAP List Viewer)는 단순한 데이터 출력뿐만 아니라 사용자 인터페이스(UI) 커스터마이징, 이벤트 핸들링, Excel 내보내기, 조건부 서식 적용 등 다양한 기능을 제공합니다. 심화 기능을 활용하면 사용자 경험(UX) 향상, 데이터 분석 기능 강화, 시스템 성능 최적화가 가능합니다.
1. ALV 이벤트 핸들링 (이벤트 처리)
✅ 1.1 더블 클릭 이벤트 처리
사용자가 특정 행을 더블 클릭하면 상세 정보를 표시하는 기능을 구현할 수 있습니다.
CLASS lcl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS on_double_click FOR EVENT double_click OF cl_salv_events_table
IMPORTING row column.
ENDCLASS.
CLASS lcl_event_handler IMPLEMENTATION.
METHOD on_double_click.
MESSAGE '해당 행이 선택되었습니다!' TYPE 'I'.
ENDMETHOD.
ENDCLASS.
DATA: lo_events TYPE REF TO cl_salv_events_table,
lo_handler TYPE REF TO lcl_event_handler.
" ALV 생성
cl_salv_table=>factory( IMPORTING r_salv_table = lo_alv CHANGING t_table = lt_list ).
" 이벤트 핸들러 연결
lo_events = lo_alv->get_event( ).
CREATE OBJECT lo_handler.
SET HANDLER lo_handler->on_double_click FOR lo_events.
" ALV 출력
lo_alv->display( ).
✔ on_double_click 메서드는 사용자가 특정 행을 더블 클릭했을 때 호출됩니다.
✔ 이를 활용해 상세 팝업 창을 띄우거나, 특정 데이터를 더 깊이 분석할 수 있습니다.
2. ALV 내보내기 (Excel, PDF, CSV 등)
ALV 데이터는 기본적으로 Excel, PDF, CSV 등으로 내보내기(Export) 할 수 있습니다.
✅ 2.1 ALV 데이터를 Excel로 내보내기
SAP에서 제공하는 표준 기능을 사용하면 버튼 한 번으로 ALV 데이터를 Excel로 변환할 수 있습니다.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = 'C:\ALV_OUTPUT.XLS'
filetype = 'ASC'
TABLES
data_tab = lt_list.
✔ GUI_DOWNLOAD를 사용하면 ALV 데이터를 손쉽게 Excel, CSV, TXT 파일로 변환할 수 있습니다.
3. ALV 조건부 서식 및 강조 표시
데이터 값에 따라 색상을 변경하거나, 특정 조건을 만족하는 경우 강조 표시할 수 있습니다.
✅ 3.1 특정 행의 배경색 변경
DATA: lt_color TYPE slis_t_specialcol_alv,
ls_color TYPE slis_specialcol_alv.
" 1번 행의 배경색을 빨간색으로 설정
ls_color-fieldname = 'CARRID'.
ls_color-color_col = 5. " 컬럼 색상 (5 = 빨간색)
ls_color-color = 'C610'. " 빨간색 코드
APPEND ls_color TO lt_color.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_special_groups = lt_color
TABLES
t_outtab = lt_list.
✔ 색상을 이용해 특정 값을 강조하면, 데이터 분석이 용이해집니다.
✔ color = 'C610' → 빨간색, C610 → 노란색 등 다양한 색상을 지정할 수 있습니다.
4. ALV 데이터 편집 가능하게 만들기
기본적으로 ALV는 읽기 전용이지만, 데이터를 직접 수정할 수 있도록 편집 모드를 활성화할 수도 있습니다.
DATA: lt_fcat TYPE slis_t_fieldcat_alv,
ls_fcat TYPE slis_fieldcat_alv.
" 특정 필드를 수정 가능하도록 설정
ls_fcat-fieldname = 'SEATSMAX'.
ls_fcat-edit = 'X'. " 편집 가능 설정
APPEND ls_fcat TO lt_fcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = lt_fcat
TABLES
t_outtab = lt_list.
✔ 특정 컬럼을 편집 가능하게 만들면, 사용자가 데이터를 직접 입력 및 수정할 수 있습니다.
5. ALV 필터 및 검색 기능
ALV 데이터가 많을 경우 특정 조건에 따라 필터링 및 검색 기능을 추가할 수 있습니다.
✅ 5.1 ALV 데이터 필터링
DATA: lt_filter TYPE slis_t_filter_alv,
ls_filter TYPE slis_filter_alv.
" 조건: 항공사 코드가 'LH'인 데이터만 표시
ls_filter-fieldname = 'CARRID'.
ls_filter-sign = 'I'.
ls_filter-option = 'EQ'.
ls_filter-low = 'LH'.
APPEND ls_filter TO lt_filter.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_filter = lt_filter
TABLES
t_outtab = lt_list.
✔ 필터를 적용하면 사용자가 원하는 데이터만 ALV에 표시할 수 있습니다.
6. ALV 활용 팁
✅ ALV 이벤트 핸들러 활용
ALV에서는 특정 이벤트(더블 클릭, 필터 변경 등)를 감지하여 추가 기능을 구현할 수 있습니다.
✅ ALV 스타일 지정 (색상 강조, 아이콘 추가)
컬럼의 스타일을 변경하여 데이터를 강조할 수 있습니다.
✅ ALV 데이터 내보내기 (Excel, PDF)
SAP ALV는 데이터를 Excel이나 PDF로 내보내는 기능을 기본으로 제공합니다.
7. 결론
SAP의 ALV는 데이터 출력, 사용자 인터랙션, 성능 최적화에 필수적인 도구입니다.
SAP HANA 시대에는 CDS View와 객체지향 방식(CL_SALV_TABLE)을 활용한 ALV 구현이 더욱 중요합니다.
'ERP(SAP)' 카테고리의 다른 글
SAP CDS View 완벽 가이드: 개념, 유형, 실무 사례 및 활용 방법 (0) | 2025.02.19 |
---|---|
SAP 채용, 연봉 및 취업 준비 방법, 커리어 (1) | 2025.02.18 |
SAP MSEG과 생산오더 테이블 (0) | 2025.02.14 |
SAP ERP의 모든 것: S/4HANA부터 SAP 클라우드까지 총정리 (2) | 2025.02.13 |
SAP GUI 서버 접속 세팅 및 그룹/서버 접속 안될 때 (0) | 2025.02.06 |