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 ▾
Layer: UI applications
Open the architecture map →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:
- Title and variant management: a views control in which users save filter values, sort order and columns.
- Header toolbar: generic page actions, including a Share menu.
- 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.
- Content area: a table, a chart, or both, optionally as several views switched by a segmented button or by tabs.
- 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?
| Annotation | What it drives |
|---|---|
| UI.SelectionFields | The default fields of the filter bar |
| UI.LineItem | Table columns, their order and row-level actions |
| UI.HeaderInfo | Object type names; in OData V2, TypeNamePlural sets the table header, which OData V4 can also set in manifest.json |
| UI.SelectionVariant | Predefined data selections, used to define multiple views |
| UI.SelectionPresentationVariant, UI.PresentationVariant | Views that also define sort order or visualization |
| UI.Chart | A chart in the content area |
| Capabilities vocabulary | Whether 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:
| Behavior | OData V4: initialLoad | OData V2: loadDataOnAppLaunch |
|---|---|---|
| Load only if default filter values exist | Auto (default) | ifAnyFilterExist (default) |
| Always load | Enabled | always |
| Wait for Go | Disabled | never |
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?
- Loading everything at launch. Always loading a very large entity set makes every start slow; default filter values are the better lever.
- 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).
- Overloading the filter bar. Twenty selection fields hide the three that matter.
- Confusing variants and views. Variants are saved by users; multiple views are tabs defined by developers.
- Enabling mass edit for every field. Restrict the dialog to a field group that is safe to change in bulk.
- 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 report | Worklist | Analytical list page | |
|---|---|---|---|
| Main task | Find and act on objects in a large set | Process a known set of work items | Analyze data, then act on the items |
| Filtering | Full filter bar with variants | Little or no filtering, often status tabs | Visual filters and a compact filter bar |
| Main visualization | Table, optionally a chart | Table | Chart and table together |
| In SAP Fiori elements for OData V4 | Floorplan of its own | Configuration of the list report | Configuration 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
- SAPUI5 SDK: List Report Page (SAP Fiori elements for OData V4)
- SAPUI5 SDK: Loading Behavior of Data on Initial Launch of the Application (OData V4)
- SAPUI5 SDK: Loading Behavior of Data on Initial Launch of the Application (OData V2)
- SAPUI5 SDK: Enabling Editing Using a Dialog (Mass Edit) (OData V4)
- SAPUI5 SDK: Configuring Filter Bars (OData V4)
- Applies to
- SAP S/4HANA on-premise · SAP S/4HANA Cloud Private Edition · SAP S/4HANA Cloud Public Edition · SAP BTP
- Last reviewed