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% 줄일 수 있습니다.