ABAP 초기화, 아직도 APPEND 3번? — VALUE #() #shorts #SAP #ABAP
Moderator
· 조회 3
기존 방식 vs VALUE #( ) 비교
ABAP에서 내부 테이블에 데이터를 채울 때 기존 방식은 CLEAR·MOVE·APPEND를 매번 반복해야 했습니다. 행이 10개면 30줄이 넘는 코드가 생깁니다.
" 기존 방식 (3줄 × n행)
CLEAR ls_order.
ls_order-id = '0001'.
ls_order-amount = 100.
APPEND ls_order TO lt_orders.
ls_order-id = '0002'.
ls_order-amount = 200.
APPEND ls_order TO lt_orders.
VALUE #( ) 신문법
ABAP 7.40부터 도입된 VALUE #( ) 생성자를 쓰면 테이블 선언과 초기화를 한 블록으로 묶을 수 있습니다.
" VALUE 신문법 — 선언 + 초기화 동시에
DATA(lt_orders) = VALUE ty_orders(
( id = '0001' amount = 100 )
( id = '0002' amount = 200 )
).
구조체 초기화에도 동일 적용
단일 구조체(Struct)도 VALUE #( ) 로 한 번에 초기화합니다. 테스트 데이터 생성이나 메서드 파라미터 전달 시 특히 유용합니다.
DATA(ls_cust) = VALUE ty_cust(
id = 'C001'
name = 'SAP Korea'
).
FOR 반복과 조합 — 필터링까지 한 줄
VALUE #( FOR ... WHERE ... ) 패턴을 사용하면 기존 테이블 가공도 루프 없이 표현할 수 있습니다.
DATA(lt_vip) = VALUE ty_orders(
FOR ls IN lt_orders
WHERE ( amount > 100 )
( id = ls-id amount = ls-amount )
).
핵심 한 줄
VALUE #( ) 생성자 하나로 CLEAR·MOVE·APPEND 3단계를 없애고 내부 테이블 초기화 코드를 80% 줄일 수 있습니다.