*&---------------------------------------------------------------------*
*& Report ZREP_LCLCLASS
*&---------------------------------------------------------------------*
*& Demonstrates modern ABAP syntax: REDUCE, FILTER, FOR expressions
*&---------------------------------------------------------------------*
REPORT zrep_lclclass.
*----------------------------
* Example 1: REDUCE Operator
*----------------------------
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: / '--- REDUCE Example ---',
/ 'Total Amount:', lv_total.
*----------------------------
* Example 2: FILTER Operator
*----------------------------
TYPES: BEGIN OF ty_user,
name TYPE string,
status TYPE string,
END OF ty_user.
DATA: lt_users TYPE STANDARD TABLE OF ty_user WITH EMPTY KEY,
lt_active_users TYPE STANDARD TABLE OF ty_user WITH EMPTY KEY.
lt_users = VALUE #(
( name = 'Alice' status = 'ACTIVE' )
( name = 'Bob' status = 'INACTIVE' )
( name = 'Charlie' status = 'ACTIVE' )
).
lt_active_users = FILTER #( lt_users WHERE status = 'ACTIVE' ).
WRITE: / '--- FILTER Example ---'.
LOOP AT lt_active_users INTO DATA(user).
WRITE: / user-name, user-status.
ENDLOOP.
*------------------------------------------------------
* Example 3: FOR Expression - Extract Specific Fields
*------------------------------------------------------
DATA: lt_names TYPE STANDARD TABLE OF string WITH EMPTY KEY.
lt_names = VALUE string_table(
FOR user IN lt_users
WHERE ( status = 'ACTIVE' )
( user-name )
).
WRITE: / '--- FOR Expression Example ---'.
LOOP AT lt_names INTO DATA(name).
WRITE: / name.
ENDLOOP.
This creates a new string table containing only the names of users whose status = 'ACTIVE'
—short, clean, and readable.
— REDUCE Example —
Total Amount: 500
Output:
— FILTER Example —
Alice ACTIVE
Charlie ACTIVE
— FOR Expression Example —
Alice
Charlie
Leave a comment