[SALV] 1탄: 기본 생성

2026. 3. 26.
SAP ABAP SALV 시리즈 1탄. CL_SALV_TABLE 객체를 생성하고 데이터를 출력하는 가장 기초적이고 핵심적인 방법을 설명합니다.
 

CONTENTS: SALV 1탄 - 객체 생성 기초

 

    1. 실무 적용 코드 예시 (Basic SALV)

    
    " 1. 데이터 조회 (New SQL & Inline Declaration)
    SELECT *
      FROM sflight
      INTO TABLE @DATA(lt_flight)
      UP TO 100 ROWS.
    
    IF lt_flight IS NOT INITIAL.
      " 2. SALV 객체 생성 및 인스턴스화
      TRY.
          cl_salv_table=>factory(
            IMPORTING
              r_salv_table = DATA(lo_alv)
            CHANGING
              t_table      = lt_flight
          ).
    
          " 3. 화면 출력
          lo_alv->display( ).
    
        CATCH cx_salv_msg INTO DATA(lx_msg).
          MESSAGE lx_msg->get_text( ) TYPE 'E'.
      ENDTRY.
    ELSE.
      MESSAGE '조회된 데이터가 없습니다.' TYPE 'S' DISPLAY LIKE 'E'.
    ENDIF.
    

    2. 기술 상세 설명

    정의 (Definition)

    SALV(SAP ALV Object Model)는 기존 Function 기반(REUSE_ALV_*) 방식의 한계를 극복하기 위해 도입된 객체 지향형 ALV 모델입니다. CL_SALV_TABLE 클래스를 핵심으로 하며, 개발자가 일일이 필드 카탈로그를 작성하지 않아도 인터널 테이블의 구조를 스스로 파악하여 화면을 구성합니다.

    아키텍처 및 특징

    • Factory Pattern: 개발자가 직접 CREATE OBJECT를 수행하지 않고, 클래스 메서드인 factory를 통해 시스템이 최적화된 객체를 반환합니다.
    • Encapsulation: 그리드 설정, 컬럼 제어, 정렬 기능 등이 각각의 서브 클래스로 캡슐화되어 있어 관리가 용이합니다.

    장점 및 주의사항

    장점 (Pros) 주의사항 (Cons)
    Field Catalog 수동 생성 불필요 기본적으로 조회 전용 (Editable 불가)
    Inline Declaration으로 코드 최소화 HANA 외 환경에서 성능 차이 발생 가능
    객체 지향 코드로 가독성 우수 복잡한 다중 컨테이너 구현 시 추가 설정 필요

    3. 핵심 구현 포인트

    • @DATA(lt_flight): 데이터 조회와 동시에 테이블 구조와 변수를 선언합니다.
    • IMPORTING r_salv_table: 생성된 SALV 객체를 담을 참조 변수를 별도 선언 없이 그 자리에서 선언합니다.
    • Exception Handling: SALV는 런타임 오류 방지를 위해 cx_salv_msg 예외 처리를 권장합니다.