CS Student’s SAP&Tech Journey✨
[SAP] ALV (3) 사용자별 레이아웃 저장 / Layout Variant 설정 (IS_VARIANT, I_SAVE) 본문
SAP의 ALV는 기본적으로 표 형태로 데이터를 출력해주지만, 사용자마다 보고 싶은 뷰가 다를 수 있습니다. 어떤 사용자는 컬럼 순서를 바꾸고 싶고, 어떤 사용자는 특정 컬럼만 보고 싶어하기도 합니다.
이럴 때 사용하는 것이 바로 Layout Variant입니다.
Layout Variant는 사용자가 직접 구성한 뷰를 저장하고, 다음에도 그대로 불러와서 사용할 수 있도록 해주는 기능으로, SAP ALV에서 실무에서 가장 많이 쓰이는 옵션 중 하나입니다.
이번 포스팅에서는 SET_TABLE_FOR_FIRST_DISPLAY 메서드의 두 가지 핵심 파라미터인 IS_VARIANT와 I_SAVE 를 활용하여 사용자가 뷰를 저장하고 불러오는 기능을 구현해보겠습니다.
❓ Layout Variant란?
ALV에서 사용자가 설정한 컬럼 순서, 정렬, 필터, 숨김 컬럼 등을 저장해두고, 필요할 때마다 불러올 수 있도록 해주는 기능입니다. 실제 SAP의 표준 트랜잭션에서도 대부분 이 기능이 적용되어 있으며, ALV를 실무에 적용할 때 꼭 포함하는 편입니다.
▶ 클래스 CL_GUI_ALV_GRID의 메서드 SET_TABLE_FOR_FIRST_DISPLAY 파라미터 확인하기
SET_TABLE_FOR_FIRST_DISPLAY 메서드의 두 가지 핵심 파라미터인 IS_VARIANT와 I_SAVE를 확인하기 위해서 해당 파라미터들이 어떤 타입인지, 어떻게 전달되어야 하는지 확인합니다.
1️⃣ SE24 → CL_GUI_ALV_GRID → 메서드 → SET_TABLE_FOR_FIRST_DISPLAY
2️⃣ Signature 탭에서 IS_VARIANT, I_SAVE 확인
3️⃣ IS_VARIANT와 I_SAVE 타입 확인하기
IS_VARIANT TYPE DISVARIANT " 구조체
I_SAVE TYPE CHAR01 " 문자 1자리
이처럼 직접 타입을 확인하면 선언 시 헷갈릴 일이 없습니다.
▶ TOP ( IS_VARIANT, I_SAVE 변수 선언)
DATA gs_variant TYPE disvariant.
DATA gv_save TYPE char01.
TOP에 Variant 설정을 위한 구조체와 저장 옵션을 선언합니다.
▶ TOP : 화면에 사용자 레이아웃 이름을 입력받기
사용자가 불러올 Variant 이름을 직접 입력할 수 있도록 Selection Screen에 아래와 같은 파라미터를 추가합니다.
PARAMETERS pa_lay TYPE disvariant-variant.
▶ 사용자 Layout 정보를 ALV에 전달
SET_TABLE_FOR_FIRST_DISPLAY 호출 전에 아래처럼 Layout 정보를 채워서 넘겨줍니다.
MODULE init_control OUTPUT.
GS_VARIANT-report = SY-CPROG. " 현재 프로그램 이름 (필수) "
GS_VARIANT-variant = PA_LAY. " 화면에서 입력받은 사용자가 선택한 뷰 이름
GV_SAVE = 'A'. "일단 A로 고정
ENDMODULE.
✔️ SAVE 저장 옵션 의미 정리
값 | 의미 |
U | 만든 사람(본인)만 사용 가능 |
X | 만든 사람 외 모든 사용자 사용 가능 |
A | 만든 시점에 U 또는 X를 선택 가능하게 함 (✅ 가장 유연함) |
▶ XXXXXO01(PBO) : ALV 호출 시 적용
MODULE init_control OUTPUT.
IF GO_CON IS INITIAL.
CREATE OBJECT go_con
EXPORTING
container_name = 'MY_CON'.
CREATE OBJECT go_alv
EXPORTING
i_parent = go_con.
" display_control 모듈 "
GS_LAYOUT-CWIDTH_OPT ='X'.
CALL METHOD go_alv->set_table_for_first_display
EXPORTING
i_structure_name = 'SDYN_CONN'
is_variant = GS_VARIANT " is_variant 추가 "
i_save = GV_SAVE " i_save 추가 "
is_layout = GS_LAYOUT
CHANGING
it_outtab = gt_conn.
ENDIF.
ENDMODULE.
▶ 뷰 저장 및 불러오기 화면
✔️내가 원하는 형태로 Layout 변경
✔️ ALV 우측 상단 'Layout 저장' 아이콘 클릭
✔️ 이름 입력 후 저장
✔️저장된 Layout은 다음 호출 시 불러올 수 있음
'SAP > ALV' 카테고리의 다른 글
[SAP] ALV (5) 사용자 정의 컬럼 구성 - Field Catalog 설정 및 아이콘 출력하기 (0) | 2025.03.28 |
---|---|
[SAP] ALV (4) 시각적 제어 기능 - 신호등, 컬러 강조, FREE 함수 / 코드 리펙토링 (0) | 2025.03.28 |
[SAP] ALV (2) 화면 갱신 / refresh_table_display 메서드로 데이터 반영하기 (0) | 2025.03.25 |
[SAP] ALV (1) 기본 개념 / 객체지향 ALV(CL_GUI_ALV_GRID)로 화면 구성하기 (0) | 2025.03.21 |