[ABAP] 모던 문법 실전 — FILTER, REDUCE, VALUE로 코드 줄이기

AI News · 조회 1

[ABAP] 모던 문법 실전 — FILTER, REDUCE, VALUE로 코드 줄이기

개요

ABAP 7.40 이후 도입된 VALUE, FILTER, REDUCE 연산자는 Internal Table 처리를 혁신적으로 간결하게 만들어줍니다. 기존에 10줄 이상 걸리던 테이블 초기화, 필터링, 집계를 1~3줄로 줄일 수 있습니다. S/4HANA 및 BTP ABAP Cloud 환경에서 권장되는 모던 문법입니다.

이 글에서 다루는 것

핵심 개념

코드 예제

1. VALUE — 테이블 한 줄 초기화

* 클래식 방식 (7줄)
DATA: lt_cities TYPE TABLE OF string.
APPEND 'Seoul' TO lt_cities.
APPEND 'Tokyo' TO lt_cities.
APPEND 'Berlin' TO lt_cities.

* 모던 방식 (1줄)
DATA(lt_cities) = VALUE string_table( ( `Seoul` ) ( `Tokyo` ) ( `Berlin` ) ).

* 구조체 테이블 초기화
TYPES: BEGIN OF ty_flight,
         carrid TYPE string,
         connid TYPE string,
         price  TYPE p DECIMALS 2,
       END OF ty_flight.

DATA(lt_flights) = VALUE ty_flight_tab(
  ( carrid = 'LH' connid = '400' price = '850.00' )
  ( carrid = 'AA' connid = '017' price = '650.00' )
  ( carrid = 'LH' connid = '401' price = '920.00' )
).

2. FILTER — 키 기반 필터링

* Sorted 테이블 + USING KEY로 필터링
TYPES ty_flight_sorted TYPE SORTED TABLE OF ty_flight
  WITH NON-UNIQUE KEY carrid.

DATA(lt_sorted) = CORRESPONDING ty_flight_sorted( lt_flights ).

* LH 항공만 필터링 (한 줄!)
DATA(lt_lh_flights) = FILTER #( lt_sorted
  USING KEY primary_key
  WHERE carrid = 'LH' ).

* 결과: LH 400, LH 401 두 건만 남음
* 주의: Standard Table에는 FILTER 사용 불가!

3. REDUCE — 합계 계산

* 전체 항공편 가격 합계
DATA(lv_total) = REDUCE p DECIMALS 2(
  INIT sum = CONV p DECIMALS 2( 0 )
  FOR flight IN lt_flights
  NEXT sum = sum + flight-price
).
* 결과: 2420.00

* 문자열 연결 (쉼표 구분)
DATA(lv_carriers) = REDUCE string(
  INIT result = ``
  FOR flight IN lt_flights
  NEXT result = COND #(
    WHEN result IS INITIAL THEN flight-carrid
    ELSE result && `, ` && flight-carrid )
).
* 결과: "LH, AA, LH"

* 조건부 카운트
DATA(lv_expensive) = REDUCE i(
  INIT count = 0
  FOR fl IN lt_flights
  NEXT count = COND #(
    WHEN fl-price > 800 THEN count + 1
    ELSE count )
).
* 결과: 2 (850, 920)

실무 팁

자세한 내용은 본문에서

참고 자료


📌 본 게시물은 AI(Claude)가 공개된 자료를 기반으로 자동 생성한 콘텐츠입니다. 기술 내용의 정확성은 SAP 공식 문서 와 교차 확인하시기 바랍니다.

™ SAP, S/4HANA, ABAP, Fiori, SAP BTP 등은 SAP SE 또는 그 계열사의 등록 상표입니다. 본 사이트는 SAP SE 와 공식적인 관련이 없는 비공식 학습 자료 입니다.

📧 저작권 침해 / 오류 / 콘텐츠 신고: btpstacks.com 의 "문의" 메뉴를 이용해주세요.