ALV Reports in ABAP — Build Your First List Report (2026 Guide)

ALV Reports in ABAP: Build Your First List Report (2026 Guide) | ABAP Zero to Hero
ABAP Zero to Hero

Chapter 09  ·  Core Classic ABAP

ALV Reports

The most common output format in SAP — sorting, filtering, totals, layouts, and interactive events with SALV and REUSE_ALV.

Chapter 9 of 20 20 min read Part 2: Core ABAP 8 Interview Q&A

Every SAP interview asks about ALV. Every project uses it. Every business report you will ever build in classic ABAP ends up as an ALV. This is not an exaggeration — ALV (ABAP List Viewer) is the standard reporting framework in SAP, and mastering it is non-negotiable if you want a job as an ABAP developer [citation:5].

You already know how to read data with Open SQL (Chapter 6) and handle it with Internal Tables (Chapter 7). In Chapter 8, you learned to modularize. Now you will take all of that and display it the way SAP expects: in a sortable, filterable, interactive ALV grid.

Why ALV matters ALV gives you sorting, filtering, totals, layouts, and Excel export — without writing any of that logic yourself. It is the fastest way to turn an internal table into a professional, user-friendly report [citation:5].

🎯 What You Will Learn in This Chapter

  • What ALV is and why it replaced classical WRITE-based reports
  • How to build a simple ALV using CL_SALV_TABLE (the modern SALV approach) [citation:2][citation:8]
  • How to build an ALV using REUSE_ALV_GRID_DISPLAY (the classic Function Module approach) [citation:4]
  • What a Field Catalog is and how to control column behavior [citation:5]
  • How to configure Layout settings (zebra stripes, column width, totals) [citation:10]
  • How to handle events like DOUBLE_CLICK and custom toolbar buttons [citation:9][citation:14]
  • When to use SALV vs REUSE_ALV and why SALV is the modern choice [citation:5]

📘 What is ALV and Why Does It Matter?

ALV stands for ABAP List Viewer. It is a SAP-provided reporting framework that displays internal table data in a standardized, interactive grid [citation:5].

Before ALV existed, developers had to write every column header, every sort, every total, and every filter manually using WRITE statements. That took hundreds of lines of code. ALV does all of that automatically — you just hand it an internal table, and it gives you a professional report with built-in functionality [citation:5][citation:12].

Why ALV is the industry standard

FeatureClassical WRITE ReportALV Report
Column headersManual WRITE statementsAutomatic from Field Catalog
SortingManual SORT + logicOne click by user
FilteringManual IF conditionsBuilt-in filter dialog
TotalsManual SUM logicBuilt-in SUM button
Excel exportCustom codeBuilt-in export
LayoutsNot possibleUsers save their own layouts
Events (double-click)Not possibleBuilt-in event handling
Code lengthHundreds of lines~20-30 lines
Interview gold “ALV saves development time, improves report usability, and ensures consistent UI across SAP systems” — that is the exact answer interviewers want [citation:5].

⚖️ Two Ways to Build ALV: SALV vs REUSE_ALV

SAP provides two ways to create ALV reports. You need to know both for interviews and maintenance work [citation:4][citation:5].

AspectSALV (CL_SALV_TABLE)REUSE_ALV (Function Module)
ApproachObject-orientedProcedural (Function Module)
Main Class / FMCL_SALV_TABLEREUSE_ALV_GRID_DISPLAY
Code length~15-20 lines~40-60 lines
Field Catalog typeLVC_T_FCATSLIS_T_FIELDCAT_ALV
Layout typeLVC_S_LAYOSLIS_LAYOUT_ALV
Read-only reports✅ PerfectWorks but heavier
Editable grids❌ Not supported✅ Supported
Complex events✅ Supported✅ Full control
RecommendationUse for new read-only reportsLegacy, use when needed for complex cases
Key interview answer “SALV is object-oriented, clean, and ideal for read-only reports. REUSE_ALV is function-module based and used in older systems. SALV is recommended for quick, modern ALV implementations.” [citation:5]

💻 Method 1: SALV — The Modern Approach

SALV uses the class CL_SALV_TABLE. It is the fastest way to build a report [citation:8].

Basic SALV — 3 lines of core code

REPORT z_alv_salv_demo.

DATA: lt_scarr TYPE TABLE OF scarr,
      lo_alv  TYPE REF TO cl_salv_table.

" 1. Select data
SELECT * FROM scarr INTO TABLE @lt_scarr.

" 2. Create SALV instance
cl_salv_table=>factory(
  IMPORTING r_salv_table = lo_alv
  CHANGING  t_table      = lt_scarr ).

" 3. Display
lo_alv->display( ).
That is it. Three statements. A full interactive ALV with sorting, filtering, totals, and export — all automatic [citation:8].

Adding a Field Catalog with SALV

To control column headers and behavior, get the columns object and modify it [citation:5]:

DATA: lo_columns TYPE REF TO cl_salv_columns_table,
      lo_column  TYPE REF TO cl_salv_column_table.

lo_columns = lo_alv->get_columns( ).
lo_column = lo_columns->get_column( 'CARRID' ).
lo_column->set_long_text( 'Airline Code' ).
lo_column->set_short_text( 'Code' ).
lo_column->set_medium_text( 'Airline Code' ).

📦 Method 2: REUSE_ALV_GRID_DISPLAY — The Classic Approach

This is the older, function-module-based approach. You will see it everywhere in existing SAP codebases [citation:4][citation:10].

Basic REUSE_ALV_GRID_DISPLAY example

REPORT z_alv_reuse_demo.

DATA: lt_scarr  TYPE TABLE OF scarr,
      lt_fcat   TYPE slis_t_fieldcat_alv,
      ls_fcat   TYPE slis_fieldcat_alv,
      ls_layout TYPE slis_layout_alv.

" 1. Select data
SELECT * FROM scarr INTO TABLE lt_scarr.

" 2. Build field catalog
ls_fcat-fieldname = 'CARRID'.
ls_fcat-seltext_l = 'Airline Code'.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.

ls_fcat-fieldname = 'CARRNAME'.
ls_fcat-seltext_l = 'Airline Name'.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.

" 3. Layout settings
ls_layout-zebra = 'X'.          " Zebra stripes
ls_layout-colwidth_optimize = 'X'. " Auto column width

" 4. Display ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    is_layout   = ls_layout
    it_fieldcat = lt_fcat
  TABLES
    t_outtab    = lt_scarr.
Notice the difference REUSE_ALV requires manual field catalog construction. SALV auto-generates it from the table structure [citation:4].

📋 The Field Catalog — Controlling Columns

The Field Catalog is the most important concept in ALV. It defines how each column behaves: heading, visibility, width, totals, and more [citation:5][citation:12].

Key Field Catalog fields you must know

FieldPurposeExample
FIELDNAMEInternal table field name'CARRID'
SELTEXT_L/M/SColumn heading (long/medium/short)'Airline Code'
NO_OUTHide this column'X'
DO_SUMShow total for this column'X'
HOTSPOTMake column clickable (underlined)'X'
OUTPUTLENColumn width in characters20
EMPHASIZEColor the column'C310'
NO_ZEROHide zero values'X'
Interview tip “What is a field catalog?” is the #1 ALV interview question. Answer: “It defines column behavior — headings, visibility, width, sorting, and formatting. A well-designed field catalog directly improves report clarity.” [citation:5]

🎨 Layout Settings — Making It Look Professional

The Layout controls the overall appearance of the ALV grid [citation:10].

Layout FieldEffect
ZEBRAAlternating row colors (easier to read)
COLWIDTH_OPTIMIZEAuto-fit column widths to content
NO_VLINEHide vertical grid lines
NO_ULINE_HSHide horizontal grid lines
BOX_FIELDNAMEAdd checkbox for row selection
EDITMake the grid editable
INFO_FIELDNAMEColor rows based on a field value

Setting layout in SALV

DATA: lo_layout TYPE REF TO cl_salv_layout.

lo_layout = lo_alv->get_layout( ).
lo_layout->set_zebra( abap_true ).
lo_layout->set_key( 'CARRID' ).

🖱️ Event Handling — Making ALV Interactive

ALV supports event handling. The most common events are:

EventWhen It FiresUse Case
DOUBLE_CLICKUser double-clicks a rowNavigate to detail screen
ADDED_FUNCTIONUser clicks custom toolbar buttonTrigger custom action
HOTSPOT_CLICKUser clicks a hotspot columnDrill-down on specific field
TOP_OF_PAGEBefore data is displayedAdd report header/logo

SALV Event Example — Double-Click Handler [citation:9]

" Define local handler class
CLASS lcl_handler DEFINITION.
  PUBLIC SECTION.
    METHODS on_double_click
      FOR EVENT double_click OF cl_salv_events_table
      IMPORTING row column.
ENDCLASS.

CLASS lcl_handler IMPLEMENTATION.
  METHOD on_double_click.
    READ TABLE lt_scarr INTO ls_scarr INDEX row.
    MESSAGE |You clicked: { ls_scarr-carrid }| TYPE 'I'.
  ENDMETHOD.
ENDCLASS.

" Register the handler
DATA: lo_events TYPE REF TO cl_salv_events_table,
      lo_handler TYPE REF TO lcl_handler.

lo_events = lo_alv->get_event( ).
CREATE OBJECT lo_handler.
SET HANDLER lo_handler->on_double_click FOR lo_events.

⚖️ SALV vs REUSE_ALV — When to Use Which

ScenarioRecommended Approach
New read-only reportSALV (cleaner, faster)
Report that needs editingREUSE_ALV (SALV doesn’t support edit mode)
Maintaining legacy codeWhatever the original used
Complex custom eventsREUSE_ALV or ALV Grid with container
S/4HANA backend reportsSALV — modern and supported
Fiori-connected data sourceSALV — backend report consumed by Fiori

📝 Chapter Summary

  • ALV (ABAP List Viewer) is the standard reporting framework in SAP. It provides sorting, filtering, totals, layouts, and export automatically [citation:5].
  • SALV (CL_SALV_TABLE) is the modern, object-oriented approach. Ideal for read-only reports. Minimal code [citation:8].
  • REUSE_ALV_GRID_DISPLAY is the classic Function Module approach. Still used in legacy systems and for editable grids [citation:4].
  • Field Catalog controls column behavior: headings, visibility, width, totals [citation:5].
  • Layout controls appearance: zebra stripes, grid lines, column width optimization [citation:10].
  • Events make ALV interactive: double-click, custom buttons, hotspot clicks [citation:9].
  • ALV is still highly relevant in S/4HANA and is the default reporting choice for backend reports [citation:5].

🎤 Interview Questions & Answers

ALV is the #1 interview topic in SAP ABAP. These are the exact questions asked in real interviews [citation:5][citation:12].

1 What is ALV and why is it used in SAP ABAP?

ALV (ABAP List Viewer) is a SAP-provided reporting framework used to display internal table data in a standardized, interactive format. It is used because it offers built-in features like sorting, filtering, totals, layouts, and Excel export without manual coding. ALV saves development time and improves report usability [citation:5].

2 What is the difference between SALV and REUSE_ALV*?

REUSE_ALV* refers to the older function-module-based approach (procedural programming) widely used in classic systems. SALV (Simple ALV) is the object-oriented approach using the class CL_SALV_TABLE. SALV requires minimal and clean code and is ideal for read-only reports. SALV is recommended for quick, modern ALV implementations [citation:5].

3 What is a field catalog and why is it important in ALV?

The field catalog defines how ALV columns behave, including: column headings, output length, visibility, sorting, formatting, and whether a column is a hotspot. A well-designed field catalog directly improves report clarity and controls what the user sees and interacts with [citation:5].

4 What is the difference between ALV List and ALV Grid?

ALV List is a simpler output format with limited interaction and is mostly used in legacy reports. ALV Grid provides advanced UI features, editable cells, better performance, and greater flexibility. In modern SAP and S/4HANA systems, ALV Grid is preferred [citation:5].

5 When should SALV not be used?

SALV is not suitable when: editable ALV is required, complex custom events are needed, or highly dynamic UI control is required. In such cases, ALV Grid with custom handling (using CL_GUI_ALV_GRID and a container) is a better choice [citation:5].

6 How does ALV improve performance compared to classical reports?

ALV optimizes data rendering, handles large internal tables efficiently, and reduces custom formatting logic. This makes ALV faster, cleaner, and more scalable than WRITE-based reports [citation:5].

7 Is ALV still relevant in S/4HANA?

Yes, absolutely. ALV remains the default reporting choice in S/4HANA for: backend reports, Fiori-connected data sources, and large analytical datasets. ALV is not outdated; it has evolved [citation:5].

8 What ALV knowledge is commonly tested in interviews?

Interviewers often ask about: ALV Grid vs ALV List, SALV vs REUSE_ALV*, field catalog concepts, performance handling, and real-world ALV use cases. Understanding why and when to use ALV matters more than syntax [citation:5].

🛠 Practice Task for This Chapter

Build both versions of the same report. This is a real interview-level exercise.

  1. SALV version: Create a report that selects all fields from table SCARR and displays them using CL_SALV_TABLE. Add a field catalog to rename CARRID to “Airline Code”.
  2. REUSE_ALV version: Build the same report using REUSE_ALV_GRID_DISPLAY. Manually build the field catalog for CARRID and CARRNAME. Enable zebra stripes.
  3. Add an event: Add a double-click event to the SALV version that displays the selected row’s data in a popup message.
  4. Compare the code length and readability of both approaches.
Why this matters Every SAP interview asks: “Show me how you’d build an ALV report.” Being able to write both SALV and REUSE_ALV from memory proves you understand both the modern and legacy approaches [citation:5][citation:12].
🎯 Chapter 9 Challenge

Test: Kon Banega Crorepati?

5 questions. ₹1 Crore. Prove you understood ALV Reports. No pressure — restart anytime.

₹1,000 ₹10,000 ₹1,00,000 ₹10,00,000 ₹1 Crore
Question 1 of 5
Score: 0
Q1
🏆
You Did It!
0/5Correct Answers
You won ₹0
➡️ Next Chapter

➡️ Next Chapter

You can now build ALV reports. In Chapter 10, you will learn Selection Screens & Events — how to let users filter data before the report even runs. This is the missing piece that makes your reports truly useful.

Chapter 10 Selection Screens & Events →
Want to Learn Faster?

Explore Our Instructor-Led SAP & IT Courses

Self-study works. But if you want guided training, real project practice, and placement support — here are the courses we offer. Book a free demo before you decide.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "ALV Reports in ABAP: Build Your First List Report (2026 Guide)",
  "alternativeHeadline": "ABAP Zero to Hero — Chapter 9",
  "description": "Learn ALV Reports in ABAP 2026. Master CL_SALV_TABLE, REUSE_ALV_GRID_DISPLAY, Field Catalogs, Layouts, and event handling.",
  "image": {
    "@type": "ImageObject",
    "url": "https://www.elearningsolutions.co.in/images/abap-zero-to-hero-chapter-9.jpg",
    "width": 1200,
    "height": 630
  },
  "author": {
    "@type": "Person",
    "name": "eLearning Solutions",
    "url": "https://www.elearningsolutions.co.in/about/"
  },
  "publisher": {
    "@type": "Organization",
    "name": "eLearning Solutions",
    "url": "https://www.elearningsolutions.co.in/",
    "logo": {
      "@type": "ImageObject",
      "url": "https://www.elearningsolutions.co.in/images/logo.png",
      "width": 600,
      "height": 60
    }
  },
  "datePublished": "2026-03-05",
  "dateModified": "2026-03-05",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://www.elearningsolutions.co.in/abap-zero-to-hero/chapter-09-alv-reports"
  },
  "articleSection": "Core Classic ABAP",
  "keywords": "ALV Reports ABAP, CL_SALV_TABLE, REUSE_ALV_GRID_DISPLAY, ABAP Field Catalog, ABAP ALV Tutorial",
  "inLanguage": "en",
  "wordCount": 3400,
  "timeRequired": "PT20M",
  "isPartOf": {
    "@type": "CreativeWorkSeries",
    "name": "ABAP Zero to Hero",
    "url": "https://www.elearningsolutions.co.in/abap-zero-to-hero/"
  }
}
</script>
WhatsApp WhatsApp us
Call Now Button