아직도 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 모던 문법의 핵심.