It returns a filtered internal table based on a condition—no need for loops or APPEND.
*&---------------------------------------------------------------------*
*& Report ZREP_LCLCLASS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zrep_lclclass.
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' ).
LOOP AT lt_active_users INTO DATA(user).
WRITE: / user-name, user-status.
ENDLOOP.
Output : Alice ACTIVE Charlie ACTIVE