*&---------------------------------------------------------------------*
*& REDUCE 표현
*&
*& 인터널 테이블의 모든 행을 순차적으로 읽으면서 계산이 필요한 경우에 사용합니다.
*&---------------------------------------------------------------------*
TYPES : BEGIN OF LS_USER,
ID TYPE CHAR4,
NAME TYPE CHAR6,
VALUE(5) TYPE I,
END OF LS_USER.
TYPES : LT_USER TYPE TABLE OF LS_USER WITH KEY ID.
"기존문법
DATA : LT_SPFLI TYPE TABLE OF SPFLI,
LS_SPFLI LIKE LINE OF LT_SPFLI,
COUNT1(10),
COUNT2(10).
SELECT *
INTO TABLE LT_SPFLI
FROM SPFLI.
LOOP AT LT_SPFLI INTO LS_SPFLI WHERE CARRID = 'LH'.
COUNT1 = COUNT1 + 1.
ENDLOOP.
WRITE / : COUNT1.
"신규문법
COUNT2 = REDUCE I(
INIT X = 0 " X는 바로 생성 되어 선언 필요 없음.
FOR IS IN LT_SPFLI
WHERE ( CARRID = 'LH' ) "carrid가 'LH'면 계속 sum을 하여
NEXT X = X + 1 ). " count2 변수에 합산함.
WRITE /: COUNT2.
"신규문법
DATA(LT_DATA) = VALUE LT_USER(
( ID = '0002' NAME = 'HELLO' VALUE = 100 )
( ID = '0003' NAME = 'HELLO1' VALUE = 200 )
( ID = '0004' NAME = 'HELLO2' VALUE = 300 )
( ID = '0005' NAME = 'HELLO3' VALUE = 400 )
).
DATA(LV_SUM) = REDUCE SY-TABIX(
INIT LV_RESULT = 10 "LV_RESULT 는 바로 생성 되어 선언 필요 없음.
FOR LS_DATA IN LT_DATA " LS_DATA 는 바로 생성 되어 선언 필요 없음.
NEXT LV_RESULT = LV_RESULT + LS_DATA-VALUE ).
*BREAK-POINT.
'SAP·ABAP > ABAP' 카테고리의 다른 글
| Pass-by-Value vs Pass-by-Reference 이해하기 (0) | 2025.11.10 |
|---|---|
| ABAP 인터널테이블의 3가지 종류 가볍게 정리 (0) | 2025.11.07 |
| ABAP 신문법 - Move (0) | 2025.11.05 |
| ABAP 신문법 - 데이터선언, ALPHA Conversion, Currency, SIGN, VALUE #구문, (0) | 2025.11.05 |
| ABAP 신문법 - for in 예시 (0) | 2025.11.05 |