Hierarchical ALV allows you to display header–item relationships (like parent–child data). Example: One material (MARA) is the header, and its plant details (MARC) are the items. Useful for showing 1:N relationships in a single ALV output. In the SAP function module world, this ...
SAP EWM Help Latest Questions
In ABAP, system fields are predefined fields provided by the SAP runtime environment. They hold important contextual information about the program’s current state — like the current date, time, user, or return codes of statements. These fields start with SY- and ...
Program Type Code Purpose Executable? Typical Usage Executable 1 Reports, standalone programs ✅ Yes Reports, jobs, selection screens Include I Reusable code ❌ No Shared FORM routines, definitions Module Pool M Dialog screens, GUI transactions ✅ Yes Custom SAP GUI apps Function Grp F Group of function modules ❌ No BAPIs, reusable logic Subroutine S Collection of FORM routines ❌ No Old-style code reuse Class Pool K Global class definitions ❌ No OO programming, ...
1. Workbench Request Contains cross-client objects. These are usually repository objects that affect the entire system, not just one client. Examples: ABAP programs, Function Modules, Classes Dictionary objects (Tables, Views, Data Elements, Domains) Screens, Module Pool programs, etc. Once transported, the change is available in all clients ...
SAP has multiple form technologies – but which one should you choose? When it comes to designing business documents in SAP, two main options stand out: Smart Forms and Adobe Forms. 🔹 Smart Forms are static and mainly print-focused. They work well ...
This replaces the need for LOOP AT, IF, and APPEND all in one line—powerful and readable. *&---------------------------------------------------------------------* *& 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_names TYPE STANDARD TABLE OF string WITH EMPTY KEY. lt_users = VALUE #( ( name = 'Alice' status = 'ACTIVE' ) ( name = 'Bob' status = 'INACTIVE' ) ( name = 'Charlie' status = 'ACTIVE' ) ). lt_names = VALUE string_table( FOR user IN lt_users WHERE ( status = 'ACTIVE' ) ( user-name ) ). LOOP AT lt_names INTO DATA(name). WRITE: / name. ENDLOOP. Output: Alice Charlie
Feature List Report Grid Report (ALV) Output Format Plain text list Interactive grid/table User Interactivity Low High Sorting/Filtering Manual (if needed) Built-in Totals/Subtotals Not available Available Export Options Manual Export to Excel, etc. Development Effort Low Medium to High Modern UI Experience No Yes
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 *---------------------------- 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. Output: — ...
A line type defines the structure of a single row in an internal table. · It can be a: Data element (e.g., MATNR) Structure (e.g., SFLIGHT) Custom type created via TYPES Example: TYPES: BEGIN OF ty_line, matnr TYPE matnr, maktx TYPE maktx, END OF ty_line. Here, ty_line is the line type ...
In SAP Module Pool programming (Dialog Programming, using ABAP), the concepts of CHAIN and ENDCHAIN are used in screen programming for grouping input fields together when you want to validate or check them collectively. CHAIN … ENDCHAIN It is a block statement ...