Hello,

Sign up to join our community!

Welcome Back,

Please sign in to your account!

Forgot Password,

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

You must login to ask a question.

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

SAP EWM Help Latest Questions

  • 0
  • 0
DPM125
Beginner

How can you extract specific fields from an internal table using FOR … WHERE inside a VALUE expression?

You can build a new internal table with only selected entries and fields like this:

*&---------------------------------------------------------------------*
*& Report  ZREP_LCLCLASS
*&---------------------------------------------------------------------*
*& Demonstrates modern ABAP syntax: REDUCE, FILTER, FOR expressions
*&---------------------------------------------------------------------*

REPORT zrep_lclclass.

*----------------------------
* Example 1: REDUCE Operator
*----------------------------
TYPESBEGIN OF ty_order,
         id     TYPE i,
         amount TYPE i,
       END OF ty_order.

DATAlt_orders TYPE STANDARD TABLE OF ty_order WITH EMPTY KEY,
      lv_total  TYPE i.

lt_orders VALUE #(
  id amount 100 )
  id amount 250 )
  id amount 150 )
).

lv_total REDUCE iINIT sum 0
                     FOR order IN lt_orders
                     NEXT sum sum order-amount ).

WRITE/ '--REDUCE Example ---',
       / 'Total Amount:'lv_total.

*----------------------------
* Example 2: FILTER Operator
*----------------------------
TYPESBEGIN OF ty_user,
         name   TYPE string,
         status TYPE string,
       END OF ty_user.

DATAlt_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-nameuser-status.
ENDLOOP.

*------------------------------------------------------
* Example 3: FOR Expression - Extract Specific Fields
*------------------------------------------------------
DATAlt_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.

Output:

— REDUCE Example —
Total Amount: 500

— FILTER Example —
Alice ACTIVE
Charlie ACTIVE

— FOR Expression Example —
Alice
Charlie

 

Related Questions

Leave an answer

Leave an answer