SAP

SAP ALV 리포트 개발 마스터: 데이터 시각화의 모든 것 (기본편)

디지털 현자 2025. 7. 14. 07:55
반응형

 
안녕하세요, 디지털 현자입니다! SAP에서 데이터를 효과적으로 시각화하고 싶으신가요? 오늘은 ABAP 개발의 핵심인 ALV (ABAP List Viewer) 리포트 개발의 기본을 마스터하는 시간을 가져보겠습니다. 함께 데이터를 보기 좋고 이해하기 쉽게 만들어봐요!
 
기업 내 다양한 시스템에서 생성되는 방대한 데이터를 효과적으로 분석하고 활용하기 위해서는 시각화가 매우 중요합니다. SAP 시스템 역시 수많은 데이터를 담고 있으며, 이 데이터를 사용자가 원하는 형태로 보기 쉽게 출력하고 분석할 수 있도록 지원하는 강력한 도구가 바로 **ABAP List Viewer (ALV)**입니다.
 
오늘은 ALV 리포트 개발의 기본적인 개념과 구현 방법을 통해 데이터를 시각화하는 첫걸음을 내딛어 보겠습니다.
 

1. ALV 리포트란 무엇일까요? (데이터를 보기 좋게!)

ALV는 ABAP 프로그램에서 테이블 형태의 데이터를 화면에 보기 좋게 표시하고, 다양한 사용자 편의 기능을 제공하는 표준 SAP 컨트롤입니다. 단순히 데이터를 나열하는 것을 넘어, 다음과 같은 유용한 기능을 기본적으로 제공합니다.
 

  • 컬럼 헤더 표시 및 텍스트 설정: 각 컬럼의 의미를 명확하게 전달합니다.
  • 컬럼 너비 자동 조절 및 수동 변경: 데이터 내용에 맞춰 컬럼 너비를 최적화합니다.
  • 컬럼 정렬 (오름차순, 내림차순): 특정 컬럼을 기준으로 데이터를 정렬하여 패턴을 쉽게 파악할 수 있도록 합니다.
  • 컬럼 필터링: 특정 조건에 맞는 데이터만 선택적으로 표시합니다.
  • 컬럼 합계 및 소계: 숫자형 데이터의 합계 또는 특정 그룹별 소계를 자동으로 계산하여 보여줍니다.
  • Excel 다운로드: 화면에 표시된 데이터를 MS Excel 파일로 쉽게 내보낼 수 있습니다.
  • 레이아웃 저장 및 불러오기: 자주 사용하는 화면 레이아웃을 저장해두고 재사용할 수 있습니다.

이러한 기능 덕분에 ALV 리포트는 최종 사용자에게 데이터를 효율적으로 전달하고, 데이터 분석 작업을 용이하게 만들어 줍니다.
 
 

2. ALV 리포트 개발 방식 (두 가지 주요 방법)

ABAP에서 ALV 리포트를 개발하는 방법은 크게 두 가지가 있습니다.

  • Function Module 방식 (Object-Based ALV): SAP에서 제공하는 특정 Function Module들을 호출하여 ALV 기능을 구현하는 방식입니다. 비교적 유연성이 높고 다양한 고급 기능을 활용할 수 있습니다.
  • OO ALV 방식 (Object-Oriented ALV): ABAP Objects를 활용하여 ALV 기능을 구현하는 방식입니다. 클래스와 메소드를 사용하여 보다 구조적이고 객체 지향적인 개발이 가능하며, 재사용성과 유지보수성이 높습니다.

이번 '기본편'에서는 이해하기 쉽고 기본적인 기능 구현에 용이한 Function Module 방식을 중심으로 설명하겠습니다.
 
 

3. Function Module을 이용한 ALV 리포트 개발 (기본 단계)

Function Module 방식을 사용하여 ALV 리포트를 개발하는 기본적인 단계는 다음과 같습니다.
 
단계 1: 데이터 가져오기 ALV 리포트에 표시할 데이터를 SAP 테이블에서 읽어오거나, 내부 로직을 통해 생성하여 **내부 테이블(Internal Table)**에 저장합니다. 이는 ALV가 표시할 데이터의 원천이 됩니다.
 
예시: 고객 마스터 테이블 (KNA1)에서 고객 번호, 이름, 도시 정보를 가져오는 코드를 가정해 보겠습니다.

ABAP
 
REPORT ZALV_BASIC.

*-- 데이터 선언
TYPES: BEGIN OF ty_kna1,
         kunnr TYPE kna1-kunnr,
         name1 TYPE kna1-name1,
         ort01 TYPE kna1-ort01,
       END OF ty_kna1.

DATA: gt_kna1 TYPE STANDARD TABLE OF ty_kna1 WITH EMPTY KEY,
      gs_kna1 TYPE ty_kna1.

*-- 데이터 조회 (최대 100건)
SELECT kunnr name1 ort01
  FROM kna1
  INTO CORRESPONDING FIELDS OF TABLE gt_kna1
  UP TO 100 ROWS.

IF sy-subrc <> 0.
  WRITE: '고객 데이터를 찾을 수 없습니다.'.
  EXIT.
ENDIF.

 
단계 2: ALV 출력에 필요한 데이터 구조 정의 ALV Function Module에 전달할 데이터 구조를 정의합니다. 특히 **필드 카탈로그(Field Catalog)**는 ALV에 표시할 컬럼의 속성 (헤더 텍스트, 출력 길이, 데이터 형식 등)을 정의하는 중요한 내부 테이블입니다.

ABAP
 
*-- ALV 출력용 필드 카탈로그 구조 정의
TYPES: BEGIN OF ty_fieldcat,
         fieldname   TYPE slis_fieldname,   " 필드 이름
         seltext_l   TYPE slis_utext,       " 컬럼 헤더 (긴 텍스트)
         outputlen   TYPE slis_outlen,      " 출력 길이
       END OF ty_fieldcat.

DATA: gt_fieldcat TYPE STANDARD TABLE OF ty_fieldcat WITH EMPTY KEY,
      gs_fieldcat TYPE ty_fieldcat.

*-- 필드 카탈로그 데이터 채우기
gs_fieldcat-fieldname = 'KUNNR'.
gs_fieldcat-seltext_l = '고객 번호'.
gs_fieldcat-outputlen = 10.
APPEND gs_fieldcat TO gt_fieldcat.

gs_fieldcat-fieldname = 'NAME1'.
gs_fieldcat-seltext_l = '고객 이름'.
gs_fieldcat-outputlen = 30.
APPEND gs_fieldcat TO gt_fieldcat.

gs_fieldcat-fieldname = 'ORT01'.
gs_fieldcat-seltext_l = '도시'.
gs_fieldcat-outputlen = 20.
APPEND gs_fieldcat TO gt_fieldcat.

 
단계 3: ALV Function Module 호출 SAP에서 제공하는 ALV 관련 Function Module 중 하나를 호출하여 데이터를 화면에 출력합니다. 가장 기본적인 ALV 출력을 위해서는 REUSE_ALV_GRID_DISPLAY Function Module을 주로 사용합니다.

ABAP
 
*-- ALV Grid Display Function Module 호출
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    i_callback_program = sy-repid      " 현재 프로그램 이름
    it_fieldcat        = gt_fieldcat    " 필드 카탈로그
  TABLES
    t_outtab           = gt_kna1        " 출력 데이터 (내부 테이블)
  EXCEPTIONS
    program_error      = 1
    too_many_lines     = 2
    others             = 3.

IF sy-subrc <> 0.
  WRITE: 'ALV 출력 중 오류가 발생했습니다.'.
ENDIF.

 
위의 코드를 하나의 ABAP 프로그램으로 작성하고 실행하면, gt_kna1 내부 테이블의 고객 데이터가 '고객 번호', '고객 이름', '도시'라는 컬럼 헤더와 함께 ALV Grid 형태로 화면에 표시됩니다. 기본적인 정렬, 필터링, Excel 다운로드 등의 ALV 기본 기능도 자동으로 제공됩니다.
 

4. 추가적인 ALV 기능 활용 (기본편에서 맛보기)

REUSE_ALV_GRID_DISPLAY Function Module은 다양한 Exporting 파라미터를 통해 추가적인 기능을 설정할 수 있습니다. 몇 가지 기본적인 예시를 살펴보겠습니다.

  • 리포트 제목 설정: i_title 파라미터를 사용하여 ALV 리포트의 제목을 지정할 수 있습니다.
  • 합계 표시: 필드 카탈로그에서 해당 컬럼에 대해 합계를 표시하도록 설정 (do_sum = 'X') 하면 ALV 하단에 자동으로 합계가 표시됩니다.
  • 소계 표시: 정렬 기준을 설정하고, 해당 필드 카탈로그에서 소계를 표시하도록 설정 (do_subtot = 'X') 하면 정렬된 그룹별로 소계가 표시됩니다.

이 외에도 다양한 기능을 활용하여 ALV 리포트를 더욱 풍부하고 유용하게 만들 수 있습니다.
 

마치며: ALV 리포트 개발의 첫걸음

오늘은 ALV 리포트 개발의 가장 기본적인 개념과 Function Module (REUSE_ALV_GRID_DISPLAY)을 이용한 간단한 구현 방법을 살펴보았습니다. ALV는 SAP 데이터를 효과적으로 시각화하는 데 매우 강력한 도구이며, 앞으로 더 다양한 기능을 익히고 활용함으로써 더욱 전문적인 리포트를 개발할 수 있을 것입니다.
 
다음 시간에는 ALV 리포트 개발의 심화 과정으로 넘어가, 다양한 설정 옵션과 이벤트 처리 등에 대해 알아보도록 하겠습니다.
 

디지털 현자 드림.

반응형