아직도 LOOP AT 쓰세요? FOR 문법으로 끝 #shorts #SAP #ABAP

Moderator · 조회 2

전통 LOOP AT의 문제

ABAP의 고전적인 LOOP AT 구문은 내부 테이블을 순회하면서 새 테이블을 만들 때 코드가 장황해집니다. 워크 에리어 선언, APPEND, ENDLOOP까지 최소 5~6줄이 필요합니다.

DATA lt_result TYPE TABLE OF zs_result.
DATA ls_item   TYPE zs_item.

LOOP AT lt_items INTO ls_item.
  DATA(ls_result) = VALUE zs_result(
    id    = ls_item-id
    price = ls_item-price * 1.1 ).
  APPEND ls_result TO lt_result.
ENDLOOP.

FOR 모던 문법

ABAP 7.40부터 도입된 FOR 표현식을 사용하면 동일한 로직을 한 줄로 처리할 수 있습니다. VALUE 생성자 안에서 FOR로 기존 테이블을 순회하고 원하는 필드를 직접 매핑합니다.

DATA(lt_result) = VALUE zs_result_t(
  FOR ls IN lt_items
  ( id    = ls-id
    price = ls-price * 1.1 ) ).

WHERE 조건 추가

필터링도 FOR 안에서 바로 처리할 수 있습니다.

DATA(lt_expensive) = VALUE zs_result_t(
  FOR ls IN lt_items
  WHERE ( price > 100 )
  ( id = ls-id  price = ls-price ) ).

REDUCE와 조합

FOR로 변환한 결과를 REDUCE에 넘기면 집계까지 한 표현식으로 완성됩니다.

DATA(lv_total) = REDUCE i(
  INIT sum = 0
  FOR ls IN lt_items
  NEXT sum = sum + ls-price ).

실무 활용 포인트

FOR 문법은 가독성과 성능 모두 개선합니다. 별도의 워크 에리어가 필요 없고, 한눈에 변환 로직을 파악할 수 있습니다. LOOP AT는 복잡한 분기가 필요할 때만 사용하고, 단순 변환/필터링은 FOR로 교체하세요.

핵심 한 줄

FOR 표현식 = LOOP AT 5줄 → 1줄 — ABAP 모던 문법의 핵심.