배경
ALV에 코드값(SA, 01)만 표시하면 사용자가 의미를 알 수 없음.
ZDE3_FI_BLART = SA → 일반전표 처럼 텍스트로 변환해서 보여줘야 함.
SAP는 도메인 고정값(Fixed Values)의 텍스트를 DD07T 테이블에 저장함.
DD07T 구조
컬럼 설명
| DOMNAME | 도메인명 (예: ZDE3_FI_BLART) |
| DOMVALUE_L | 코드값 (예: SA) |
| DDTEXT | 텍스트 (예: 일반전표) |
| DDLANGUAGE | 언어키 (WHERE 빠지면 전체 언어 조회됨 주의) |
코드 분석
① 도메인 텍스트 Bulk SELECT
SELECT domvalue_l AS key, ddtext
INTO TABLE @DATA(lt_stgrd)
FROM dd07t
WHERE domname EQ 'ZDE3_FI_STGRD'.
SORT lt_stgrd BY key.
- 도메인 전체 고정값을 한 번에 메모리로 가져옴
- SORT 는 이후 BINARY SEARCH 를 위한 전처리
- LOOP 안에서 SELECT 하지 않는 것이 핵심 ← N+1 쿼리 방지
② LOOP + FIELD-SYMBOL + BINARY SEARCH
LOOP AT gt_header ASSIGNING FIELD-SYMBOL(<fs_h>).
READ TABLE lt_stgrd INTO DATA(ls_stgrd)
WITH KEY key = <fs_h>-stgrd
BINARY SEARCH.
IF sy-subrc EQ 0.
<fs_h>-stgrd_txt = ls_stgrd-ddtext.
ENDIF.
ENDLOOP.
포인트 3가지:
FIELD-SYMBOL (<fs_h>) — 복사본이 아닌 원본 참조
" INTO ls_h → 복사본 수정 → gt_header 안 바뀜 (❌)
" ASSIGNING <fs_h> → 원본 직접 수정 (✅)
BINARY SEARCH — 정렬된 테이블에서 O(log n) 탐색
" SORT 없이 BINARY SEARCH → 결과 보장 안 됨 (❌)
" SORT → BINARY SEARCH 세트로 사용 (✅)
sy-subrc 체크 — 코드값이 도메인에 없는 경우 방어
IF sy-subrc EQ 0. " 찾았을 때만 텍스트 세팅
전체 흐름 요약
DD07T (도메인 고정값 테이블)
│
│ SELECT (Bulk, 1회)
▼
lt_stgrd / lt_blart (메모리)
│
│ SORT → BINARY SEARCH
▼
gt_header (ALV 출력 테이블)
stgrd_txt / blart_txt 컬럼에 텍스트 세팅
주의사항
언어 필터를 빠뜨리면 다국어 레코드가 중복 조회됨.
운영 시스템에서는 WHERE 절에 추가 권장:
WHERE domname EQ 'ZDE3_FI_BLART'
AND ddlanguage EQ sy-langu. " 현재 로그인 언어
'ABAP > 기초' 카테고리의 다른 글
| [ABAP] SAP ABAP 엑셀 템플릿 다운로드 구현 (SMW0 + DOWNLOAD_WEB_OBJECT) (0) | 2026.05.23 |
|---|---|
| [ABAP] ALV 불필요한 툴바 버튼 제거하는법 (0) | 2026.05.23 |