REDUCE is used to aggregate values like totals, counts, etc., in a clean, functional style.
*&---------------------------------------------------------------------*
*& Report ZREP_LCLCLASS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zrep_lclclass.
TYPES: BEGIN OF ty_order,
id TYPE i,
amount TYPE i,
END OF ty_order.
DATA: lt_orders TYPE STANDARD TABLE OF ty_order WITH EMPTY KEY,
lv_total TYPE i.
lt_orders = VALUE #(
( id = 1 amount = 100 )
( id = 2 amount = 250 )
( id = 3 amount = 150 )
).
lv_total = REDUCE i( INIT sum = 0
FOR order IN lt_orders
NEXT sum = sum + order-amount ).
WRITE: / 'Total Amount:', lv_total. Output:
Total Amount: 500