SAP Fiori Elements & Floorplans

List Report

A list report is an SAP Fiori elements floorplan for finding, filtering and acting on large sets of business objects, built from a filter bar, variant management and a table or chart that the framework generates from OData annotations. A list report usually serves as the entry page of an app and hands single objects to an object page.

Quick facts

Type
SAP Fiori elements floorplan (page template)
Layer
UI applications
Driven by
UI.SelectionFields, UI.LineItem, selection and presentation variants
Configured in
UI annotations (CDS or XML) plus page settings in manifest.json
Typical pairing
Object page (the LROP pattern)
Who works with it
SAP Fiori developers, ABAP and CAP developers, UX designers, end users (variants)
Applies to
SAP S/4HANA (all deployment options), SAP BTP
Layer: UI applicationsWhere it sits ▾
Where it sits: L3 · UI applicationsLayer: UI applications.L1L2L3L4L5L6BTP

Layer: UI applications

Open the architecture map →
List Report layoutHeader title + variant selector · Filter bar (4 fields + Go) · Table toolbar (count, actions) · Table · Row navigation chevronHeader title · Standard ▾ (variant)Filter barGoTable toolbar · Items (10) · actions
List Report layout: Header title + variant selector · Filter bar (4 fields + Go) · Table toolbar (count, actions) · Table · Row navigation chevron

When should you use a list report?

A list report fits when users start from a large, open-ended set of business objects and must narrow it down before they can work: reviewing orders due for delivery, processing a set of purchase orders, spotting documents with a payment hold, or repeating a month-end selection through a saved variant.

The decision criterion is the shape of the search. If users combine several filter criteria before the list makes sense, a list report fits. If the items are already known and few, a worklist is leaner. If users must analyze with charts before acting, the analytical list page fits better.

Example: buyers at Alder Manufacturing filter purchase orders by supplier and delivery date to find late orders from Cedar Office Supply, then open each one on its object page. A list report is the right choice when filtering is the first step of the task.

What are the parts of a list report?

A list report page is assembled from standard parts, top to bottom:

  1. Title and variant management: a views control in which users save filter values, sort order and columns.
  2. Header toolbar: generic page actions, including a Share menu.
  3. Filter bar: the fields in UI.SelectionFields plus every mandatory filter field. The search runs when the user chooses Go, unless live mode is configured.
  4. Content area: a table, a chart, or both, optionally as several views switched by a segmented button or by tabs.
  5. Navigation: choosing a row opens the object page, optionally side by side in the flexible column layout.

With a draft-enabled service, the framework adds an Editing Status filter and shows which rows have a draft or are locked by another user. Every part of a list report is generated from metadata, so list reports behave alike across apps.

Which annotations drive a list report?

AnnotationWhat it drives
UI.SelectionFieldsThe default fields of the filter bar
UI.LineItemTable columns, their order and row-level actions
UI.HeaderInfoObject type names; in OData V2, TypeNamePlural sets the table header, which OData V4 can also set in manifest.json
UI.SelectionVariantPredefined data selections, used to define multiple views
UI.SelectionPresentationVariant, UI.PresentationVariantViews that also define sort order or visualization
UI.ChartA chart in the content area
Capabilities vocabularyWhether the service supports filtering; without it, no filter bar is rendered

In ABAP CDS the first two appear as @UI.selectionField and @UI.lineItem on each element; CAP uses the OData term names. Page behavior such as initial loading, mass edit, views and table type is set in manifest.json. Annotations decide what a list report shows; the app descriptor decides how the list report behaves.

How do you control initial loading and mass edit in a list report?

Initial loading. When the app starts with a navigation context, such as parameters from another app or the target mapping, data loads immediately. Otherwise the user's default variant decides through its Apply Automatically setting; only the Standard variant follows manifest.json:

BehaviorOData V4: initialLoadOData V2: loadDataOnAppLaunch
Load only if default filter values existAuto (default)ifAnyFilterExist (default)
Always loadEnabledalways
Wait for GoDisablednever

Users can override the setting per view. SAP recommends default filter values so the page does not open empty.

Mass edit is off until a developer enables it. In OData V4, enableMassEdit works on the list report (for active records without a pending draft) and on the object page in edit mode; visibleFields or ignoredFields limit the dialog. In OData V2, multiEdit works on the list report only, for responsive and grid tables. Both list report behaviors are deliberate configuration choices, not defaults to accept unexamined.

Can you extend a list report?

Yes, and the options depend on who owns the app:

  • Your own app, OData V4: extension points add custom columns, actions, filter fields, header content above the filter bar and custom views as extra tabs; building blocks and custom pages from the flexible programming model cover larger gaps.
  • Your own app, OData V2: extensions registered in manifest.json cover comparable areas such as columns, actions and filters.
  • An SAP-delivered app: adaptation projects (SAP Fiori tools) or key user adaptation, without modifying SAP's code.

In SAP S/4HANA Cloud Public Edition, check which of these paths SAP supports for the app and release. Decision test: if custom code is needed beyond a few columns, actions or filters, revisit the floorplan choice. Extending a list report is cheap at the edges and expensive at the core.

What are common list report design mistakes?

  1. Loading everything at launch. Always loading a very large entity set makes every start slow; default filter values are the better lever.
  2. Opening on an empty table without explanation. When users report "no data", check in order: navigation context, the default variant and its Apply Automatically flag, the manifest setting, then mandatory filters (in OData V2, an empty mandatory filter blocks the initial load).
  3. Overloading the filter bar. Twenty selection fields hide the three that matter.
  4. Confusing variants and views. Variants are saved by users; multiple views are tabs defined by developers.
  5. Enabling mass edit for every field. Restrict the dialog to a field group that is safe to change in bulk.
  6. Using a list report for a work queue. A short, known set of tasks suits a worklist.

Most list report problems are configuration and selection-design problems rather than framework defects.

List report vs. worklist vs. analytical list page: what is the difference?

List reportWorklistAnalytical list page
Main taskFind and act on objects in a large setProcess a known set of work itemsAnalyze data, then act on the items
FilteringFull filter bar with variantsLittle or no filtering, often status tabsVisual filters and a compact filter bar
Main visualizationTable, optionally a chartTableChart and table together
In SAP Fiori elements for OData V4Floorplan of its ownConfiguration of the list reportConfiguration of the list report

The three patterns share technology but answer different questions: what to find, what to process and what to analyze.

FAQ

What does LROP mean in SAP Fiori?

LROP stands for list report object page, the most common SAP Fiori elements app pattern. A list report lets users find business objects, and an object page displays, edits or creates one of them. Both floorplans are configured in the same app and connected by navigation.

Why does my SAP Fiori list report open with an empty table?

In most cases the list report is waiting for the user to choose Go. The initial load setting (initialLoad in OData V4, loadDataOnAppLaunch in OData V2), the Apply Automatically flag of the user's default variant and missing default or mandatory filter values decide whether data loads on launch.

Can users save their own filter settings in a list report?

Yes. Variant management in a list report lets users save filter values, sort order and columns as named views, mark one as default and decide whether it loads data automatically. Views can be private or public; by default every user can make a view public, and a SAPUI5 flexibility setting can restrict this to key users.

Does a list report support editing several records at once?

Yes, when developers enable mass edit. In SAP Fiori elements for OData V4 the setting is enableMassEdit; in OData V2 it is multiEdit. Users select rows, open a dialog and set new values that are applied to every selected record that can be changed.

Does a list report need a draft-enabled service?

No. A list report works with draft-enabled and non-draft services. With draft, SAP Fiori elements adds an Editing Status filter and shows in the table which objects have unsaved changes or are locked by another user.

Sources

Applies to
SAP S/4HANA on-premise · SAP S/4HANA Cloud Private Edition · SAP S/4HANA Cloud Public Edition · SAP BTP
Last reviewed

Go deeper

SAP, SAP Fiori, SAPUI5, SAP S/4HANA, SAP BTP and other SAP products and services mentioned are trademarks or registered trademarks of SAP SE (or an SAP affiliate company) in Germany and other countries. This guide is independent and is not affiliated with, sponsored or endorsed by SAP SE.