Flexible Column Layout

The flexible column layout is a layout control that displays multiple floorplans on a single page. This allows faster and more fluid navigation between multiple floorplans than the usual page-by-page navigation. The flexible column layout offers different layouts with up to three columns (1, 2, 3). Users can freely resize the columns, switch between different layouts, and view the rightmost column in full screen mode.

Flexible column layout - Example with three columns
Flexible column layout - Example with three columns

The flexible column layout behaves responsively, which makes it suitable for both desktop and mobile devices. Depending on the available screen width, an optimized layout is loaded to ensure the best possible user experience on each device. The flexible column layout is a generic control. As a layout container, it does not provide any content itself.

The flexible column layout is already incorporated within SAP Fiori elements.

Usage

Use the flexible column layout if:

  • You want to create a list-detail or list-detail-detail layout, in which the user can drill down or navigate.

Do not use the flexible column layout if:

  • You want to build a workbench or tools layout. The flexible column layout is not meant to provide a main column with additional side columns on the left and/or right. If you want to display additional content to enrich the main content and to help users better perform their tasks, use the dynamic side content instead.
  • You want to create a dashboard with context-independent pages.
  • You want to open multiple instances of the same object type. Use the multi-instance handling floorplan instead.
  • You want to split a single object into multiple columns, or display only a small amount of information.
  • You want to embed the SAP Fiori launchpad or overview page into one of the columns.

Structure

As with all layouts, the flexible column layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

Depending on the current layout and display size, the flexible column layout consists of one, two, or three horizontally-aligned columns. Each column contains content that is not provided by the flexible column layout itself. The flexible column layout is not restricted to a specific floorplan, as long as the floorplan you use is responsive down to phone size. However, we recommend using the dynamic page.

Information
It is not possible to use the SAP Fiori launchpad or the overview page in one of the columns.

Possible Layouts

To give users a better overview, the flexible column layout offers different layouts with one, two, or three columns. Depending on the screen size, up to five alternative default layouts are available.

By default, the ratio is fixed:

  • 33% : 66% or 66% : 33% for 2 columns
  • 25% : 25% : 50%, 25% : 50% : 25%, or 50% : 25% : 25% for 3 columns

The user can also change the size of a column freely by dragging the splitter (for example, 15% : 85%).

Information

Language Dependency

For simplicity, this article assumes that the last column (the lowest drilldown level in the hierachy) is the rightmost column (left-to-right languages).

For right-to-left languages, however, the last column is the leftmost column.

Flexible column layout - Structure example (25% : 50% : 25%)
Flexible column layout - Structure example (25% : 50% : 25%)

Size L and XL (Desktop)

There are five different default layouts in sizes L and XL: a full screen layout, as well as two different 2-column and 3-column layouts.

Available layouts in sizes L and XL
Available layouts in sizes L and XL

Size M (Tablet)

There are three different default layouts in size M: a full screen layout and two different 2-column layouts. There is no 3-column layout due to the limited width. However, you can still load 3 pages in size M. Instead of showing them all side-by-side, the user can switch between columns 1/2 and 2/3.

Available layouts in size M
Available layouts in size M

Size S (Phone)

Because of the limited width, there is no multi-column layout for Size S. Instead, the rightmost column is shown in full screen mode.

Available layout in size S
Available layout in size S

Components

The flexible column layout offers a few simple actions that allow users to adapt the current layout according to their needs.

Note: Some of the actions (illustrated by blue lines in the image below) recover the last state of the layout to which they refer. In other words, the result of the action depends on the previous state of the layout.

Layout Splitter

The layout splitter is a control that allows users to freely resize the columns by dragging the splitter, thereby changing the layout. However, this action cannot be used to expand a column to full screen mode. There is a separate action for that purpose.

The layout splitter is next to the divider between the columns. If a column cannot be resized any further, the layout splitter is hidden.

Enter Full Screen Mode

With the Full Screen icon  , the user can switch the rightmost column to full screen mode. The action is located in the rightmost column, and is only offered if there is more than one column.

Exit Full Screen Mode

By selecting the Exit Full Screen icon  , the user can exit the full screen and switch back to the multi-column (side-by-side) view. The action is only available while in full screen mode.

Information
The actions are not available in size S, which only displays a single column.

Close

With the Close icon   , the user can close the last (rightmost) column. If the user selects this action in the second column while the third column is minimized, both columns are closed. Close is also available in full screen mode, and in the second/third column for size S.

Information

The Close and Enter Full Screen / Exit Full Screen actions:

  • Are only displayed in the third column (or in the second column if there is no third column, or if the third column is minimized).
  • Are displayed as the last actions in the layout action section (or in the global actions toolbar if there is no layout action section in the floorplan). The layout action section is displayed to the right of the global actions on columns ≥1280 px wide, and in a separate line above the global actions on columns <1280 px wide.
  • Never move into the overflow.
  • Are always shown side-by-side (Enter Full Screen / Exit Full Screen icon left, Close icon right).
    Exception: There is no Enter Full Screen action in size S.

Developer Hint
The actions for entering and exiting full screen mode and closing columns are not provided automatically by the flexible column layout control, and need to be implemented manually. However, you can use the semantic page, which supports these actions for freestyle applications (only available with the dynamic page).

Navigation

In addition to the actions specific to the flexible column layout, the user can also use the forward and backward navigation to navigate through the flexible column layout. Drilling in or navigating forward opens a new column, while Back closes a column or exits the full screen mode (depending on what the last action was).
Please note: Back does not restore layout changes (such as switching from 33% : 67% to 67% : 33%). It also doesn’t reopen columns that were closed previously using the Close button (  ).

Because the flexible column layout only supports a maximum of 3 columns, any follow-on pages are loaded in full screen mode. These pages do not contain Close or Enter Full Screen / Exit Full Screen actions.

By default, the width is initially 33% for the second column and 25% for the third column. You can also set the width of the second column to 67%, or the third to 50% if your use case requires it.

Developer Hint
To implement the navigation/routing, you can use the SemanticHelper class, which provides predefined behavior to simplify the implementation.

Responsiveness

The flexible column layout changes its behavior for sizes XL, L, M and S in real time whenever the user resizes the screen.

If no previous state has been saved, ensure that the default layout appears automatically. For example, if the flexible column layout was initially loaded in size S and then, the user navigates to the second column and changes the browser window to size M, the default 2-column layout for size M (67% : 33%) should be shown.

Responsiveness of the flexible column layout
Responsiveness of the flexible column layout

Behavior and Interaction

Dialogs

Dialogs triggered in one of the columns are centered over the entire screen.

Do
Center dialogs triggered in a column
Center dialogs triggered in a column
Don't
Do not right-align dialogs triggered in a column
Do not right-align dialogs triggered in a column

Vertical Size / Scrolling

Each column inside the flexible column layout contains an independent floorplan with its own scrolling behavior. There is no “all-encompassing” scrollbar which scrolls all columns simultaneously. The height of each floorplan is defined by the screen size.

Do
Give each column its own scrollbar
Give each column its own scrollbar
Don't
There is no universal scrollbar for all columns
There is no universal scrollbar for all columns

Scroll Position

During column resizing, the navigated item in the list column may no longer be in the visible screen area. In such cases, we recommend setting the scroll position to the item currently open in the details column (“navigated” item). This allows the user to see at a glance which item from the list or table is being displayed in the details column.

Developer Hint
To get the right scroll position, you can use the “columnResize” event. For more information, see the API reference.

Two Columns (List-Detail Mode)

By default, the flexible column layout starts off with one column. The user opens new columns by navigating forward. Since the flexible column layout is the successor of the split-screen layout, you can also use just two columns if your use case requires it. Do not start your application with three columns. Too much information at the beginning can confuse users.

Note:

  • If you start with two columns, make sure that size S shows the first column. Otherwise, users see the second column first, which might be confusing. (Showing the second column is the normal responsive behavior of the flexible column layout, which always shows the last column in size S.)
  • Even if you start with two columns, offer the layout splitter and the Close action in the second column.
Examples: Starting with two columns (sizes L and XL)
Examples: Starting with two columns (sizes L and XL)

Titles / Breadcrumbs / Up and Down Arrows

If more than one column is visible, show the application title in the shell bar. If the user switches to full screen mode, show the page title. Also show the page title for size S, where only one column is visible.

If multiple columns are visible, hide the breadcrumbs and up/down arrows.

Application title in the shell bar
Application title in the shell bar
Page title in the shell bar
Page title in the shell bar

Bookmarks

Every layout inside the flexible column layout can be bookmarked. For example, if the user bookmarks a 3-column layout set to 25% : 50% : 25%, load this layout when the user opens the bookmark.

Minimized Third Column

When the user expands the first column in a 3-column layout, the third column is minimized. CloseEnter Full Screen, and layout splitter actions also appear on the right-hand border of the second column to allow the user to return to the original 3-column layout.

Close: The second and third (minimized) columns close. A dialog can appear to warn the user about any unsaved data in the third column.

Full screen: When the user clicks the Enter Full Screen icon, the second column switches to full screen mode. The third column remains open (but not visible), and closes as soon as the user selects another item in the second column, or uses the Close action in the second column. If the user selects the same item in the second column, it opens in the same state as before it was minimized.

Example of a minimized third column (33% : 67%)
Example of a minimized third column (33% : 67%)

Layout splitter: When the third column is minimized, the second splitter is only available when the second column is bigger than the first column (by default 33% : 67%). Otherwise, the second splitter is hidden.

Example of a second splitter interaction
Example of a second splitter interaction

Using Close in Combination with Back Navigation

The back navigation must not restore a column that was previously closed with the Close icon  .

Example: The user closes the third column by clicking the Close icon   in the upper-right corner. If the user then navigates back (UI or browser), the second column closes.

Using 'Close' in combination with back navigation
Using 'Close' in combination with back navigation

3 Columns in Size M

To offer a desktop-like experience in size M, the flexible column layout displays either the first and second or the second and third columns. The user can switch between these views by dragging the layout splitter to the left or right side of the flexible column layout. Note: This behavior is only intended for size M. Do not use it for sizes L or XL.

3-column interaction in size M
3-column interaction in size M

Letterboxing

Do not use letterboxing in combination with the flexible column layout, as it will reduce the size of the usable screen area.

Do
Proper use of usable screen area
Proper use of usable screen area
Don't
Improper use of usable screen area with letterboxing
Improper use of usable screen area with letterboxing

Full Screen Navigation

After switching a column to full screen mode, selecting the Back icon exits the full screen mode.

If the screen is in full screen mode, and the user navigates forward, also show the next column in full screen mode. If the user navigates backward, go back in full screen mode until the point where the user initially switched to full screen. If the user then clicks Back again, return to the multi-column mode.

Using full screen mode in combination with navigation
Using full screen mode in combination with navigation

Footer Toolbar

Each column of the flexible column layout can have its own footer toolbar. There is no overall footer toolbar that spans several columns.

Do
Give each column its own footer toolbar
Give each column its own footer toolbar
Don't
There is no overall footer toolbar spanning several columns
There is no overall footer toolbar spanning several columns

Overlapping Header

The flexible column layout can display multiple floorplans side-by-side. However, it is not designed for splitting a single floorplan into several columns. As a result, there is no overall header that spans several columns. If you need to show additional content within a floorplan, use the dynamic side content.

Do
Each column has its own header
Each column has its own header
Don't
There is no overall header
There is no overall header

Empty Details Column

Do not display an empty details column when using the flexible column layout. For example, if no items have been selected in the second column, do not show an empty third column.

Do
If no items are selected in the 2nd column, show only 2 columns
If no items are selected in the 2nd column, show only 2 columns
Don't
Do not show an empty 3rd column
Do not show an empty 3rd column

Usage With One or Several Initial Full Screen Pages

Some use cases require starting an application with one or more full screen pages. You can do this by using the first column of the flexible column layout in full screen mode. This allows you to show one or several initial full screen pages with different content. Because of technical constraints, you must always use the flexible column layout to show this initial content.

Using the flexible column layout with initial full screen pages
Using the flexible column layout with initial full screen pages

Content Padding Inside Columns

The flexible column layout doesn’t provide additional paddings around the content area. Since some controls have different internal paddings, please ensure that they are aligned correctly.

Developer Hint
If you are using the dynamic page inside the flexible column layout, you can use the class sapFDynamicPageAlignContent to overcome misalignment issues.

Navigation Indicator

It is important for users to be able to scan through the list and quickly identify the item for which the details are being shown in the second or third column. This is especially important for large lists. For this case, you can enable a “navigated” indicator for tables and lists to mark the item that was last opened.

If there are several tables/lists on one page, ensure that the indicator shows only for the last navigated item. There should never be two navigation indicators on one page.

Navigation indicator and list without actions
Navigation indicator and list without actions
Navigation indicator and list with single selection
Navigation indicator and list with single selection
Navigation indicator and list with multiple selection
Navigation indicator and list with multiple selection

Content Interaction

Selecting a Different Item

If the user selects a different item in the list-detail or list-detail-detail layout, the content of the details column changes to reflect the data of the newly selected item. If the item is selected in the first column, and the last column was open before the new item was selected, selecting the item closes the last column.

Selecting a different item
Selecting a different item

Deleting an Item

When an item is deleted, there are two options for handling the content of the details columns:

  • Select the next item and change the content in the details column.
    If the user deletes the last item, you can opt to either select the previous item or close the details column(s). If the user deletes all the objects, always close all columns, since there is no content to display.
  • Do not select an item and close the other columns.
Deleting and selecting the next item
Deleting and selecting the next item
Deleting and closing the other columns
Deleting and closing the other columns

Behavior on Filtering

Filtering in one of the columns does not affect the content in the other columns.

Once a filter is applied, the results are shown in the same column. The content in the remaining columns does not change, unless another item is selected.

Filtering does not affect the other columns
Filtering does not affect the other columns

Tab/Anchor Navigation

Tabs and anchors are used for navigation within an object or as a filter (for example, in object pages). They affect only the respective column and do not close or change the content in the other columns.

Tab/anchor navigation does not affect the other columns
Tab/anchor navigation does not affect the other columns

SAP Fiori Elements

The flexible column layout is available in SAP Fiori elements for scenarios that use draft handling. If you use draft handling, we strongly recommend using the SAP Fiori elements implementation, wherever possible. The implementation already includes the navigation and routing behavior, as well as the Close and Full Screen actions, for example. Starting the application with two columns is also supported by SAP Fiori elements.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Comparison Pattern

The comparison pattern allows users to select items from a list and display them side-by-side. This makes it easier to compare the characteristics of multiple items.  

When to Use

Use the comparison pattern if:

  • Users need to compare two or more similar items.
  • Users need to compare versions of the same item.
  • You are using the Dynamic Page Layout.

Do not use the comparison pattern if:

  • There is no business need for displaying items side-by-side. Don’t use the pattern purely for visualization.
  • You want to display only one item. In this case, use the Object Page Floorplan instead.

Components

The comparison pattern comprises the following components. All are mandatory: 

  • Triggering action: Opens the comparison view for the selected items.
  • Header areaShows the most important characteristics for identifying and comparing itemsEach item is represented by a card.
  • Content areaShows all characteristics needed for comparison. Each item is represented by a panel.

Triggering Action

The comparison is triggered by a button (1) on a selection screen (for example, in a table toolbar).

Guidelines
Use the action text Compare or Compare [Objects]. In parentheses, include a counter for the number of selected items.

For example:
Compare (3)
Compare Products (3)

Comparison pattern - Triggering action
Comparison pattern - Triggering action

Header Area

The dynamic page header holds the header area of the comparison pattern. To show more of the actual page content, the header content can collapse or expand using defined triggers (snap on scroll and snap on click). When launching the app, the header is expanded by default. Users can fix the expanded header content while scrolling through the page content with the pin feature. For more information about the basic behavior of the header, see Dynamic Page Layout – Dynamic Page Header.

The header area of the comparison pattern has two main components:

1. Carousel

The carousel control displays the items in cards (1).

If there is not enough space to show all cards, paging buttons are displayed. Each time a user navigates left or right, the previous or next card is displayed. This also affects the respective panels in the content area. They are updated with the details of the item represented by the card.

Developer Hint
Always show the paging indicator when there is navigation between the cards (property showPageIndicator = true).

2. Card

The card contains the most important characteristics for an item (2). It consists of the card header and the card content.

Guidelines

  • Apply the same size and structure for all cards.
  • In the header area, show at least a title. A subtitle and image/avatar are optional. Do not show any other information.
  • For a lighter and more convenient comparison, limit the details you display in the card content. This keeps the cards shorter and easier to read. Use the panels to show more information.

When the header snaps, the information in the header area stays and the card content hides.

Comparison pattern - Expanded header
Comparison pattern - Expanded header
Comparison pattern - Collapsed header
Comparison pattern - Collapsed header

Content Area

The dynamic page content area holds the content area of the comparison pattern.

The content area must contain at least two panels. For easier and faster comparison, use up to 10 panels to display the specifics of the selected items.

Panel

The expandable panel (1) is used to display all comparable characteristics in columns. A column is aligned with the respective card.

The first column of each panel should contain the characteristics of the item represented with the first card, the second column the item represented with the second card, and so on.

A panel must have a title that describes the characteristics. When collapsed (2), the panel displays only the title toolbar.

Guidelines

  • Show at least two panels in the content area.
  • For easier and faster comparison, use up to 10 panels to display the specifics of the selected items.
  • If an item is missing a characteristic, leave the corresponding field blank. Learn more here.

Comparison pattern - Content area
Comparison pattern - Content area
Comparison pattern content area - Expanded and collapsed panels
Comparison pattern content area - Expanded and collapsed panels
Comparison pattern content area - Missing characteristics
Comparison pattern content area - Missing characteristics

Behavior and Interaction

The expand/collapse header and pin/unpin header features work as described in the Dynamic Page article.

Adding More Items

If your users need to add more items while comparing, place an Add to Comparison action in the header. For more information, see Dynamic Page Layout – Header Title.

For adding more items, either show a dialog or the original page the user started from. Make sure that you display the items that are already in the comparison: in the dialog, also show the previously selected items; in the original page, keep the items selected.

Responsiveness

The comparison pattern adapts the number of visible items based on the screen size. If a card is no longer in the visible area, also hide its corresponding column in the panels.

On size S, there is only one visible card in the header area and its corresponding panels in the content area. Users can navigate left or right to see the next or previous item.

The comparison pattern maintains the scrolling position of the page when switching to the next or previous item. This feature helps the user focus on a certain characteristic while navigating through the items.

On size M and larger, always show two or more cards with their corresponding panel columns in the visible area.

Size S
Size S
Size S - Snapped header
Size S - Snapped header
Size M
Size M
Size M - Snapped header
Size M - Snapped header
Size L
Size L
Size L - Snapped header
Size L - Snapped header

Example

Top Tips

Compare apples with apples.

Wording

  • For triggering the comparison, use a meaningful button text with the number of selected items in brackets. We recommend “Compare (<number of selected items>)”, for example, Compare (3).
  • Use a page title that describes the task. We recommend “Compare <selected object type>”, for example, Compare Products.
  • Use precise panel titles to describe the characteristics.

Cards

  • Show only the most important information for an item on the card.
  • If the cards contain only a title, subtitle, and image/avatar, show the dynamic page header in collapsed mode when starting the app.
  • Link each item’s object page (if available) to the header area of the card. This gives users access to all the characteristics for a specific item to help them make a final decision.

Related Topics

Elements and Controls

Implementation

Flexible Column Layout

The flexible column layout is a layout control that displays multiple floorplans on a single page. This allows faster and more fluid navigation between multiple floorplans than the usual page-by-page navigation. The flexible column layout offers different layouts with up to three columns (1, 2, 3). Users can expand the column they want to focus on, switch between different layouts, and view the rightmost column in full screen mode.

Flexible column layout - Example with three columns
Flexible column layout - Example with three columns

The flexible column layout behaves responsively, which makes it suitable for both desktop and mobile devices. Depending on the available screen width, an optimized layout is loaded to ensure the best possible user experience on each device. The flexible column layout is a generic control. As a layout container, it does not provide any content itself.

The flexible column layout is already incorporated within SAP Fiori elements.

Usage

Use the flexible column layout if:

  • You want to create a list-detail or list-detail-detail layout, in which the user can drill down or navigate.

Do not use the flexible column layout if:

  • You want to build a workbench or tools layout. The flexible column layout is not meant to provide a main column with additional side columns on the left and/or right. If you want to display additional content to enrich the main content and to help users better perform their tasks, use the dynamic side content instead.
  • You want to create a dashboard with context-independent pages.
  • You want to open multiple instances of the same object type. Use the multi-instance handling floorplan instead.
  • You want to split a single object into multiple columns, or display only a small amount of information.
  • You want to embed the SAP Fiori launchpad or overview page into one of the columns.

Structure

As with all layouts, the flexible column layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

Depending on the current layout and display size, the flexible column layout consists of one, two, or three horizontally-aligned columns. Each column contains content that is not provided by the flexible column layout itself. The flexible column layout is not restricted to a specific floorplan, as long as the floorplan you use is responsive down to phone size. However, we recommend using the dynamic page.

Information
It is not possible to use the SAP Fiori launchpad or the overview page in one of the columns.

Possible Layouts

To give users a better overview, the flexible column layout offers different layouts with one, two, or three columns. Depending on the screen size, up to five alternative layouts are available.

Information

Language Dependency

For simplicity, this article assumes that the last column (the lowest drilldown level in the hierachy) is the rightmost column (left-to-right languages).

For right-to-left languages, however, the last column is the leftmost column.

Flexible column layout - Structure example (25% + 50% + 25%)
Flexible column layout - Structure example (25% + 50% + 25%)

Size L and XL (Desktop)

There are five different layouts in sizes L and XL: a full screen layout, as well as two different 2-column and 3-column layouts.

Available layouts in sizes L and XL
Available layouts in sizes L and XL

Size M (Tablet)

There are three different layouts in size M: a full screen layout and two different 2-column layouts. There is no 3-column layout due to the limited width. However, you can still load 3 pages in size M. Instead of showing them all side-by-side, the user can switch between columns 1/2 and 2/3.

Available layouts in size M
Available layouts in size M

Size S (Phone)

Because of the limited width, there is no multi-column layout for Size S. Instead, the rightmost column is shown in full screen mode.

Available layout in size S
Available layout in size S

Components

The flexible column layout offers a few simple actions that allow users to adapt the current layout according to their needs.

Note: Some of the actions (illustrated by blue lines in the image below) recover the last state of the layout to which they refer. In other words, the result of the action depends on the previous state of the layout.

Layout Arrow

The layout arrows allow users to expand the width of a given column, thereby changing the current layout. However, this action cannot be used to expand a column to full screen mode. There is a separate action for expanding a column to full screen mode.

The layout arrow is located next to the divider and points in the direction in which a column can be expanded. If a column cannot be expanded any further, the action is hidden.

Information
The user cannot change the size of a column freely (for example, 15% + 85%).

Enter Full Screen Mode

With the Full Screen icon  , the user can switch the rightmost column to full screen mode. The action is located in the rightmost column, and is only offered if there is more than one column.

Exit Full Screen Mode

By selecting the Exit Full Screen icon  , the user can exit the full screen and switch back to the multi-column (side-by-side) view. The action is only available while in full screen mode.

Information
The actions are not available in size S, which only displays a single column.

Close

With the Close icon   , the user can close the last (rightmost) column. If the user selects this action in the second column while the third column is minimized, both columns are closed. Close is also available in full screen mode, and in the second/third column for size S.

Information

The Close and Enter Full Screen / Exit Full Screen actions:

  • Are only displayed in the third column (or in the second column if there is no third column, or if the third column is minimized).
  • Are displayed as the last actions in the layout action section (or in the global actions toolbar if there is no layout action section in the floorplan). The layout action section is displayed to the right of the global actions on columns ≥1280 px wide, and in a separate line above the global actions on columns <1280 px wide.
  • Never move into the overflow.
  • Are always shown side-by-side (Enter Full Screen / Exit Full Screen icon left, Close icon right).
    Exception: There is no Enter Full Screen action in size S.

Developer Hint
The actions for entering and exiting full screen mode and closing columns are not provided automatically by the flexible column layout control, and need to be implemented manually. However, you can use the semantic page, which supports these actions for freestyle applications (only available with the dynamic page).

Navigation

In addition to the actions specific to the flexible column layout, the user can also use the forward and backward navigation to navigate through the flexible column layout. Drilling in or navigating forward opens a new column, while Back closes a column or exits the full screen mode (depending on what the last action was).
Please note: Back does not restore layout changes (such as switching from 33% + 67% to 67% + 33%). It also doesn’t reopen columns that were closed previously using the Close button (  ).

Because the flexible column layout only supports a maximum of 3 columns, any follow-on pages are loaded in full screen mode. These pages do not contain Close or Enter Full Screen / Exit Full Screen actions.

By default, the width is initially 33% for the second column and 25% for the third column. You can also set the width of the second column to 67%, or the third to 50% if your use case requires it.

Developer Hint
To implement the navigation/routing, you can use the SemanticHelper class, which provides predefined behavior to simplify the implementation.

Responsiveness

The flexible column layout changes its behavior for sizes XL, L, M and S in real time whenever the user resizes the screen.

If no previous state has been saved, ensure that the default layout appears automatically. For example, if the flexible column layout was initially loaded in size S and the user then navigates to the second column and changes the browser window to size M, show the default 2-column layout for size M (67% + 33%).

Responsiveness of the flexible column layout
Responsiveness of the flexible column layout

Behavior and Interaction

Dialogs

Dialogs triggered in one of the columns are centered over the entire screen.

Do
Center dialogs triggered in a column
Center dialogs triggered in a column
Don't
Do not right-align dialogs triggered in a column
Do not right-align dialogs triggered in a column

Vertical Size / Scrolling

Each column inside the flexible column layout contains an independent floorplan with its own scrolling behavior. There is no “all-encompassing” scrollbar which scrolls all columns simultaneously. The height of each floorplan is defined by the screen size.

Do
Give each column its own scrollbar
Give each column its own scrollbar
Don't
There is no universal scrollbar for all columns
There is no universal scrollbar for all columns

Scroll Position

During column resizing, the navigated item in the list column may no longer be in the visible screen area. In such cases, we recommend setting the scroll position to the item currently open in the details column (“navigated” item). This allows the user to see at a glance which item from the list or table is being displayed in the details column.

Developer Hint
To get the right scroll position, you can use the “columnResize” event. For more information, see the API reference.

Two Columns (List-Detail Mode)

By default, the flexible column layout starts off with one column. The user opens new columns by navigating forward. Since the flexible column layout is the successor of the split-screen layout, you can also use just two columns if your use case requires it. Do not start your application with three columns. Too much information at the beginning can confuse users.

Note:

  • If you start with two columns, make sure that size S shows the first column. Otherwise, users see the second column first, which might be confusing. (Showing the second column is the normal responsive behavior of the flexible column layout, which always shows the last column in size S.)
  • Even if you start with two columns, offer the layout arrow and the Close action in the second column.
Examples: Starting with two columns (sizes L and XL)
Examples: Starting with two columns (sizes L and XL)

Titles / Breadcrumbs / Up and Down Arrows

If more than one column is visible, show the application title in the shell bar. If the user switches to full screen mode, show the page title. Also show the page title for size S, where only one column is visible.

If multiple columns are visible, hide the breadcrumbs and up/down arrows.

Application title in the shell bar
Application title in the shell bar
Page title in the shell bar
Page title in the shell bar

Bookmarks

Every layout inside the flexible column layout can be bookmarked. For example, if the user bookmarks a 3-column layout set to 25% + 50% + 25%, load this layout when the user opens the bookmark.

Minimized Third Column

When the user expands the first column in a 3-column layout, the third column is minimized. CloseEnter Full Screen, and layout arrow actions also appear on the right-hand border of the second column to allow the user to return to the original 3-column layout.

Close: The second and third (minimized) columns close. A dialog can appear to warn the user about any unsaved data in the third column.

Full screen: When the user clicks the Enter Full Screen icon, the second column switches to full screen mode. The third column remains open (but not visible), and closes as soon as the user selects another item in the second column, or uses the Close action in the second column. If the user selects the same item in the second column, it opens in the same state as before it was minimized.

Layout arrow: The arrow for changing the layout to 25% + 50% + 25% is only available in the 33% + 67% layout. This arrow is hidden if the user is changing the layout to 67% + 33%.

Example of a minimized third column (33% + 67%)
Example of a minimized third column (33% + 67%)

Using Close in Combination with Back Navigation

The back navigation must not restore a column that was previously closed with the Close icon  .

Example: The user closes the third column by clicking the Close icon   in the upper-right corner. If the user then navigates back (UI or browser), the second column closes.

Using 'Close' in combination with back navigation
Using 'Close' in combination with back navigation

3 Columns in Size M

To offer a desktop-like experience in size M, the flexible column layout displays either the first and second or the second and third column. The user can switch between these views by using the layout arrow on the left or right side of the flexible column layout. Note: This behavior is only intended for size M. Do not use it for sizes L or XL.

3-column interaction in size M
3-column interaction in size M

Letterboxing

Do not use letterboxing in combination with the flexible column layout, as it will reduce the size of the usable screen area.

Do
Proper use of usable screen area
Proper use of usable screen area
Don't
Improper use of usable screen area with letterboxing
Improper use of usable screen area with letterboxing

Full Screen Navigation

After switching a column to full screen mode, selecting the Back icon exits the full screen mode.

If the screen is in full screen mode, and the user navigates forward, also show the next column in full screen mode. If the user navigates backward, go back in full screen mode until the point where the user initially switched to full screen. If the user then clicks Back again, return to the multi-column mode.

Using full screen mode in combination with navigation
Using full screen mode in combination with navigation

Footer Toolbar

Each column of the flexible column layout can have its own footer toolbar. There is no overall footer toolbar that spans several columns.

Do
Give each column its own footer toolbar
Give each column its own footer toolbar
Don't
There is no overall footer toolbar spanning several columns
There is no overall footer toolbar spanning several columns

Overlapping Header

The flexible column layout can display multiple floorplans side-by-side. However, it is not designed for splitting a single floorplan into several columns. As a result, there is no overall header that spans several columns. If you need to show additional content within a floorplan, use the dynamic side content.

Do
Each column has its own header
Each column has its own header
Don't
There is no overall header
There is no overall header

Empty Details Column

Do not display an empty details column when using the flexible column layout. For example, if no items have been selected in the second column, do not show an empty third column.

Do
If no items are selected in the 2nd column, show only 2 columns
If no items are selected in the 2nd column, show only 2 columns
Don't
Do not show an empty 3rd column
Do not show an empty 3rd column

Usage With One or Several Initial Full Screen Pages

Some use cases require starting an application with one or more full screen pages. You can do this by using the first column of the flexible column layout in full screen mode. This allows you to show one or several initial full screen pages with different content. Because of technical constraints, you must always use the flexible column layout to show this initial content.

Using the flexible column layout with initial full screen pages
Using the flexible column layout with initial full screen pages

Content Padding Inside Columns

The flexible column layout doesn’t provide additional paddings around the content area. Since some controls have different internal paddings, please ensure that they are aligned correctly.

Developer Hint
If you are using the dynamic page inside the flexible column layout, you can use the class sapFDynamicPageAlignContent to overcome misalignment issues.

Navigation Indicator

It is important for users to be able to scan through the list and quickly identify the item for which the details are being shown in the second or third column. This is especially important for large lists. For this case, you can enable a “navigated” indicator for tables and lists to mark the item that was last opened.

If there are several tables/lists on one page, ensure that the indicator shows only for the last navigated item. There should never be two navigation indicators on one page.

Navigation indicator and list without actions
Navigation indicator and list without actions
Navigation indicator and list with single selection
Navigation indicator and list with single selection
Navigation indicator and list with multiple selection
Navigation indicator and list with multiple selection

Content Interaction

Selecting a Different Item

If the user selects a different item in the list-detail or list-detail-detail layout, the content of the details column changes to reflect the data of the newly selected item. If the item is selected in the first column, and the last column was open before the new item was selected, selecting the item closes the last column.

Selecting a different item
Selecting a different item

Deleting an Item

When an item is deleted, there are two options for handling the content of the details columns:

  • Select the next item and change the content in the details column.
    If the user deletes the last item, you can opt to either select the previous item or close the details column(s). If the user deletes all the objects, always close all columns, since there is no content to display.
  • Do not select an item and close the other columns.
Deleting and selecting the next item
Deleting and selecting the next item
Deleting and closing the other columns
Deleting and closing the other columns

Behavior on Filtering

Filtering in one of the columns does not affect the content in the other columns.

Once a filter is applied, the results are shown in the same column. The content in the remaining columns does not change, unless another item is selected.

Filtering does not affect the other columns
Filtering does not affect the other columns

Tab/Anchor Navigation

Tabs and anchors are used for navigation within an object or as a filter (for example, in object pages). They affect only the respective column and do not close or change the content in the other columns.

Tab/anchor navigation does not affect the other columns
Tab/anchor navigation does not affect the other columns

SAP Fiori Elements

The flexible column layout is available in SAP Fiori elements for scenarios that use draft handling. If you use draft handling, we strongly recommend using the SAP Fiori elements implementation, wherever possible. The implementation already includes the navigation and routing behavior, as well as the Close and Full Screen actions, for example. Starting the application with two columns is also supported by SAP Fiori elements.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Semantic Page Layout

The semantic page is recommended as the basic layout for freestyle applications. It builds on the basic functionality of the dynamic page and adds predefined content elements to the header toolbar (1) and footer toolbar (2), such as a title, global actions, and finalizing actions.

Using the semantic page significantly reduces the development effort for app teams, and ensures that the placement of the header and footer content conforms with the SAP Fiori Design Guidelines.

Semantic page
Semantic page

When to Use

Use the semantic page if:

  • You are building a freestyle application.
  • You want to use a predefined layout to reduce development time.

Do not use the semantic page if:

Components

The semantic page is based on the structure of the dynamic page. In short, the semantic page has the following elements:

  1. Header title
  2. Header content
  3. Page content, dependent on the use case
  4. Footer toolbar with finalizing actions

The control’s semantics determine whether content specified in the control appears in the header toolbar or footer toolbar.

Semantic page structure
Semantic page structure

Header Title

Semantic page - Header title example
Semantic page - Header title example

Mandatory Elements

  • Title (1): The title is located on the left-hand side of the header title bar and is always visible.

Optional Elements

  • Subtitle (2): The subtitle is always below the title and is often used to summarize the most important information.
  • Breadcrumb (3): Depending on the use case, you can add a breadcrumb navigation.
  • Key information (4): Key information is located in the middle area, and is left aligned. This can be text, mini facets, or KPI tags, for example.
  • Global actions toolbar (5): The global actions toolbar for the entire floorplan is located on the right-hand side. Always use buttons for global actions, visualized either as text or icons. For more information, see header toolbar.
    Overflow menu: Actions move into the overflow from right to left. Icons are shown in the overflow menu with a corresponding text.
  • Layout actions (6): These are actions like the Close or Full Screen / Exit Full Screen icons, which are mainly offered by the flexible column layout. Depending on the screen size, layout actions are placed either to the right of the global actions toolbar, separated by a divider line, or above the global actions.

For more information about the expandable and collapsible header and its features, see dynamic page.

Guidelines

  • Layout actions never move into the overflow and are always last in the header toolbar.
  • Do not remove or disable actions within the header title when it is collapsed.

Header Content

The optional header content is not defined in the semantic page and can be populated according to the use case.

Page Content

Like the header content, the page content is also not specified by the semantic page. It is proportionally the largest area of the layout and can be populated according to the use case.

Footer Toolbar

Semantic page - Footer toolbar
Semantic page - Footer toolbar

The footer toolbar is optional and contains the following components:

  1. Message button (containing the message popover) on the left-hand side
  2. Draft indicator on the right-hand side, just before the finalizing actions
  3. Finalizing actions on the right-hand side

Behavior and Interaction

The interaction and guidelines for the dynamic page also apply for the semantic page. The actions in the semantic page and their order are predefined and follow the rules of the action placement concept. For more information about toolbars in general, see toolbar overview.

Initial Focus

When the semantic page is loaded, set the initial focus as follows:

  • If the page is in display mode, set the focus on the first section.
  • If the page is in edit mode, set the focus on the first empty mandatory field.
  • If there are no mandatory fields in edit mode, set the focus on the first editable element or first action.

Responsiveness

The semantic page offers considerable freedom and flexibility. It is designed to adapt automatically to small, medium, and large screen sizes. Next to that the responsive behavior depends on the behavior of the content being displayed.

The title (sap.m.Title) and subtitle (sap.m.Text) on the left truncate in collapsed mode to save vertical space and wrap in expanded mode to offer the full text. This behavior needs to come from the respective controls for the title and subtitle. Overall, it is recommend not to show more than 2 lines of text in collapsed mode to avoid a disproportionate header height, especially on mobile devices, when no summary line is used. This can either be a combined title and subtitle or a longer wrapping title. For more information see wrapping and truncating text.

Key information (middle area, left aligned) stays as long as possible before it moves into the overflow.

Global actions also stay as long as possible, but have a predefined width depending on the available space. If no key information is available, the title and global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds buttons to the overflow menu from right to left.

The combination of a semantic page within in a flexible column layout and accompanying layout actions works as described for the dynamic page. The same applies for the summary line and letterboxing.

Top Tips

  • Use always a header title.
  • Use the header title and header content to provide the most relevant information and actions for your use case.
  • Do not remove or disable actions within the header title when it is collapsed.
  • Make sure that the layout actions in the flexible column layout are displayed correctly and never get hidden in the overflow.
  • Start your application in expanded mode if users need further content or adjustment options to get started.
  • Offer the pinning feature whenever users may need to fix the header content while scrolling through the page content.
  • Activate the summary line on smartphones to help users focus on the actual content of the page.

Related Topics

Elements and Controls

Implementation

Dynamic Page Layout

The dynamic page is the foundation for all pages in SAP Fiori. It is a generic layout control designed to support various floorplans and use cases. As a result, the content of both the header and the page can vary. Depending on your use case, you can either use one of the predefined floorplans or create your own layout.

One part of the dynamic page header (1) is collapsible, which helps users to focus on the actual page content (2), while ensuring that important header information and actions are readily available. The dynamic page also includes an optional footer toolbar (3) for closing or finalizing actions that impact the whole page.

All SAP Fiori floorplans use the dynamic page, or are visually aligned to look the same. For detailed guidance, see the corresponding floorplan articles.

The following floorplans use the dynamic page:

The following floorplans are using the dynamic page header:

When to Use

Use the dynamic page if:

Do not use the dynamic page if:

Dynamic Page vs. Semantic Page

The dynamic page is a skeleton structure that comes with empty content containers (page header, page content) and built-in responsive behavior.

This basic structure can be “filled” with content elements in three ways:

  • Automatically: If you are using an SAP Fiori element floorplan, the content of the dynamic page is provided out of the box.
  • Via the semantic page (recommended for freestyle apps): If you are creating a floorplan from scratch, you can use the semantic page (sap.f.semanticPage) to create a freestyle page. The semantic page is a separate control that comes with built-in logic for adding predefined content elements to the page, such as a title, global actions, and a footer toolbar. Using the semantic page significantly reduces the development effort for app teams, and ensures that the header and footer content is structured consistently.
    Note that in this case, the app developer uses only the semantic page control (which already embeds the dynamic page), and not the dynamic page control itself.
  • Manually: Technically, it’s possible to build the dynamic page from scratch. However, implementing the dynamic page manually is a significant development effort! Only consider this option in exceptional cases (for example, if you have special requirements for a freestyle app that cannot be implemented using the preconfigured semantic page control).

Components

Like all layouts, the dynamic page is below the shell bar of the SAP Fiori launchpad, which is always at the very top. The dynamic page consists of the following areas:

  1. Dynamic page header, comprising the header title (1a) and the expandable/collapsible header content (1b)
  2. Title
  3. Subtitle/summary
  4. Key information / KPI
  5. Global actions
  6. Header features to expand/collapse (6a) and pin/unpin (6b) the header
  7. Page content (differs depending on the use case and floorplan)
  8. Footer toolbar with finalizing actions

Dynamic Page Header

The dynamic page header contains the header title (mandatory) and the header content (optional).

Header Title

Dynamic page - Header title example
Dynamic page - Header title example

The header title bar (sap.f.DynamicPageTitle) always contains one of the following elements:

Mandatory Elements

  • Title (1): The title is located on the left of the header title bar, and is always visible. The title can contain one of the following components:

Optional Elements

  • Subtitle/summary (2)
    Placement: Always below the title. The subtitle is often used to summarize the most important information in the collapsed header content. For example, if the header area contains a filter (as in a list reportanalytical list page, or overview page), the subtitle can be used to display the “Filtered By” information.
  • Breadcrumb (3)
    Placement: Above the title. Depending on the floorplan and use case, you can add breadcrumb navigation. The breadcrumb is located above the header title, and is primarily used to display the hierarchy of subpages within an object page.
    Note that in the flexible column layout, the breadcrumb is only available in full screen mode, and only if just one column is visible.
  • Key information (4)
    Placement: In the middle area, but left-aligned. Floorplans can also contain key information, such as text, mini facets, and KPI tags.
    Note that currently, KPI tags are only used within the analytical list page and worklist floorplans.
  • Global actions (5)
    Placement: Global actions for the entire floorplan appear on the right-hand side of the header title bar. Always offer the actions as buttons, visualized either as text or icons. For more information, see Header Toolbar. In the collapsed mode, the header title offers the same actions as in the expanded mode and keeps them actionable.
  • Layout actions (6)
    Placement: Typical layout actions are the CloseFull Screen, or Exit Full Screen icons, which are mainly offered by the flexible column layout. Depending on the screen size, the layout actions are placed either on the very right of the global actions toolbar, separated by a divider line, or above the global actions (see more in the Responsiveness section). Note that the dynamic page only provides the area for the layout actions. The navigation actions themselves are defined separately (for example, using the semantic page).
Guidelines

  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • In the flexible column layout, ensure that the icons for the Close or Full Screen / Exit Full Screen actions always stay on the very right. Their position then remains stable, even if other actions are added (such as the paging buttons  and  ). The Close and Full Screen / Exit Full Screen actions must never move into the overflow.

Header Content

Dynamic page - Header content example
Dynamic page - Header content example

The optional header content (sap.f.DynamicPageHeader) is located below the header title. You can place any components in the header content area (1) as long as they follow the guidelines for the respective floorplan.

When the dynamic page header collapses, the header content area is hidden. If there is no header content, the header content area is hidden automatically. In the latter case, the header title is not interactive (snap on scroll or snap on click) and there is no expand/collapse header feature.

Header Features

Dynamic page - Header features
Dynamic page - Header features

The header features (3) allow users to control the visibility of header content using two icon buttons at bottom of the header content area:

  1. Expand/collapse header or   
  2. Pin/unpin header content 

Footer Toolbar

Dynamic page - Footer toolbar
Dynamic page - Footer toolbar

The footer toolbar (sap.m.Toolbar) is an optional part of the dynamic page. You can use it to offer closing or finalizing actions.

Combining the Dynamic Page with the Flexible Column Layout

The layout of the dynamic page is responsive and optimized for use within a flexible column layout. Each column (1, 2, 3) can contain its own dynamic page with a different floorplan, depending on the use case.

Dynamic page inside the flexible column layout
Dynamic page inside the flexible column layout

Behavior and Interaction

Initial Focus

The dynamic page itself doesn’t set an initial focus. The initial focus depends on the floorplan that is using the dynamic page and the specific app use case.

Dynamic Page Header

The dynamic page header supports three optional interaction patterns that can be combined. To show more of the actual page content, the header content can collapse or expand using defined triggers (snap on scroll and snap on click). In addition, users can fix the header content while scrolling through the page content with the pin feature. The combined usage of all three patterns is recommended and activated by default.

Dynamic page - Snap on scroll
Dynamic page - Snap on scroll
Dynamic page - Snap on click
Dynamic page - Snap on click
Dynamic page - Pin/unpin
Dynamic page - Pin/unpin

Starting in Expanded or Collapsed Mode

By default, the header content is initially expanded. In certain cases, it can also make sense to deviate from the default and allow the header to appear in collapsed mode when initiating the app. However, the idea is to always expand the header content when the application starts without a query (and the content area is therefore empty).

Snap on Scroll

Scrolling is the typical trigger for collapsing the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to collapsed mode and stays fixed. When the user scrolls up the page, the header content expands again.

Note that this interaction pattern works only in combination with an expandable/collapsible header content. It can be combined with snap on click, but does not have to be.

Snap on Click

The snap on click pattern is another way of expanding and collapsing the header content. The user can collapse the header without scrolling, and expand it again even when it has been collapsed by scrolling down. Two interaction variants are offered, which always appear in combination: clicking the header title and clicking the Expand Header / Collapse Header icon button in the header features area.

Again, the interaction pattern works only in combination with expandable/collapsible header content. It can be combined with snap on scroll, but does not have to be.

Clicking the Header Title

The user can expand and collapse the header content by clicking anywhere on the header title bar that has no active elements (such as links or active buttons). When using a mouse, the cursor changes from an arrow to a hand to support the user’s interaction. In addition, a hover effect is visible on the header title and on the Expand Header / Collapse Header icon button in the header area. If the header is expanded and the user clicks the title bar, the header content collapses, and vice versa.

Clicking the Expand/Collapse Header Button

The expand/collapse header feature is a small icon button directly below the header, which is also used to expand or collapse the header content. When the pin is active, the expand/collapse header button is still available and overrules the pin. The icon buttons for expanding and collapsing the header are an alternative to clicking on the header title bar, which might not have much clickable space. They also support keyboard actions.

Pinning the Header Content

Activating the pin feature keeps the header expanded while the user scrolls through the page content. This mode remains fixed until the user clicks the pin icon again or triggers snap on click. This feature is optional and can be switched off if it is not useful for your application.

The expand/collapse header button remains visible when the pin is activated. Clicking the Collapse Header  icon overrules the pin, collapses the header, and switches the pin button off. Do not offer the pin feature for floorplans without scrollbars (see special case below), or if there is no header content.

In the smartphone version, the pin action is not provided, as the pinned header would take up too much screen real estate. The same applies whenever the dynamic page header would occupy more than 60% of the screen, regardless of the device type. Overruling the pin feature keeps the focus on the content.

Note that this interaction works only in combination with expandable/collapsible header content. The pin button is available as soon as snap on scroll (or snap on click) is activated.

Special Case: No Page Scrolling Possible

The following special case applies for pages containing desktop-centric tables, such as the analytical tablegrid table, or tree table.

Because these tables use up all of the available screen space, there should not be a vertical scroll function, and hence no snap on scroll. In this special case, an explicit interaction via the expand/collapse header button is required to expand or collapse the content area. The pin feature is obsolete and is not provided.

This exceptional case also applies to chart containers that use up all the available screen space in a similar way to desktop-centric tables.

Keyboard Interaction

The dynamic page header expands automatically as soon as keyboard actions like tabbing or group jumps (F6) bring the content of the dynamic page header into focus.

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Key(s) Behavior
Tab Move the focus to the dynamic page header / header title bar. The dynamic page header expands automatically. If the focus is inside the header content area, move the focus to the next UI element within the header.

If the focus is on the last UI element within the header content area (expand/collapse header feature), leave the header. Collapse the header content.

Shift+Tab See Tab, in reverse order.
F6 If the focus is before the header title bar, set the focus to the header title bar. Expand the header content. If the focus is within the header content, move the focus out of the header and collapse the header content.
Shift+F6 See F6, in reverse order.

Responsiveness

The dynamic page offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to adapt automatically to small, medium, and large screen sizes.

The title (sap.m.Title) and subtitle (sap.m.Text) on the left truncate in collapsed mode to save vertical space, and wrap in expanded mode to offer the full text. This behavior needs to come from the respective controls for the title and subtitle. Overall, we recommend showing a maximum of 2 lines of text in collapsed mode. This prevents a disproportionate header height, especially on mobile devices if no summary line is used. The 2 lines can either be a combined title and subtitle, or a longer wrapping title. For more information, see wrapping and truncating text.

Key information, such as a KPI (middle area, left aligned), stays as long as possible before it moves into the overflow.

Global actions stay as long as possible. If there is no key information, the title and the global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds the available buttons to the overflow menu from right to left.

Layout actions: The dynamic page offers a specific area for layout actions, which reacts to the predefined breakpoint of 1280 px:

  • Less than 1280 px: Navigation actions are placed in a separate row above the global actions.
  • 1280 px or more: Navigation actions are placed to the right of the global actions on the same line.

This breakpoint corresponds to the page width and not to the window width. Therefore it doesn’t matter whether the page is used in the flexible column layout, on a desktop device, or on a mobile device.

Letterboxing limits the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability. Letterboxing can be used together with the dynamic page if the use case requires it. However, most business apps offer so much content that the page is typically shown across the entire screen, without letterboxing.

Summary Line

To save vertical space on smartphones, you can opt to display a smaller summary line instead of the collapsed header. The header content scrolls away as soon as the user scrolls up the page. The header converts to a summary line, which shows only the title and an arrow icon button on the very right of the screen. Tapping the summary line also expands and collapses the whole header. The rest of the page stays in the same position.

Guidelines
Use the summary line to help users to focus on the page content.

Size S with summary line
Size S with summary line

Examples

The dynamic page is a generic control. The content of both the header and the page differs from floorplan to floorplan. Here are some examples showing the most frequently-used variants for each type of floorplan. For detailed guidance, see the corresponding floorplan guidelines (analytical list pageoverview pagelist reportworklist, initial pageobject page, wizard).

Top Tips

  • Always use a header title – either as a text or link, or by including variant management. For the initial page floorplan, use an input field.
  • Use the header title and header content to provide the most relevant information and actions for your use case.
  • Only use KPI tags within the analytical list page and worklist floorplans.
  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • Make sure that the layout actions in the flexible column layout are displayed correctly and never get hidden in the overflow.
  • Start your application in expanded mode if users need further content or adjustment options to get started.
  • Offer the pin feature whenever users may need to fix the header content while scrolling through the page content.
  • Activate the summary line on smartphones to help users focus on the page content.

Related Links

Elements and Controls

Implementation

Multi-Instance Layout

The multi-instance layout allows the user to display and edit multiple objects within one page.

Beforehand, the user selects the objects from another page, usually a list report or a table. Each object then appears on a separate tab.

As a result, the user can work on several objects simultaneously and switch between them easily.

1. Select items in a list report
1. Select items in a list report
2. New page with several editable tabs
2. New page with several editable tabs
3. Tab in edit mode
3. Tab in edit mode
Information
The multi-instance layout must be implemented by the app team.

Usage

Use the multi-instance layout if users need to open and edit multiple objects simultaneously.

Do not use this layout if your users need a side-by-side display on the same page. Use the comparison pattern instead.

Components

The multi-instance layout uses a tab container.

The content of each tab is managed using an embedded object page floorplan.

Components of the multi-instance layout
Components of the multi-instance layout

The tab container holds:

  1. Opened tabs
  2. Scroll buttons and overview list (if not all tabs can be shown on the screen)
  3. A Create button (optional)

Tabs

Each tab represents one object. One tab is always active, while the others are inactive.

The tab contains a title and a Close button:

  • Title
    ID or name of the object. If the title text exceeds 25 characters, it is truncated.
    An asterisk next to the tab title indicates that the object was changed but not saved.
     Guideline: Use the same title as in the object page.
  • Close button ( )
    The Close button is shown on all tabs.
     Guideline: If the user closes a tab without saving first, display a warning. See Handling Unsaved Changes.

Scroll Buttons and Overview List

The tab container has an overflow mechanism for cases where there are too many tabs to display on the screen:

  • Horizontal scroll buttons (  and  ) can be used to scroll back and forth through the tabs.
  • An overflow menu lists all the tabs, including the hidden tabs.

“Create” Button

You can offer a Create button on the far right of the tab container. Selecting this button opens a new tab containing an empty object page.

 Guideline: Only use this button if the application allows users to create new objects.

Behavior and Interaction

Opening Tabs

The multi-instance layout is always triggered from another page, such as a list report.

To work on multiple objects, users select the relevant objects and choose a triggering action, such as Open in Tabs (3). This opens a new page, in which the selected objects appear as tabs.

Closing Tabs

To close a tab, the user can click the Close ( ) button on the tab itself, or close the tab from the overflow menu.

Closing the Last Tab

When the last remaining tab is closed, the complete page is closed and the user is returned to the page from which the items were selected.

Handling Unsaved Changes

If objects have unsaved changes, the corresponding tabs show an asterisk (*) next to the title.

To prevent data loss, show a warning message in the following cases:

Case 1: The user tries to close a tab with unsaved changes.

Message type: Warning
Message text: Your changes will be lost when you close this tab.
Buttons: Close, Cancel

Warning: Closing a tab with unsaved changes
Warning: Closing a tab with unsaved changes

Case 2: The user tries to leave the page when one or more tabs have unsaved changes (by clicking the Back button or navigating to a different page).

Message type: Warning
Message text: If you leave this page, your changes to the following [objects] will be lost:
[Object 1]
[Object 2]
Buttons: Leave Page, Cancel 

Warning: Leave page when tabs have unsaved changes
Warning: Leave page when tabs have unsaved changes

Responsiveness

The multi-instance layout is controlled by the sap.m.TabContainer control.

The tab container supports all three SAP Fiori responsive sizes: small, medium, and large.

Size L
Size L

Size M
Size M
Size S
Size S

Top Tips

  • To open the page containing the tabs, use a meaningful button text with the number of selected objects in brackets.
    Recommended label: Open in Tabs (number of objects)
    Example: Open in Tabs (3).
  • Use the same tab title as the object page title.
  • Always use an object page floorplan to display the content of a tab.
  • Only offer a Create button if the application allows users to create new objects.

Related Topics

Elements and Controls

Implementation

Flexible Column Layout (Layout + SAP Fiori Elements)

The flexible column layout is a layout control that displays multiple floorplans on a single page. This allows faster and more fluid navigation between multiple floorplans than the usual page-by-page navigation. The flexible column layout offers different layouts with up to three columns (1, 2, 3). Users can expand the column they want to focus on, switch between different layouts, and view the rightmost column in full screen mode.

Flexible column layout - Example with three columns
Flexible column layout - Example with three columns

The flexible column layout behaves responsively, which makes it suitable for both desktop and mobile devices. Depending on the available screen width, an optimized layout is loaded to ensure the best possible user experience on each device. The flexible column layout is a generic control. As a layout container, it does not provide any content itself.

The flexible column layout is already incorporated within SAP Fiori elements.

Usage

Use the flexible column layout if:

  • You want to create a master-detail or master-detail-detail scenario in which the user can drill down or navigate.

Do not use the flexible column layout if:

  • You want to build a workbench or tools layout. The flexible column layout is not meant to provide a main column with additional side columns on the left and/or right. If you want to display additional content to enrich the main content and to help users better perform their tasks, use the dynamic side content instead.
  • You want to create a dashboard with context-independent pages.
  • You want to open multiple instances of the same object type. Use the multi-instance handling floorplan instead.
  • You want to split a single object into multiple columns, or display only a small amount of information.
  • You want to embed the SAP Fiori launchpad or overview page into one of the columns.

Structure

As with all layouts, the flexible column layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

Depending on the current layout and display size, the flexible column layout consists of one, two, or three horizontally-aligned columns. Each column contains content that is not provided by the flexible column layout itself. The flexible column layout is not restricted to a specific floorplan, as long as the floorplan you use is responsive down to phone size. However, we recommend using the dynamic page.

Information
It is not possible to use the SAP Fiori launchpad or the overview page in one of the columns.

Possible Layouts

To give users a better overview, the flexible column layout offers different layouts with one, two, or three columns. Depending on the screen size, up to five different base layouts are available.

Information

Language Dependency

For simplicity, this article assumes that the last column (the lowest drilldown level in the hierachy) is the rightmost column (left-to-right languages).

For right-to-left languages, however, the last column is the leftmost column.

Flexible column layout - Structure example (25% + 50% + 25%)
Flexible column layout - Structure example (25% + 50% + 25%)

Size L and XL (Desktop)

There are five different layouts in sizes L and XL: a full screen layout, as well as two different 2-column and 3-column layouts.

Available layouts in sizes L and XL
Available layouts in sizes L and XL

Size M (Tablet)

There are three different layouts in size M: a full screen layout and two different 2-column layouts. There is no 3-column layout due to the limited width. However, you can still load 3 pages in size M. Instead of showing them all side-by-side, the user can switch between columns 1/2 and 2/3.

Available layouts in size M
Available layouts in size M

Size S (Phone)

Because of the limited width, there is no multi-column layout for Size S. Instead, the rightmost column is shown in full screen mode.

Available layout in size S
Available layout in size S

Components

The flexible column layout offers a few simple actions that allow users to adapt the current layout according to their needs.

Note: Some of the actions (illustrated by blue lines in the image below) recover the last state of the layout to which they refer. In other words, the result of the action depends on the previous state of the layout.

Layout Arrow

The layout arrows allow users to expand the width of a given column, thereby changing the current layout. However, this action cannot be used to expand a column to full screen mode. There is a separate action for expanding a column to full screen mode.

The layout arrow is located next to the divider and points in the direction in which a column can be expanded. If a column cannot be expanded any further, the action is hidden.

Information
The user cannot change the size of a column freely (for example, 15% + 85%).

Enter Full Screen Mode

With the Full Screen icon  , the user can switch the rightmost column to full screen mode. The action is located in the rightmost column, and is only offered if there is more than one column.

Exit Full Screen Mode

By selecting the Exit Full Screen icon  , the user can exit the full screen and switch back to the multi-column (side-by-side) view. The action is only available while in full screen mode.

Information
The actions are not available in size S, which only displays a single column.

Close

With the Close icon   , the user can close the last (rightmost) column. If the user selects this action in the second column while the third column is minimized, both columns are closed. Close is also available in full screen mode, and in the second/third column for size S.

Information

The Close and Enter Full Screen / Exit Full Screen actions:

  • Are only displayed in the third column (or in the second column if there is no third column, or if the third column is minimized).
  • Are displayed as the last actions in the layout action section (or in the global actions toolbar if there is no layout action section in the floorplan). The layout action section is displayed to the right of the global actions on columns ≥1280 px wide, and in a separate line above the global actions on columns <1280 px wide.
  • Never move into the overflow.
  • Are always shown side-by-side (Enter Full Screen / Exit Full Screen icon left, Close icon right).
    Exception: There is no Enter Full Screen action in size S.

Developer Hint
The actions for entering and exiting full screen mode and closing columns are not provided automatically by the flexible column layout control, and need to be implemented manually. However, you can use the semantic page, which supports these actions for freestyle applications (only available with the dynamic page).

Navigation

In addition to the actions specific to the flexible column layout, the user can also use the forward and backward navigation to navigate through the flexible column layout. Drilling in or navigating forward opens a new column, while Back closes a column or exits the full screen mode (depending on what the last action was).
Please note: Back does not restore layout changes (such as switching from 33% + 67% to 67% + 33%). It also doesn’t reopen columns that were closed previously using the Close button (  ).

Because the flexible column layout only supports a maximum of 3 columns, any follow-on pages are loaded in full screen mode. These pages do not contain Close or Enter Full Screen / Exit Full Screen actions.

By default, the width is initially 33% for the second column and 25% for the third column. You can also set the width of the second column to 67%, or the third to 50% if your use case requires it.

Developer Hint
To implement the navigation/routing, you can use the SemanticHelper class, which provides predefined behavior to simplify the implementation.

Responsiveness

The flexible column layout changes its behavior for sizes XL, L, M and S in real time whenever the user resizes the screen.

If no previous state has been saved, ensure that the default layout appears automatically. For example, if the flexible column layout was initially loaded in size S and the user then navigates to the second column and changes the browser window to size M, show the default 2-column layout for size M (67% + 33%).

Responsiveness of the flexible column layout
Responsiveness of the flexible column layout

Behavior and Interaction

Dialogs

Dialogs triggered in one of the columns are centered over the entire screen.

Do
Center dialogs triggered in a column
Center dialogs triggered in a column
Don't
Do not right-align dialogs triggered in a column
Do not right-align dialogs triggered in a column

Vertical Size / Scrolling

Each column inside the flexible column layout contains an independent floorplan with its own scrolling behavior. There is no “all-encompassing” scrollbar which scrolls all columns simultaneously. The height of each floorplan is defined by the screen size.

Do
Give each column its own scrollbar
Give each column its own scrollbar
Don't
There is no universal scrollbar for all columns
There is no universal scrollbar for all columns

Scroll Position

During column resizing, the navigated item in the master column may no longer be in the visible screen area. In such cases, we recommend setting the scroll position to the item currently open in the details column (“navigated” item). This allows the user to see at a glance which item from the list or table is being displayed in the details column.

Developer Hint
To get the right scroll position, you can use the “columnResize” event. For more information, see the API reference.

Two Columns (Master-Detail Mode)

By default, the flexible column layout starts off with one column. The user opens new columns by navigating forward. Since the flexible column layout is the successor of the split-screen layout, you can also use just two columns if your use case requires it. Do not start your application with three columns. Too much information at the beginning can confuse users.

Note:

  • If you start with two columns, make sure that size S shows the first column. Otherwise, users see the second column first, which might be confusing. (Showing the second column is the normal responsive behavior of the flexible column layout, which always shows the last column in size S.)
  • Even if you start with two columns, offer the layout arrow and the Close action in the second column.
Examples: Starting with two columns (sizes L and XL)
Examples: Starting with two columns (sizes L and XL)

Titles / Breadcrumbs / Up and Down Arrows

If more than one column is visible, show the application title in the shell bar. If the user switches to full screen mode, show the page title. Also show the page title for size S, where only one column is visible.

If multiple columns are visible, hide the breadcrumbs and up/down arrows.

Application title in the shell bar
Application title in the shell bar
Page title in the shell bar
Page title in the shell bar

Bookmarks

Every layout inside the flexible column layout can be bookmarked. For example, if the user bookmarks a 3-column layout set to 25% + 50% + 25%, load this layout when the user opens the bookmark.

Minimized Third Column

When the user expands the first column in a 3-column layout, the third column is minimized. CloseEnter Full Screen, and layout arrow actions also appear on the right-hand border of the second column to allow the user to return to the original 3-column layout.

Close: The second and third (minimized) columns close. A dialog can appear to warn the user about any unsaved data in the third column.

Full screen: When the user clicks the Enter Full Screen icon, the second column switches to full screen mode. The third column remains open (but not visible), and closes as soon as the user selects another item in the second column, or uses the Close action in the second column. If the user selects the same item in the second column, it opens in the same state as before it was minimized.

Layout arrow: The arrow for changing the layout to 25% + 50% + 25% is only available in the 33% + 67% layout. This arrow is hidden if the user is changing the layout to 67% + 33%.

Example of a minimized third column (33% + 67%)
Example of a minimized third column (33% + 67%)

Using Close in Combination with Back Navigation

The back navigation must not restore a column that was previously closed with the Close icon  .

Example: The user closes the third column by clicking the Close icon   in the upper-right corner. If the user then navigates back (UI or browser), the second column closes.

Using 'Close' in combination with back navigation
Using 'Close' in combination with back navigation

3 Columns in Size M

To offer a desktop-like experience in size M, the flexible column layout displays either the first and second or the second and third column. The user can switch between these views by using the layout arrow on the left or right side of the flexible column layout. Note: This behavior is only intended for size M. Do not use it for sizes L or XL.

3-column interaction in size M
3-column interaction in size M

Letterboxing

Do not use letterboxing in combination with the flexible column layout, as it will reduce the size of the usable screen area.

Do
Proper use of usable screen area
Proper use of usable screen area
Don't
Improper use of usable screen area with letterboxing
Improper use of usable screen area with letterboxing

Full Screen Navigation

After switching a column to full screen mode, selecting the Back icon exits the full screen mode.

If the screen is in full screen mode, and the user navigates forward, also show the next column in full screen mode. If the user navigates backward, go back in full screen mode until the point where the user initially switched to full screen. If the user then clicks Back again, return to the multi-column mode.

Using full screen mode in combination with navigation
Using full screen mode in combination with navigation

Footer Toolbar

Each column of the flexible column layout can have its own footer toolbar. There is no overall footer toolbar that spans several columns.

Do
Give each column its own footer toolbar
Give each column its own footer toolbar
Don't
There is no overall footer toolbar spanning several columns
There is no overall footer toolbar spanning several columns

Overlapping Header

The flexible column layout can display multiple floorplans side-by-side. However, it is not designed for splitting a single floorplan into several columns. As a result, there is no overall header that spans several columns. If you need to show additional content within a floorplan, use the dynamic side content.

Do
Each column has its own header
Each column has its own header
Don't
There is no overall header
There is no overall header

Empty Details Column

Do not display an empty details column when using the flexible column layout. For example, if no items have been selected in the second column, do not show an empty third column.

Do
If no items are selected in the 2nd column, show only 2 columns
If no items are selected in the 2nd column, show only 2 columns
Don't
Do not show an empty 3rd column
Do not show an empty 3rd column

Usage With One or Several Initial Full Screen Pages

Some use cases require starting an application with one or more full screen pages. You can do this by using the first column of the flexible column layout in full screen mode. This allows you to show one or several initial full screen pages with different content. Because of technical constraints, you must always use the flexible column layout to show this initial content.

Using the flexible column layout with initial full screen pages
Using the flexible column layout with initial full screen pages

Content Padding Inside Columns

The flexible column layout doesn’t provide additional paddings around the content area. Since some controls have different internal paddings, please ensure that they are aligned correctly.

Developer Hint
If you are using the dynamic page inside the flexible column layout, you can use the class sapFDynamicPageAlignContent to overcome misalignment issues.

Navigation Indicator

It is important for users to be able to scan through the master list and quickly identify the item for which the details are being shown in the second or third column. This is especially important for large lists. For this case, you can enable a “navigated” indicator for tables and lists to mark the item that was last opened.

If there are several tables/lists on one page, ensure that the indicator shows only for the last navigated item. There should never be two navigation indicators on one page.

Navigation indicator and master list without actions
Navigation indicator and master list without actions
Navigation indicator and master list with single selection
Navigation indicator and master list with single selection
Navigation indicator and master list with multiple selection
Navigation indicator and master list with multiple selection

Content Interaction

Selecting a Different Item

If the user selects a different item in the master-detail or master-detail-detail scenario, the content of the details column changes to reflect the data of the newly selected item. If the item is selected in the first column, and the last column was open before the new item was selected, selecting the item closes the last column.

Selecting a different item
Selecting a different item

Deleting an Item

When an item is deleted, there are two options for handling the content of the details columns:

  • Select the next item and change the content in the details column.
    If the user deletes the last item, you can opt to either select the previous item or close the details column(s). If the user deletes all the objects, always close all columns, since there is no content to display.
  • Do not select an item and close the other columns.
Deleting and selecting the next item
Deleting and selecting the next item
Deleting and closing the other columns
Deleting and closing the other columns

Behavior on Filtering

Filtering in one of the columns does not affect the content in the other columns.

Once a filter is applied, the results are shown in the same column. The content in the remaining columns does not change, unless another item is selected.

Filtering does not affect the other columns
Filtering does not affect the other columns

Tab/Anchor Navigation

Tabs and anchors are used for navigation within an object or as a filter (for example, in object pages). They affect only the respective column and do not close or change the content in the other columns.

Tab/anchor navigation does not affect the other columns
Tab/anchor navigation does not affect the other columns

SAP Fiori Elements

The flexible column layout is available in SAP Fiori elements for scenarios that use draft handling. If you use draft handling, we strongly recommend using the SAP Fiori elements implementation, wherever possible. The implementation already includes the navigation and routing behavior, as well as the Close and Full Screen actions, for example. Starting the application with two columns is also supported by SAP Fiori elements.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page

The dynamic page is the foundation for all pages in SAP Fiori. It is a generic layout control designed to support various floorplans and use cases. As a result, the content of both the header and the page can vary. Depending on your use case, you can either use one of the predefined floorplans or create your own layout.

One part of the dynamic page header (1) is collapsible, which helps users to focus on the actual page content (2), while ensuring that important header information and actions are readily available. The dynamic page also includes an optional footer toolbar (3) for closing or finalizing actions that impact the whole page.

All SAP Fiori floorplans use the dynamic page, or are visually aligned to look the same. For detailed guidance, see the corresponding floorplan articles.

The following floorplans use the dynamic page:

The following floorplans are using the dynamic page header:

When to Use

Use the dynamic page if:

Do not use the dynamic page if:

Dynamic Page vs. Semantic Page

The dynamic page is a skeleton structure that comes with empty content containers (page header, page content) and built-in responsive behavior.

This basic structure can be “filled” with content elements in three ways:

  • Automatically: If you are using an SAP Fiori element floorplan, the content of the dynamic page is provided out of the box.
  • Via the semantic page (recommended for freestyle apps): If you are creating a floorplan from scratch, you can use the semantic page (sap.f.semanticPage) to create a freestyle page. The semantic page is a separate control that comes with built-in logic for adding predefined content elements to the page, such as a title, global actions, and a footer toolbar. Using the semantic page significantly reduces the development effort for app teams, and ensures that the header and footer content is structured consistently.
    Note that in this case, the app developer uses only the semantic page control (which already embeds the dynamic page), and not the dynamic page control itself.
  • Manually: Technically, it’s possible to build the dynamic page from scratch. However, implementing the dynamic page manually is a significant development effort! Only consider this option in exceptional cases (for example, if you have special requirements for a freestyle app that cannot be implemented using the preconfigured semantic page control).

Components

Like all layouts, the dynamic page is below the shell bar of the SAP Fiori launchpad, which is always at the very top. The dynamic page consists of the following areas:

  1. Dynamic page header, comprising the header title (1a) and the expandable/collapsible header content (1b)
  2. Title
  3. Subtitle/summary
  4. Key information / KPI
  5. Global actions
  6. Header features to expand/collapse (6a) and pin/unpin (6b) the header
  7. Page content (differs depending on the use case and floorplan)
  8. Footer toolbar with finalizing actions

Dynamic Page Header

The dynamic page header contains the header title (mandatory) and the header content (optional).

Header Title

Dynamic page - Header title example
Dynamic page - Header title example

The header title bar (sap.f.DynamicPageTitle) always contains one of the following elements:

Mandatory Elements

  • Title (1): The title is located on the left of the header title bar, and is always visible. The title can contain one of the following components:

Optional Elements

  • Subtitle/summary (2)
    Placement: Always below the title. The subtitle is often used to summarize the most important information in the collapsed header content. For example, if the header area contains a filter (as in a list reportanalytical list page, or overview page), the subtitle can be used to display the “Filtered By” information.
  • Breadcrumb (3)
    Placement: Above the title. Depending on the floorplan and use case, you can add breadcrumb navigation. The breadcrumb is located above the header title, and is primarily used to display the hierarchy of subpages within an object page.
    Note that in the flexible column layout, the breadcrumb is only available in full screen mode, and only if just one column is visible.
  • Key information (4)
    Placement: In the middle area, but left-aligned. Floorplans can also contain key information, such as text, mini facets, and KPI tags.
    Note that currently, KPI tags are only used within the analytical list page and worklist floorplans.
  • Global actions (5)
    Placement: Global actions for the entire floorplan appear on the right-hand side of the header title bar. Always offer the actions as buttons, visualized either as text or icons. For more information, see Header Toolbar. In the collapsed mode, the header title offers the same actions as in the expanded mode and keeps them actionable.
  • Layout actions (6)
    Placement: Typical layout actions are the CloseFull Screen, or Exit Full Screen icons, which are mainly offered by the flexible column layout. Depending on the screen size, the layout actions are placed either on the very right of the global actions toolbar, separated by a divider line, or above the global actions (see more in the Responsiveness section). Note that the dynamic page only provides the area for the layout actions. The navigation actions themselves are defined separately (for example, using the semantic page).
Guidelines

  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • In the flexible column layout, ensure that the icons for the Close or Full Screen / Exit Full Screen actions always stay on the very right. Their position then remains stable, even if other actions are added (such as the paging buttons  and  ). The Close and Full Screen / Exit Full Screen actions must never move into the overflow.

Header Content

Dynamic page - Header content example
Dynamic page - Header content example

The optional header content (sap.f.DynamicPageHeader) is located below the header title. You can place any components in the header content area (1) as long as they follow the guidelines for the respective floorplan.

When the dynamic page header collapses, the header content area is hidden. If there is no header content, the header content area is hidden automatically. In the latter case, the header title is not interactive (snap on scroll or snap on click) and there is no expand/collapse header feature.

Header Features

Dynamic page - Header features
Dynamic page - Header features

The header features (3) allow users to control the visibility of header content using two icon buttons at bottom of the header content area:

  1. Expand/collapse header or   
  2. Pin/unpin header content 

Footer Toolbar

Dynamic page - Footer toolbar
Dynamic page - Footer toolbar

The footer toolbar (sap.m.Toolbar) is an optional part of the dynamic page. You can use it to offer closing or finalizing actions.

Combining the Dynamic Page with the Flexible Column Layout

The layout of the dynamic page is responsive and optimized for use within a flexible column layout. Each column (1, 2, 3) can contain its own dynamic page with a different floorplan, depending on the use case.

Dynamic page inside the flexible column layout
Dynamic page inside the flexible column layout

Behavior and Interaction

Initial Focus

The dynamic page itself doesn’t set an initial focus. The initial focus depends on the floorplan that is using the dynamic page and the specific app use case.

Dynamic Page Header

The dynamic page header supports three optional interaction patterns that can be combined. To show more of the actual page content, the header content can collapse or expand using defined triggers (snap on scroll and snap on click). In addition, users can fix the header content while scrolling through the page content with the pin feature. The combined usage of all three patterns is recommended and activated by default.

Dynamic page - Snap on scroll
Dynamic page - Snap on scroll
Dynamic page - Snap on click
Dynamic page - Snap on click
Dynamic page - Pin/unpin
Dynamic page - Pin/unpin

Starting in Expanded or Collapsed Mode

By default, the header content is initially expanded. In certain cases, it can also make sense to deviate from the default and allow the header to appear in collapsed mode when initiating the app. However, the idea is to always expand the header content when the application starts without a query (and the content area is therefore empty).

Snap on Scroll

Scrolling is the typical trigger for collapsing the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to collapsed mode and stays fixed. When the user scrolls up the page, the header content expands again.

Note that this interaction pattern works only in combination with an expandable/collapsible header content. It can be combined with snap on click, but does not have to be.

Snap on Click

The snap on click pattern is another way of expanding and collapsing the header content. The user can collapse the header without scrolling, and expand it again even when it has been collapsed by scrolling down. Two interaction variants are offered, which always appear in combination: clicking the header title and clicking the Expand Header / Collapse Header icon button in the header features area.

Again, the interaction pattern works only in combination with expandable/collapsible header content. It can be combined with snap on scroll, but does not have to be.

Clicking the Header Title

The user can expand and collapse the header content by clicking anywhere on the header title bar that has no active elements (such as links or active buttons). When using a mouse, the cursor changes from an arrow to a hand to support the user’s interaction. In addition, a hover effect is visible on the header title and on the Expand Header / Collapse Header icon button in the header area. If the header is expanded and the user clicks the title bar, the header content collapses, and vice versa.

Clicking the Expand/Collapse Header Button

The expand/collapse header feature is a small icon button directly below the header, which is also used to expand or collapse the header content. When the pin is active, the expand/collapse header button is still available and overrules the pin. The icon buttons for expanding and collapsing the header are an alternative to clicking on the header title bar, which might not have much clickable space. They also support keyboard actions.

Pinning the Header Content

Activating the pin feature keeps the header expanded while the user scrolls through the page content. This mode remains fixed until the user clicks the pin icon again or triggers snap on click. This feature is optional and can be switched off if it is not useful for your application.

The expand/collapse header button remains visible when the pin is activated. Clicking the Collapse Header  icon overrules the pin, collapses the header, and switches the pin button off. Do not offer the pin feature for floorplans without scrollbars (see special case below), or if there is no header content.

In the smartphone version, the pin action is not provided, as the pinned header would take up too much screen real estate. The same applies whenever the dynamic page header would occupy more than 60% of the screen, regardless of the device type. Overruling the pin feature keeps the focus on the content.

Note that this interaction works only in combination with expandable/collapsible header content. The pin button is available as soon as snap on scroll (or snap on click) is activated.

Special Case: No Page Scrolling Possible

The following special case applies for pages containing desktop-centric tables, such as the analytical tablegrid table, or tree table.

Because these tables use up all of the available screen space, there should not be a vertical scroll function, and hence no snap on scroll. In this special case, an explicit interaction via the expand/collapse header button is required to expand or collapse the content area. The pin feature is obsolete and is not provided.

This exceptional case also applies to chart containers that use up all the available screen space in a similar way to desktop-centric tables.

Keyboard Interaction

The dynamic page header expands automatically as soon as keyboard actions like tabbing or group jumps (F6) bring the content of the dynamic page header into focus.

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Key(s) Behavior
Tab Move the focus to the dynamic page header / header title bar. The dynamic page header expands automatically. If the focus is inside the header content area, move the focus to the next UI element within the header.

If the focus is on the last UI element within the header content area (expand/collapse header feature), leave the header. Collapse the header content.

Shift+Tab See Tab, in reverse order.
F6 If the focus is before the header title bar, set the focus to the header title bar. Expand the header content. If the focus is within the header content, move the focus out of the header and collapse the header content.
Shift+F6 See F6, in reverse order.

Responsiveness

The dynamic page offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to adapt automatically to small, medium, and large screen sizes.

The title (sap.m.Title) and subtitle (sap.m.Text) on the left truncate in collapsed mode to save vertical space, and wrap in expanded mode to offer the full text. This behavior needs to come from the respective controls for the title and subtitle. Overall, we recommend showing a maximum of 2 lines of text in collapsed mode. This prevents a disproportionate header height, especially on mobile devices if no summary line is used. The 2 lines can either be a combined title and subtitle, or a longer wrapping title. For more information, see wrapping and truncating text.

Key information, such as a KPI (middle area, left aligned), stays as long as possible before it moves into the overflow.

Global actions stay as long as possible. If there is no key information, the title and the global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds the available buttons to the overflow menu from right to left.

Layout actions: The dynamic page offers a specific area for layout actions, which reacts to the predefined breakpoint of 1280 px:

  • Less than 1280 px: Navigation actions are placed in a separate row above the global actions.
  • 1280 px or more: Navigation actions are placed to the right of the global actions on the same line.

This breakpoint corresponds to the page width and not to the window width. Therefore it doesn’t matter whether the page is used in the flexible column layout, on a desktop device, or on a mobile device.

Letterboxing limits the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability. Letterboxing can be used together with the dynamic page if the use case requires it. However, most business apps offer so much content that the page is typically shown across the entire screen, without letterboxing.

Summary Line

To save vertical space on smartphones, you can opt to display a smaller summary line instead of the collapsed header. The header content scrolls away as soon as the user scrolls up the page. The header converts to a summary line, which shows only the title and an arrow icon button on the very right of the screen. Tapping the summary line also expands and collapses the whole header. The rest of the page stays in the same position.

Guidelines
Use the summary line to help users to focus on the page content.

Size S with summary line
Size S with summary line

Examples

The dynamic page is a generic control. The content of both the header and the page differs from floorplan to floorplan. Here are some examples showing the most frequently-used variants for each type of floorplan. For detailed guidance, see the corresponding floorplan guidelines (analytical list pageoverview pagelist reportworklist, initial pageobject page, wizard).

Top Tips

  • Always use a header title – either as a text or link, or by including variant management. For the initial page floorplan, use an input field.
  • Use the header title and header content to provide the most relevant information and actions for your use case.
  • Only use KPI tags within the analytical list page and worklist floorplans.
  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • Make sure that the layout actions in the flexible column layout are displayed correctly and never get hidden in the overflow.
  • Start your application in expanded mode if users need further content or adjustment options to get started.
  • Offer the pin feature whenever users may need to fix the header content while scrolling through the page content.
  • Activate the summary line on smartphones to help users focus on the page content.

Related Links

Elements and Controls

Implementation

Multi-Instance Layout

The multi-instance layout allows the user to display and edit multiple objects within one page.

Beforehand, the user selects the objects from another page, usually a list report or a table. Each object then appears on a separate tab.

As a result, the user can work on several objects simultaneously and switch between them easily.

1. Select items in a list report
1. Select items in a list report
2. New page with several editable tabs
2. New page with several editable tabs
3. Tab in edit mode
3. Tab in edit mode
Information
The multi-instance layout must be implemented by the app team.

Usage

Use the multi-instance layout if users need to open and edit multiple objects simultaneously.

Do not use this layout if your users need a side-by-side display on the same page. Use the comparison pattern instead.

Components

The multi-instance layout uses a tab container.

The content of each tab is managed using an embedded object page floorplan.

Components of the multi-instance layout
Components of the multi-instance layout

The tab container holds:

  1. Opened tabs
  2. Scroll buttons and overview list (if not all tabs can be shown on the screen)
  3. A Create button (optional)

Tabs

Each tab represents one object. One tab is always active, while the others are inactive.

The tab contains a title and a Close button:

  • Title
    ID or name of the object. If the title text exceeds 25 characters, it is truncated.
    An asterisk next to the tab title indicates that the object was changed but not saved.
     Guideline: Use the same title as in the object page.
  • Close button ( )
    The Close button is shown on all tabs.
     Guideline: If the user closes a tab without saving first, display a warning. See Handling Unsaved Changes.

Scroll Buttons and Overview List

The tab container has an overflow mechanism for cases where there are too many tabs to display on the screen:

  • Horizontal scroll buttons (  and  ) can be used to scroll back and forth through the tabs.
  • An overflow menu lists all the tabs, including the hidden tabs.

“Create” Button

You can offer a Create button on the far right of the tab container. Selecting this button opens a new tab containing an empty object page.

 Guideline: Only use this button if the application allows users to create new objects.

Behavior and Interaction

Opening Tabs

The multi-instance layout is always triggered from another page, such as a list report.

To work on multiple objects, users select the relevant objects and choose a triggering action, such as Open in Tabs (3). This opens a new page, in which the selected objects appear as tabs.

Closing Tabs

To close a tab, the user can click the Close ( ) button on the tab itself, or close the tab from the overflow menu.

Closing the Last Tab

When the last remaining tab is closed, the complete page is closed and the user is returned to the page from which the items were selected.

Handling Unsaved Changes

If objects have unsaved changes, the corresponding tabs show an asterisk (*) next to the title.

To prevent data loss, show a warning message in the following cases:

Case 1: The user tries to close a tab with unsaved changes.

Message type: Warning
Message text: Your changes will be lost when you close this tab.
Buttons: Close, Cancel

Warning: Closing a tab with unsaved changes
Warning: Closing a tab with unsaved changes

Case 2: The user tries to leave the page when one or more tabs have unsaved changes (by clicking the Back button or navigating to a different page).

Message type: Warning
Message text: If you leave this page, your changes to the following [objects] will be lost:
[Object 1]
[Object 2]
Buttons: Leave Page, Cancel 

Warning: Leave page when tabs have unsaved changes
Warning: Leave page when tabs have unsaved changes

Responsiveness

The multi-instance layout is controlled by the sap.m.TabContainer control.

The tab container supports all three SAP Fiori responsive sizes: small, medium, and large.

Size L
Size L

Size M
Size M
Size S
Size S

Top Tips

  • To open the page containing the tabs, use a meaningful button text with the number of selected objects in brackets.
    Recommended label: Open in Tabs (number of objects)
    Example: Open in Tabs (3).
  • Use the same tab title as the object page title.
  • Always use an object page floorplan to display the content of a tab.
  • Only offer a Create button if the application allows users to create new objects.

Related Topics

Elements and Controls

Implementation

Letterboxing

In web design, it’s common practice to restrict the user interface to a certain width in order to preserve its original aspect ratio. This way, the interface does not become distorted or stretched when adapting to larger screen sizes.

If the screen is wider than the set width restriction, blank areas to the left and right of the user interface will appear. In many cases, these areas are used to display advertisements. This design element is called letterboxing because it restricts the user interface to a certain width similar to the shape of a classical letterbox.

SAP Fiori also offers letterboxing. Today, we can easily adjust content to different screen sizes by using responsive layouts and controls, so letterboxing is an optional feature. If letterboxing is switched on, the screen size is reduced to 1280 px.

Letterboxing switched on (screen width 1280 px)
Letterboxing switched on (screen width 1280 px)
Letterboxing switched off (full screen width)
Letterboxing switched off (full screen width)

Guidelines

When to Switch ON Letterboxing

  • You want to make the UI appear simple and focused.
  • There is too little content on the UI to require using the full width of the screen.
  • The content cannot respond to large differences in size, and stretching the app would distort the content and lead to poor usability.

Letterboxing can be switched on or off per entire application or for individual pages within an application. Only enable letterboxing for individual pages if the app contains one or a few pages that benefit from using letterboxing.

Information
If a user frequently navigates between two apps / pages, avoid changing between letterboxing and full screen settings. Otherwise, users might lose focus due to the constant layout change.

If you want to use letterboxing for an application, set the appWidthLimited property of the sap.m.Shell control to true.

In some cases, applications may need to have the flexibility to change the width at runtime for different views. Example: fullWidth in view A and letterboxing in view B.

Through a new API, apps can change the width in the AppConfiguration service at runtime for different views.

When to Switch OFF Letterboxing

  • A lot of information needs to be displayed. This will require the app to accommodate the content to all intermediate screen sizes in a graceful way.
  • The user needs to have as much content as possible on the screen without having to scroll. This has to be handled carefully as it can create a crowded and messy appearance.

Flexible Column Layout

The flexible column layout is a layout control that displays multiple floorplans on a single page. This allows faster and more fluid navigation between multiple floorplans than the usual page-by-page navigation. The flexible column layout offers different layouts with up to three columns (1, 2, 3). Users can expand the column they want to focus on, switch between different layouts, and view the rightmost column in full screen mode.

Flexible column layout - Example with three columns
Flexible column layout - Example with three columns

The flexible column layout behaves responsively, which makes it suitable for both desktop and mobile devices. Depending on the available screen width, an optimized layout is loaded to ensure the best possible user experience on each device. The flexible column layout is a generic control. As a layout container, it does not provide any content itself.

The flexible column layout is already incorporated within SAP Fiori elements.

Usage

Use the flexible column layout if:

  • You want to create a list-detail or list-detail-detail layout, in which the user can drill down or navigate.

Do not use the flexible column layout if:

  • You want to build a workbench or tools layout. The flexible column layout is not meant to provide a main column with additional side columns on the left and/or right. If you want to display additional content to enrich the main content and to help users better perform their tasks, use the dynamic side content instead.
  • You want to create a dashboard with context-independent pages.
  • You want to open multiple instances of the same object type. Use the multi-instance handling floorplan instead.
  • You want to split a single object into multiple columns, or display only a small amount of information.
  • You want to embed the SAP Fiori launchpad or overview page into one of the columns.

Structure

As with all layouts, the flexible column layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

Depending on the current layout and display size, the flexible column layout consists of one, two, or three horizontally-aligned columns. Each column contains content that is not provided by the flexible column layout itself. The flexible column layout is not restricted to a specific floorplan, as long as the floorplan you use is responsive down to phone size. However, we recommend using the dynamic page.

Information
It is not possible to use the SAP Fiori launchpad or the overview page in one of the columns.

Possible Layouts

To give users a better overview, the flexible column layout offers different layouts with one, two, or three columns. Depending on the screen size, up to five alternative layouts are available.

Information

Language Dependency

For simplicity, this article assumes that the last column (the lowest drilldown level in the hierachy) is the rightmost column (left-to-right languages).

For right-to-left languages, however, the last column is the leftmost column.

Flexible column layout - Structure example (25% + 50% + 25%)
Flexible column layout - Structure example (25% + 50% + 25%)

Size L and XL (Desktop)

There are five different layouts in sizes L and XL: a full screen layout, as well as two different 2-column and 3-column layouts.

Available layouts in sizes L and XL
Available layouts in sizes L and XL

Size M (Tablet)

There are three different layouts in size M: a full screen layout and two different 2-column layouts. There is no 3-column layout due to the limited width. However, you can still load 3 pages in size M. Instead of showing them all side-by-side, the user can switch between columns 1/2 and 2/3.

Available layouts in size M
Available layouts in size M

Size S (Phone)

Because of the limited width, there is no multi-column layout for Size S. Instead, the rightmost column is shown in full screen mode.

Available layout in size S
Available layout in size S

Components

The flexible column layout offers a few simple actions that allow users to adapt the current layout according to their needs.

Note: Some of the actions (illustrated by blue lines in the image below) recover the last state of the layout to which they refer. In other words, the result of the action depends on the previous state of the layout.

Layout Arrow

The layout arrows allow users to expand the width of a given column, thereby changing the current layout. However, this action cannot be used to expand a column to full screen mode. There is a separate action for expanding a column to full screen mode.

The layout arrow is located next to the divider and points in the direction in which a column can be expanded. If a column cannot be expanded any further, the action is hidden.

Information
The user cannot change the size of a column freely (for example, 15% + 85%).

Enter Full Screen Mode

With the Full Screen icon  , the user can switch the rightmost column to full screen mode. The action is located in the rightmost column, and is only offered if there is more than one column.

Exit Full Screen Mode

By selecting the Exit Full Screen icon  , the user can exit the full screen and switch back to the multi-column (side-by-side) view. The action is only available while in full screen mode.

Information
The actions are not available in size S, which only displays a single column.

Close

With the Close icon   , the user can close the last (rightmost) column. If the user selects this action in the second column while the third column is minimized, both columns are closed. Close is also available in full screen mode, and in the second/third column for size S.

Information

The Close and Enter Full Screen / Exit Full Screen actions:

  • Are only displayed in the third column (or in the second column if there is no third column, or if the third column is minimized).
  • Are displayed as the last actions in the layout action section (or in the global actions toolbar if there is no layout action section in the floorplan). The layout action section is displayed to the right of the global actions on columns ≥1280 px wide, and in a separate line above the global actions on columns <1280 px wide.
  • Never move into the overflow.
  • Are always shown side-by-side (Enter Full Screen / Exit Full Screen icon left, Close icon right).
    Exception: There is no Enter Full Screen action in size S.

Developer Hint
The actions for entering and exiting full screen mode and closing columns are not provided automatically by the flexible column layout control, and need to be implemented manually. However, you can use the semantic page, which supports these actions for freestyle applications (only available with the dynamic page).

Navigation

In addition to the actions specific to the flexible column layout, the user can also use the forward and backward navigation to navigate through the flexible column layout. Drilling in or navigating forward opens a new column, while Back closes a column or exits the full screen mode (depending on what the last action was).
Please note: Back does not restore layout changes (such as switching from 33% + 67% to 67% + 33%). It also doesn’t reopen columns that were closed previously using the Close button (  ).

Because the flexible column layout only supports a maximum of 3 columns, any follow-on pages are loaded in full screen mode. These pages do not contain Close or Enter Full Screen / Exit Full Screen actions.

By default, the width is initially 33% for the second column and 25% for the third column. You can also set the width of the second column to 67%, or the third to 50% if your use case requires it.

Developer Hint
To implement the navigation/routing, you can use the SemanticHelper class, which provides predefined behavior to simplify the implementation.

Responsiveness

The flexible column layout changes its behavior for sizes XL, L, M and S in real time whenever the user resizes the screen.

If no previous state has been saved, ensure that the default layout appears automatically. For example, if the flexible column layout was initially loaded in size S and the user then navigates to the second column and changes the browser window to size M, show the default 2-column layout for size M (67% + 33%).

Responsiveness of the flexible column layout
Responsiveness of the flexible column layout

Behavior and Interaction

Dialogs

Dialogs triggered in one of the columns are centered over the entire screen.

Do
Center dialogs triggered in a column
Center dialogs triggered in a column
Don't
Do not right-align dialogs triggered in a column
Do not right-align dialogs triggered in a column

Vertical Size / Scrolling

Each column inside the flexible column layout contains an independent floorplan with its own scrolling behavior. There is no “all-encompassing” scrollbar which scrolls all columns simultaneously. The height of each floorplan is defined by the screen size.

Do
Give each column its own scrollbar
Give each column its own scrollbar
Don't
There is no universal scrollbar for all columns
There is no universal scrollbar for all columns

Scroll Position

During column resizing, the navigated item in the list column may no longer be in the visible screen area. In such cases, we recommend setting the scroll position to the item currently open in the details column (“navigated” item). This allows the user to see at a glance which item from the list or table is being displayed in the details column.

Developer Hint
To get the right scroll position, you can use the “columnResize” event. For more information, see the API reference.

Two Columns (List-Detail Mode)

By default, the flexible column layout starts off with one column. The user opens new columns by navigating forward. Since the flexible column layout is the successor of the split-screen layout, you can also use just two columns if your use case requires it. Do not start your application with three columns. Too much information at the beginning can confuse users.

Note:

  • If you start with two columns, make sure that size S shows the first column. Otherwise, users see the second column first, which might be confusing. (Showing the second column is the normal responsive behavior of the flexible column layout, which always shows the last column in size S.)
  • Even if you start with two columns, offer the layout arrow and the Close action in the second column.
Examples: Starting with two columns (sizes L and XL)
Examples: Starting with two columns (sizes L and XL)

Titles / Breadcrumbs / Up and Down Arrows

If more than one column is visible, show the application title in the shell bar. If the user switches to full screen mode, show the page title. Also show the page title for size S, where only one column is visible.

If multiple columns are visible, hide the breadcrumbs and up/down arrows.

Application title in the shell bar
Application title in the shell bar
Page title in the shell bar
Page title in the shell bar

Bookmarks

Every layout inside the flexible column layout can be bookmarked. For example, if the user bookmarks a 3-column layout set to 25% + 50% + 25%, load this layout when the user opens the bookmark.

Minimized Third Column

When the user expands the first column in a 3-column layout, the third column is minimized. CloseEnter Full Screen, and layout arrow actions also appear on the right-hand border of the second column to allow the user to return to the original 3-column layout.

Close: The second and third (minimized) columns close. A dialog can appear to warn the user about any unsaved data in the third column.

Full screen: When the user clicks the Enter Full Screen icon, the second column switches to full screen mode. The third column remains open (but not visible), and closes as soon as the user selects another item in the second column, or uses the Close action in the second column. If the user selects the same item in the second column, it opens in the same state as before it was minimized.

Layout arrow: The arrow for changing the layout to 25% + 50% + 25% is only available in the 33% + 67% layout. This arrow is hidden if the user is changing the layout to 67% + 33%.

Example of a minimized third column (33% + 67%)
Example of a minimized third column (33% + 67%)

Using Close in Combination with Back Navigation

The back navigation must not restore a column that was previously closed with the Close icon  .

Example: The user closes the third column by clicking the Close icon   in the upper-right corner. If the user then navigates back (UI or browser), the second column closes.

Using 'Close' in combination with back navigation
Using 'Close' in combination with back navigation

3 Columns in Size M

To offer a desktop-like experience in size M, the flexible column layout displays either the first and second or the second and third column. The user can switch between these views by using the layout arrow on the left or right side of the flexible column layout. Note: This behavior is only intended for size M. Do not use it for sizes L or XL.

3-column interaction in size M
3-column interaction in size M

Letterboxing

Do not use letterboxing in combination with the flexible column layout, as it will reduce the size of the usable screen area.

Do
Proper use of usable screen area
Proper use of usable screen area
Don't
Improper use of usable screen area with letterboxing
Improper use of usable screen area with letterboxing

Full Screen Navigation

After switching a column to full screen mode, selecting the Back icon exits the full screen mode.

If the screen is in full screen mode, and the user navigates forward, also show the next column in full screen mode. If the user navigates backward, go back in full screen mode until the point where the user initially switched to full screen. If the user then clicks Back again, return to the multi-column mode.

Using full screen mode in combination with navigation
Using full screen mode in combination with navigation

Footer Toolbar

Each column of the flexible column layout can have its own footer toolbar. There is no overall footer toolbar that spans several columns.

Do
Give each column its own footer toolbar
Give each column its own footer toolbar
Don't
There is no overall footer toolbar spanning several columns
There is no overall footer toolbar spanning several columns

Overlapping Header

The flexible column layout can display multiple floorplans side-by-side. However, it is not designed for splitting a single floorplan into several columns. As a result, there is no overall header that spans several columns. If you need to show additional content within a floorplan, use the dynamic side content.

Do
Each column has its own header
Each column has its own header
Don't
There is no overall header
There is no overall header

Empty Details Column

Do not display an empty details column when using the flexible column layout. For example, if no items have been selected in the second column, do not show an empty third column.

Do
If no items are selected in the 2nd column, show only 2 columns
If no items are selected in the 2nd column, show only 2 columns
Don't
Do not show an empty 3rd column
Do not show an empty 3rd column

Usage With One or Several Initial Full Screen Pages

Some use cases require starting an application with one or more full screen pages. You can do this by using the first column of the flexible column layout in full screen mode. This allows you to show one or several initial full screen pages with different content. Because of technical constraints, you must always use the flexible column layout to show this initial content.

Using the flexible column layout with initial full screen pages
Using the flexible column layout with initial full screen pages

Content Padding Inside Columns

The flexible column layout doesn’t provide additional paddings around the content area. Since some controls have different internal paddings, please ensure that they are aligned correctly.

Developer Hint
If you are using the dynamic page inside the flexible column layout, you can use the class sapFDynamicPageAlignContent to overcome misalignment issues.

Navigation Indicator

It is important for users to be able to scan through the list and quickly identify the item for which the details are being shown in the second or third column. This is especially important for large lists. For this case, you can enable a “navigated” indicator for tables and lists to mark the item that was last opened.

If there are several tables/lists on one page, ensure that the indicator shows only for the last navigated item. There should never be two navigation indicators on one page.

Navigation indicator and list without actions
Navigation indicator and list without actions
Navigation indicator and list with single selection
Navigation indicator and list with single selection
Navigation indicator and list with multiple selection
Navigation indicator and list with multiple selection

Content Interaction

Selecting a Different Item

If the user selects a different item in the list-detail or list-detail-detail layout, the content of the details column changes to reflect the data of the newly selected item. If the item is selected in the first column, and the last column was open before the new item was selected, selecting the item closes the last column.

Selecting a different item
Selecting a different item

Deleting an Item

When an item is deleted, there are two options for handling the content of the details columns:

  • Select the next item and change the content in the details column.
    If the user deletes the last item, you can opt to either select the previous item or close the details column(s). If the user deletes all the objects, always close all columns, since there is no content to display.
  • Do not select an item and close the other columns.
Deleting and selecting the next item
Deleting and selecting the next item
Deleting and closing the other columns
Deleting and closing the other columns

Behavior on Filtering

Filtering in one of the columns does not affect the content in the other columns.

Once a filter is applied, the results are shown in the same column. The content in the remaining columns does not change, unless another item is selected.

Filtering does not affect the other columns
Filtering does not affect the other columns

Tab/Anchor Navigation

Tabs and anchors are used for navigation within an object or as a filter (for example, in object pages). They affect only the respective column and do not close or change the content in the other columns.

Tab/anchor navigation does not affect the other columns
Tab/anchor navigation does not affect the other columns

SAP Fiori Elements

The flexible column layout is available in SAP Fiori elements for scenarios that use draft handling. If you use draft handling, we strongly recommend using the SAP Fiori elements implementation, wherever possible. The implementation already includes the navigation and routing behavior, as well as the Close and Full Screen actions, for example. Starting the application with two columns is also supported by SAP Fiori elements.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Semantic Page

The semantic page is recommended as the basic layout for freestyle applications. It builds on the basic functionality of the dynamic page and adds predefined content elements to the header toolbar (1) and footer toolbar (2), such as a title, global actions, and finalizing actions.

Using the semantic page significantly reduces the development effort for app teams, and ensures that the placement of the header and footer content conforms with the SAP Fiori Design Guidelines.

Semantic page
Semantic page

When to Use

Use the semantic page if:

  • You are building a freestyle application.
  • You want to use a predefined layout to reduce development time.

Do not use the semantic page if:

Components

The semantic page is based on the structure of the dynamic page. In short, the semantic page has the following elements:

  1. Header title
  2. Header content
  3. Page content, dependent on the use case
  4. Footer toolbar with finalizing actions

The control’s semantics determine whether content specified in the control appears in the header toolbar or footer toolbar.

Semantic page structure
Semantic page structure

Header Title

Semantic page - Header title example
Semantic page - Header title example

Mandatory Elements

  • Title (1): The title is located on the left-hand side of the header title bar and is always visible.

Optional Elements

  • Subtitle (2): The subtitle is always below the title and is often used to summarize the most important information.
  • Breadcrumb (3): Depending on the use case, you can add a breadcrumb navigation.
  • Key information (4): Key information is located in the middle area, and is left aligned. This can be text, mini facets, or KPI tags, for example.
  • Global actions toolbar (5): The global actions toolbar for the entire floorplan is located on the right-hand side. Always use buttons for global actions, visualized either as text or icons. For more information, see header toolbar.
    Overflow menu: Actions move into the overflow from right to left. Icons are shown in the overflow menu with a corresponding text.
  • Layout actions (6): These are actions like the Close or Full Screen / Exit Full Screen icons, which are mainly offered by the flexible column layout. Depending on the screen size, layout actions are placed either to the right of the global actions toolbar, separated by a divider line, or above the global actions.

For more information about the expandable and collapsible header and its features, see dynamic page.

Guidelines

  • Layout actions never move into the overflow and are always last in the header toolbar.
  • Do not remove or disable actions within the header title when it is collapsed.

Header Content

The optional header content is not defined in the semantic page and can be populated according to the use case.

Page Content

Like the header content, the page content is also not specified by the semantic page. It is proportionally the largest area of the layout and can be populated according to the use case.

Footer Toolbar

Semantic page - Footer toolbar
Semantic page - Footer toolbar

The footer toolbar is optional and contains the following components:

  1. Message button (containing the message popover) on the left-hand side
  2. Draft indicator on the right-hand side, just before the finalizing actions
  3. Finalizing actions on the right-hand side

Behavior and Interaction

The interaction and guidelines for the dynamic page also apply for the semantic page. The actions in the semantic page and their order are predefined and follow the rules of the action placement concept. For more information about toolbars in general, see toolbar overview.

Responsiveness

The semantic page offers considerable freedom and flexibility. It is designed to adapt automatically to small, medium, and large screen sizes. Next to that the responsive behavior depends on the behavior of the content being displayed.

The title (sap.m.Title) and subtitle (sap.m.Text) on the left truncate in collapsed mode to save vertical space and wrap in expanded mode to offer the full text. This behavior needs to come from the respective controls for the title and subtitle. Overall, it is recommend not to show more than 2 lines of text in collapsed mode to avoid a disproportionate header height, especially on mobile devices, when no summary line is used. This can either be a combined title and subtitle or a longer wrapping title. For more information see wrapping and truncating text.

Key information (middle area, left aligned) stays as long as possible before it moves into the overflow.

Global actions also stay as long as possible, but have a predefined width depending on the available space. If no key information is available, the title and global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds buttons to the overflow menu from right to left.

The combination of a semantic page within in a flexible column layout and accompanying layout actions works as described for the dynamic page. The same applies for the summary line and letterboxing.

Top Tips

  • Use always a header title.
  • Use the header title and header content to provide the most relevant information and actions for your use case.
  • Do not remove or disable actions within the header title when it is collapsed.
  • Make sure that the layout actions in the flexible column layout are displayed correctly and never get hidden in the overflow.
  • Start your application in expanded mode if users need further content or adjustment options to get started.
  • Offer the pinning feature whenever users may need to fix the header content while scrolling through the page content.
  • Activate the summary line on smartphones to help users focus on the actual content of the page.

Related Topics

Elements and Controls

Implementation

Comparison Pattern

The comparison pattern allows users to select items from a list and display them side-by-side. This makes it easier to compare the characteristics of multiple items.  

When to Use

Use the comparison pattern if:

  • Users need to compare two or more similar items.
  • Users need to compare versions of the same item.
  • You are using the Dynamic Page Layout.

Do not use the comparison pattern if:

  • There is no business need for displaying items side-by-side. Don’t use the pattern purely for visualization.
  • You want to display only one item. In this case, use the Object Page Floorplan instead.

Components

The comparison pattern comprises the following components. All are mandatory: 

  • Triggering action: Opens the comparison view for the selected items.
  • Header areaShows the most important characteristics for identifying and comparing itemsEach item is represented by a card.
  • Content areaShows all characteristics needed for comparison. Each item is represented by a panel.

Triggering Action

The comparison is triggered by a button (1) on a selection screen (for example, in a table toolbar).

Guidelines
Use the action text Compare or Compare [Objects]. In parentheses, include a counter for the number of selected items.

For example:
Compare (3)
Compare Products (3)

Comparison pattern - Triggering action
Comparison pattern - Triggering action

Header Area

The dynamic page header holds the header area of the comparison pattern. To show more of the actual page content, the header content can collapse or expand using defined triggers (snap on scroll and snap on click). When launching the app, the header is expanded by default. Users can fix the expanded header content while scrolling through the page content with the pin feature. For more information about the basic behavior of the header, see Dynamic Page Layout – Dynamic Page Header.

The header area of the comparison pattern has two main components:

1. Carousel

The carousel control displays the items in cards (1).

If there is not enough space to show all cards, paging buttons are displayed. Each time a user navigates left or right, the previous or next card is displayed. This also affects the respective panels in the content area. They are updated with the details of the item represented by the card.

Developer Hint
Always show the paging indicator when there is navigation between the cards (property showPageIndicator = true).

2. Card

The card contains the most important characteristics for an item (2). It consists of the card header and the card content.

Guidelines

  • Apply the same size and structure for all cards.
  • In the header area, show at least a title. A subtitle and image/avatar are optional. Do not show any other information.
  • For a lighter and more convenient comparison, limit the details you display in the card content. This keeps the cards shorter and easier to read. Use the panels to show more information.

When the header snaps, the information in the header area stays and the card content hides.

Warning
The comparison pattern uses the sap.f.card control in the header area. Do not use sap.f.card outside the comparison pattern.
Comparison pattern - Expanded header
Comparison pattern - Expanded header
Comparison pattern - Collapsed header
Comparison pattern - Collapsed header

Content Area

The dynamic page content area holds the content area of the comparison pattern.

The content area must contain at least two panels. For easier and faster comparison, use up to 10 panels to display the specifics of the selected items.

Panel

The expandable panel (1) is used to display all comparable characteristics in columns. A column is aligned with the respective card.

The first column of each panel should contain the characteristics of the item represented with the first card, the second column the item represented with the second card, and so on.

A panel must have a title that describes the characteristics. When collapsed (2), the panel displays only the title toolbar.

Guidelines

  • Show at least two panels in the content area.
  • For easier and faster comparison, use up to 10 panels to display the specifics of the selected items.
  • If an item is missing a characteristic, leave the corresponding field blank. Learn more here.

Comparison pattern - Content area
Comparison pattern - Content area
Comparison pattern content area - Expanded and collapsed panels
Comparison pattern content area - Expanded and collapsed panels
Comparison pattern content area - Missing characteristics
Comparison pattern content area - Missing characteristics

Behavior and Interaction

The expand/collapse header and pin/unpin header features work as described in the Dynamic Page article.

Adding More Items

If your users need to add more items while comparing, place an Add to Comparison action in the header. For more information, see Dynamic Page Layout – Header Title.

For adding more items, either show a dialog or the original page the user started from. Make sure that you display the items that are already in the comparison: in the dialog, also show the previously selected items; in the original page, keep the items selected.

Responsiveness

The comparison pattern adapts the number of visible items based on the screen size. If a card is no longer in the visible area, also hide its corresponding column in the panels.

On size S, there is only one visible card in the header area and its corresponding panels in the content area. Users can navigate left or right to see the next or previous item.

The comparison pattern maintains the scrolling position of the page when switching to the next or previous item. This feature helps the user focus on a certain characteristic while navigating through the items.

On size M and larger, always show two or more cards with their corresponding panel columns in the visible area.

Size S
Size S
Size S - Snapped header
Size S - Snapped header
Size M
Size M
Size M - Snapped header
Size M - Snapped header
Size L
Size L
Size L - Snapped header
Size L - Snapped header

Example

Top Tips

Compare apples with apples.

Wording

  • For triggering the comparison, use a meaningful button text with the number of selected items in brackets. We recommend “Compare (<number of selected items>)”, for example, Compare (3).
  • Use a page title that describes the task. We recommend “Compare <selected object type>”, for example, Compare Products.
  • Use precise panel titles to describe the characteristics.

Cards

  • Show only the most important information for an item on the card.
  • If the cards contain only a title, subtitle, and image/avatar, show the dynamic page header in collapsed mode when starting the app.
  • Link each item’s object page (if available) to the header area of the card. This gives users access to all the characteristics for a specific item to help them make a final decision.

Related Topics

Elements and Controls

Implementation

Comparison Pattern

The comparison pattern allows users to select items from a list and display them side-by-side. This makes it easier to compare the characteristics of multiple items.  

When to Use

Use the comparison pattern if:

  • Users need to compare two or more similar items.
  • Users need to compare versions of the same item.
  • You are using the Dynamic Page Layout.

Do not use the comparison pattern if:

  • There is no business need for displaying items side-by-side. Don’t use the pattern purely for visualization.
  • You want to display only one item. In this case, use the Object Page Floorplan instead.

Components

The comparison pattern comprises the following components. All are mandatory: 

  • Triggering action: Opens the comparison view for the selected items.
  • Header areaShows the most important characteristics for identifying and comparing itemsEach item is represented by a card.
  • Content areaShows all characteristics needed for comparison. Each item is represented by a panel.

Triggering Action

The comparison is triggered by a button (1) on a selection screen (for example, in a table toolbar).

Guidelines
Use the action text Compare or Compare [Objects]. In parentheses, include a counter for the number of selected items.

For example:
Compare (3)
Compare Products (3)

Comparison pattern - Triggering action
Comparison pattern - Triggering action

Header Area

The dynamic page header holds the header area of the comparison pattern. To show more of the actual page content, the header content can collapse or expand using defined triggers (snap on scroll and snap on click). When launching the app, the header is expanded by default. Users can fix the expanded header content while scrolling through the page content with the pin feature. For more information about the basic behavior of the header, see Dynamic Page Layout – Dynamic Page Header.

The header area of the comparison pattern has two main components:

1. Carousel

The carousel control displays the items in cards (1).

If there is not enough space to show all cards, paging buttons are displayed. Each time a user navigates left or right, the previous or next card is displayed. This also affects the respective panels in the content area. They are updated with the details of the item represented by the card.

Developer Hint
Always show the paging indicator when there is navigation between the cards (property showPageIndicator = true).

2. Card

The card contains the most important characteristics for an item (2). It consists of the card header and the card content.

Guidelines

  • Apply the same size and structure for all cards.
  • In the header area, show at least a title. A subtitle and image/avatar are optional. Do not show any other information.
  • For a lighter and more convenient comparison, limit the details you display in the card content. This keeps the cards shorter and easier to read. Use the panels to show more information.

When the header snaps, the information in the header area stays and the card content hides.

Warning
The comparison pattern uses the sap.f.card control in the header area. Do not use sap.f.card outside the comparison pattern.
Comparison pattern - Expanded header
Comparison pattern - Expanded header
Comparison pattern - Collapsed header
Comparison pattern - Collapsed header

Content Area

The dynamic page content area holds the content area of the comparison pattern.

The content area must contain at least two panels. For easier and faster comparison, use up to 10 panels to display the specifics of the selected items.

Panel

The expandable panel (1) is used to display all comparable characteristics in columns. A column is aligned with the respective card.

The first column of each panel should contain the characteristics of the item represented with the first card, the second column the item represented with the second card, and so on.

A panel must have a title that describes the characteristics. When collapsed (2), the panel displays only the title toolbar.

Guidelines

  • Show at least two panels in the content area.
  • For easier and faster comparison, use up to 10 panels to display the specifics of the selected items.
  • If an item is missing a characteristic, leave the corresponding field blank. Learn more here.

Comparison pattern - Content area
Comparison pattern - Content area
Comparison pattern content area - Expanded and collapsed panels
Comparison pattern content area - Expanded and collapsed panels
Comparison pattern content area - Missing characteristics
Comparison pattern content area - Missing characteristics

Behavior and Interaction

The expand/collapse header and pin/unpin header features work as described in the Dynamic Page article.

Adding More Items

If your users need to add more items while comparing, place an Add to Comparison action in the header. For more information, see Dynamic Page Layout – Header Title.

For adding more items, either show a dialog or the original page the user started from. Make sure that you display the items that are already in the comparison: in the dialog, also show the previously selected items; in the original page, keep the items selected.

Responsiveness

The comparison pattern adapts the number of visible items based on the screen size. If a card is no longer in the visible area, also hide its corresponding column in the panels.

On size S, there is only one visible card in the header area and its corresponding panels in the content area. Users can navigate left or right to see the next or previous item.

The comparison pattern maintains the scrolling position of the page when switching to the next or previous item. This feature helps the user focus on a certain characteristic while navigating through the items.

On size M and larger, always show two or more cards with their corresponding panel columns in the visible area.

Size S
Size S
Size S - Snapped header
Size S - Snapped header
Size M
Size M
Size M - Snapped header
Size M - Snapped header
Size L
Size L
Size L - Snapped header
Size L - Snapped header

Example

Top Tips

Compare apples with apples.

Wording

  • For triggering the comparison, use a meaningful button text with the number of selected items in brackets. We recommend “Compare (<number of selected items>)”, for example, Compare (3).
  • Use a page title that describes the task. We recommend “Compare <selected object type>”, for example, Compare Products.
  • Use precise panel titles to describe the characteristics.

Cards

  • Show only the most important information for an item on the card.
  • If the cards contain only a title, subtitle, and image/avatar, show the dynamic page header in collapsed mode when starting the app.
  • Link each item’s object page (if available) to the header area of the card. This gives users access to all the characteristics for a specific item to help them make a final decision.

Related Topics

Elements and Controls

Implementation

Dynamic Page

The dynamic page is the foundation for all pages in SAP Fiori. It is a generic layout control designed to support various floorplans and use cases. As a result, the content of both the header and the page can vary. Depending on your use case, you can either use one of the predefined floorplans or create your own layout.

One part of the dynamic page header (1) is collapsible, which helps users to focus on the actual page content (2), while ensuring that important header information and actions are readily available. The dynamic page also includes an optional footer toolbar (3) for closing or finalizing actions that impact the whole page.

All SAP Fiori floorplans use the dynamic page, or are visually aligned to look the same. For detailed guidance, see the corresponding floorplan articles.

The following floorplans use the dynamic page:

The following floorplans are using the dynamic page header:

When to Use

Use the dynamic page if:

Do not use the dynamic page if:

Dynamic Page vs. Semantic Page

The dynamic page is a skeleton structure that comes with empty content containers (page header, page content) and built-in responsive behavior.

This basic structure can be “filled” with content elements in three ways:

  • Automatically: If you are using an SAP Fiori element floorplan, the content of the dynamic page is provided out of the box.
  • Via the semantic page (recommended for freestyle apps): If you are creating a floorplan from scratch, you can use the semantic page (sap.f.semanticPage) to create a freestyle page. The semantic page is a separate control that comes with built-in logic for adding predefined content elements to the page, such as a title, global actions, and a footer toolbar. Using the semantic page significantly reduces the development effort for app teams, and ensures that the header and footer content is structured consistently.
    Note that in this case, the app developer uses only the semantic page control (which already embeds the dynamic page), and not the dynamic page control itself.
  • Manually: Technically, it’s possible to build the dynamic page from scratch. However, implementing the dynamic page manually is a significant development effort! Only consider this option in exceptional cases (for example, if you have special requirements for a freestyle app that cannot be implemented using the preconfigured semantic page control).

Components

Like all layouts, the dynamic page is below the shell bar of the SAP Fiori launchpad, which is always at the very top. The dynamic page consists of the following areas:

  1. Dynamic page header, comprising the header title (1a) and the expandable/collapsible header content (1b)
  2. Title
  3. Subtitle/summary
  4. Key information / KPI
  5. Global actions
  6. Header features to expand/collapse (6a) and pin/unpin (6b) the header
  7. Page content (differs depending on the use case and floorplan)
  8. Footer toolbar with finalizing actions

Dynamic Page Header

The dynamic page header contains the header title (mandatory) and the header content (optional).

Header Title

Dynamic page - Header title example
Dynamic page - Header title example

The header title bar (sap.f.DynamicPageTitle) always contains one of the following elements:

Mandatory Elements

  • Title (1): The title is located on the left of the header title bar, and is always visible. The title can contain one of the following components:

Optional Elements

  • Subtitle/summary (2)
    Placement: Always below the title. The subtitle is often used to summarize the most important information in the collapsed header content. For example, if the header area contains a filter (as in a list reportanalytical list page, or overview page), the subtitle can be used to display the “Filtered By” information.
  • Breadcrumb (3)
    Placement: Above the title. Depending on the floorplan and use case, you can add breadcrumb navigation. The breadcrumb is located above the header title, and is primarily used to display the hierarchy of subpages within an object page.
    Note that in the flexible column layout, the breadcrumb is only available in full screen mode, and only if just one column is visible.
  • Key information (4)
    Placement: In the middle area, but left-aligned. Floorplans can also contain key information, such as text, mini facets, and KPI tags.
    Note that currently, KPI tags are only used within the analytical list page and worklist floorplans.
  • Global actions (5)
    Placement: Global actions for the entire floorplan appear on the right-hand side of the header title bar. Always offer the actions as buttons, visualized either as text or icons. For more information, see Header Toolbar. In the collapsed mode, the header title offers the same actions as in the expanded mode and keeps them actionable.
  • Layout actions (6)
    Placement: Typical layout actions are the CloseFull Screen, or Exit Full Screen icons, which are mainly offered by the flexible column layout. Depending on the screen size, the layout actions are placed either on the very right of the global actions toolbar, separated by a divider line, or above the global actions (see more in the Responsiveness section). Note that the dynamic page only provides the area for the layout actions. The navigation actions themselves are defined separately (for example, using the semantic page).
Guidelines

  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • In the flexible column layout, ensure that the icons for the Close or Full Screen / Exit Full Screen actions always stay on the very right. Their position then remains stable, even if other actions are added (such as the paging buttons  and  ). The Close and Full Screen / Exit Full Screen actions must never move into the overflow.

Header Content

Dynamic page - Header content example
Dynamic page - Header content example

The optional header content (sap.f.DynamicPageHeader) is located below the header title. You can place any components in the header content area (1) as long as they follow the guidelines for the respective floorplan.

When the dynamic page header collapses, the header content area is hidden. If there is no header content, the header content area is hidden automatically. In the latter case, the header title is not interactive (snap on scroll or snap on click) and there is no expand/collapse header feature.

Header Features

Dynamic page - Header features
Dynamic page - Header features

The header features (3) allow users to control the visibility of header content using two icon buttons at bottom of the header content area:

  1. Expand/collapse header or   
  2. Pin/unpin header content 

Footer Toolbar

Dynamic page - Footer toolbar
Dynamic page - Footer toolbar

The footer toolbar (sap.m.Toolbar) is an optional part of the dynamic page. You can use it to offer closing or finalizing actions.

Combining the Dynamic Page with the Flexible Column Layout

The layout of the dynamic page is responsive and optimized for use within a flexible column layout. Each column (1, 2, 3) can contain its own dynamic page with a different floorplan, depending on the use case.

Dynamic page inside the flexible column layout
Dynamic page inside the flexible column layout

Behavior and Interaction

Initial Focus

The dynamic page itself doesn’t set an initial focus. The initial focus depends on the floorplan that is using the dynamic page and the specific app use case.

Dynamic Page Header

The dynamic page header supports three optional interaction patterns that can be combined. To show more of the actual page content, the header content can collapse or expand using defined triggers (snap on scroll and snap on click). In addition, users can fix the header content while scrolling through the page content with the pin feature. The combined usage of all three patterns is recommended and activated by default.

Dynamic page - Snap on scroll
Dynamic page - Snap on scroll
Dynamic page - Snap on click
Dynamic page - Snap on click
Dynamic page - Pin/unpin
Dynamic page - Pin/unpin

Starting in Expanded or Collapsed Mode

By default, the header content is initially expanded. In certain cases, it can also make sense to deviate from the default and allow the header to appear in collapsed mode when initiating the app. However, the idea is to always expand the header content when the application starts without a query (and the content area is therefore empty).

Snap on Scroll

Scrolling is the typical trigger for collapsing the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to collapsed mode and stays fixed. When the user scrolls up the page, the header content expands again.

Note that this interaction pattern works only in combination with an expandable/collapsible header content. It can be combined with snap on click, but does not have to be.

Snap on Click

The snap on click pattern is another way of expanding and collapsing the header content. The user can collapse the header without scrolling, and expand it again even when it has been collapsed by scrolling down. Two interaction variants are offered, which always appear in combination: clicking the header title and clicking the Expand Header / Collapse Header icon button in the header features area.

Again, the interaction pattern works only in combination with expandable/collapsible header content. It can be combined with snap on scroll, but does not have to be.

Clicking the Header Title

The user can expand and collapse the header content by clicking anywhere on the header title bar that has no active elements (such as links or active buttons). When using a mouse, the cursor changes from an arrow to a hand to support the user’s interaction. In addition, a hover effect is visible on the header title and on the Expand Header / Collapse Header icon button in the header area. If the header is expanded and the user clicks the title bar, the header content collapses, and vice versa.

Clicking the Expand/Collapse Header Button

The expand/collapse header feature is a small icon button directly below the header, which is also used to expand or collapse the header content. When the pin is active, the expand/collapse header button is still available and overrules the pin. The icon buttons for expanding and collapsing the header are an alternative to clicking on the header title bar, which might not have much clickable space. They also support keyboard actions.

Pinning the Header Content

Activating the pin feature keeps the header expanded while the user scrolls through the page content. This mode remains fixed until the user clicks the pin icon again or triggers snap on click. This feature is optional and can be switched off if it is not useful for your application.

The expand/collapse header button remains visible when the pin is activated. Clicking the Collapse Header  icon overrules the pin, collapses the header, and switches the pin button off. Do not offer the pin feature for floorplans without scrollbars (see special case below), or if there is no header content.

In the smartphone version, the pin action is not provided, as the pinned header would take up too much screen real estate. The same applies whenever the dynamic page header would occupy more than 60% of the screen, regardless of the device type. Overruling the pin feature keeps the focus on the content.

Note that this interaction works only in combination with expandable/collapsible header content. The pin button is available as soon as snap on scroll (or snap on click) is activated.

Special Case: No Page Scrolling Possible

The following special case applies for pages containing desktop-centric tables, such as the analytical tablegrid table, or tree table.

Because these tables use up all of the available screen space, there should not be a vertical scroll function, and hence no snap on scroll. In this special case, an explicit interaction via the expand/collapse header button is required to expand or collapse the content area. The pin feature is obsolete and is not provided.

This exceptional case also applies to chart containers that use up all the available screen space in a similar way to desktop-centric tables.

Developer Hint
Make sure that the property fitContent is always set to “false”Otherwise, a background color issue may occur when the user scrolls down the page.

Keyboard Interaction

The dynamic page header expands automatically as soon as keyboard actions like tabbing or group jumps (F6) bring the content of the dynamic page header into focus.

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Key(s) Behavior
[TAB] Move the focus to the dynamic page header / header title bar. The dynamic page header expands automatically. If the focus is inside the header content area, move the focus to the next UI element within the header.

If the focus is on the last UI element within the header content area (expand/collapse header feature), leave the header. Collapse the header content.

[SHIFT] + [TAB] See TAB, in reverse order.
[F6] If the focus is before the header title bar, set the focus to the header title bar. Expand the header content. If the focus is within the header content, move the focus out of the header and collapse the header content.
[SHIFT] + [F6] See F6, in reverse order.

Responsiveness

The dynamic page offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to adapt automatically to small, medium, and large screen sizes.

The title (sap.m.Title) and subtitle (sap.m.Text) on the left truncate in collapsed mode to save vertical space, and wrap in expanded mode to offer the full text. This behavior needs to come from the respective controls for the title and subtitle. Overall, we recommend showing a maximum of 2 lines of text in collapsed mode. This prevents a disproportionate header height, especially on mobile devices if no summary line is used. The 2 lines can either be a combined title and subtitle, or a longer wrapping title. For more information, see wrapping and truncating text.

Key information, such as a KPI (middle area, left aligned), stays as long as possible before it moves into the overflow.

Global actions stay as long as possible. If there is no key information, the title and the global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds the available buttons to the overflow menu from right to left.

Layout actions: The dynamic page offers a specific area for layout actions, which reacts to the predefined breakpoint of 1280 px:

  • Less than 1280 px: Navigation actions are placed in a separate row above the global actions.
  • 1280 px or more: Navigation actions are placed to the right of the global actions on the same line.

This breakpoint corresponds to the page width and not to the window width. Therefore it doesn’t matter whether the page is used in the flexible column layout, on a desktop device, or on a mobile device.

Letterboxing limits the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability. Letterboxing can be used together with the dynamic page if the use case requires it. However, most business apps offer so much content that the page is typically shown across the entire screen, without letterboxing.

Summary Line

To save vertical space on smartphones, you can opt to display a smaller summary line instead of the collapsed header. The header content scrolls away as soon as the user scrolls up the page. The header converts to a summary line, which shows only the title and an arrow icon button on the very right of the screen. Tapping the summary line also expands and collapses the whole header. The rest of the page stays in the same position.

Guidelines
Use the summary line to help users to focus on the page content.

Size S with summary line
Size S with summary line

Examples

The dynamic page is a generic control. The content of both the header and the page differs from floorplan to floorplan. Here are some examples showing the most frequently-used variants for each type of floorplan. For detailed guidance, see the corresponding floorplan guidelines (analytical list pageoverview pagelist reportworklist, initial pageobject page, wizard).

Top Tips

  • Always use a header title – either as a text or link, or by including variant management. For the initial page floorplan, use an input field.
  • Use the header title and header content to provide the most relevant information and actions for your use case.
  • Only use KPI tags within the analytical list page and worklist floorplans.
  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • Make sure that the layout actions in the flexible column layout are displayed correctly and never get hidden in the overflow.
  • Start your application in expanded mode if users need further content or adjustment options to get started.
  • Offer the pin feature whenever users may need to fix the header content while scrolling through the page content.
  • Activate the summary line on smartphones to help users focus on the page content.

Related Links

Elements and Controls

Implementation

Dynamic Page

The dynamic page is the foundation for all pages in SAP Fiori. It is a generic layout control designed to support various floorplans and use cases. As a result, the content of both the header and the page can vary. Depending on your use case, you can either use one of the predefined floorplans or create your own layout.

One part of the dynamic page header (1) is collapsible, which helps users to focus on the actual page content (2), while ensuring that important header information and actions are readily available. The dynamic page also includes an optional footer toolbar (3) for closing or finalizing actions that impact the whole page.

All SAP Fiori floorplans use the dynamic page, or are visually aligned to look the same. For detailed guidance, see the corresponding floorplan articles.

The following floorplans use the dynamic page:

The following floorplans are using the dynamic page header:

When to Use

Use the dynamic page if:

Do not use the dynamic page if:

Dynamic Page vs. Semantic Page

The dynamic page is a skeleton structure that comes with empty content containers (page header, page content) and built-in responsive behavior.

This basic structure can be “filled” with content elements in three ways:

  • Automatically: If you are using an SAP Fiori element floorplan, the content of the dynamic page is provided out of the box.
  • Via the semantic page (recommended for freestyle apps): If you are creating a floorplan from scratch, you can use the semantic page (sap.f.semanticPage) to create a freestyle page. The semantic page is a separate control that comes with built-in logic for adding predefined content elements to the page, such as a title, global actions, and a footer toolbar. Using the semantic page significantly reduces the development effort for app teams, and ensures that the header and footer content is structured consistently.
    Note that in this case, the app developer uses only the semantic page control (which already embeds the dynamic page), and not the dynamic page control itself.
  • Manually: Technically, it’s possible to build the dynamic page from scratch. However, implementing the dynamic page manually is a significant development effort! Only consider this option in exceptional cases (for example, if you have special requirements for a freestyle app that cannot be implemented using the preconfigured semantic page control).

Components

Like all layouts, the dynamic page is below the shell bar of the SAP Fiori launchpad, which is always at the very top. The dynamic page consists of the following areas:

  1. Dynamic page header, comprising the header title (1a) and the expandable/collapsible header content (1b)
  2. Title
  3. Subtitle/summary
  4. Key information / KPI
  5. Global actions
  6. Header features to expand/collapse (6a) and pin/unpin (6b) the header
  7. Page content (differs depending on the use case and floorplan)
  8. Footer toolbar with finalizing actions

Dynamic Page Header

The dynamic page header contains the header title (mandatory) and the header content (optional).

Header Title

Dynamic page - Header title example
Dynamic page - Header title example

The header title bar (sap.f.DynamicPageTitle) always contains one of the following elements:

Mandatory Elements

  • Title (1): The title is located on the left of the header title bar, and is always visible. The title can contain one of the following components:

Optional Elements

  • Subtitle/summary (2)
    Placement: Always below the title. The subtitle is often used to summarize the most important information in the collapsed header content. For example, if the header area contains a filter (as in a list reportanalytical list page, or overview page), the subtitle can be used to display the “Filtered By” information.
  • Breadcrumb (3)
    Placement: Above the title. Depending on the floorplan and use case, you can add breadcrumb navigation. The breadcrumb is located above the header title, and is primarily used to display the hierarchy of subpages within an object page.
    Note that in the flexible column layout, the breadcrumb is only available in full screen mode, and only if just one column is visible.
  • Key information (4)
    Placement: In the middle area, but left-aligned. Floorplans can also contain key information, such as text, mini facets, and KPI tags.
    Note that currently, KPI tags are only used within the analytical list page and worklist floorplans.
  • Global actions (5)
    Placement: Global actions for the entire floorplan appear on the right-hand side of the header title bar. Always offer the actions as buttons, visualized either as text or icons. For more information, see Header Toolbar. In the collapsed mode, the header title offers the same actions as in the expanded mode and keeps them actionable.
  • Layout actions (6)
    Placement: Typical layout actions are the CloseFull Screen, or Exit Full Screen icons, which are mainly offered by the flexible column layout. Depending on the screen size, the layout actions are placed either on the very right of the global actions toolbar, separated by a divider line, or above the global actions (see more in the Responsiveness section). Note that the dynamic page only provides the area for the layout actions. The navigation actions themselves are defined separately (for example, using the semantic page).
Guidelines

  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • In the flexible column layout, ensure that the icons for the Close or Full Screen / Exit Full Screen actions always stay on the very right. Their position then remains stable, even if other actions are added (such as the paging buttons  and  ). The Close and Full Screen / Exit Full Screen actions must never move into the overflow.

Header Content

Dynamic page - Header content example
Dynamic page - Header content example

The optional header content (sap.f.DynamicPageHeader) is located below the header title. You can place any components in the header content area (1) as long as they follow the guidelines for the respective floorplan.

When the dynamic page header collapses, the header content area is hidden. If there is no header content, the header content area is hidden automatically. In the latter case, the header title is not interactive (snap on scroll or snap on click) and there is no expand/collapse header feature.

Header Features

Dynamic page - Header features
Dynamic page - Header features

The header features (3) allow users to control the visibility of header content using two icon buttons at bottom of the header content area:

  1. Expand/collapse header or   
  2. Pin/unpin header content 

Footer Toolbar

Dynamic page - Footer toolbar
Dynamic page - Footer toolbar

The footer toolbar (sap.m.Toolbar) is an optional part of the dynamic page. You can use it to offer closing or finalizing actions.

Combining the Dynamic Page with the Flexible Column Layout

The layout of the dynamic page is responsive and optimized for use within a flexible column layout. Each column (1, 2, 3) can contain its own dynamic page with a different floorplan, depending on the use case.

Dynamic page inside the flexible column layout
Dynamic page inside the flexible column layout

Behavior and Interaction

Initial Focus

The dynamic page itself doesn’t set an initial focus. The initial focus depends on the floorplan that is using the dynamic page and the specific app use case.

Dynamic Page Header

The dynamic page header supports three optional interaction patterns that can be combined. To show more of the actual page content, the header content can collapse or expand using defined triggers (snap on scroll and snap on click). In addition, users can fix the header content while scrolling through the page content with the pin feature. The combined usage of all three patterns is recommended and activated by default.

Dynamic page - Snap on scroll
Dynamic page - Snap on scroll
Dynamic page - Snap on click
Dynamic page - Snap on click
Dynamic page - Pin/unpin
Dynamic page - Pin/unpin

Starting in Expanded or Collapsed Mode

By default, the header content is initially expanded. In certain cases, it can also make sense to deviate from the default and allow the header to appear in collapsed mode when initiating the app. However, the idea is to always expand the header content when the application starts without a query (and the content area is therefore empty).

Snap on Scroll

Scrolling is the typical trigger for collapsing the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to collapsed mode and stays fixed. When the user scrolls up the page, the header content expands again.

Note that this interaction pattern works only in combination with an expandable/collapsible header content. It can be combined with snap on click, but does not have to be.

Snap on Click

The snap on click pattern is another way of expanding and collapsing the header content. The user can collapse the header without scrolling, and expand it again even when it has been collapsed by scrolling down. Two interaction variants are offered, which always appear in combination: clicking the header title and clicking the Expand Header / Collapse Header icon button in the header features area.

Again, the interaction pattern works only in combination with expandable/collapsible header content. It can be combined with snap on scroll, but does not have to be.

Clicking the Header Title

The user can expand and collapse the header content by clicking anywhere on the header title bar that has no active elements (such as links or active buttons). When using a mouse, the cursor changes from an arrow to a hand to support the user’s interaction. In addition, a hover effect is visible on the header title and on the Expand Header / Collapse Header icon button in the header area. If the header is expanded and the user clicks the title bar, the header content collapses, and vice versa.

Clicking the Expand/Collapse Header Button

The expand/collapse header feature is a small icon button directly below the header, which is also used to expand or collapse the header content. When the pin is active, the expand/collapse header button is still available and overrules the pin. The icon buttons for expanding and collapsing the header are an alternative to clicking on the header title bar, which might not have much clickable space. They also support keyboard actions.

Pinning the Header Content

Activating the pin feature keeps the header expanded while the user scrolls through the page content. This mode remains fixed until the user clicks the pin icon again or triggers snap on click. This feature is optional and can be switched off if it is not useful for your application.

The expand/collapse header button remains visible when the pin is activated. Clicking the Collapse Header  icon overrules the pin, collapses the header, and switches the pin button off. Do not offer the pin feature for floorplans without scrollbars (see special case below), or if there is no header content.

In the smartphone version, the pin action is not provided, as the pinned header would take up too much screen real estate. The same applies whenever the dynamic page header would occupy more than 60% of the screen, regardless of the device type. Overruling the pin feature keeps the focus on the content.

Note that this interaction works only in combination with expandable/collapsible header content. The pin button is available as soon as snap on scroll (or snap on click) is activated.

Special Case: No Page Scrolling Possible

The following special case applies for pages containing desktop-centric tables, such as the analytical tablegrid table, or tree table.

Because these tables use up all of the available screen space, there should not be a vertical scroll function, and hence no snap on scroll. In this special case, an explicit interaction via the expand/collapse header button is required to expand or collapse the content area. The pin feature is obsolete and is not provided.

This exceptional case also applies to chart containers that use up all the available screen space in a similar way to desktop-centric tables.

Developer Hint
Make sure that the property fitContent is always set to “false”Otherwise, a background color issue may occur when the user scrolls down the page.

Keyboard Interaction

The dynamic page header expands automatically as soon as keyboard actions like tabbing or group jumps (F6) bring the content of the dynamic page header into focus.

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Key(s) Behavior
[TAB] Move the focus to the dynamic page header / header title bar. The dynamic page header expands automatically. If the focus is inside the header content area, move the focus to the next UI element within the header.

If the focus is on the last UI element within the header content area (expand/collapse header feature), leave the header. Collapse the header content.

[SHIFT] + [TAB] See TAB, in reverse order.
[F6] If the focus is before the header title bar, set the focus to the header title bar. Expand the header content. If the focus is within the header content, move the focus out of the header and collapse the header content.
[SHIFT] + [F6] See F6, in reverse order.

Responsiveness

The dynamic page offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to adapt automatically to small, medium, and large screen sizes.

The title (sap.m.Title) and subtitle (sap.m.Text) on the left truncate in collapsed mode to save vertical space, and wrap in expanded mode to offer the full text. This behavior needs to come from the respective controls for the title and subtitle. Overall, we recommend showing a maximum of 2 lines of text in collapsed mode. This prevents a disproportionate header height, especially on mobile devices if no summary line is used. The 2 lines can either be a combined title and subtitle, or a longer wrapping title. For more information, see wrapping and truncating text.

Key information, such as a KPI (middle area, left aligned), stays as long as possible before it moves into the overflow.

Global actions stay as long as possible. If there is no key information, the title and the global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds the available buttons to the overflow menu from right to left.

Layout actions: The dynamic page offers a specific area for layout actions, which reacts to the predefined breakpoint of 1280 px:

  • Less than 1280 px: Navigation actions are placed in a separate row above the global actions.
  • 1280 px or more: Navigation actions are placed to the right of the global actions on the same line.

This breakpoint corresponds to the page width and not to the window width. Therefore it doesn’t matter whether the page is used in the flexible column layout, on a desktop device, or on a mobile device.

Letterboxing limits the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability. Letterboxing can be used together with the dynamic page if the use case requires it. However, most business apps offer so much content that the page is typically shown across the entire screen, without letterboxing.

Summary Line

To save vertical space on smartphones, you can opt to display a smaller summary line instead of the collapsed header. The header content scrolls away as soon as the user scrolls up the page. The header converts to a summary line, which shows only the title and an arrow icon button on the very right of the screen. Tapping the summary line also expands and collapses the whole header. The rest of the page stays in the same position.

Guidelines
Use the summary line to help users to focus on the page content.

Size S with summary line
Size S with summary line

Examples

The dynamic page is a generic control. The content of both the header and the page differs from floorplan to floorplan. Here are some examples showing the most frequently-used variants for each type of floorplan. For detailed guidance, see the corresponding floorplan guidelines (analytical list pageoverview pagelist reportworklist, initial pageobject page, wizard).

Top Tips

  • Always use a header title – either as a text or link, or by including variant management. For the initial page floorplan, use an input field.
  • Use the header title and header content to provide the most relevant information and actions for your use case.
  • Only use KPI tags within the analytical list page and worklist floorplans.
  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • Make sure that the layout actions in the flexible column layout are displayed correctly and never get hidden in the overflow.
  • Start your application in expanded mode if users need further content or adjustment options to get started.
  • Offer the pin feature whenever users may need to fix the header content while scrolling through the page content.
  • Activate the summary line on smartphones to help users focus on the page content.

Related Links

Elements and Controls

Implementation

Dynamic Page

The dynamic page is the foundation for all pages in SAP Fiori. It is a generic layout control designed to support various floorplans and use cases. As a result, the content of both the header and the page can vary. Depending on your use case, you can either use one of the predefined floorplans or create your own layout.

One part of the dynamic page header (1) is collapsible, which helps users to focus on the actual page content (2), while ensuring that important header information and actions are readily available. The dynamic page also includes an optional footer toolbar (3) for closing or finalizing actions that impact the whole page.

All SAP Fiori floorplans use the dynamic page, or are visually aligned to look the same. For detailed guidance, see the corresponding floorplan articles.

The following floorplans use the dynamic page:

The following floorplans are using the dynamic page header:

When to Use

Use the dynamic page if:

Do not use the dynamic page if:

Dynamic Page vs. Semantic Page

The dynamic page is a skeleton structure that comes with empty content containers (page header, page content) and built-in responsive behavior.

This basic structure can be “filled” with content elements in three ways:

  • Automatically: If you are using an SAP Fiori element floorplan, the content of the dynamic page is provided out of the box.
  • Via the semantic page (recommended for freestyle apps): If you are creating a floorplan from scratch, you can use the semantic page (sap.f.semanticPage) to create a freestyle page. The semantic page is a separate control that comes with built-in logic for adding predefined content elements to the page, such as a title, global actions, and a footer toolbar. Using the semantic page significantly reduces the development effort for app teams, and ensures that the header and footer content is structured consistently.
    Note that in this case, the app developer uses only the semantic page control (which already embeds the dynamic page), and not the dynamic page control itself.
  • Manually: Technically, it’s possible to build the dynamic page from scratch. However, implementing the dynamic page manually is a significant development effort! Only consider this option in exceptional cases (for example, if you have special requirements for a freestyle app that cannot be implemented using the preconfigured semantic page control).

Components

Like all layouts, the dynamic page is below the shell bar of the SAP Fiori launchpad, which is always at the very top. The dynamic page consists of the following areas:

  1. Dynamic page header, comprising the header title (1a) and the expandable/collapsible header content (1b)
  2. Title
  3. Subtitle/summary
  4. Key information / KPI
  5. Global actions
  6. Header features to expand/collapse (6a) and pin/unpin (6b) the header
  7. Page content (differs depending on the use case and floorplan)
  8. Footer toolbar with finalizing actions

Dynamic Page Header

The dynamic page header contains the header title (mandatory) and the header content (optional).

Header Title

Dynamic page - Header title example
Dynamic page - Header title example

The header title bar (sap.f.DynamicPageTitle) always contains one of the following elements:

Mandatory Elements

  • Title (1): The title is located on the left of the header title bar, and is always visible. The title can contain one of the following components:

Optional Elements

  • Subtitle/summary (2)
    Placement: Always below the title. The subtitle is often used to summarize the most important information in the collapsed header content. For example, if the header area contains a filter (as in a list reportanalytical list page, or overview page), the subtitle can be used to display the “Filtered By” information.
  • Breadcrumb (3)
    Placement: Above the title. Depending on the floorplan and use case, you can add breadcrumb navigation. The breadcrumb is located above the header title, and is primarily used to display the hierarchy of subpages within an object page.
    Note that in the flexible column layout, the breadcrumb is only available in full screen mode, and only if just one column is visible.
  • Key information (4)
    Placement: In the middle area, but left-aligned. Floorplans can also contain key information, such as text, mini facets, and KPI tags.
    Note that currently, KPI tags are only used within the analytical list page and worklist floorplans.
  • Global actions (5)
    Placement: Global actions for the entire floorplan appear on the right-hand side of the header title bar. Always offer the actions as buttons, visualized either as text or icons. For more information, see Header Toolbar. In the collapsed mode, the header title offers the same actions as in the expanded mode and keeps them actionable.
  • Layout actions (6)
    Placement: Typical layout actions are the CloseFull Screen, or Exit Full Screen icons, which are mainly offered by the flexible column layout. Depending on the screen size, the layout actions are placed either on the very right of the global actions toolbar, separated by a divider line, or above the global actions (see more in the Responsiveness section). Note that the dynamic page only provides the area for the layout actions. The navigation actions themselves are defined separately (for example, using the semantic page).
Guidelines

  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • In the flexible column layout, ensure that the icons for the Close or Full Screen / Exit Full Screen actions always stay on the very right. Their position then remains stable, even if other actions are added (such as the paging buttons  and  ). The Close and Full Screen / Exit Full Screen actions must never move into the overflow.

Header Content

Dynamic page - Header content example
Dynamic page - Header content example

The optional header content (sap.f.DynamicPageHeader) is located below the header title. You can place any components in the header content area (1) as long as they follow the guidelines for the respective floorplan.

When the dynamic page header collapses, the header content area is hidden. If there is no header content, the header content area is hidden automatically. In the latter case, the header title is not interactive (snap on scroll or snap on click) and there is no expand/collapse header feature.

Header Features

Dynamic page - Header features
Dynamic page - Header features

The header features (3) allow users to control the visibility of header content using two icon buttons at bottom of the header content area:

  1. Expand/collapse header or   
  2. Pin/unpin header content 

Footer Toolbar

Dynamic page - Footer toolbar
Dynamic page - Footer toolbar

The footer toolbar (sap.m.Toolbar) is an optional part of the dynamic page. You can use it to offer closing or finalizing actions.

Combining the Dynamic Page with the Flexible Column Layout

The layout of the dynamic page is responsive and optimized for use within a flexible column layout. Each column (1, 2, 3) can contain its own dynamic page with a different floorplan, depending on the use case.

Dynamic page inside the flexible column layout
Dynamic page inside the flexible column layout

Behavior and Interaction

Dynamic Page Header

The dynamic page header supports three optional interaction patterns that can be combined. To show more of the actual page content, the header content can collapse or expand using defined triggers (snap on scroll and snap on click). In addition, users can fix the header content while scrolling through the page content with the pin feature. The combined usage of all three patterns is recommended and activated by default.

Dynamic page - Snap on scroll
Dynamic page - Snap on scroll
Dynamic page - Snap on click
Dynamic page - Snap on click
Dynamic page - Pin/unpin
Dynamic page - Pin/unpin

Starting in Expanded or Collapsed Mode

By default, the header content is initially expanded. In certain cases, it can also make sense to deviate from the default and allow the header to appear in collapsed mode when initiating the app. However, the idea is to always expand the header content when the application starts without a query (and the content area is therefore empty).

Snap on Scroll

Scrolling is the typical trigger for collapsing the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to collapsed mode and stays fixed. When the user scrolls up the page, the header content expands again.

Note that this interaction pattern works only in combination with an expandable/collapsible header content. It can be combined with snap on click, but does not have to be.

Snap on Click

The snap on click pattern is another way of expanding and collapsing the header content. The user can collapse the header without scrolling, and expand it again even when it has been collapsed by scrolling down. Two interaction variants are offered, which always appear in combination: clicking the header title and clicking the Expand Header / Collapse Header icon button in the header features area.

Again, the interaction pattern works only in combination with expandable/collapsible header content. It can be combined with snap on scroll, but does not have to be.

Click on the Header Title

The user can expand and collapse the header content by clicking anywhere on the header title bar that has no active elements (such as links or active buttons). When using a mouse, the cursor changes from an arrow to a hand to support the user’s interaction. If the header is expanded and the user clicks the title bar, the header content collapses, and vice versa.

Click the Expand/Collapse Header Button

The expand/collapse header feature is a small icon button directly below the header, which is also used to expand or collapse the header content. When the pin is active, the expand/collapse header button is still available and overrules the pin. The icon buttons for expanding and collapsing the header are an alternative to clicking on the header title bar, which might not have much clickable space. They also support keyboard actions.

Pinning the Header Content

Activating the pin feature keeps the header expanded while the user scrolls through the page content. This mode remains fixed until the user clicks the pin icon again or triggers snap on click. This feature is optional and can be switched off if it is not useful for your application.

The expand/collapse header button remains visible when the pin is activated. Clicking the Collapse Header  icon overrules the pin, collapses the header, and switches the pin button off. Do not offer the pin feature for floorplans without scrollbars (see special case below), or if there is no header content.

In the smartphone version, the pin action is not provided, as the pinned header would take up too much screen real estate. The same applies whenever the dynamic page header would occupy more than 60% of the screen, regardless of the device type. Overruling the pin feature keeps the focus on the content.

Note that this interaction works only in combination with expandable/collapsible header content. The pin button is available as soon as snap on scroll (or snap on click) is activated.

Special Case: No Page Scrolling Possible

The following special case applies for pages containing desktop-centric tables, such as the analytical tablegrid table, or tree table.

Because these tables use up all of the available screen space, there should not be a vertical scroll function, and hence no snap on scroll. In this special case, an explicit interaction via the expand/collapse header button is required to expand or collapse the content area. The pin feature is obsolete and is not provided.

This exceptional case also applies to chart containers that use up all the available screen space in a similar way to desktop-centric tables.

Developer Hint
Make sure that the property fitContent is always set to “false”Otherwise, a background color issue may occur when the user scrolls down the page.

Keyboard Interaction

The dynamic page header expands automatically as soon as keyboard actions like tabbing or group jumps (F6) bring the content of the dynamic page header into focus.

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Key(s) Behavior
[TAB] Move the focus to the dynamic page header / header title bar. The dynamic page header expands automatically. If the focus is inside the header content area, move the focus to the next UI element within the header.

If the focus is on the last UI element within the header content area (expand/collapse header feature), leave the header. Collapse the header content.

[SHIFT] + [TAB] See TAB, in reverse order.
[F6] If the focus is before the header title bar, set the focus to the header title bar. Expand the header content. If the focus is within the header content, move the focus out of the header and collapse the header content.
[SHIFT] + [F6] See F6, in reverse order.

Responsiveness

The dynamic page offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to adapt automatically to small, medium, and large screen sizes.

The title (sap.m.Title) and subtitle (sap.m.Text) on the left truncate in collapsed mode to save vertical space, and wrap in expanded mode to offer the full text. This behavior needs to come from the respective controls for the title and subtitle. Overall, we recommend showing a maximum of 2 lines of text in collapsed mode. This prevents a disproportionate header height, especially on mobile devices if no summary line is used. The 2 lines can either be a combined title and subtitle, or a longer wrapping title. For more information, see wrapping and truncating text.

Key information, such as a KPI (middle area, left aligned), stays as long as possible before it moves into the overflow.

Global actions stay as long as possible. If there is no key information, the title and the global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds the available buttons to the overflow menu from right to left.

Layout actions: The dynamic page offers a specific area for layout actions, which reacts to the predefined breakpoint of 1280 px:

  • Less than 1280 px: Navigation actions are placed in a separate row above the global actions.
  • 1280 px or more: Navigation actions are placed to the right of the global actions on the same line.

This breakpoint corresponds to the page width and not to the window width. Therefore it doesn’t matter whether the page is used in the flexible column layout, on a desktop device, or on a mobile device.

Letterboxing limits the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability. Letterboxing can be used together with the dynamic page if the use case requires it. However, most business apps offer so much content that the page is typically shown across the entire screen, without letterboxing.

Summary Line

To save vertical space on smartphones, you can opt to display a smaller summary line instead of the collapsed header. The header content scrolls away as soon as the user scrolls up the page. The header converts to a summary line, which shows only the title and an arrow icon button on the very right of the screen. Tapping the summary line also expands and collapses the whole header. The rest of the page stays in the same position.

Guidelines
Use the summary line to help users to focus on the page content.

Size S with summary line
Size S with summary line

Examples

The dynamic page is a generic control. The content of both the header and the page differs from floorplan to floorplan. Here are some examples showing the most frequently-used variants for each type of floorplan. For detailed guidance, see the corresponding floorplan guidelines (analytical list pageoverview pagelist reportworklist, initial pageobject page, wizard).

Top Tips

  • Always use a header title – either as a text or link, or by including variant management. For the initial page floorplan, use an input field.
  • Use the header title and header content to provide the most relevant information and actions for your use case.
  • Only use KPI tags within the analytical list page and worklist floorplans.
  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • Make sure that the layout actions in the flexible column layout are displayed correctly and never get hidden in the overflow.
  • Start your application in expanded mode if users need further content or adjustment options to get started.
  • Offer the pin feature whenever users may need to fix the header content while scrolling through the page content.
  • Activate the summary line on smartphones to help users focus on the page content.

Related Links

Elements and Controls

Implementation

Dynamic Page – Semantic Page

The semantic page is recommended as the basic layout for freestyle applications. It builds on the basic functionality of the dynamic page and adds predefined content elements to the header toolbar (1) and footer toolbar (2), such as a title, global actions, and finalizing actions.

Using the semantic page significantly reduces the development effort for app teams, and ensures that the placement of the header and footer content conforms with the SAP Fiori Design Guidelines.

Semantic page
Semantic page

When to Use

Use the semantic page if:

  • You are building a freestyle application.
  • You want to use a predefined layout to reduce development time.

Do not use the semantic page if:

Components

The semantic page is based on the structure of the dynamic page. In short, the semantic page has the following elements:

  1. Header title
  2. Header content
  3. Page content, dependent on the use case
  4. Footer toolbar with finalizing actions

The control’s semantics determine whether content specified in the control appears in the header toolbar or footer toolbar.

Semantic page structure
Semantic page structure

Header Title

Semantic page - Header title example
Semantic page - Header title example

Mandatory Elements

  • Title (1): The title is located on the left-hand side of the header title bar and is always visible.

Optional Elements

  • Subtitle (2): The subtitle is always below the title and is often used to summarize the most important information.
  • Breadcrumb (3): Depending on the use case, you can add a breadcrumb navigation.
  • Key information (4): Key information is located in the middle area, and is left aligned. This can be text, mini facets, or KPI tags, for example.
  • Global actions toolbar (5): The global actions toolbar for the entire floorplan is located on the right-hand side. Always use buttons for global actions, visualized either as text or icons. For more information, see header toolbar.
    Overflow menu: Actions move into the overflow from right to left. Icons are shown in the overflow menu with a corresponding text.
  • Layout actions (6): These are actions like the Close or Full Screen / Exit Full Screen icons, which are mainly offered by the flexible column layout. Depending on the screen size, layout actions are placed either to the right of the global actions toolbar, separated by a divider line, or above the global actions.

For more information about the expandable and collapsible header and its features, see dynamic page.

Guidelines

  • Layout actions never move into the overflow and are always last in the header toolbar.
  • Do not remove or disable actions within the header title when it is collapsed.

Header Content

The optional header content is not defined in the semantic page and can be populated according to the use case.

Page Content

Like the header content, the page content is also not specified by the semantic page. It is proportionally the largest area of the layout and can be populated according to the use case.

Footer Toolbar

Semantic page - Footer toolbar
Semantic page - Footer toolbar

The footer toolbar is optional and contains the following components:

  1. Message button (containing the message popover) on the left-hand side
  2. Draft indicator on the right-hand side, just before the finalizing actions
  3. Finalizing actions on the right-hand side

Behavior and Interaction

The interaction and guidelines for the dynamic page also apply for the semantic page. The actions in the semantic page and their order are predefined and follow the rules of the action placement concept. For more information about toolbars in general, see toolbar overview.

Responsiveness

The semantic page offers considerable freedom and flexibility. It is designed to adapt automatically to small, medium, and large screen sizes. Next to that the responsive behavior depends on the behavior of the content being displayed.

The title (sap.m.Title) and subtitle (sap.m.Text) on the left truncate in collapsed mode to save vertical space and wrap in expanded mode to offer the full text. This behavior needs to come from the respective controls for the title and subtitle. Overall, it is recommend not to show more than 2 lines of text in collapsed mode to avoid a disproportionate header height, especially on mobile devices, when no summary line is used. This can either be a combined title and subtitle or a longer wrapping title. For more information see wrapping and truncating text.

Key information (middle area, left aligned) stays as long as possible before it moves into the overflow.

Global actions also stay as long as possible, but have a predefined width depending on the available space. If no key information is available, the title and global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds buttons to the overflow menu from right to left.

The combination of a semantic page within in a flexible column layout and accompanying layout actions works as described for the dynamic page. The same applies for the summary line and letterboxing.

Top Tips

  • Use always a header title.
  • Use the header title and header content to provide the most relevant information and actions for your use case.
  • Do not remove or disable actions within the header title when it is collapsed.
  • Make sure that the layout actions in the flexible column layout are displayed correctly and never get hidden in the overflow.
  • Start your application in expanded mode if users need further content or adjustment options to get started.
  • Offer the pinning feature whenever users may need to fix the header content while scrolling through the page content.
  • Activate the summary line on smartphones to help users focus on the actual content of the page.

Related Topics

Elements and Controls

Implementation

Flexible Column Layout (Layout + SAP Fiori Elements)

The flexible column layout is a layout control that displays multiple floorplans on a single page. This allows faster and more fluid navigation between multiple floorplans than the usual page-by-page navigation. The flexible column layout offers different layouts with up to three columns (1, 2, 3). Users can expand the column they want to focus on, switch between different layouts, and view the rightmost column in full screen mode.

Flexible column layout - Example with three columns
Flexible column layout - Example with three columns

The flexible column layout behaves responsively, which makes it suitable for both desktop and mobile devices. Depending on the available screen width, an optimized layout is loaded to ensure the best possible user experience on each device. The flexible column layout is a generic control. As a layout container, it does not provide any content itself.

The flexible column layout is already incorporated within SAP Fiori elements.

Usage

Use the flexible column layout if:

  • You want to create a master-detail or master-detail-detail scenario in which the user can drill down or navigate.

Do not use the flexible column layout if:

  • You want to build a workbench or tools layout. The flexible column layout is not meant to provide a main column with additional side columns on the left and/or right. If you want to display additional content to enrich the main content and to help users better perform their tasks, use the dynamic side content instead.
  • You want to create a dashboard with context-independent pages.
  • You want to open multiple instances of the same object type. Use the multi-instance handling floorplan instead.
  • You want to split a single object into multiple columns, or display only a small amount of information.
  • You want to embed the SAP Fiori launchpad or overview page into one of the columns.

Structure

As with all layouts, the flexible column layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

Depending on the current layout and display size, the flexible column layout consists of one, two, or three horizontally-aligned columns. Each column contains content that is not provided by the flexible column layout itself. The flexible column layout is not restricted to a specific floorplan, as long as the floorplan you use is responsive down to phone size. However, we recommend using the dynamic page.

Information
It is not possible to use the SAP Fiori launchpad or the overview page in one of the columns.

Possible Layouts

To give users a better overview, the flexible column layout offers different layouts with one, two, or three columns. Depending on the screen size, up to five different base layouts are available.

Information

Language Dependency

For simplicity, this article assumes that the last column (the lowest drilldown level in the hierachy) is the rightmost column (left-to-right languages).

For right-to-left languages, however, the last column is the leftmost column.

Flexible column layout - Structure example (25% + 50% + 25%)
Flexible column layout - Structure example (25% + 50% + 25%)

Size L and XL (Desktop)

There are five different layouts in sizes L and XL: a full screen layout, as well as two different 2-column and 3-column layouts.

Available layouts in sizes L and XL
Available layouts in sizes L and XL

Size M (Tablet)

There are three different layouts in size M: a full screen layout and two different 2-column layouts. There is no 3-column layout due to the limited width. However, you can still load 3 pages in size M. Instead of showing them all side-by-side, the user can switch between columns 1/2 and 2/3.

Available layouts in size M
Available layouts in size M

Size S (Phone)

Because of the limited width, there is no multi-column layout for Size S. Instead, the rightmost column is shown in full screen mode.

Available layout in size S
Available layout in size S

Components

The flexible column layout offers a few simple actions that allow users to adapt the current layout according to their needs.

Note: Some of the actions (illustrated by blue lines in the image below) recover the last state of the layout to which they refer. In other words, the result of the action depends on the previous state of the layout.

Layout Arrow

The layout arrows allow users to expand the width of a given column, thereby changing the current layout. However, this action cannot be used to expand a column to full screen mode. There is a separate action for expanding a column to full screen mode.

The layout arrow is located next to the divider and points in the direction in which a column can be expanded. If a column cannot be expanded any further, the action is hidden.

Information
The user cannot change the size of a column freely (for example, 15% + 85%).

Enter Full Screen Mode

With the Full Screen icon  , the user can switch the rightmost column to full screen mode. The action is located in the rightmost column, and is only offered if there is more than one column.

Exit Full Screen Mode

By selecting the Exit Full Screen icon  , the user can exit the full screen and switch back to the multi-column (side-by-side) view. The action is only available while in full screen mode.

Information
The actions are not available in size S, which only displays a single column.

Close

With the Close icon   , the user can close the last (rightmost) column. If the user selects this action in the second column while the third column is minimized, both columns are closed. Close is also available in full screen mode, and in the second/third column for size S.

Information

The Close and Enter Full Screen / Exit Full Screen actions:

  • Are only displayed in the third column (or in the second column if there is no third column, or if the third column is minimized).
  • Are displayed as the last actions in the layout action section (or in the global actions toolbar if there is no layout action section in the floorplan). The layout action section is displayed to the right of the global actions on columns ≥1280 px wide, and in a separate line above the global actions on columns <1280 px wide.
  • Never move into the overflow.
  • Are always shown side-by-side (Enter Full Screen / Exit Full Screen icon left, Close icon right).
    Exception: There is no Enter Full Screen action in size S.

Developer Hint
The actions for entering and exiting full screen mode and closing columns are not provided automatically by the flexible column layout control, and need to be implemented manually. However, you can use the semantic page, which supports these actions for freestyle applications (only available with the dynamic page).

Navigation

In addition to the actions specific to the flexible column layout, the user can also use the forward and backward navigation to navigate through the flexible column layout. Drilling in or navigating forward opens a new column, while Back closes a column or exits the full screen mode (depending on what the last action was).
Please note: Back does not restore layout changes (such as switching from 33% + 67% to 67% + 33%). It also doesn’t reopen columns that were closed previously using the Close button (  ).

Because the flexible column layout only supports a maximum of 3 columns, any follow-on pages are loaded in full screen mode. These pages do not contain Close or Enter Full Screen / Exit Full Screen actions.

By default, the width is initially 33% for the second column and 25% for the third column. You can also set the width of the second column to 67%, or the third to 50% if your use case requires it.

Developer Hint
To implement the navigation/routing, you can use the SemanticHelper class, which provides predefined behavior to simplify the implementation.

Responsiveness

The flexible column layout changes its behavior for sizes XL, L, M and S in real time whenever the user resizes the screen.

If no previous state has been saved, ensure that the default layout appears automatically. For example, if the flexible column layout was initially loaded in size S and the user then navigates to the second column and changes the browser window to size M, show the default 2-column layout for size M (67% + 33%).

Responsiveness of the flexible column layout
Responsiveness of the flexible column layout

Behavior and Interaction

Dialogs

Dialogs triggered in one of the columns are centered over the entire screen.

Do
Center dialogs triggered in a column
Center dialogs triggered in a column
Don't
Do not right-align dialogs triggered in a column
Do not right-align dialogs triggered in a column

Vertical Size / Scrolling

Each column inside the flexible column layout contains an independent floorplan with its own scrolling behavior. There is no “all-encompassing” scrollbar which scrolls all columns simultaneously. The height of each floorplan is defined by the screen size.

Do
Give each column its own scrollbar
Give each column its own scrollbar
Don't
There is no universal scrollbar for all columns
There is no universal scrollbar for all columns

Scroll Position

During column resizing, the navigated item in the master column may no longer be in the visible screen area. In such cases, we recommend setting the scroll position to the item currently open in the details column (“navigated” item). This allows the user to see at a glance which item from the list or table is being displayed in the details column.

Developer Hint
To get the right scroll position, you can use the “columnResize” event. For more information, see the API reference.

Two Columns (Master-Detail Mode)

By default, the flexible column layout starts off with one column. The user opens new columns by navigating forward. Since the flexible column layout is the successor of the split-screen layout, you can also use just two columns if your use case requires it. Do not start your application with three columns. Too much information at the beginning can confuse users.

Note:

  • If you start with two columns, make sure that size S shows the first column. Otherwise, users see the second column first, which might be confusing. (Showing the second column is the normal responsive behavior of the flexible column layout, which always shows the last column in size S.)
  • Even if you start with two columns, offer the layout arrow and the Close action in the second column.
Examples: Starting with two columns (sizes L and XL)
Examples: Starting with two columns (sizes L and XL)

Titles / Breadcrumbs / Up and Down Arrows

If more than one column is visible, show the application title in the shell bar. If the user switches to full screen mode, show the page title. Also show the page title for size S, where only one column is visible.

If multiple columns are visible, hide the breadcrumbs and up/down arrows.

Application title in the shell bar
Application title in the shell bar
Page title in the shell bar
Page title in the shell bar

Bookmarks

Every layout inside the flexible column layout can be bookmarked. For example, if the user bookmarks a 3-column layout set to 25% + 50% + 25%, load this layout when the user opens the bookmark.

Minimized Third Column

When the user expands the first column in a 3-column layout, the third column is minimized. CloseEnter Full Screen, and layout arrow actions also appear on the right-hand border of the second column to allow the user to return to the original 3-column layout.

Close: The second and third (minimized) columns close. A dialog can appear to warn the user about any unsaved data in the third column.

Full screen: When the user clicks the Enter Full Screen icon, the second column switches to full screen mode. The third column remains open (but not visible), and closes as soon as the user selects another item in the second column, or uses the Close action in the second column. If the user selects the same item in the second column, it opens in the same state as before it was minimized.

Layout arrow: The arrow for changing the layout to 25% + 50% + 25% is only available in the 33% + 67% layout. This arrow is hidden if the user is changing the layout to 67% + 33%.

Example of a minimized third column (33% + 67%)
Example of a minimized third column (33% + 67%)

Using Close in Combination with Back Navigation

The back navigation must not restore a column that was previously closed with the Close icon  .

Example: The user closes the third column by clicking the Close icon   in the upper-right corner. If the user then navigates back (UI or browser), the second column should close.

Using 'Close' in combination with back navigation
Using 'Close' in combination with back navigation

3 Columns in Size M

To offer a desktop-like experience in size M, the flexible column layout displays either the first and second or the second and third column. The user can switch between these views by using the layout arrow on the left or right side of the flexible column layout. Note: This behavior is only intended for size M. Do not use it for sizes L or XL.

3-column interaction in size M
3-column interaction in size M

Letterboxing

Do not use letterboxing in combination with the flexible column layout, as it will reduce the size of the usable screen area.

Do
Proper use of usable screen area
Proper use of usable screen area
Don't
Improper use of usable screen area with letterboxing
Improper use of usable screen area with letterboxing

Full Screen Navigation

After switching a column to full screen mode, selecting the Back icon exits the full screen mode.

If the screen is in full screen mode, and the user navigates forward, also show the next column in full screen mode. If the user navigates backward, go back in full screen mode until the point where the user initially switched to full screen. If the user then clicks Back again, return to the multi-column mode.

Using full screen mode in combination with navigation
Using full screen mode in combination with navigation

Footer Toolbar

Each column of the flexible column layout can have its own footer toolbar. There is no overall footer toolbar that spans several columns.

Do
Give each column its own footer toolbar
Give each column its own footer toolbar
Don't
There is no overall footer toolbar spanning several columns
There is no overall footer toolbar spanning several columns

Overlapping Header

The flexible column layout can display multiple floorplans side-by-side. However, it is not designed for splitting a single floorplan into several columns. As a result, there is no overall header that spans several columns. If you need to show additional content within a floorplan, use the dynamic side content.

Do
Each column has its own header
Each column has its own header
Don't
There should be no overall header
There should be no overall header

Empty Details Column

Do not display an empty details column when using the flexible column layout. For example, if no items have been selected in the second column, do not show an empty third column.

Do
If no items are selected in the 2nd column, show only 2 columns
If no items are selected in the 2nd column, show only 2 columns
Don't
Do not show an empty 3rd column
Do not show an empty 3rd column

Usage With One or Several Initial Full Screen Pages

Some use cases require starting an application with one or more full screen pages. You can do this by using the first column of the flexible column layout in full screen mode. This allows you to show one or several initial full screen pages with different content. Because of technical constraints, you must always use the flexible column layout to show this initial content.

Using the flexible column layout with initial full screen pages
Using the flexible column layout with initial full screen pages

Content Padding Inside Columns

The flexible column layout doesn’t provide additional paddings around the content area. Since some controls have different internal paddings, please ensure that they are aligned correctly.

Developer Hint
If you are using the dynamic page inside the flexible column layout, you can use the class sapFDynamicPageAlignContent to overcome misalignment issues.

Navigation Indicator

It is important for users to be able to scan through the master list and quickly identify the item for which the details are being shown in the second or third column. This is especially important for large lists. For this case, you can enable a “navigated” indicator for tables and lists to mark the item that was last opened.

If there are several tables/lists on one page, ensure that the indicator shows only for the last navigated item. There should never be two navigation indicators on one page.

Navigation indicator and master list without actions
Navigation indicator and master list without actions
Navigation indicator and master list with single selection
Navigation indicator and master list with single selection
Navigation indicator and master list with multiple selection
Navigation indicator and master list with multiple selection

Content Interaction

Selecting a Different Item

If the user selects a different item in the master-detail or master-detail-detail scenario, the content of the details column changes to reflect the data of the newly selected item. If the item is selected in the first column, and the last column was open before the new item was selected, selecting the item closes the last column.

Selecting a different item
Selecting a different item

Deleting an Item

When an item is deleted, there are two options for handling the content of the details columns:

  • Select the next item and change the content in the details column.
    If the user deletes the last item, you can opt to either select the previous item or close the details column(s). If the user deletes all the objects, always close all columns, since there is no content to display.
  • Do not select an item and close the other columns.
Deleting and selecting the next item
Deleting and selecting the next item
Deleting and closing the other columns
Deleting and closing the other columns

Behavior on Filtering

Filtering in one of the columns does not affect the content in the other columns.

Once a filter is applied, the results are shown in the same column. The content in the remaining columns does not change, unless another item is selected.

Filtering does not affect the other columns
Filtering does not affect the other columns

Tab/Anchor Navigation

Tabs and anchors are used for navigation within an object or as a filter (for example, in object pages). They affect only the respective column and do not close or change the content in the other columns.

Tab/anchor navigation does not affect the other columns
Tab/anchor navigation does not affect the other columns

SAP Fiori Elements

The flexible column layout is available in SAP Fiori elements for scenarios that use draft handling. If you use draft handling, we strongly recommend using the SAP Fiori elements implementation, wherever possible. The implementation already includes the navigation and routing behavior, as well as the Close and Full Screen actions, for example. Starting the application with two columns is also supported by SAP Fiori elements.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page Layout – Semantic Page

The semantic page is recommended as the basic layout for freestyle applications. It builds on the basic functionality of the dynamic page and adds predefined content elements to the header toolbar (1) and footer toolbar (2), such as a title, global actions, and finalizing actions.

Using the semantic page significantly reduces the development effort for app teams, and ensures that the placement of the header and footer content conforms with the SAP Fiori Design Guidelines.

Semantic page
Semantic page

When to Use

Use the semantic page if:

  • You are building a freestyle application.
  • You want to use a predefined layout to reduce development time.

Do not use the semantic page if:

Components

The semantic page is based on the structure of the dynamic page layout. In short, the semantic page has the following elements:

  1. Header title
  2. Header content
  3. Page content, dependent on the use case
  4. Footer toolbar with finalizing actions

The control’s semantics determine whether content specified in the control appears in the header toolbar or footer toolbar.

Semantic page structure
Semantic page structure

Header Title

Semantic page - Header title example
Semantic page - Header title example

Mandatory Elements

  • Title (1): The title is located on the left-hand side of the header title bar (sap.m.Title) and is always visible.

Optional Elements

  • Subtitle (2): The subtitle (sap.m.Text) is always below the title and is often used to summarize the most important information.
  • Breadcrumb (3): Depending on the use case, you can add a breadcrumb navigation.
  • Key information (4): Key information is located in the middle area, and is left aligned. This can be text, mini facets, or KPI tags, for example.
  • Global actions toolbar (5): The global actions toolbar for the entire floorplan is located on the right-hand side. Always use buttons for global actions, visualized either as text or icons (generic actions only). For more information, see header toolbar.
    Overflow menu: Actions move into the overflow from right to left. Icons are shown in the overflow menu with a corresponding text.
  • Layout actions (6): These are actions like the Close or Full Screen / Exit Full Screen icons, which are mainly offered by the flexible column layout. Depending on the screen size, layout actions are placed either to the right of the global actions toolbar, separated by a divider line, or above the global actions.

For more information about the collapsible header and its features, see Dynamic Page Layout.

Guidelines

  • Layout actions never move into the overflow and are always last in the header toolbar.
  • Do not remove or disable actions within the header title when it is collapsed.

Header Content

The optional header content is not defined in the semantic page and can be populated according to the use case.

Page Content

Like the header content, the page content is also not specified by the semantic page. It is proportionally the largest area of the layout and can be populated according to the use case.

Footer Toolbar

Semantic page - Footer toolbar
Semantic page - Footer toolbar

The footer toolbar is optional and contains the following components:

  1. Message button (containing the message popover) on the left-hand side
  2. Draft indicator on the right-hand side, just before the finalizing actions
  3. Finalizing actions on the right-hand side

Behavior and Interaction

The interaction and guidelines for the dynamic page also apply for the semantic page. The actions in the semantic page and their order is predefined and follows the rules of the action placement concept. For more information about toolbars in general, see Toolbar Overview.

Responsiveness

The semantic page offers considerable freedom and flexibility. It is designed to adapt automatically to small, medium, and large screen sizes. Next to that the responsive behavior depends on the behavior of the content being displayed.

The title and subtitle on the left truncate in collapsed mode and wrap in expanded mode. This behavior comes from the respective controls like the title.

Key information (middle area, left aligned) stays as long as possible.

Global actions have a predefined width depending on the available space. If no key information is available, the title and global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds buttons to the overflow menu from right to left.

The combination of a semantic page within in a flexible column layout and accompanying layout actions works as described for the dynamic page. The same applies for the summary line and letterboxing.

Top Tips

  • Use always a header title.
  • Use the header title and header content to provide the most relevant information and actions for your use case.
  • Do not remove or disable actions within the header title when it is collapsed.
  • Make sure that the layout actions in the flexible column layout are displayed correctly and never get hidden in the overflow.
  • Start your application in expanded mode if users need further content or adjustment options to get started.
  • Offer the pinning feature whenever users may need to fix the header content while scrolling through the page content.
  • Activate the summary line on smartphones to help users focus on the actual content of the page.

Related Topics

Elements and Controls

Implementation

Dynamic Page Layout

The dynamic page is the foundation for all pages in SAP Fiori. It is a generic layout control designed to support various floorplans and use cases. As a result, the content of both the header and the page can vary. Depending on your use case, you can either use one of the predefined floorplans or create your own layout.

The header of the dynamic page (1) is collapsible, which helps users to focus on the actual page content (2), while ensuring that important header information and actions are readily available. The dynamic page also includes an optional footer toolbar (3) for closing or finalizing actions that impact the whole page.

All SAP Fiori floorplans use the dynamic page, or are visually aligned to look the same. For detailed guidance, see the corresponding floorplan articles.

The following floorplans use the dynamic page:

You can also combine the dynamic page with the following floorplans. This replaces the snapping header feature.

When to Use

Use the dynamic page layout if:

Do not use the dynamic page layout if:

Dynamic Page vs. Semantic Page

The dynamic page is a skeleton structure that comes with empty content containers (page header, page content) and built-in responsive behavior.

This basic structure can be “filled” with content elements in three ways:

  • Automatically: If you are using an SAP Fiori element floorplan, the content of the dynamic page is provided out of the box.
  • Via the semantic page (recommended for freestyle apps): If you are creating a floorplan from scratch, you can use the semantic page (sap.f.semanticPage) to create a freestyle page. The semantic page is a separate control that comes with built-in logic for adding predefined content elements to the page, such as a title, global actions, and a footer toolbar. Using the semantic page significantly reduces the development effort for app teams, and ensures that the header and footer content is structured consistently.
    Note: In this case, the app developer uses only the semantic page control (which already embeds the dynamic page), and not the dynamic page control itself.
  • Manually: Technically, it’s possible to build the dynamic page from scratch. However, implementing the dynamic page manually is a significant development effort! Only consider this option in exceptional cases (for example, if you have special requirements for a freestyle app that cannot be implemented using the preconfigured semantic page control).

Components

Like all layouts, the dynamic page layout is below the shell bar of the SAP Fiori launchpad, which is always at the very top. The dynamic page layout consists of the following areas:

  1. Dynamic page header, comprising the header title (1a) and the expandable/collapsible header content (1b)
  2. Title
  3. Subtitle/summary
  4. Key information / KPI
  5. Global actions
  6. Header features to expand/collapse (6a) and pin/unpin (6b) the header
  7. Page content (differs depending on the use case and floorplan)
  8. Footer toolbar with finalizing actions

Dynamic Page Header

The dynamic page header contains the header title (mandatory) and the header content (optional).

Header Title

Dynamic page layout - Header title example
Dynamic page layout - Header title example

The header title bar (sap.f.DynamicPageTitle) always contains one of the following elements:

Mandatory Elements

  • Title (1): The title is located on the left of the header title bar, and is always visible. The title can contain one of the following components:

Optional Elements

  • Subtitle/summary (2)
    Placement: Always below the title. The subtitle (sap.m.Text) is often used to summarize the most important information in the collapsed header content. For example, if the header area contains a filter (as in a list reportanalytical list page, or overview page), the subtitle can be used to display the “Filtered By” information.
  • Breadcrumb (3)
    Placement: Above the title. Depending on the floorplan and use case, you can add breadcrumb navigation. The breadcrumb is located above the header title, and is primarily used to display the hierarchy of subpages within an object page.
    Note:
    In the flexible column layout, the breadcrumb is only available in full screen mode and not in the multi-column layout.
  • Key information (4)
    Placement: In the middle area, but left-aligned. Floorplans can also contain key information, such as text, mini facets, and KPI tags.
    Note:
    Currently, KPI tags are only used within the analytical list page and worklist floorplans.
  • Global actions (5)
    Placement: Global actions for the entire floorplan appear on the right-hand side of the header title bar. Always offer the actions as buttons, visualized either as text or icons. For more information, see Header Toolbar. In the collapsed mode, the header title offers the same actions as in the expanded mode and keeps them actionable.
  • Layout actions (6)
    Placement: Depending on the screen size, the layout actions are placed either on the very right of the global actions toolbar, separated by a divider line, or above the global actions (see more in the Responsiveness section). Typical layout actions are the CloseFull Screen, or Exit Full Screen icons, which are mainly offered by the flexible column layout.
  • Note:
    The dynamic page only provides the area for the layout actions. The navigation actions themselves are defined separately (for example, using the semantic page).
Guidelines

  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • In the flexible column layout layout, ensure that the icons for the Close or Full Screen / Exit Full Screen actions always stay on the very right. Their position then remains stable, even if other layout actions are added (such as the paging buttons  and  ). The Close and Full Screen / Exit Full Screen actions must never move into the overflow.

Header Content

Dynamic page layout - Header content example
Dynamic page layout - Header content example

The optional header content (sap.f.DynamicPageHeader) is located below the header title. You can place any components in the header content area (1) as long as they follow the guidelines for the respective floorplan.

When the dynamic page header collapses, the header content is hidden. You can also hide the header content if it is empty. In the latter case, the header title is not interactive.

Header Features

Dynamic page layout - Header features
Dynamic page layout - Header features

The header features (3) allow users to expand and collapse the header content. They can control the visibility of header content using two icon buttons at bottom of the header content area:

  1. Expand/collapse header or   
  2. Pin/unpin header content 

Footer Toolbar

Dynamic page layout - Footer toolbar
Dynamic page layout - Footer toolbar

The footer toolbar (sap.m.Toolbar) is also an optional part of the dynamic page layout. You can use it to offer closing or finalizing actions.

Combining the Dynamic Page with the Flexible Column Layout

The dynamic page layout is responsive and optimized for use within a flexible column layout. Each column (1, 2, 3) can contain its own dynamic page layout with a different floorplan, depending on the use case.

Dynamic page layout inside the flexible column layout
Dynamic page layout inside the flexible column layout

Behavior and Interaction

Dynamic Page Header

The header content collapses or expands upon defined triggers (snap on scroll and snap on click) to show more of the actual page content.

Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on click
Dynamic page layout - Snap on click
Dynamic page layout - Pin/unpin
Dynamic page layout - Pin/unpin

Starting in Expanded or Collapsed Mode

By default, the header content is initially expanded. Always expand the header content when starting the application if no query was fired (and the content area is therefore empty).

In certain cases, it can also make sense to deviate from the default and allow the header to appear in collapsed mode when initiating the app.

Snap on Scroll

Scrolling is the typical trigger for collapsing the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to collapsed mode, and stays fixed. When the user scrolls up the page, the header content expands again.

Expand/Collapse Header Feature

The expand/collapse header feature is a small icon button directly below the header content that enables the user to expand or collapse the header content. When the pin is active, the expand/collapse header feature is still available and overrules the pin. The icon buttons for expanding and collapsing the header are an alternative to clicking in the header title area, which might not have much clickable space. They also support keyboard actions.

On smartphones, the header content scrolls away when the user scrolls up the page. If you have enabled the summary line, the header converts to a summary line when the arrow of the header reaches the header title. An arrow icon button  then appears on the very right of the screen. Tapping the summary line also expands the header. The rest of the page stays in the same position.

The expand/collapse header feature is not available if there is no header content.

Snap on Click

In addition to the “snap on scroll” function, the user can also expand and collapse the header content by clicking anywhere on the header title bar that has no active elements (such as links or active buttons).

When using a mouse, the cursor changes from an arrow to a hand to support the user’s interaction. If the header is expanded and user clicks on the title bar, the header content collapses, and vice versa.

Pinning the Header Content

Activating the pin feature keeps the header expanded while the user scrolls through the page content. This mode remains fixed until the user clicks the pin icon again. This feature is optional and can be switched off if it is not useful for your application.

The expand/collapse header feature remains visible when the pin is activated. Clicking the Collapse Header icon overrules the pin and collapses the header.

The pin functionality is not available for floorplans without scrollbars (see special case below), or when there is no header container, such as in a copy or in a create scenario.

In the smartphone version, the pin action is not provided, as the pinned header would take up too much screen real estate. The same applies whenever the dynamic page header would occupy more than 60% of the screen, regardless of the device type. Overruling the pin feature keeps the focus on the content.

Special Case: No Page Scrolling Possible

The following special case applies for pages containing desktop-centric tables, such as the analytical tablegrid table, or tree table.

Because these tables use up all of the available screen space, there is no vertical scroll function, and hence no “snap on scroll” functionality. In this special case, an explicit interaction via the expand/collapse header feature is required to expand or collapse the content area. The Pin/Unpin action is obsolete and is not provided.

This exceptional case also applies to chart containers that use up all the available screen space in a similar way to desktop-centric tables.

Developer Hint

Make sure that the property fitContent is always set to false. Otherwise, a background color issue may occur that gets visible when the page is scrolled down.

Keyboard Interaction

The dynamic page header expands automatically as soon as keyboard actions like tabbing or group jumps (F6) bring the content of the dynamic page header into focus.

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Key(s) Behavior
[TAB] Move the focus to the dynamic page header – header title bar. The dynamic page header expands automatically.

If the focus is inside the header content area, move the focus to the next UI element within the header.

If the focus is on the last UI element (expand/collapse header feature) within the header content area, leave the header. Collapse the header content.

[SHIFT] + [TAB] See TAB, in reverse order.
[F6] If the focus is before the header title bar, set the focus to the header title bar. Expand the header content.

If the focus is within the header content, move the focus out of header and collapse the header content.

[SHIFT] + [F6] See F6, in reverse order.

Responsiveness

The dynamic page layout offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to adapt automatically to small, medium, and large screen sizes.

The title (sap.m.Title) and subtitle (sap.m.Text) on the left truncate in collapsed mode and wrap in expanded mode. This behavior comes from the respective controls for the title and subtitle, and not from the dynamic page itself.

Key information, like a KPI (middle area, left aligned), stays as long as possible.

Global actions stay as long as possible. If there is no key information, the title and the global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds the available buttons to the overflow menu from right to left.

Layout actions: The dynamic page offers a specific area for layout actions, which reacts to the predefined breakpoint of 1280 px:

  • Less than 1280 px: Navigation actions are placed in a separate row above the global actions.
  • 1280 px or more: Navigation actions are placed to the right of the global actions on the same line.

This breakpoint is independent of whether the page is used in the flexible column layout, on a desktop device, or on a mobile device.

Letterboxing limits the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability. Letterboxing can be used together with the dynamic page if the use case requires it. However, most business apps offer so much content that the page is typically shown across the entire screen, without letterboxing.

Size L

Size M

Size S

Summary Line

To save vertical space on smartphones, you can opt to display a smaller summary line instead of the expand/collapse header feature. We recommend switching on this feature to help users focus on the page content.

Size S with summary line
Size S with summary line

Examples

The dynamic page layout is a generic control. The content of both the header and the page differs from floorplan to floorplan. Here are some examples showing the most frequently-used variant per floorplan. For detailed guidance, see the corresponding floorplan guidelines (analytical list pageoverview pagelist reportworklist, initial pageobject page, wizard).

Top Tips

  • Use always a header title – either as a text or link, or by including variant management. For the initial page floorplan, use an input field.
  • Use the header title and header content to provide the most relevant information and actions for your use case.
  • Only use KPI tags within the analytical list page and worklist floorplans.
  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • Make sure that the layout actions in the flexible column layout are displayed correctly and never get hidden in the overflow.
  • Start your application in expanded mode if users need further content or adjustment options to get started.
  • Offer the pinning feature whenever users may need to fix the header content while scrolling through the page content.
  • Activate the summary line on smartphones to help users focus on the page content.

Related Links

Elements and Controls

Implementation

Dynamic Page Layout

The dynamic page is the foundation for all pages in SAP Fiori. It is a generic layout control designed to support various floorplans and use cases. As a result, the content of both the header and the page can vary. Depending on your use case, you can either use one of the predefined floorplans or create your own layout.

The header of the dynamic page (1) is collapsible, which helps users to focus on the actual page content (2), while ensuring that important header information and actions are readily available. The dynamic page also includes an optional footer toolbar (3) for closing or finalizing actions that impact the whole page.

All SAP Fiori floorplans use the dynamic page, or are visually aligned to look the same. For detailed guidance, see the corresponding floorplan articles.

The following floorplans use the dynamic page:

You can also combine the dynamic page with the following floorplans. This replaces the snapping header feature.

When to Use

Use the dynamic page layout if:

Do not use the dynamic page layout if:

Dynamic Page vs. Semantic Page

The dynamic page is a skeleton structure that comes with empty content containers (page header, page content) and built-in responsive behavior.

This basic structure can be “filled” with content elements in three ways:

  • Automatically: If you are using an SAP Fiori element floorplan, the content of the dynamic page is provided out of the box.
  • Via the semantic page (recommended for freestyle apps): If you are creating a floorplan from scratch, you can use the semantic page (sap.f.semanticPage) to create a freestyle page. The semantic page is a separate control that comes with built-in logic for adding predefined content elements to the page, such as a title, global actions, and a footer toolbar. Using the semantic page significantly reduces the development effort for app teams, and ensures that the header and footer content is structured consistently.
    Note: In this case, the app developer uses only the semantic page control (which already embeds the dynamic page), and not the dynamic page control itself.
  • Manually: Technically, it’s possible to build the dynamic page from scratch. However, implementing the dynamic page manually is a significant development effort! Only consider this option in exceptional cases (for example, if you have special requirements for a freestyle app that cannot be implemented using the preconfigured semantic page control).

Components

Like all layouts, the dynamic page layout is below the shell bar of the SAP Fiori launchpad, which is always at the very top. The dynamic page layout consists of the following areas:

  1. Dynamic page header, comprising the header title (1a) and the expandable/collapsible header content (1b)
  2. Title
  3. Subtitle/summary
  4. Key information / KPI
  5. Global actions
  6. Header features to expand/collapse (6a) and pin/unpin (6b) the header
  7. Page content (differs depending on the use case and floorplan)
  8. Footer toolbar with finalizing actions

Dynamic Page Header

The dynamic page header contains the header title (mandatory) and the header content (optional).

Header Title

Dynamic page layout - Header title example
Dynamic page layout - Header title example

The header title bar (sap.f.DynamicPageTitle) always contains one of the following elements:

Mandatory Elements

  • Title (1): The title is located on the left of the header title bar, and is always visible. The title can contain one of the following components:

Optional Elements

  • Subtitle/summary (2)
    Placement: Always below the title. The subtitle (sap.m.Text) is often used to summarize the most important information in the collapsed header content. For example, if the header area contains a filter (as in a list reportanalytical list page, or overview page), the subtitle can be used to display the “Filtered By” information.
  • Breadcrumb (3)
    Placement: Above the title. Depending on the floorplan and use case, you can add breadcrumb navigation. The breadcrumb is located above the header title, and is primarily used to display the hierarchy of subpages within an object page.
    Note:
    In the flexible column layout, the breadcrumb is only available in full screen mode and not in the multi-column layout.
  • Key information (4)
    Placement: In the middle area, but left-aligned. Floorplans can also contain key information, such as text, mini facets, and KPI tags.
    Note:
    Currently, KPI tags are only used within the analytical list page and worklist floorplans.
  • Global actions (5)
    Placement: Global actions for the entire floorplan appear on the right-hand side of the header title bar. Always offer the actions as buttons, visualized either as text or icons. For more information, see Header Toolbar. In the collapsed mode, the header title offers the same actions as in the expanded mode and keeps them actionable.
  • Layout actions (6)
    Placement: Depending on the screen size, the layout actions are placed either on the very right of the global actions toolbar, separated by a divider line, or above the global actions (see more in the Responsiveness section). Typical layout actions are the CloseFull Screen, or Exit Full Screen icons, which are mainly offered by the flexible column layout.
  • Note:
    The dynamic page only provides the area for the layout actions. The navigation actions themselves are defined separately (for example, using the semantic page).
Guidelines

  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • In the flexible column layout layout, ensure that the icons for the Close or Full Screen / Exit Full Screen actions always stay on the very right. Their position then remains stable, even if other layout actions are added (such as the paging buttons  and  ). The Close and Full Screen / Exit Full Screen actions must never move into the overflow.

Header Content

Dynamic page layout - Header content example
Dynamic page layout - Header content example

The optional header content (sap.f.DynamicPageHeader) is located below the header title. You can place any components in the header content area (1) as long as they follow the guidelines for the respective floorplan.

When the dynamic page header collapses, the header content is hidden. You can also hide the header content if it is empty. In the latter case, the header title is not interactive.

Header Features

Dynamic page layout - Header features
Dynamic page layout - Header features

The header features (3) allow users to expand and collapse the header content. They can control the visibility of header content using two icon buttons at bottom of the header content area:

  1. Expand/collapse header or   
  2. Pin/unpin header content 

Footer Toolbar

Dynamic page layout - Footer toolbar
Dynamic page layout - Footer toolbar

The footer toolbar (sap.m.Toolbar) is also an optional part of the dynamic page layout. You can use it to offer closing or finalizing actions.

Combining the Dynamic Page with the Flexible Column Layout

The dynamic page layout is responsive and optimized for use within a flexible column layout. Each column (1, 2, 3) can contain its own dynamic page layout with a different floorplan, depending on the use case.

Dynamic page layout inside the flexible column layout
Dynamic page layout inside the flexible column layout

Behavior and Interaction

Dynamic Page Header

The header content collapses or expands upon defined triggers (snap on scroll and snap on click) to show more of the actual page content.

Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on click
Dynamic page layout - Snap on click
Dynamic page layout - Pin/unpin
Dynamic page layout - Pin/unpin

Starting in Expanded or Collapsed Mode

By default, the header content is initially expanded. Always expand the header content when starting the application if no query was fired (and the content area is therefore empty).

In certain cases, it can also make sense to deviate from the default and allow the header to appear in collapsed mode when initiating the app.

Snap on Scroll

Scrolling is the typical trigger for collapsing the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to collapsed mode, and stays fixed. When the user scrolls up the page, the header content expands again.

Expand/Collapse Header Feature

The expand/collapse header feature is a small icon button directly below the header content that enables the user to expand or collapse the header content. When the pin is active, the expand/collapse header feature is still available and overrules the pin. The icon buttons for expanding and collapsing the header are an alternative to clicking in the header title area, which might not have much clickable space. They also support keyboard actions.

On smartphones, the header content scrolls away when the user scrolls up the page. If you have enabled the summary line, the header converts to a summary line when the arrow of the header reaches the header title. An arrow icon button  then appears on the very right of the screen. Tapping the summary line also expands the header. The rest of the page stays in the same position.

The expand/collapse header feature is not available if there is no header content.

Snap on Click

In addition to the “snap on scroll” function, the user can also expand and collapse the header content by clicking anywhere on the header title bar that has no active elements (such as links or active buttons).

When using a mouse, the cursor changes from an arrow to a hand to support the user’s interaction. If the header is expanded and user clicks on the title bar, the header content collapses, and vice versa.

Pinning the Header Content

Activating the pin feature keeps the header expanded while the user scrolls through the page content. This mode remains fixed until the user clicks the pin icon again. This feature is optional and can be switched off if it is not useful for your application.

The expand/collapse header feature remains visible when the pin is activated. Clicking the Collapse Header icon overrules the pin and collapses the header.

The pin functionality is not available for floorplans without scrollbars (see special case below), or when there is no header container, such as in a copy or in a create scenario.

In the smartphone version, the pin action is not provided, as the pinned header would take up too much screen real estate. The same applies whenever the dynamic page header would occupy more than 60% of the screen, regardless of the device type. Overruling the pin feature keeps the focus on the content.

Special Case: No Page Scrolling Possible

The following special case applies for pages containing desktop-centric tables, such as the analytical tablegrid table, or tree table.

Because these tables use up all of the available screen space, there is no vertical scroll function, and hence no “snap on scroll” functionality. In this special case, an explicit interaction via the expand/collapse header feature is required to expand or collapse the content area. The Pin/Unpin action is obsolete and is not provided.

This exceptional case also applies to chart containers that use up all the available screen space in a similar way to desktop-centric tables.

Keyboard Interaction

The dynamic page header expands automatically as soon as keyboard actions like tabbing or group jumps (F6) bring the content of the dynamic page header into focus.

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Key(s) Behavior
[TAB] Move the focus to the dynamic page header – header title bar. The dynamic page header expands automatically.

If the focus is inside the header content area, move the focus to the next UI element within the header.

If the focus is on the last UI element (expand/collapse header feature) within the header content area, leave the header. Collapse the header content.

[SHIFT] + [TAB] See TAB, in reverse order.
[F6] If the focus is before the header title bar, set the focus to the header title bar. Expand the header content.

If the focus is within the header content, move the focus out of header and collapse the header content.

[SHIFT] + [F6] See F6, in reverse order.

Responsiveness

The dynamic page layout offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to adapt automatically to small, medium, and large screen sizes.

The title (sap.m.Title) and subtitle (sap.m.Text) on the left truncate in collapsed mode and wrap in expanded mode. This behavior comes from the respective controls for the title and subtitle, and not from the dynamic page itself.

Key information, like a KPI (middle area, left aligned), stays as long as possible.

Global actions stay as long as possible. If there is no key information, the title and the global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds the available buttons to the overflow menu from right to left.

Layout actions: The dynamic page offers a specific area for layout actions, which reacts to the predefined breakpoint of 1280 px:

  • Less than 1280 px: Navigation actions are placed in a separate row above the global actions.
  • 1280 px or more: Navigation actions are placed to the right of the global actions on the same line.

This breakpoint is independent of whether the page is used in the flexible column layout, on a desktop device, or on a mobile device.

Letterboxing limits the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability. Letterboxing can be used together with the dynamic page if the use case requires it. However, most business apps offer so much content that the page is typically shown across the entire screen, without letterboxing.

Size L

Size M

Size S

Summary Line

To save vertical space on smartphones, you can opt to display a smaller summary line instead of the expand/collapse header feature. We recommend switching on this feature to help users focus on the page content.

Size S with summary line
Size S with summary line

Examples

The dynamic page layout is a generic control. The content of both the header and the page differs from floorplan to floorplan. Here are some examples showing the most frequently-used variant per floorplan. For detailed guidance, see the corresponding floorplan guidelines (analytical list pageoverview pagelist reportworklist, initial pageobject page, wizard).

Top Tips

  • Use always a header title – either as a text or link, or by including variant management. For the initial page floorplan, use an input field.
  • Use the header title and header content to provide the most relevant information and actions for your use case.
  • Only use KPI tags within the analytical list page and worklist floorplans.
  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • Make sure that the layout actions in the flexible column layout are displayed correctly and never get hidden in the overflow.
  • Start your application in expanded mode if users need further content or adjustment options to get started.
  • Offer the pinning feature whenever users may need to fix the header content while scrolling through the page content.
  • Activate the summary line on smartphones to help users focus on the page content.

Related Links

Elements and Controls

Implementation

Flexible Column Layout (Layout + SAP Fiori Elements)

The flexible column layout is a layout control that displays multiple floorplans on a single page. This allows faster and more fluid navigation between multiple floorplans than the usual page-by-page navigation. The flexible column layout offers different layouts with up to three columns (1, 2, 3). Users can expand the column they want to focus on, switch between different layouts, and view the rightmost column in full screen mode.

Flexible column layout - Example with three columns
Flexible column layout - Example with three columns

The flexible column layout behaves responsively, which makes it suitable for both desktop and mobile devices. Depending on the available screen width, an optimized layout is loaded to ensure the best possible user experience on each device. The flexible column layout is a generic control. As a layout container, it does not provide any content itself.

The flexible column layout is already incorporated within SAP Fiori elements.

Usage

Use the flexible column layout if:

  • You want to create a master-detail or master-detail-detail scenario in which the user can drill down or navigate.

Do not use the flexible column layout if:

  • You want to build a workbench or tools layout. The flexible column layout is not meant to provide a main column with additional side columns on the left and/or right. If you want to display additional content to enrich the main content and to help users better perform their tasks, use the dynamic side content instead.
  • You want to create a dashboard with context-independent pages.
  • You want to open multiple instances of the same object type. Use the multi-instance handling floorplan instead.
  • You want to split a single object into multiple columns, or display only a small amount of information.
  • You want to embed the SAP Fiori launchpad or overview page into one of the columns.

Structure

As with all layouts, the flexible column layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

Depending on the current layout and display size, the flexible column layout consists of one, two, or three horizontally-aligned columns. Each column contains content that is not provided by the flexible column layout itself. The flexible column layout is not restricted to a specific floorplan, as long as the floorplan you use is responsive down to phone size. However, we recommend using the dynamic page.

Information
It is not possible to use the SAP Fiori launchpad or the overview page in one of the columns.

Possible Layouts

To give users a better overview, the flexible column layout offers different layouts with one, two, or three columns. Depending on the screen size, up to five different base layouts are available.

Information

Language Dependency

For simplicity, this article assumes that the last column (the lowest drilldown level in the hierachy) is the rightmost column (left-to-right languages).

For right-to-left languages, however, the last column is the leftmost column.

Flexible column layout - Structure example (25% + 50% + 25%)
Flexible column layout - Structure example (25% + 50% + 25%)

Size L and XL (Desktop)

There are five different layouts in sizes L and XL: a full screen layout, as well as two different 2-column and 3-column layouts.

Available layouts in sizes L and XL
Available layouts in sizes L and XL

Size M (Tablet)

There are three different layouts in size M: a full screen layout and two different 2-column layouts. There is no 3-column layout due to the limited width. However, you can still load 3 pages in size M. Instead of showing them all side-by-side, the user can switch between columns 1/2 and 2/3.

Available layouts in size M
Available layouts in size M

Size S (Phone)

Because of the limited width, there is no multi-column layout for Size S. Instead, the rightmost column is shown in full screen mode.

Available layout in size S
Available layout in size S

Components

The flexible column layout offers a few simple actions that allow users to adapt the current layout according to their needs.

Note: Some of the actions (illustrated by blue lines in the image below) recover the last state of the layout to which they refer. In other words, the result of the action depends on the previous state of the layout.

Layout Arrow

The layout arrows allow users to expand the width of a given column, thereby changing the current layout. However, this action cannot be used to expand a column to full screen mode. There is a separate action for expanding a column to full screen mode.

The layout arrow is located next to the divider and points in the direction in which a column can be expanded. If a column cannot be expanded any further, the action is hidden.

Information
The user cannot change the size of a column freely (for example, 15% + 85%).

Enter Full Screen Mode

With the Full Screen icon  , the user can switch the rightmost column to full screen mode. The action is located in the rightmost column, and is only offered if there is more than one column.

Exit Full Screen Mode

By selecting the Exit Full Screen icon  , the user can exit the full screen and switch back to the multi-column (side-by-side) view. The action is only available while in full screen mode.

Information
The actions are not available in size S, which only displays a single column.

Close

With the Close icon   , the user can close the last (rightmost) column. If the user selects this action in the second column while the third column is minimized, both columns are closed. Close is also available in full screen mode, and in the second/third column for size S.

Information

The Close and Enter Full Screen / Exit Full Screen actions:

  • Are only displayed in the third column (or in the second column if there is no third column, or if the third column is minimized).
  • Are displayed as the last actions in the layout action section (or in the global actions toolbar if there is no layout action section in the floorplan). The layout action section is displayed to the right of the global actions on columns ≥1280 px wide, and in a separate line above the global actions on columns <1280 px wide.
  • Never move into the overflow.
  • Are always shown side-by-side (Enter Full Screen / Exit Full Screen icon left, Close icon right).
    Exception: There is no Enter Full Screen action in size S.

Developer Hint
The actions for entering and exiting full screen mode and closing columns are not provided automatically by the flexible column layout control, and need to be implemented manually. However, you can use the semantic page, which supports these actions for freestyle applications (only available with the dynamic page).

Navigation

In addition to the actions specific to the flexible column layout, the user can also use the forward and backward navigation to navigate through the flexible column layout. Drilling in or navigating forward opens a new column, while Back closes a column or exits the full screen mode (depending on what the last action was).
Please note: Back does not restore layout changes (such as switching from 33% + 67% to 67% + 33%). It also doesn’t reopen columns that were closed previously using the Close button (  ).

Because the flexible column layout only supports a maximum of 3 columns, any follow-on pages are loaded in full screen mode. These pages do not contain Close or Enter Full Screen / Exit Full Screen actions.

By default, the width is initially 33% for the second column and 25% for the third column. You can also set the width of the second column to 67%, or the third to 50% if your use case requires it.

Developer Hint
To implement the navigation/routing, you can use the SemanticHelper class, which provides predefined behavior to simplify the implementation.

Responsiveness

The flexible column layout changes its behavior for sizes XL, L, M and S in real time whenever the user resizes the screen.

If no previous state has been saved, ensure that the default layout appears automatically. For example, if the flexible column layout was initially loaded in size S and the user then navigates to the second column and changes the browser window to size M, show the default 2-column layout for size M (67% + 33%).

Responsiveness of the flexible column layout
Responsiveness of the flexible column layout

Behavior and Interaction

Dialogs

Dialogs triggered in one of the columns are centered over the entire screen.

Do
Center dialogs triggered in a column
Center dialogs triggered in a column
Don't
Do not right-align dialogs triggered in a column
Do not right-align dialogs triggered in a column

Vertical Size / Scrolling

Each column inside the flexible column layout contains an independent floorplan with its own scrolling behavior. There is no “all-encompassing” scrollbar which scrolls all columns simultaneously. The height of each floorplan is defined by the screen size.

Do
Give each column its own scrollbar
Give each column its own scrollbar
Don't
There is no universal scrollbar for all columns
There is no universal scrollbar for all columns

Scroll Position

During column resizing, the navigated item in the master column may no longer be in the visible screen area. In such cases, we recommend setting the scroll position to the item currently open in the details column (“navigated” item). This allows the user to see at a glance which item from the list or table is being displayed in the details column.

Developer Hint
To get the right scroll position, you can use the “columnResize” event. For more information, see the API reference.

Two Columns (Master-Detail Mode)

By default, the flexible column layout starts off with one column. The user opens new columns by navigating forward. Since the flexible column layout is the successor of the split-screen layout, you can also use just two columns if your use case requires it. Do not start your application with three columns. Too much information at the beginning can confuse users.

Note:

  • If you start with two columns, make sure that size S shows the first column. Otherwise, users see the second column first, which might be confusing. (Showing the second column is the normal responsive behavior of the flexible column layout, which always shows the last column in size S.)
  • Even if you start with two columns, offer the layout arrow and the Close action in the second column.
Examples: Starting with two columns (sizes L and XL)
Examples: Starting with two columns (sizes L and XL)

Titles / Breadcrumbs / Up and Down Arrows

If more than one column is visible, show the application title in the shell bar. If the user switches to full screen mode, show the page title. Also show the page title for size S, where only one column is visible.

If multiple columns are visible, hide the breadcrumbs and up/down arrows.

Application title in the shell bar
Application title in the shell bar
Page title in the shell bar
Page title in the shell bar

Bookmarks

Every layout inside the flexible column layout can be bookmarked. For example, if the user bookmarks a 3-column layout set to 25% + 50% + 25%, load this layout when the user opens the bookmark.

Minimized Third Column

When the user expands the first column in a 3-column layout, the third column is minimized. CloseEnter Full Screen, and layout arrow actions also appear on the right-hand border of the second column to allow the user to return to the original 3-column layout.

Close: The second and third (minimized) columns close. A dialog can appear to warn the user about any unsaved data in the third column.

Full screen: When the user clicks the Enter Full Screen icon, the second column switches to full screen mode. The third column remains open (but not visible), and closes as soon as the user selects another item in the second column, or uses the Close action in the second column. If the user selects the same item in the second column, it opens in the same state as before it was minimized.

Layout arrow: The arrow for changing the layout to 25% + 50% + 25% is only available in the 33% + 67% layout. This arrow is hidden if the user is changing the layout to 67% + 33%.

Example of a minimized third column (33% + 67%)
Example of a minimized third column (33% + 67%)

Using Close in Combination with Back Navigation

The back navigation must not restore a column that was previously closed with the Close icon  .

Example: The user closes the third column by clicking the Close icon   in the upper-right corner. If the user then navigates back (UI or browser), the second column should close.

Using 'Close' in combination with back navigation
Using 'Close' in combination with back navigation

3 Columns in Size M

To offer a desktop-like experience in size M, the flexible column layout displays either the first and second or the second and third column. The user can switch between these views by using the layout arrow on the left or right side of the flexible column layout. Note: This behavior is only intended for size M. Do not use it for sizes L or XL.

3-column interaction in size M
3-column interaction in size M

Letterboxing

Do not use letterboxing in combination with the flexible column layout, as it will reduce the size of the usable screen area.

Do
Proper use of usable screen area
Proper use of usable screen area
Don't
Improper use of usable screen area with letterboxing
Improper use of usable screen area with letterboxing

Full Screen Navigation

After switching a column to full screen mode, selecting the Back icon exits the full screen mode.

If the screen is in full screen mode, and the user navigates forward, also show the next column in full screen mode. If the user navigates backward, go back in full screen mode until the point where the user initially switched to full screen. If the user then clicks Back again, return to the multi-column mode.

Using full screen mode in combination with navigation
Using full screen mode in combination with navigation

Footer Toolbar

Each column of the flexible column layout can have its own footer toolbar. There is no overall footer toolbar that spans several columns.

Do
Give each column its own footer toolbar
Give each column its own footer toolbar
Don't
There is no overall footer toolbar spanning several columns
There is no overall footer toolbar spanning several columns

Overlapping Header

The flexible column layout can display multiple floorplans side-by-side. However, it is not designed for splitting a single floorplan into several columns. As a result, there is no overall header that spans several columns. If you need to show additional content within a floorplan, use the dynamic side content.

Do
Each column has its own header
Each column has its own header
Don't
There should be no overall header
There should be no overall header

Empty Details Column

Do not display an empty details column when using the flexible column layout. For example, if no items have been selected in the second column, do not show an empty third column.

Do
If no items are selected in the 2nd column, show only 2 columns
If no items are selected in the 2nd column, show only 2 columns
Don't
Do not show an empty 3rd column
Do not show an empty 3rd column

Usage With One or Several Initial Full Screen Pages

Some use cases require starting an application with one or more full screen pages. You can do this by using the first column of the flexible column layout in full screen mode. This allows you to show one or several initial full screen pages with different content. Because of technical constraints, you must always use the flexible column layout to show this initial content.

Using the flexible column layout with initial full screen pages
Using the flexible column layout with initial full screen pages

Content Padding Inside Columns

The flexible column layout doesn’t provide additional paddings around the content area. Since some controls have different internal paddings, please ensure that they are aligned correctly.

Developer Hint
If you are using the dynamic page inside the flexible column layout, you can use the class sapFDynamicPageAlignContent to overcome misalignment issues.

Navigation Indicator

It is important for users to be able to scan through the master list and quickly identify the item for which the details are being shown in the second or third column. This is especially important for large lists. For this case, you can enable a “navigated” indicator for tables and lists to mark the item that was last opened.

If there are several tables/lists on one page, ensure that the indicator shows only for the last navigated item. There should never be two navigation indicators on one page.

Navigation indicator and master list without actions
Navigation indicator and master list without actions
Navigation indicator and master list with single selection
Navigation indicator and master list with single selection
Navigation indicator and master list with multiple selection
Navigation indicator and master list with multiple selection

Content Interaction

Selecting a Different Item

If the user selects a different item in the master-detail or master-detail-detail scenario, the content of the details column changes to reflect the data of the newly selected item. If the item is selected in the first column, and the last column was open before the new item was selected, selecting the item closes the last column.

Selecting a different item
Selecting a different item

Deleting an Item

When an item is deleted, there are two options for handling the content of the details columns:

  • Select the next item and change the content in the details column.
    If the user deletes the last item, you can opt to either select the previous item or close the details column(s). If the user deletes all the objects, always close all columns, since there is no content to display.
  • Do not select an item and close the other columns.
Deleting and selecting the next item
Deleting and selecting the next item
Deleting and closing the other columns
Deleting and closing the other columns

Behavior on Filtering

Filtering in one of the columns does not affect the content in the other columns.

Once a filter is applied, the results are shown in the same column. The content in the remaining columns does not change, unless another item is selected.

Filtering does not affect the other columns
Filtering does not affect the other columns

Tab/Anchor Navigation

Tabs and anchors are used for navigation within an object or as a filter (for example, in object pages). They affect only the respective column and do not close or change the content in the other columns.

Tab/anchor navigation does not affect the other columns
Tab/anchor navigation does not affect the other columns

SAP Fiori Elements

The flexible column layout is available in SAP Fiori elements for scenarios that use draft handling. If you use draft handling, we strongly recommend using the SAP Fiori elements implementation, wherever possible. The implementation already includes the navigation and routing behavior, as well as the Close and Full Screen actions, for example. Starting the application with two columns is also supported by SAP Fiori elements.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Flexible Column Layout (Layout + SAP Fiori Elements)

The flexible column layout is a layout control that displays multiple floorplans on a single page. This allows faster and more fluid navigation between multiple floorplans than the usual page-by-page navigation. The flexible column layout offers different layouts with up to three columns (1, 2, 3). Users can expand the column they want to focus on, switch between different layouts, and view the rightmost column in full screen mode.

Flexible column layout - Example with three columns
Flexible column layout - Example with three columns

The flexible column layout behaves responsively, which makes it suitable for both desktop and mobile devices. Depending on the available screen width, an optimized layout is loaded to ensure the best possible user experience on each device. The flexible column layout is a generic control. As a layout container, it does not provide any content itself.

The flexible column layout is already incorporated within SAP Fiori elements.

Usage

Use the flexible column layout if:

  • You want to create a master-detail or master-detail-detail scenario in which the user can drill down or navigate.

Do not use the flexible column layout if:

  • You want to build a workbench or tools layout. The flexible column layout is not meant to provide a main column with additional side columns on the left and/or right. If you want to display additional content to enrich the main content and to help users better perform their tasks, use the dynamic side content instead.
  • You want to create a dashboard with context-independent pages.
  • You want to open multiple instances of the same object type. Use the multi-instance handling floorplan instead.
  • You want to split a single object into multiple columns, or display only a small amount of information.
  • You want to embed the SAP Fiori launchpad or overview page into one of the columns.

Structure

As with all layouts, the flexible column layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

Depending on the current layout and display size, the flexible column layout consists of one, two, or three horizontally-aligned columns. Each column contains content that is not provided by the flexible column layout itself. The flexible column layout is not restricted to a specific floorplan, as long as the floorplan you use is responsive down to phone size. However, we recommend using the dynamic page.

Information
It is not possible to use the SAP Fiori launchpad or the overview page in one of the columns.

Possible Layouts

To give users a better overview, the flexible column layout offers different layouts with one, two, or three columns. Depending on the screen size, up to five different base layouts are available.

Information

Language Dependency

For simplicity, this article assumes that the last column (the lowest drilldown level in the hierachy) is the rightmost column (left-to-right languages).

For right-to-left languages, however, the last column is the leftmost column.

Flexible column layout - Structure example (25% + 50% + 25%)
Flexible column layout - Structure example (25% + 50% + 25%)

Size L and XL (Desktop)

There are five different layouts in sizes L and XL: a full screen layout, as well as two different 2-column and 3-column layouts.

Available layouts in sizes L and XL
Available layouts in sizes L and XL

Size M (Tablet)

There are three different layouts in size M: a full screen layout and two different 2-column layouts. There is no 3-column layout due to the limited width. However, you can still load 3 pages in size M. Instead of showing them all side-by-side, the user can switch between columns 1/2 and 2/3.

Available layouts in size M
Available layouts in size M

Size S (Phone)

Because of the limited width, there is no multi-column layout for Size S. Instead, the rightmost column is shown in full screen mode.

Available layout in size S
Available layout in size S

Components

The flexible column layout offers a few simple actions that allow users to adapt the current layout according to their needs.

Note: Some of the actions (illustrated by blue lines in the image below) recover the last state of the layout to which they refer. In other words, the result of the action depends on the previous state of the layout.

Layout Arrow

The layout arrows allow users to expand the width of a given column, thereby changing the current layout. However, this action cannot be used to expand a column to full screen mode. There is a separate action for expanding a column to full screen mode.

The layout arrow is located next to the divider and points in the direction in which a column can be expanded. If a column cannot be expanded any further, the action is hidden.

Information
The user cannot change the size of a column freely (for example, 15% + 85%).

Enter Full Screen Mode

With the Full Screen icon  , the user can switch the rightmost column to full screen mode. The action is located in the rightmost column, and is only offered if there is more than one column.

Exit Full Screen Mode

By selecting the Exit Full Screen icon  , the user can exit the full screen and switch back to the multi-column (side-by-side) view. The action is only available while in full screen mode.

Information
The actions are not available in size S, which only displays a single column.

Close

With the Close icon   , the user can close the last (rightmost) column. If the user selects this action in the second column while the third column is minimized, both columns are closed. Close is also available in full screen mode, and in the second/third column for size S.

Information

The Close and Enter Full Screen / Exit Full Screen actions:

  • Are only displayed in the third column (or in the second column if there is no third column, or if the third column is minimized).
  • Are displayed as the last actions in the layout action section (or in the global actions toolbar if there is no layout action section in the floorplan). The layout action section is displayed to the right of the global actions on columns ≥1280 px wide, and in a separate line above the global actions on columns <1280 px wide.
  • Never move into the overflow.
  • Are always shown side-by-side (Enter Full Screen / Exit Full Screen icon left, Close icon right).
    Exception: There is no Enter Full Screen action in size S.

Developer Hint
The actions for entering and exiting full screen mode and closing columns are not provided automatically by the flexible column layout control, and need to be implemented manually. However, you can use the semantic page, which supports these actions for freestyle applications (only available with the dynamic page).

Navigation

In addition to the actions specific to the flexible column layout, the user can also use the forward and backward navigation to navigate through the flexible column layout. Drilling in or navigating forward opens a new column, while Back closes a column or exits the full screen mode (depending on what the last action was).
Please note: Back does not restore layout changes (such as switching from 33% + 67% to 67% + 33%). It also doesn’t reopen columns that were closed previously using the Close button (  ).

Because the flexible column layout only supports a maximum of 3 columns, any follow-on pages are loaded in full screen mode. These pages do not contain Close or Enter Full Screen / Exit Full Screen actions.

By default, the width is initially 33% for the second column and 25% for the third column. You can also set the width of the second column to 67%, or the third to 50% if your use case requires it.

Developer Hint
To implement the navigation/routing, you can use the SemanticHelper class, which provides predefined behavior to simplify the implementation.

Responsiveness

The flexible column layout changes its behavior for sizes XL, L, M and S in real time whenever the user resizes the screen.

If no previous state has been saved, ensure that the default layout appears automatically. For example, if the flexible column layout was initially loaded in size S and the user then navigates to the second column and changes the browser window to size M, show the default 2-column layout for size M (67% + 33%).

Responsiveness of the flexible column layout
Responsiveness of the flexible column layout

Behavior and Interaction

Dialogs

Dialogs triggered in one of the columns are centered over the entire screen.

Do
Center dialogs triggered in a column
Center dialogs triggered in a column
Don't
Do not right-align dialogs triggered in a column
Do not right-align dialogs triggered in a column

Vertical Size / Scrolling

Each column inside the flexible column layout contains an independent floorplan with its own scrolling behavior. There is no “all-encompassing” scrollbar which scrolls all columns simultaneously. The height of each floorplan is defined by the screen size.

Do
Give each column its own scrollbar
Give each column its own scrollbar
Don't
There is no universal scrollbar for all columns
There is no universal scrollbar for all columns

Scroll Position

During column resizing, the navigated item in the master column may no longer be in the visible screen area. In such cases, we recommend setting the scroll position to the item currently open in the details column (“navigated” item). This allows the user to see at a glance which item from the list or table is being displayed in the details column.

Developer Hint
To get the right scroll position, you can use the “columnResize” event. For more information, see the API reference.

Two Columns (Master-Detail Mode)

By default, the flexible column layout starts off with one column. The user opens new columns by navigating forward. Since the flexible column layout is the successor of the split-screen layout, you can also use just two columns if your use case requires it. Do not start your application with three columns. Too much information at the beginning can confuse users.

Note:

  • If you start with two columns, make sure that size S shows the first column. Otherwise, users see the second column first, which might be confusing. (Showing the second column is the normal responsive behavior of the flexible column layout, which always shows the last column in size S.)
  • Even if you start with two columns, offer the layout arrow and the Close action in the second column.
Examples: Starting with two columns (sizes L and XL)
Examples: Starting with two columns (sizes L and XL)

Titles / Breadcrumbs / Up and Down Arrows

If more than one column is visible, show the application title in the shell bar. If the user switches to full screen mode, show the page title. Also show the page title for size S, where only one column is visible.

If multiple columns are visible, hide the breadcrumbs and up/down arrows.

Application title in the shell bar
Application title in the shell bar
Page title in the shell bar
Page title in the shell bar

Bookmarks

Every layout inside the flexible column layout can be bookmarked. For example, if the user bookmarks a 3-column layout set to 25% + 50% + 25%, load this layout when the user opens the bookmark.

Minimized Third Column

When the user expands the first column in a 3-column layout, the third column is minimized. CloseEnter Full Screen, and layout arrow actions also appear on the right-hand border of the second column to allow the user to return to the original 3-column layout.

Close: The second and third (minimized) columns close. A dialog can appear to warn the user about any unsaved data in the third column.

Full screen: When the user clicks the Enter Full Screen icon, the second column switches to full screen mode. The third column remains open (but not visible), and closes as soon as the user selects another item in the second column, or uses the Close action in the second column. If the user selects the same item in the second column, it opens in the same state as before it was minimized.

Layout arrow: The arrow for changing the layout to 25% + 50% + 25% is only available in the 33% + 67% layout. This arrow is hidden if the user is changing the layout to 67% + 33%.

Example of a minimized third column (33% + 67%)
Example of a minimized third column (33% + 67%)

Using Close in Combination with Back Navigation

The back navigation must not restore a column that was previously closed with the Close icon  .

Example: The user closes the third column by clicking the Close icon   in the upper-right corner. If the user then navigates back (UI or browser), the second column should close.

Using 'Close' in combination with back navigation
Using 'Close' in combination with back navigation

3 Columns in Size M

To offer a desktop-like experience in size M, the flexible column layout displays either the first and second or the second and third column. The user can switch between these views by using the layout arrow on the left or right side of the flexible column layout. Note: This behavior is only intended for size M. Do not use it for sizes L or XL.

3-column interaction in size M
3-column interaction in size M

Letterboxing

Do not use letterboxing in combination with the flexible column layout, as it will reduce the size of the usable screen area.

Do
Proper use of usable screen area
Proper use of usable screen area
Don't
Improper use of usable screen area with letterboxing
Improper use of usable screen area with letterboxing

Full Screen Navigation

After switching a column to full screen mode, selecting the Back icon exits the full screen mode.

If the screen is in full screen mode, and the user navigates forward, also show the next column in full screen mode. If the user navigates backward, go back in full screen mode until the point where the user initially switched to full screen. If the user then clicks Back again, return to the multi-column mode.

Using full screen mode in combination with navigation
Using full screen mode in combination with navigation

Footer Toolbar

Each column of the flexible column layout can have its own footer toolbar. There is no overall footer toolbar that spans several columns.

Do
Give each column its own footer toolbar
Give each column its own footer toolbar
Don't
There is no overall footer toolbar spanning several columns
There is no overall footer toolbar spanning several columns

Overlapping Header

The flexible column layout can display multiple floorplans side-by-side. However, it is not designed for splitting a single floorplan into several columns. As a result, there is no overall header that spans several columns. If you need to show additional content within a floorplan, use the dynamic side content.

Do
Each column has its own header
Each column has its own header
Don't
There should be no overall header
There should be no overall header

Empty Details Column

Do not display an empty details column when using the flexible column layout. For example, if no items have been selected in the second column, do not show an empty third column.

Do
If no items are selected in the 2nd column, show only 2 columns
If no items are selected in the 2nd column, show only 2 columns
Don't
Do not show an empty 3rd column
Do not show an empty 3rd column

Usage With One or Several Initial Full Screen Pages

Some use cases require starting an application with one or more full screen pages. You can do this by using the first column of the flexible column layout in full screen mode. This allows you to show one or several initial full screen pages with different content. Because of technical constraints, you must always use the flexible column layout to show this initial content.

Using the flexible column layout with initial full screen pages
Using the flexible column layout with initial full screen pages

Content Padding Inside Columns

The flexible column layout doesn’t provide additional paddings around the content area. Since some controls have different internal paddings, please ensure that they are aligned correctly.

Developer Hint
If you are using the dynamic page inside the flexible column layout, you can use the class sapFDynamicPageAlignContent to overcome misalignment issues.

Navigation Indicator

It is important for users to be able to scan through the master list and quickly identify the item for which the details are being shown in the second or third column. This is especially important for large lists. For this case, you can enable a “navigated” indicator for tables and lists to mark the item that was last opened.

If there are several tables/lists on one page, ensure that the indicator shows only for the last navigated item. There should never be two navigation indicators on one page.

Navigation indicator and master list without actions
Navigation indicator and master list without actions
Navigation indicator and master list with single selection
Navigation indicator and master list with single selection
Navigation indicator and master list with multiple selection
Navigation indicator and master list with multiple selection

Content Interaction

Selecting a Different Item

If the user selects a different item in the master-detail or master-detail-detail scenario, the content of the details column changes to reflect the data of the newly selected item. If the item is selected in the first column, and the last column (column C) was open before the new item was selected, selecting the item closes the last column.

Selecting a different item
Selecting a different item

Deleting an Item

When an item is deleted, there are two options for handling the content of the details columns:

  • Select the next item and change the content in the details column.
    If the user deletes the last item, you can opt to either select the previous item or close the details column(s). If the user deletes all the objects, always close all columns, since there is no content to display.
  • Do not select an item and close the other columns.
Deleting and selecting the next item
Deleting and selecting the next item
Deleting and closing the other columns
Deleting and closing the other columns

Behavior on Filtering

Filtering in one of the columns does not affect the content in the other columns.

Once a filter is applied, the results are shown in the same column. The content in the remaining columns does not change, unless another item is selected.

Filtering does not affect the other columns
Filtering does not affect the other columns

Tab/Anchor Navigation

Tabs and anchors are used for navigation within an object or as a filter (for example, in object pages). They affect only the respective column and do not close or change the content in the other columns.

Tab/anchor navigation does not affect the other columns
Tab/anchor navigation does not affect the other columns

SAP Fiori Elements

The flexible column layout is available in SAP Fiori elements for scenarios that use draft handling. If you use draft handling, we strongly recommend using the SAP Fiori elements implementation, wherever possible. The implementation already includes the navigation and routing behavior, as well as the Close and Full Screen actions, for example. Starting the application with two columns is also supported by SAP Fiori elements.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page Layout – Semantic Page

The semantic page is recommended as the basic layout for freestyle applications. It builds on the basic functionality of the dynamic page and adds predefined content elements to the header toolbar (1) and footer toolbar (2), such as a title, global actions, and finalizing actions.

Using the semantic page significantly reduces the development effort for app teams, and ensures that the placement of the header and footer content conforms with the SAP Fiori Design Guidelines.

Semantic page
Semantic page

When to Use

Use the semantic page if:

  • You are building a freestyle application.
  • You want to use a predefined layout to reduce development time.

Do not use the semantic page if:

Components

The semantic page is based on the structure of the dynamic page layout. In short, the semantic page has the following elements:

  1. Header title
  2. Header content
  3. Page content, dependent on the use case
  4. Footer toolbar with finalizing actions

The control’s semantics determine whether content specified in the control appears in the header toolbar or footer toolbar.

Semantic page structure
Semantic page structure

Header Title

Semantic page - Header title example
Semantic page - Header title example

Mandatory Elements

  • Title (1): The title is located on the left-hand side of the header title bar (sap.m.Title) and is always visible.

Optional Elements

  • Subtitle (2): The subtitle (sap.m.Text) is always below the title and is often used to summarize the most important information.
  • Breadcrumb (3): Depending on and use case, you can add breadcrumb navigation.
  • Key information (4): Key information is located in the middle area, and is left aligned. This can be text, mini facets, or KPI tags, for example.
  • Global actions toolbar (5): The global actions toolbar for the entire floorplan is located on the right-hand side. Always use buttons for global actions, visualized either as text or icons (generic actions only). For more information, see header toolbar.
    Overflow menu: Actions move into the overflow from right to left. Icons are shown in the overflow menu with a corresponding text.
  • Layout actions (6): These are actions like the Close or Full Screen / Exit Full Screen icons, which are mainly offered by the flexible column layout. Depending on the screen size, layout actions are placed either to the right of the global actions toolbar, separated by a divider line, or above the global actions.

For more information about the collapsible header and its features, see Dynamic Page Layout.

Guidelines

  • Layout actions never move into the overflow and are always last in the header toolbar.
  • Do not remove or disable actions within the header title when it is collapsed.

Header Content

The optional header content is not defined in the semantic page and can be populated according to the use case.

Footer Toolbar

Semantic page - Footer toolbar
Semantic page - Footer toolbar

The footer toolbar is optional and contains the following components:

  1. Message indicator (containing the message popover) on the left-hand side
  2. Draft indicator on the right-hand side, just before the finalizing actions
  3. Finalizing actions on the right-hand side

Behavior and Interaction

The interaction and guidelines for the dynamic page also apply for the semantic page. The actions in the semantic page and their order is predefined and follows the rules of the action placement concept. For more information about toolbars in general, see Toolbar Overview.

Responsiveness

The semantic page offers considerable freedom and flexibility. It is designed to adapt automatically to small, medium, and large screen sizes. Next to that the responsive behavior depends on the behavior of the content being displayed.

The title and subtitle on the left truncate in collapsed mode and wrap in expanded mode. This behavior comes from the respective controls like the title.

Key information (middle area, left aligned) stays as long as possible.

Global actions have a predefined width depending on the available space. If no key information is available, the title and global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds buttons to the overflow menu from right to left.

The combination of a semantic page within in a flexible column layout and accompanying layout actions works as described for the dynamic page. The same applies for the summary line and letterboxing.

Top Tips

  • Use always a header title.
  • Use the header title and header content to provide the most relevant information and actions for your use case.
  • Do not remove or disable actions within the header title when it is collapsed.
  • Make sure that the layout actions in the flexible column layout are displayed correctly and never get hidden in the overflow.
  • Start your application in expanded mode if users need further content or adjustment options to get started.
  • Offer the pinning feature whenever users may need to fix the header content while scrolling through the page content.
  • Activate the summary line on smartphones to help users focus on the actual content of the page.

Related Topics

Elements and Controls

Implementation

Multi-Instance Layout

The multi-instance layout allows the user to display and edit multiple objects within one page.

Beforehand, the user selects the objects from another page, usually a list report or a table. Each object then appears on a separate tab.

As a result, the user can work on several objects simultaneously and switch between them easily.

1. Select items in a list report
1. Select items in a list report
2. New page with several editable tabs
2. New page with several editable tabs
3. Tab in edit mode
3. Tab in edit mode
Information
The multi-instance layout must be implemented by the app team.

Usage

Use the multi-instance layout if users need to open and edit multiple objects simultaneously.

Do not use this layout if your users need a side-by-side display on the same page. Use the comparison pattern instead.

Components

The multi-instance layout uses a tab container.

The content of each tab is managed using an embedded object page floorplan.

Components of the multi-instance layout
Components of the multi-instance layout

The tab container holds:

  1. Opened tabs
  2. Scroll buttons and overview list (if not all tabs can be shown on the screen)
  3. A Create button (optional)

Tabs

Each tab represents one object. One tab is always active, while the others are inactive.

The tab contains a title and a Close button:

  • Title
    ID or name of the object. If the title text exceeds 25 characters, it is truncated.
    An asterisk next to the tab title indicates that the object was changed but not saved.
     Guideline: Use the same title as in the object page.
  • Close button ( )
    The Close button is shown on all tabs.
     Guideline: If the user closes a tab without saving first, display a warning. See Handling Unsaved Changes.

Scroll Buttons and Overview List

The tab container has an overflow mechanism for cases where there are too many tabs to display on the screen:

  • Horizontal scroll buttons (  and  ) can be used to scroll back and forth through the tabs.
  • An overflow menu lists all the tabs, including the hidden tabs.

“Create” Button

You can offer a Create button on the far right of the tab container. Selecting this button opens a new tab containing an empty object page.

 Guideline: Only use this button if the application allows users to create new objects.

Behavior and Interaction

Opening Tabs

The multi-instance layout is always triggered from another page, such as a list report.

To work on multiple objects, users select the relevant objects and choose a triggering action, such as Open in Tabs (3). This opens a new page, in which the selected objects appear as tabs.

Closing Tabs

To close a tab, the user can click the Close ( ) button on the tab itself, or close the tab from the overflow menu.

Closing the Last Tab

When the last remaining tab is closed, the complete page is closed and the user is returned to the page from which the items were selected.

Handling Unsaved Changes

If objects have unsaved changes, the corresponding tabs show an asterisk (*) next to the title.

To prevent data loss, show a warning message in the following cases:

Case 1: The user tries to close a tab with unsaved changes.

Message type: Warning
Message text: Your changes will be lost when you close this tab.
Buttons: Close, Cancel

Warning: Closing a tab with unsaved changes
Warning: Closing a tab with unsaved changes

Case 2: The user tries to leave the page when one or more tabs have unsaved changes (by clicking the Back button or navigating to a different page).

Message type: Warning
Message text: If you leave this page, your changes to the following [objects] will be lost:
[Object 1]
[Object 2]
Buttons: Leave Page, Cancel 

Warning: Leave page when tabs have unsaved changes
Warning: Leave page when tabs have unsaved changes

Responsiveness

The multi-instance layout is controlled by the sap.m.TabContainer control.

The tab container supports all three SAP Fiori responsive sizes: small, medium, and large.

Size L
Size L

Size M
Size M
Size S
Size S

Top Tips

  • To open the page containing the tabs, use a meaningful button text with the number of selected objects in brackets.
    Recommended label: Open in Tabs (number of objects)
    Example: Open in Tabs (3).
  • Use the same tab title as the object page title.
  • Always use an object page floorplan to display the content of a tab.
  • Only offer a Create button if the application allows users to create new objects.

Related Topics

Elements and Controls

Implementation

Comparison Pattern

The comparison pattern allows users to select items from a list and display them side-by-side. This makes it easier to compare the characteristics of multiple items.  

When to Use

Use the comparison pattern if:

  • Users need to compare two or more similar items.
  • Users need to compare versions of the same item.
  • You are using the Dynamic Page Layout.

Do not use the comparison pattern if:

  • There is no business need for displaying items side-by-side. Don’t use the pattern purely for visualization.
  • You want to display only one item. In this case, use the Object Page Floorplan instead.

Components

The comparison pattern comprises the following components. All are mandatory: 

  • Triggering action: Opens the comparison view for the selected items.
  • Header areaShows the most important characteristics for identifying and comparing itemsEach item is represented by a card.
  • Content areaShows all characteristics needed for comparison. Each item is represented by a panel.

Triggering Action

The comparison is triggered by a button on a selection screen (for example, in a table toolbar).

Guidelines
Use the action text Compare or Compare [Objects]. In parentheses, include a counter for the number of selected items.

For example:
Compare (3)
Compare Products (3)

Header Area

The dynamic page header holds the header area of the comparison pattern. It uses the snapping behavior.

The header area has two main components:

1. Carousel

The carousel control displays the items in cards.

If there is not enough space to show all cards, paging buttons are displayed. Each time a user navigates left or right, the previous or next card is displayed. This also affects the respective panels in the content area. They are updated with the details of the item represented by the card.

Developer Hint
Always show the paging indicator when there is navigation between the cards (property showPageIndicator = true).

2. Card

The card contains the most important characteristics for an item. It consists of the card header and the card content.

Guidelines

  • Apply the same size and structure for all cards.
  • In the header area, show at least a title. A subtitle and image/avatar are optional. Do not show any other information.
  • For a lighter and more convenient comparison, limit the details you display in the card content. This keeps the cards shorter and easier to read. Use the panels to show more information.

When the header snaps, the information in the header area stays and the card content hides.

Warning
The comparison pattern uses the sap.f.card control in the header area. Do not use sap.f.card outside the comparison pattern.
Comparison pattern - Header area
Comparison pattern - Header area
Comparison pattern - Snapped header
Comparison pattern - Snapped header

Content Area

The dynamic page content area holds the content area of the comparison pattern.

The content area must contain at least two panels. For easier and faster comparison, use up to 10 panels to display the specifics of the selected items.

Panel

The expandable panel (1) is used to display all comparable characteristics in columns. A column is aligned with the respective card.

The first column of each panel should contain the characteristics of the item represented with the first card, the second column the item represented with the second card, and so on.

A panel must have a title that describes the characteristics. When collapsed (2), the panel displays only the title toolbar.

Guidelines

  • Show at least two panels in the content area.
  • For easier and faster comparison, use up to 10 panels to display the specifics of the selected items.
  • If an item is missing a characteristic, leave the corresponding field blank. Learn more here.

Comparison pattern - Content area
Comparison pattern - Content area
Comparison pattern content area - Expanded and collapsed panels
Comparison pattern content area - Expanded and collapsed panels
Missing characteristics
Missing characteristics

Behavior and Interaction

Adding More Items

If your users need to add more items while comparing, place an Add to Comparison action in the header. For more information, see Dynamic Page Layout – Header Title.

For adding more items, either show a dialog or the original page the user started from. Make sure that you display the items that are already in the comparison: in the dialog, also show the previously selected items; in the original page, keep the items selected.

Responsiveness

The comparison pattern adapts the number of visible items based on the screen size. If a card is no longer in the visible area, also hide its corresponding column in the panels.

On size S, there is only one visible card in the header area and its corresponding panels in the content area. Users can navigate left or right to see the next or previous item.

The comparison pattern maintains the scrolling position of the page when switching to the next or previous item. This feature helps the user focus on a certain characteristic while navigating through the items.

On size M and larger, always show two or more cards with their corresponding panel columns in the visible area.

Size S
Size S
Size S - Snapped header
Size S - Snapped header
Size M
Size M
Size M -Snapped header
Size M -Snapped header
Size L
Size L
Size L - Snapped header
Size L - Snapped header

Example

Top Tips

Compare apples with apples.

Wording

  • For triggering the comparison, use a meaningful button text with the number of selected items in brackets. We recommend “Compare (<number of selected items>)”, for example, Compare (3).
  • Use a page title that describes the task. We recommend “Compare <selected object type>”, for example, Compare Products.
  • Use precise panel titles to describe the characteristics.

Cards

  • Show only the most important information for an item on the card.
  • If the cards contain only a title, subtitle, and image/avatar, show the dynamic page header in collapsed mode when starting the app.
  • Link each item’s object page (if available) to the header area of the card. This gives users access to all the characteristics for a specific item to help them make a final decision.

Related Topics

Elements and Controls

Implementation

Dynamic Page Layout – Semantic Page

The semantic page is recommended as the basic layout for freestyle applications. It builds on the basic functionality of the dynamic page and adds predefined content elements to the header toolbar (1) and footer toolbar (2), such as a title, global actions, and finalizing actions.

Using the semantic page significantly reduces the development effort for app teams, and ensures that the placement of the header and footer content conforms with the SAP Fiori Design Guidelines.

Semantic page
Semantic page

When to Use

Use the semantic page if:

  • You are building a freestyle application.
  • You want to use a predefined layout to reduce development time.

Do not use the semantic page if:

Components

The semantic page is based on the structure of the dynamic page layout. In short, the semantic page has the following elements:

  1. Header title
  2. Header content
  3. Page content, dependent on the use case
  4. Footer toolbar with finalizing actions

The control’s semantics determine whether content specified in the control appears in the header toolbar or footer toolbar.

Semantic page structure
Semantic page structure

Header Title

Semantic page - Header title example
Semantic page - Header title example

Mandatory Elements

  • Title (1): The title is located on the left-hand side of the header title bar (sap.m.Title) and is always visible.

Optional Elements

  • Subtitle (2): The subtitle (sap.m.Text) is always below the title and is often used to summarize the most important information.
  • Breadcrumb (3): Depending on and use case, you can add breadcrumb navigation.
  • Key information (4): Key information is located in the middle area, and is left aligned. This can be text, mini facets, or KPI tags, for example.
  • Global actions toolbar (5): The global actions toolbar for the entire floorplan is located on the right-hand side. Always use buttons for global actions, visualized either as text or icons (generic actions only). For more information, see header toolbar.
    Overflow menu: Actions move into the overflow from right to left. Icons are shown in the overflow menu with a corresponding text.
  • Layout actions (6): These are actions like the Close or Full Screen / Exit Full Screen icons, which are mainly offered by the flexible column layout. Depending on the screen size, layout actions are placed either to the right of the global actions toolbar, separated by a divider line, or above the global actions.

For more information about the collapsible header and its features, see Dynamic Page Layout.

Guidelines

  • Layout actions never move into the overflow and are always last in the header toolbar.
  • Do not remove or disable actions within the header title when it is collapsed.

Header Content

The optional header content is not defined in the semantic page and can be populated according to the use case.

Footer Toolbar

Semantic page - Footer toolbar
Semantic page - Footer toolbar

The footer toolbar is optional and contains the following components:

  1. Message indicator (containing the message popover) on the left-hand side
  2. Draft indicator on the right-hand side, just before the finalizing actions
  3. Finalizing actions on the right-hand side

Behavior and Interaction

The interaction and guidelines for the dynamic page also apply for the semantic page. The actions in the semantic page and their order is predefined and follows the rules of the action placement concept. For more information about toolbars in general, see Toolbar Overview.

Responsiveness

The semantic page offers considerable freedom and flexibility. It is designed to adapt automatically to small, medium, and large screen sizes. Next to that the responsive behavior depends on the behavior of the content being displayed.

The title and subtitle on the left truncate in collapsed mode and wrap in expanded mode. This behavior comes from the respective controls like the title.

Key information (middle area, left aligned) stays as long as possible.

Global actions have a predefined width depending on the available space. If no key information is available, the title and global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds buttons to the overflow menu from right to left.

The combination of a semantic page within in a flexible column layout and accompanying layout actions works as described for the dynamic page. The same applies for the summary line and letterboxing.

Top Tips

  • Use always a header title.
  • Use the header title and header content to provide the most relevant information and actions for your use case.
  • Do not remove or disable actions within the header title when it is collapsed.
  • Make sure that the layout actions in the flexible column layout are displayed correctly and never get hidden in the overflow.
  • Start your application in expanded mode if users need further content or adjustment options to get started.
  • Offer the pinning feature whenever users may need to fix the header content while scrolling through the page content.
  • Activate the summary line on smartphones to help users focus on the actual content of the page.

Related Topics

Elements and Controls

Implementation

Dynamic Page Layout – Semantic Page

The semantic page is recommended as the basic layout for freestyle applications. It builds on the basic functionality of the dynamic page and adds predefined content elements to the header toolbar (1) and footer toolbar (2), such as a title, global actions, and finalizing actions.

Using the semantic page significantly reduces the development effort for app teams, and ensures that the placement of the header and footer content conforms with the SAP Fiori Design Guidelines.

Semantic page
Semantic page

When to Use

Use the semantic page if:

  • You are building a freestyle application.
  • You want to use a predefined layout to reduce development time.

Do not use the semantic page if:

Components

The semantic page is based on the structure of the dynamic page layout. In short, the semantic page has the following elements:

  1. Header title
  2. Header content
  3. Page content, dependent on the use case
  4. Footer toolbar with finalizing actions

The control’s semantics determine whether content specified in the control appears in the header toolbar or footer toolbar.

Semantic page structure
Semantic page structure

Header Title

Semantic page - Header title example
Semantic page - Header title example

Mandatory Elements

  • Title (1): The title is located on the left-hand side of the header title bar (sap.m.Title) and is always visible.

Optional Elements

  • Subtitle (2): The subtitle (sap.m.Text) is always below the title and is often used to summarize the most important information.
  • Breadcrumb (3): Depending on and use case, you can add breadcrumb navigation.
  • Key information (4): Key information is located in the middle area, and is left aligned. This can be text, mini facets, or KPI tags, for example.
  • Global actions toolbar (5): The global actions toolbar for the entire floorplan is located on the right-hand side. Always use buttons for global actions, visualized either as text or icons (generic actions only). For more information, see header toolbar.
    Overflow menu: Actions move into the overflow from right to left. Icons are shown in the overflow menu with a corresponding text.
  • Layout actions (6): These are actions like the Close or Full Screen / Exit Full Screen icons, which are mainly offered by the flexible column layout. Depending on the screen size, layout actions are placed either to the right of the global actions toolbar, separated by a divider line, or above the global actions.

For more information about the collapsible header and its features, see Dynamic Page Layout.

Guidelines

  • Layout actions never move into the overflow and are always last in the header toolbar.
  • Do not remove or disable actions within the header title when it is collapsed.

Header Content

The optional header content is not defined in the semantic page and can be populated according to the use case.

Footer Toolbar

Semantic page - Footer toolbar
Semantic page - Footer toolbar

The footer toolbar is optional and contains the following components:

  1. Message indicator (containing the message popover) on the left-hand side
  2. Draft indicator on the right-hand side, just before the finalizing actions
  3. Finalizing actions on the right-hand side

Behavior and Interaction

The interaction and guidelines for the dynamic page also apply for the semantic page. The actions in the semantic page and their order is predefined and follows the rules of the action placement concept. For more information about toolbars in general, see Toolbar Overview.

Responsiveness

The semantic page offers considerable freedom and flexibility. It is designed to adapt automatically to small, medium, and large screen sizes. Next to that the responsive behavior depends on the behavior of the content being displayed.

The title and subtitle on the left truncate in collapsed mode and wrap in expanded mode. This behavior comes from the respective controls like the title.

Key information (middle area, left aligned) stays as long as possible.

Global actions have a predefined width depending on the available space. If no key information is available, the title and global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds buttons to the overflow menu from right to left.

The combination of a semantic page within in a flexible column layout and accompanying layout actions works as described for the dynamic page. The same applies for the summary line and letterboxing.

Top Tips

  • Use always a header title.
  • Use the header title and header content to provide the most relevant information and actions for your use case.
  • Do not remove or disable actions within the header title when it is collapsed.
  • Make sure that the layout actions in the flexible column layout are displayed correctly and never get hidden in the overflow.
  • Start your application in expanded mode if users need further content or adjustment options to get started.
  • Offer the pinning feature whenever users may need to fix the header content while scrolling through the page content.
  • Activate the summary line on smartphones to help users focus on the actual content of the page.

Related Topics

Elements and Controls

Implementation

Flexible Column Layout (Layout + SAP Fiori Elements)

The flexible column layout is a layout control that displays multiple floorplans on a single page. This allows faster and more fluid navigation between multiple floorplans than the usual page-by-page navigation. The flexible column layout offers different layouts with up to three columns (1, 2, 3). Users can expand the column they want to focus on, switch between different layouts, and view the rightmost column in full screen mode.

Flexible column layout - Example with three columns
Flexible column layout - Example with three columns

The flexible column layout behaves responsively, which makes it suitable for both desktop and mobile devices. Depending on the available screen width, an optimized layout is loaded to ensure the best possible user experience on each device. The flexible column layout is a generic control. As a layout container, it does not provide any content itself.

The flexible column layout is already incorporated within SAP Fiori elements.

Usage

Use the flexible column layout if:

  • You want to create a master-detail or master-detail-detail scenario in which the user can drill down or navigate.

Do not use the flexible column layout if:

  • You want to build a workbench or tools layout. The flexible column layout is not meant to provide a main column with additional side columns on the left and/or right. If you want to display additional content to enrich the main content and to help users better perform their tasks, use the dynamic side content instead.
  • You want to create a dashboard with context-independent pages.
  • You want to open multiple instances of the same object type. Use the multi-instance handling floorplan instead.
  • You want to split a single object into multiple columns, or display only a small amount of information.
  • You want to embed the SAP Fiori launchpad or overview page into one of the columns.

Structure

As with all layouts, the flexible column layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

Depending on the current layout and display size, the flexible column layout consists of one, two, or three horizontally-aligned columns. Each column contains content that is not provided by the flexible column layout itself. The flexible column layout is not restricted to a specific floorplan, as long as the floorplan you use is responsive down to phone size. However, we recommend using the dynamic page.

Information
It is not possible to use the SAP Fiori launchpad or the overview page in one of the columns.

Possible Layouts

To give users a better overview, the flexible column layout offers different layouts with one, two, or three columns. Depending on the screen size, up to five different base layouts are available.

Information

Language Dependency

For simplicity, this article assumes that the last column (the lowest drilldown level in the hierachy) is the rightmost column (left-to-right languages).

For right-to-left languages, however, the last column is the leftmost column.

Flexible column layout - Structure example (25% + 50% + 25%)
Flexible column layout - Structure example (25% + 50% + 25%)

Size L and XL (Desktop)

There are five different layouts in sizes L and XL: a full screen layout, as well as two different 2-column and 3-column layouts.

Available layouts in sizes L and XL
Available layouts in sizes L and XL

Size M (Tablet)

There are three different layouts in size M: a full screen layout and two different 2-column layouts. There is no 3-column layout due to the limited width. However, you can still load 3 pages in size M. Instead of showing them all side-by-side, the user can switch between columns 1/2 and 2/3.

Available layouts in size M
Available layouts in size M

Size S (Phone)

Because of the limited width, there is no multi-column layout for Size S. Instead, the rightmost column is shown in full screen mode.

Available layout in size S
Available layout in size S

Components

The flexible column layout offers a few simple actions that allow users to adapt the current layout according to their needs.

Note: Some of the actions (illustrated by blue lines in the image below) recover the last state of the layout to which they refer. In other words, the result of the action depends on the previous state of the layout.

Layout Arrow

The layout arrows allow users to expand the width of a given column, thereby changing the current layout. However, this action cannot be used to expand a column to full screen mode. There is a separate action for expanding a column to full screen mode.

The layout arrow is located next to the divider and points in the direction in which a column can be expanded. If a column cannot be expanded any further, the action is hidden.

Information
The user cannot change the size of a column freely (for example, 15% + 85%).

Enter Full Screen Mode

With the Full Screen icon  , the user can switch the rightmost column to full screen mode. The action is located in the rightmost column, and is only offered if there is more than one column.

Exit Full Screen Mode

By selecting the Exit Full Screen icon  , the user can exit the full screen and switch back to the multi-column (side-by-side) view. The action is only available while in full screen mode.

Information
The actions are not available in size S, which only displays a single column.

Close

With the Close icon   , the user can close the last (rightmost) column. If the user selects this action in the second column while the third column is minimized, both columns are closed. Close is also available in full screen mode, and in the second/third column for size S.

Information

The Close and Enter Full Screen / Exit Full Screen actions:

  • Are only displayed in the third column (or in the second column if there is no third column, or if the third column is minimized).
  • Are displayed as the last actions in the layout action section (or in the global actions toolbar if there is no layout action section in the floorplan). The layout action section is displayed to the right of the global actions on columns ≥1280 px wide, and in a separate line above the global actions on columns <1280 px wide.
  • Never move into the overflow.
  • Are always shown side-by-side (Enter Full Screen / Exit Full Screen icon left, Close icon right).
    Exception: There is no Enter Full Screen action in size S.

Developer Hint
The actions for entering and exiting full screen mode and closing columns are not provided automatically by the flexible column layout control, and need to be implemented manually. However, you can use the semantic page, which supports these actions for freestyle applications (only available with the dynamic page).

Navigation

In addition to the actions specific to the flexible column layout, the user can also use the forward and backward navigation to navigate through the flexible column layout. Drilling in or navigating forward opens a new column, while Back closes a column or exits the full screen mode (depending on what the last action was).
Please note: Back does not restore layout changes (such as switching from 33% + 67% to 67% + 33%). It also doesn’t reopen columns that were closed previously using the Close button (  ).

Because the flexible column layout only supports a maximum of 3 columns, any follow-on pages are loaded in full screen mode. These pages do not contain Close or Enter Full Screen / Exit Full Screen actions.

By default, the width is initially 33% for the second column and 25% for the third column. You can also set the width of the second column to 67%, or the third to 50% if your use case requires it.

Developer Hint
To implement the navigation/routing, you can use the SemanticHelper class, which provides predefined behavior to simplify the implementation.

Responsiveness

The flexible column layout changes its behavior for sizes XL, L, M and S in real time whenever the user resizes the screen.

If no previous state has been saved, ensure that the default layout appears automatically. For example, if the flexible column layout was initially loaded in size S and the user then navigates to the second column and changes the browser window to size M, show the default 2-column layout for size M (67% + 33%).

Responsiveness of the flexible column layout
Responsiveness of the flexible column layout

Behavior and Interaction

Dialogs

Dialogs triggered in one of the columns are centered over the entire screen.

Do
Center dialogs triggered in a column
Center dialogs triggered in a column
Don't
Do not right-align dialogs triggered in a column
Do not right-align dialogs triggered in a column

Vertical Size / Scrolling

Each column inside the flexible column layout contains an independent floorplan with its own scrolling behavior. There is no “all-encompassing” scrollbar which scrolls all columns simultaneously. The height of each floorplan is defined by the screen size.

Do
Give each column its own scrollbar
Give each column its own scrollbar
Don't
There is no universal scrollbar for all columns
There is no universal scrollbar for all columns

Two Columns (Master-Detail Mode)

By default, the flexible column layout starts off with one column. The user opens new columns by navigating forward. Since the flexible column layout is the successor of the split-screen layout, you can also use just two columns if your use case requires it. Do not start your application with three columns. Too much information at the beginning can confuse users.

Note:

  • If you start with two columns, make sure that size S shows the first column. Otherwise, users see the second column first, which might be confusing. (Showing the second column is the normal responsive behavior of the flexible column layout, which always shows the last column in size S.)
  • Even if you start with two columns, offer the layout arrow and the Close action in the second column.
Examples: Starting with two columns (sizes L and XL)
Examples: Starting with two columns (sizes L and XL)

Titles / Breadcrumbs / Up and Down Arrows

If more than one column is visible, show the application title in the shell bar. If the user switches to full screen mode, show the page title. Also show the page title for size S, where only one column is visible.

If multiple columns are visible, hide the breadcrumbs and up/down arrows.

Application title in the shell bar
Application title in the shell bar
Page title in the shell bar
Page title in the shell bar

Bookmarks

Every layout inside the flexible column layout can be bookmarked. For example, if the user bookmarks a 3-column layout set to 25% + 50% + 25%, load this layout when the user opens the bookmark.

Minimized Third Column

When the user expands the first column in a 3-column layout, the third column is minimized. CloseEnter Full Screen, and layout arrow actions also appear on the right-hand border of the second column to allow the user to return to the original 3-column layout.

Close: The second and third (minimized) columns close. A dialog can appear to warn the user about any unsaved data in the third column.

Full screen: When the user clicks the Enter Full Screen icon, the second column switches to full screen mode. The third column remains open (but not visible), and closes as soon as the user selects another item in the second column, or uses the Close action in the second column. If the user selects the same item in the second column, it opens in the same state as before it was minimized.

Layout arrow: The arrow for changing the layout to 25% + 50% + 25% is only available in the 33% + 67% layout. This arrow is hidden if the user is changing the layout to 67% + 33%.

Example of a minimized third column (33% + 67%)
Example of a minimized third column (33% + 67%)

Using Close in Combination with Back Navigation

The back navigation must not restore a column that was previously closed with the Close icon  .

Example: The user closes the third column by clicking the Close icon   in the upper-right corner. If the user then navigates back (UI or browser), the second column should close.

Using 'Close' in combination with back navigation
Using 'Close' in combination with back navigation

3 Columns in Size M

To offer a desktop-like experience in size M, the flexible column layout displays either the first and second or the second and third column. The user can switch between these views by using the layout arrow on the left or right side of the flexible column layout. Note: This behavior is only intended for size M. Do not use it for sizes L or XL.

3-column interaction in size M
3-column interaction in size M

Letterboxing

Do not use letterboxing in combination with the flexible column layout, as it will reduce the size of the usable screen area.

Do
Proper use of usable screen area
Proper use of usable screen area
Don't
Improper use of usable screen area with letterboxing
Improper use of usable screen area with letterboxing

Full Screen Navigation

After switching a column to full screen mode, selecting the Back icon exits the full screen mode.

If the screen is in full screen mode, and the user navigates forward, also show the next column in full screen mode. If the user navigates backward, go back in full screen mode until the point where the user initially switched to full screen. If the user then clicks Back again, return to the multi-column mode.

Using full screen mode in combination with navigation
Using full screen mode in combination with navigation

Footer Toolbar

Each column of the flexible column layout can have its own footer toolbar. There is no overall footer toolbar that spans several columns.

Do
Give each column its own footer toolbar
Give each column its own footer toolbar
Don't
There is no overall footer toolbar spanning several columns
There is no overall footer toolbar spanning several columns

Overlapping Header

The flexible column layout can display multiple floorplans side-by-side. However, it is not designed for splitting a single floorplan into several columns. As a result, there is no overall header that spans several columns. If you need to show additional content within a floorplan, use the dynamic side content.

Do
Each column has its own header
Each column has its own header
Don't
There should be no overall header
There should be no overall header

Empty Details Column

Do not display an empty details column when using the flexible column layout. For example, if no items have been selected in the second column, do not show an empty third column.

Do
If no items are selected in the 2nd column, show only 2 columns
If no items are selected in the 2nd column, show only 2 columns
Don't
Do not show an empty 3rd column
Do not show an empty 3rd column

Usage With One or Several Initial Full Screen Pages

Some use cases require starting an application with one or more full screen pages. You can do this by using the first column of the flexible column layout in full screen mode. This allows you to show one or several initial full screen pages with different content. Because of technical constraints, you must always use the flexible column layout to show this initial content.

Using the flexible column layout with initial full screen pages
Using the flexible column layout with initial full screen pages

Content Padding Inside Columns

The flexible column layout doesn’t provide additional paddings around the content area. Since some controls have different internal paddings, please ensure that they are aligned correctly.

Developer Hint
If you are using the dynamic page inside the flexible column layout, you can use the class sapFDynamicPageAlignContent to overcome misalignment issues.

Navigation Indicator

It is important for users to be able to scan through the master list and quickly identify the item for which the details are being shown in the second or third column. This is especially important for large lists. For this case, you can enable a “navigated” indicator for tables and lists to mark the item that was last opened.

If there are several tables/lists on one page, ensure that the indicator shows only for the last navigated item. There should never be two navigation indicators on one page.

Navigation indicator and master list without actions
Navigation indicator and master list without actions
Navigation indicator and master list with single selection
Navigation indicator and master list with single selection
Navigation indicator and master list with multiple selection
Navigation indicator and master list with multiple selection

Content Interaction

Selecting a Different Item

If the user selects a different item in the master-detail or master-detail-detail scenario, the content of the details column changes to reflect the data of the newly selected item. If the item is selected in the first column, and the last column (column C) was open before the new item was selected, selecting the item closes the last column.

Selecting a different item
Selecting a different item

Deleting an Item

When an item is deleted, there are two options for handling the content of the details columns:

  • Select the next item and change the content in the details column.
    If the user deletes the last item, you can opt to either select the previous item or close the details column(s). If the user deletes all the objects, always close all columns, since there is no content to display.
  • Do not select an item and close the other columns.
Deleting and selecting the next item
Deleting and selecting the next item
Deleting and closing the other columns
Deleting and closing the other columns

Behavior on Filtering

Filtering in one of the columns does not affect the content in the other columns.

Once a filter is applied, the results are shown in the same column. The content in the remaining columns does not change, unless another item is selected.

Filtering does not affect the other columns
Filtering does not affect the other columns

Tab/Anchor Navigation

Tabs and anchors are used for navigation within an object or as a filter (for example, in object pages). They affect only the respective column and do not close or change the content in the other columns.

Tab/anchor navigation does not affect the other columns
Tab/anchor navigation does not affect the other columns

SAP Fiori Elements

The flexible column layout is available in SAP Fiori elements for scenarios that use draft handling. If you use draft handling, we strongly recommend using the SAP Fiori elements implementation, wherever possible. The implementation already includes the navigation and routing behavior, as well as the Close and Full Screen actions, for example. Starting the application with two columns is also supported by SAP Fiori elements.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page Layout

The dynamic page is the foundation for all pages in SAP Fiori. It is a generic layout control designed to support various floorplans and use cases. As a result, the content of both the header and the page can vary. Depending on your use case, you can either use one of the predefined floorplans or create your own layout.

The header of the dynamic page (1) is collapsible, which helps users to focus on the actual page content (2), while ensuring that important header information and actions are readily available. The dynamic page also includes an optional footer toolbar (3) for closing or finalizing actions that impact the whole page.

All SAP Fiori floorplans use the dynamic page, or are visually aligned to look the same. For detailed guidance, see the corresponding floorplan articles.

Floorplans that use the dynamic page:

You can also combine the dynamic page with the following floorplans. This replaces the snapping header feature.

When to Use

Use the dynamic page layout if:

Do not use the dynamic page layout if:

Dynamic Page vs. Semantic Page

The dynamic page is a skeleton structure that comes with empty content containers (page header, page content) and built-in responsive behavior.

This basic structure can be “filled” with content elements in three ways:

  • Automatically: If you are using an SAP Fiori element floorplan, the content of the dynamic page is provided out of the box.
  • Via the semantic page (recommended for freestyle apps): If you are creating a floorplan from scratch, you can use the semantic page (sap.f.semanticPage) to create a freestyle page. The semantic page is a separate control that comes with built-in logic for adding predefined content elements to the page, such as a title, global actions, and a footer toolbar. Using the semantic page significantly reduces the development effort for app teams, and ensures that the header and footer content is structured consistently.
    Note: In this case, the app developer uses only the semantic page control (which already embeds the dynamic page), and not the dynamic page control itself.
  • Manually: Technically, it’s possible to build the dynamic page from scratch. However, implementing the dynamic page manually is a significant development effort! Only consider this option in exceptional cases (for example, if you have special requirements for a freestyle app that cannot be implemented using the preconfigured semantic page control).

Components

Like all layouts, the dynamic page layout is below the shell bar of the SAP Fiori launchpad, which is always at the very top. The dynamic page layout consists of the following areas:

  1. Dynamic page header, comprising the the header title (1a) and the expandable/collapsible header content (1b)
  2. Title
  3. Subtitle/summary
  4. Key information / KPI
  5. Global actions
  6. Header features to collapse/expand (6a) and pin/unpin (6b) the header
  7. Page content (differs depending on the use case and floorplan)
  8. Footer toolbar with finalizing actions

Dynamic Page Header

Together, the header title (mandatory) and the header content (optional) form the dynamic page header.

Header Title

Dynamic page layout - Header title example
Dynamic page layout - Header title example

The header title bar (sap.f.DynamicPageTitle) always contains one of the following elements:

Mandatory Elements

  • Title (1): The title is located on the left of the header title bar, and is always visible. The title can contain one of the following components:

Optional Elements

  • Subtitle/summary (2)
    Placement: Always below the title. The subtitle (sap.m.Text) is often used to summarize the most important information in the collapsed header content. For example, if the header area contains a filter (as in a list reportanalytical list page, or overview page), the subtitle can be used to display the “Filtered By” information.
  • Breadcrumb (3)
    Placement: Above the title. Depending on the floorplan and use case, you can add breadcrumb navigation. The breadcrumb is located above the header title, and is primarily used to display the hierarchy of subpages within an object page.
    Note: In the flexible column layout, the breadcrumb is only available in full screen mode and not in the multi-column layout.
  • Key information (4)
    Placement: In the middle area, but left-aligned. Floorplans can also contain key information such as text, mini facets, and KPI tags.
    Note: Currently, KPI tags are only used within the analytical list page and worklist floorplans.
  • Global actions (5)
    Placement: Global actions for the entire floorplan appear on the right-hand side of the header title bar. Always offer the actions as buttons, visualized either as text or icons. For more information, see Header Toolbar. In the collapsed mode, the header title offers the same actions as in the expanded mode and keeps them actionable.
  • Layout actions (6)
    Placement: Depending on the screen size, the layout actions are placed either on the very right of the global actions toolbar, separated by a divider line, or above the global actions (see more in the Responsiveness section). Layout actions, such as the Close or Full Screen / Exit Full Screen icons, are mainly offered by the flexible column layout.
    Note: The dynamic page only provides the area for the layout actions. The navigation actions themselves are defined separately (for example, using the semantic page).
Guidelines

  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • In the flexible column layout layout, ensure that the icons for the Close or Full Screen / Exit Full Screen actions always stay on the very right. Their position then remains stable, even if other layout actions are added (such as the paging buttons  and  ). The Close and Full Screen / Exit Full Screen actions never move into the overflow.

Header Content

Dynamic page layout - Header content example
Dynamic page layout - Header content example

Located below the header title, the header content (sap.f.DynamicPageHeader) is optional. You can place any components in the header content area (1), provided that they follow the guidelines for the respective floorplan.

When the dynamic page header collapses, the header content is hidden. You can also hide the header content if it is empty. In the latter case, the header title is not interactive.


Header Features

Dynamic page layout - Header features
Dynamic page layout - Header features

The header features (3) allow users to expand and collapse the header content. They can control the visibility of header content using two icon buttons at bottom of the header content area:

  1. Expand/collapse header or   
  2. Pin/unpin header content 

Footer Toolbar

Dynamic page layout - Footer Toolbar
Dynamic page layout - Footer Toolbar

The footer toolbar (sap.m.Toolbar) is also an optional part of the dynamic page layout. You can use it to offer closing or finalizing actions.


Combination with the Flexible Column Layout

The dynamic page layout is responsive and optimized for use within a flexible column layout. Each column (1, 2, 3) can contain its own dynamic page layout with a different floorplan, depending on the use case.

Dynamic page layout inside the flexible column layout
Dynamic page layout inside the flexible column layout

Behavior and Interaction

Dynamic Page Header

The header content collapses or expands upon defined triggers (snap on scroll and snap on click) to show more of the actual page content.

Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on click
Dynamic page layout - Snap on click
Dynamic page layout - Pin/unpin
Dynamic page layout - Pin/unpin

Starting in expanded or collapsed mode

By default, the header content is initially expanded. Always expand the header content when starting the application if no query was fired (and the content area is therefore empty).

In certain cases, it can also make sense to deviate from the default and allow the header to appear in collapsed mode when initiating the app.

Snap on Scroll

Scrolling is the typical trigger for collapsing the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to collapsed mode, and stays fixed. When the user scrolls up the page, the header content is expanded again.

Expand/Collapse Header Feature

The expand/collapse header feature is a small icon button directly below the header content that enables the user to expand or collapse the header content. When the pin is active, the expand/collapse header feature is still available and overrules the pin. The icon buttons for expanding and collapsing the header are an alternative to clicking in the header title area, which might not have much clickable space.

On smartphones, the header content scrolls away when the user scrolls up the page. If you have enabled the summary line, the header converts to a summary line when the arrow of the header reaches the header title. As a visual cue, an arrow icon  then appears on the very right of the screen. Tapping the summary line expands the header. The rest of the page stays in the same position.

The expand/collapse header feature is not available if there is no header content.

Snap on Click

In addition to the “snap on scroll” function, the user can also expand and collapse the header content by clicking anywhere on the header title bar that has no active elements (such as links or active buttons).

On desktop devices, the cursor changes from an arrow to a hand to support the user’s interaction. If the header is expanded and user clicks on the title bar, the header content collapses, and vice versa.

Pinning the Header Content

Activating the pin feature keeps the header expanded while the user scrolls through the page content. This mode remains fixed until the user clicks or taps the pin icon again. This feature is optional and can be switched off if it is not useful for your application.

The expand/collapse header feature remains visible when the pin is activated. Clicking or tapping the Collapse Header icon overrules the pin and collapses the header.

The pin functionality is not available for floorplans without scrollbars (see special case below), or when there is no header container, such as in a copy and create scenario.

In the smartphone version, the pin action isn’t provided, as the pinned header would take up too much screen real estate.

Special Case: No Page Scrolling Possible

The following special case applies for pages containing desktop-centric tables, such as the analytical tablegrid table, or tree table.

Because desktop-centric tables use up all of the available screen space, there is no scroll function, and hence no “snap on scroll” functionality. In this special case, a click interaction via the expand/collapse header feature is required to expand or collapse the content area. The Pin/Unpin action is obsolete and is not provided.

This exceptional case also applies to chart containers that use up all the available screen space in a similar way to desktop-centric tables.

Keyboard Interaction

The dynamic page header expands automatically as soon as keyboard actions like tabbing or group jumps (F6) bring the content of the dynamic page header into focus.

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Key(s) Behavior
[TAB] Move the focus to the dynamic page header – header title bar. The dynamic page header expands automatically.

If the focus is inside the header content area, move the focus to the next UI element within the header.

If the focus is on the last UI element (expand/collapse header feature) within the header content area, leave the header. Collapse the header content.

[SHIFT] + [TAB]  See TAB, in reverse order.
[F6] If the focus is before the header title bar, set the focus to the header title bar. Expand the header content.

If the focus is within the header content, move the focus out of header and collapse the header content.

[SHIFT] + [F6]   See F6, in reverse order.

Responsiveness

The dynamic page layout offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to adapt automatically to small, medium, and large screen sizes.

The title (sap.m.Title) and subtitle (sap.m.Text) on the left truncate in collapsed mode and wrap in expanded mode. This behavior comes from the respective controls for the title and subtitle, and not from the dynamic page itself.

Key information like KPIs (middle area, left aligned) stays as long as possible.

Global actions stay as long as possible. If there is no key information, the title and the global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds the available buttons to the overflow menu from right to left.

Layout actions: The dynamic page offers a specific area for layout actions, which reacts to the predefined breakpoint of 1280 px:

  • Less than 1280 px: Navigation actions are placed in a separate row above the global actions
  • 1280 px or more: Navigation actions are placed to the right of the global actions in the same line

This breakpoint is independent of whether it is used in the flexible column layout, on a desktop device, or on a mobile device.

Letterboxing limits the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability. Letterboxing can be used together with the dynamic page if the use case requires it. However, most business apps offer so much content that the page is typically shown across the entire screen, without letterboxing.

Size L

Size M

Size S


Summary Line

To save vertical space on smartphones, you can opt to display a smaller summary line instead of the expand/collapse header feature. Switching on this feature can help users focus on the actual content of the page and is recommended.

Size S with summary line
Size S with summary line

Examples

The dynamic page layout is a generic control. The content of both the header and the page differs from floorplan to floorplan. Here are some examples showing the most frequently-used variant per floorplan. For detailed guidance, see the corresponding floorplan guidelines (analytical list pageoverview pagelist reportobject pageworklistwizard).

Top Tips

  • Use always a header title – either as a text or link, or by including variant management.
  • Use the header title and header content to provide the most relevant information and actions for your use case.
  • Only use KPI tags within the analytical list page and worklist floorplans.
  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • Make sure that the layout actions in the flexible column layout are displayed correctly and never get hidden in the overflow.
  • Start your application in expanded mode if users need further content or adjustment options to get started.
  • Offer the pinning feature whenever users may need to fix the header content while scrolling through the page content.
  • Activate the summary line on smartphones to help users focus on the actual content of the page.

Related Topics

Elements and Controls

Implementation

Flexible Column Layout (Layout + SAP Fiori Elements)

The flexible column layout is a layout control that displays multiple floorplans on a single page. This allows faster and more fluid navigation between multiple floorplans than the usual page-by-page navigation. The flexible column layout offers different layouts with up to three columns (1, 2, 3). Users can expand the column they want to focus on, switch between different layouts, and view the rightmost column in full screen mode.

Flexible column layout - Example with three columns
Flexible column layout - Example with three columns

The flexible column layout behaves responsively, which makes it suitable for both desktop and mobile devices. Depending on the available screen width, an optimized layout is loaded to ensure the best possible user experience on each device. The flexible column layout is a generic control. As a layout container, it does not provide any content itself.

The flexible column layout is already incorporated within SAP Fiori elements.

Usage

Use the flexible column layout if:

  • You want to create a master-detail or master-detail-detail scenario in which the user can drill down or navigate.

Do not use the flexible column layout if:

  • You want to build a workbench or tools layout. The flexible column layout is not meant to provide a main column with additional side columns on the left and/or right. If you want to display additional content to enrich the main content and to help users better perform their tasks, use the dynamic side content instead.
  • You want to create a dashboard with context-independent pages.
  • You want to open multiple instances of the same object type. Use the multi-instance handling floorplan instead.
  • You want to split a single object into multiple columns, or display only a small amount of information.
  • You want to embed the SAP Fiori launchpad or overview page into one of the columns.

Structure

As with all layouts, the flexible column layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

Depending on the current layout and display size, the flexible column layout consists of one, two, or three horizontally-aligned columns. Each column contains content that is not provided by the flexible column layout itself. The flexible column layout is not restricted to a specific floorplan, as long as the floorplan you use is responsive down to phone size. However, we recommend using the dynamic page.

Information
It is not possible to use the SAP Fiori launchpad or the overview page in one of the columns.

Possible Layouts

To give users a better overview, the flexible column layout offers different layouts with one, two, or three columns. Depending on the screen size, up to five different base layouts are available.

Information

Language Dependency

For simplicity, this article assumes that the last column (the lowest drilldown level in the hierachy) is the rightmost column (left-to-right languages).

For right-to-left languages, however, the last column is the leftmost column.

Flexible column layout - Structure example (25% + 50% + 25%)
Flexible column layout - Structure example (25% + 50% + 25%)

Size L and XL (Desktop)

There are five different layouts in sizes L and XL: a full screen layout, as well as two different 2-column and 3-column layouts.

Available layouts in sizes L and XL
Available layouts in sizes L and XL

Size M (Tablet)

There are three different layouts in size M: a full screen layout and two different 2-column layouts. There is no 3-column layout due to the limited width. However, you can still load 3 pages in size M. Instead of showing them all side-by-side, the user can switch between columns 1/2 and 2/3.

Available layouts in size M
Available layouts in size M

Size S (Phone)

Because of the limited width, there is no multi-column layout for Size S. Instead, the rightmost column is shown in full screen mode.

Available layout in size S
Available layout in size S

Components

The flexible column layout offers a few simple actions that allow users to adapt the current layout according to their needs.

Note: Some of the actions (illustrated by blue lines in the image below) recover the last state of the layout to which they refer. In other words, the result of the action depends on the previous state of the layout.

Layout Arrow

The layout arrows allow users to expand the width of a given column, thereby changing the current layout. However, this action cannot be used to expand a column to full screen mode. There is a separate action for expanding a column to full screen mode.

The layout arrow is located next to the divider and points in the direction in which a column can be expanded. If a column cannot be expanded any further, the action is hidden.

Information
The user cannot change the size of a column freely (for example, 15% + 85%).

Enter Full Screen Mode

With the Full Screen icon  , the user can switch the rightmost column to full screen mode. The action is located in the rightmost column, and is only offered if there is more than one column.

Exit Full Screen Mode

By selecting the Exit Full Screen icon  , the user can exit the full screen and switch back to the multi-column (side-by-side) view. The action is only available while in full screen mode.

Information
The actions are not available in size S, which only displays a single column.

Close

With the Close icon   , the user can close the last (rightmost) column. If the user selects this action in the second column while the third column is minimized, both columns are closed. Close is also available in full screen mode, and in the second/third column for size S.

Information

The Close and Enter Full Screen / Exit Full Screen actions:

  • Are only displayed in the third column (or in the second column if there is no third column, or if the third column is minimized).
  • Are displayed as the last actions in the layout action section (or in the global actions toolbar if there is no layout action section in the floorplan). The layout action section is displayed to the right of the global actions on columns ≥1280 px wide, and in a separate line above the global actions on columns <1280 px wide.
  • Never move into the overflow.
  • Are always shown side-by-side (Enter Full Screen / Exit Full Screen icon left, Close icon right).
    Exception: There is no Enter Full Screen action in size S.

Developer Hint
The actions for entering and exiting full screen mode and closing columns are not provided automatically by the flexible column layout control, and need to be implemented manually. However, you can use the semantic page, which supports these actions for freestyle applications (only available with the dynamic page).

Navigation

In addition to the actions specific to the flexible column layout, the user can also use the forward and backward navigation to navigate through the flexible column layout. Drilling in or navigating forward opens a new column, while Back closes a column or exits the full screen mode (depending on what the last action was).
Please note: Back does not restore layout changes (such as switching from 33% + 67% to 67% + 33%). It also doesn’t reopen columns that were closed previously using the Close button (  ).

Because the flexible column layout only supports a maximum of 3 columns, any follow-on pages are loaded in full screen mode. These pages do not contain Close or Enter Full Screen / Exit Full Screen actions.

By default, the width is initially 33% for the second column and 25% for the third column. You can also set the width of the second column to 67%, or the third to 50% if your use case requires it.

Developer Hint
To implement the navigation/routing, you can use the SemanticHelper class, which provides predefined behavior to simplify the implementation.

Responsiveness

The flexible column layout changes its behavior for sizes XL, L, M and S in real time whenever the user resizes the screen.

If no previous state has been saved, ensure that the default layout appears automatically. For example, if the flexible column layout was initially loaded in size S and the user then navigates to the second column and changes the browser window to size M, show the default 2-column layout for size M (67% + 33%).

Responsiveness of the flexible column layout
Responsiveness of the flexible column layout

Behavior and Interaction

Dialogs

Dialogs triggered in one of the columns are centered over the entire screen.

Do
Center dialogs triggered in a column
Center dialogs triggered in a column
Don't
Do not right-align dialogs triggered in a column
Do not right-align dialogs triggered in a column

Vertical Size / Scrolling

Each column inside the flexible column layout contains an independent floorplan with its own scrolling behavior. There is no “all-encompassing” scrollbar which scrolls all columns simultaneously. The height of each floorplan is defined by the screen size.

Do
Give each column its own scrollbar
Give each column its own scrollbar
Don't
There is no universal scrollbar for all columns
There is no universal scrollbar for all columns

Two Columns (Master-Detail Mode)

By default, the flexible column layout starts off with one column. The user opens new columns by navigating forward. Since the flexible column layout is the successor of the split-screen layout, you can also use just two columns if your use case requires it. Do not start your application with three columns. Too much information at the beginning can confuse users.

Note:

  • If you start with two columns, make sure that size S shows the first column. Otherwise, users see the second column first, which might be confusing. (Showing the second column is the normal responsive behavior of the flexible column layout, which always shows the last column in size S.)
  • Even if you start with two columns, offer the layout arrow and the Close action in the second column.
Examples: Starting with two columns (sizes L and XL)
Examples: Starting with two columns (sizes L and XL)

Titles / Breadcrumbs / Up and Down Arrows

If more than one column is visible, show the application title in the shell bar. If the user switches to full screen mode, show the page title. Also show the page title for size S, where only one column is visible.

If multiple columns are visible, hide the breadcrumbs and up/down arrows.

Application title in the shell bar
Application title in the shell bar
Page title in the shell bar
Page title in the shell bar

Bookmarks

Every layout inside the flexible column layout can be bookmarked. For example, if the user bookmarks a 3-column layout set to 25% + 50% + 25%, load this layout when the user opens the bookmark.

Minimized Third Column

When the user expands the first column in a 3-column layout, the third column is minimized. CloseEnter Full Screen, and layout arrow actions also appear on the right-hand border of the second column to allow the user to return to the original 3-column layout.

Close: The second and third (minimized) columns close. A dialog can appear to warn the user about any unsaved data in the third column.

Full screen: When the user clicks the Enter Full Screen icon, the second column switches to full screen mode. The third column remains open (but not visible), and closes as soon as the user selects another item in the second column, or uses the Close action in the second column. If the user selects the same item in the second column, it opens in the same state as before it was minimized.

Layout arrow: The arrow for changing the layout to 25% + 50% + 25% is only available in the 33% + 67% layout. This arrow is hidden if the user is changing the layout to 67% + 33%.

Example of a minimized third column (33% + 67%)
Example of a minimized third column (33% + 67%)

Using Close in Combination with Back Navigation

The back navigation must not restore a column that was previously closed with the Close icon  .

Example: The user closes the third column by clicking the Close icon   in the upper-right corner. If the user then navigates back (UI or browser), the second column should close.

Using 'Close' in combination with back navigation
Using 'Close' in combination with back navigation

3 Columns in Size M

To offer a desktop-like experience in size M, the flexible column layout displays either the first and second or the second and third column. The user can switch between these views by using the layout arrow on the left or right side of the flexible column layout. Note: This behavior is only intended for size M. Do not use it for sizes L or XL.

3-column interaction in size M
3-column interaction in size M

Letterboxing

Do not use letterboxing in combination with the flexible column layout, as it will reduce the size of the usable screen area.

Do
Proper use of usable screen area
Proper use of usable screen area
Don't
Improper use of usable screen area with letterboxing
Improper use of usable screen area with letterboxing

Full Screen Navigation

After switching a column to full screen mode, selecting the Back icon exits the full screen mode.

If the screen is in full screen mode, and the user navigates forward, also show the next column in full screen mode. If the user navigates backward, go back in full screen mode until the point where the user initially switched to full screen. If the user then clicks Back again, return to the multi-column mode.

Using full screen mode in combination with navigation
Using full screen mode in combination with navigation

Footer Toolbar

Each column of the flexible column layout can have its own footer toolbar. There is no overall footer toolbar that spans several columns.

Do
Give each column its own footer toolbar
Give each column its own footer toolbar
Don't
There is no overall footer toolbar spanning several columns
There is no overall footer toolbar spanning several columns

Overlapping Header

The flexible column layout can display multiple floorplans side-by-side. However, it is not designed for splitting a single floorplan into several columns. As a result, there is no overall header that spans several columns. If you need to show additional content within a floorplan, use the dynamic side content.

Do
Each column has its own header
Each column has its own header
Don't
There should be no overall header
There should be no overall header

Empty Details Column

Do not display an empty details column when using the flexible column layout. For example, if no items have been selected in the second column, do not show an empty third column.

Do
If no items are selected in the 2nd column, show only 2 columns
If no items are selected in the 2nd column, show only 2 columns
Don't
Do not show an empty 3rd column
Do not show an empty 3rd column

Usage With One or Several Initial Full Screen Pages

Some use cases require starting an application with one or more full screen pages. You can do this by using the first column of the flexible column layout in full screen mode. This allows you to show one or several initial full screen pages with different content. Because of technical constraints, you must always use the flexible column layout to show this initial content.

Using the flexible column layout with initial full screen pages
Using the flexible column layout with initial full screen pages

Content Padding Inside Columns

The flexible column layout doesn’t provide additional paddings around the content area. Since some controls have different internal paddings, please ensure that they are aligned correctly.

Developer Hint
If you are using the dynamic page inside the flexible column layout, you can use the class sapFDynamicPageAlignContent to overcome misalignment issues.

Content Interaction

Selecting a Different Item

If the user selects a different item in the master-detail or master-detail-detail scenario, the content of the details column changes to reflect the data of the newly selected item. If the item is selected in the first column, and the last column (column C) was open before the new item was selected, selecting the item closes the last column.

Selecting a different item
Selecting a different item

Deleting an Item

When an item is deleted, there are two options for handling the content of the details columns:

  • Select the next item and change the content in the details column.
    If the user deletes the last item, you can opt to either select the previous item or close the details column(s). If the user deletes all the objects, always close all columns, since there is no content to display.
  • Do not select an item and close the other columns.
Deleting and selecting the next item
Deleting and selecting the next item
Deleting and closing the other columns
Deleting and closing the other columns

Behavior on Filtering

Filtering in one of the columns does not affect the content in the other columns.

Once a filter is applied, the results are shown in the same column. The content in the remaining columns does not change, unless another item is selected.

Filtering does not affect the other columns
Filtering does not affect the other columns

Tab/Anchor Navigation

Tabs and anchors are used for navigation within an object or as a filter (for example, in object pages). They affect only the respective column and do not close or change the content in the other columns.

Tab/anchor navigation does not affect the other columns
Tab/anchor navigation does not affect the other columns

SAP Fiori Elements

The flexible column layout is available in SAP Fiori elements for scenarios that use draft handling. If you use draft handling, we strongly recommend using the SAP Fiori elements implementation, wherever possible. The implementation already includes the navigation and routing behavior, as well as the Close and Full Screen actions, for example. Starting the application with two columns is also supported by SAP Fiori elements.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page Layout

The dynamic page is the foundation for all pages in SAP Fiori. It is a generic layout control designed to support various floorplans and use cases. As a result, the content of both the header and the page can vary. Depending on your use case, you can either use one of the predefined floorplans or create your own layout.

The header of the dynamic page (1) is collapsible, which helps users to focus on the actual page content (2), while ensuring that important header information and actions are readily available. The dynamic page also includes an optional footer toolbar (3) for closing or finalizing actions that impact the whole page.

All SAP Fiori floorplans use the dynamic page, or are visually aligned to look the same. For detailed guidance, see the corresponding floorplan articles.

Floorplans that use the dynamic page:

You can also combine the dynamic page with the following floorplans. This replaces the snapping header feature.

When to Use

Use the dynamic page layout if:

Do not use the dynamic page layout if:

Dynamic Page vs. Semantic Page

The dynamic page is a skeleton structure that comes with empty content containers (page header, page content) and built-in responsive behavior.

This basic structure can be “filled” with content elements in three ways:

  • Automatically: If you are using an SAP Fiori element floorplan, the content of the dynamic page is provided out of the box.
  • Via the semantic page (recommended for freestyle apps): If you are creating a floorplan from scratch, you can use the semantic page (sap.f.semanticPage) to create a freestyle page. The semantic page is a separate control that comes with built-in logic for adding predefined content elements to the page, such as a title, global actions, and a footer toolbar. Using the semantic page significantly reduces the development effort for app teams, and ensures that the header and footer content is structured consistently.
    Note: In this case, the app developer uses only the semantic page control (which already embeds the dynamic page), and not the dynamic page control itself.
  • Manually: Technically, it’s possible to build the dynamic page from scratch. However, implementing the dynamic page manually is a significant development effort! Only consider this option in exceptional cases (for example, if you have special requirements for a freestyle app that cannot be implemented using the preconfigured semantic page control).

Components

Like all layouts, the dynamic page layout is below the shell bar of the SAP Fiori launchpad, which is always at the very top. The dynamic page layout consists of the following areas:

  1. Dynamic page header, comprising the the header title (1a) and the expandable/collapsible header content (1b)
  2. Title
  3. Subtitle/summary
  4. Key information / KPI
  5. Global actions
  6. Header features to collapse/expand (6a) and pin/unpin (6b) the header
  7. Page content (differs depending on the use case and floorplan)
  8. Footer toolbar with finalizing actions

Dynamic Page Header

Together, the header title (mandatory) and the header content (optional) form the dynamic page header.

Header Title

Dynamic page layout - Header title example
Dynamic page layout - Header title example

The header title bar (sap.f.DynamicPageTitle) always contains one of the following elements:

Mandatory Elements

  • Title (1): The title is located on the left of the header title bar, and is always visible. The title can contain one of the following components:

Optional Elements

  • Subtitle/summary (2)
    Placement: Always below the title. The subtitle (sap.m.Text) is often used to summarize the most important information in the collapsed header content. For example, if the header area contains a filter (as in a list reportanalytical list page, or overview page), the subtitle can be used to display the “Filtered By” information.
  • Breadcrumb (3)
    Placement: Above the title. Depending on the floorplan and use case, you can add breadcrumb navigation. The breadcrumb is located above the header title, and is primarily used to display the hierarchy of subpages within an object page.
    Note: In the flexible column layout, the breadcrumb is only available in full screen mode and not in the multi-column layout.
  • Key information (4)
    Placement: In the middle area, but left-aligned. Floorplans can also contain key information such as text, mini facets, and KPI tags.
    Note: Currently, KPI tags are only used within the analytical list page floorplan.
  • Global actions (5)
    Placement: Global actions for the entire floorplan appear on the right-hand side of the header title bar. Always offer the actions as buttons, visualized either as text or icons. For more information, see Header Toolbar. In the collapsed mode, the header title offers the same actions as in the expanded mode and keeps them actionable.
  • Layout actions (6)
    Placement: Depending on the screen size, the layout actions are placed either on the very right of the global actions toolbar, separated by a divider line, or above the global actions (see more in the Responsiveness section). Layout actions, such as the Close or Full Screen / Exit Full Screen icons, are mainly offered by the flexible column layout.
    Note: The dynamic page only provides the area for the layout actions. The navigation actions themselves are defined separately (for example, using the semantic page).
Guidelines

  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • In the flexible column layout layout, ensure that the icons for the Close or Full Screen / Exit Full Screen actions always stay on the very right. Their position then remains stable, even if other layout actions are added (such as the paging buttons  and  ). The Close and Full Screen / Exit Full Screen actions never move into the overflow.

Header Content

Dynamic page layout - Header content example
Dynamic page layout - Header content example

Located below the header title, the header content (sap.f.DynamicPageHeader) is optional. You can place any components in the header content area (1), provided that they follow the guidelines for the respective floorplan.

When the dynamic page header collapses, the header content is hidden. You can also hide the header content if it is empty. In the latter case, the header title is not interactive.


Header Features

Dynamic page layout - Header features
Dynamic page layout - Header features

The header features (3) allow users to expand and collapse the header content. They can control the visibility of header content using two icon buttons at bottom of the header content area:

  1. Expand/collapse header or   
  2. Pin/unpin header content 

Footer Toolbar

Dynamic page layout - Footer Toolbar
Dynamic page layout - Footer Toolbar

The footer toolbar (sap.m.Toolbar) is also an optional part of the dynamic page layout. You can use it to offer closing or finalizing actions.


Combination with the Flexible Column Layout

The dynamic page layout is responsive and optimized for use within a flexible column layout. Each column (1, 2, 3) can contain its own dynamic page layout with a different floorplan, depending on the use case.

Dynamic page layout inside the flexible column layout
Dynamic page layout inside the flexible column layout

Behavior and Interaction

Dynamic Page Header

The header content collapses or expands upon defined triggers (snap on scroll and snap on click) to show more of the actual page content.

Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on click
Dynamic page layout - Snap on click
Dynamic page layout - Pin/unpin
Dynamic page layout - Pin/unpin

Starting in expanded or collapsed mode

By default, the header content is initially expanded. Always expand the header content when starting the application if no query was fired (and the content area is therefore empty).

In certain cases, it can also make sense to deviate from the default and allow the header to appear in collapsed mode when initiating the app.

Snap on Scroll

Scrolling is the typical trigger for collapsing the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to collapsed mode, and stays fixed. When the user scrolls up the page, the header content is expanded again.

Expand/Collapse Header Feature

The expand/collapse header feature is a small icon button directly below the header content that enables the user to expand or collapse the header content. When the pin is active, the expand/collapse header feature is still available and overrules the pin. The icon buttons for expanding and collapsing the header are an alternative to clicking in the header title area, which might not have much clickable space.

On smartphones, the header content scrolls away when the user scrolls up the page. If you have enabled the summary line, the header converts to a summary line when the arrow of the header reaches the header title. As a visual cue, an arrow icon  then appears on the very right of the screen. Tapping the summary line expands the header. The rest of the page stays in the same position.

The expand/collapse header feature is not available if there is no header content.

Snap on Click

In addition to the “snap on scroll” function, the user can also expand and collapse the header content by clicking anywhere on the header title bar that has no active elements (such as links or active buttons).

On desktop devices, the cursor changes from an arrow to a hand to support the user’s interaction. If the header is expanded and user clicks on the title bar, the header content collapses, and vice versa.

Pinning the Header Content

Activating the pin feature keeps the header expanded while the user scrolls through the page content. This mode remains fixed until the user clicks or taps the pin icon again. This feature is optional and can be switched off if it is not useful for your application.

The expand/collapse header feature remains visible when the pin is activated. Clicking or tapping the Collapse Header icon overrules the pin and collapses the header.

The pin functionality is not available for floorplans without scrollbars (see special case below), or when there is no header container, such as in a copy and create scenario.

In the smartphone version, the pin action isn’t provided, as the pinned header would take up too much screen real estate.

Special Case: No Page Scrolling Possible

The following special case applies for pages containing desktop-centric tables, such as the analytical tablegrid table, or tree table.

Because desktop-centric tables use up all of the available screen space, there is no scroll function, and hence no “snap on scroll” functionality. In this special case, a click interaction via the expand/collapse header feature is required to expand or collapse the content area. The Pin/Unpin action is obsolete and is not provided.

This exceptional case also applies to chart containers that use up all the available screen space in a similar way to desktop-centric tables.

Keyboard Interaction

The dynamic page header expands automatically as soon as keyboard actions like tabbing or group jumps (F6) bring the content of the dynamic page header into focus.

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Key(s) Behavior
[TAB] Move the focus to the dynamic page header – header title bar. The dynamic page header expands automatically.

If the focus is inside the header content area, move the focus to the next UI element within the header.

If the focus is on the last UI element (expand/collapse header feature) within the header content area, leave the header. Collapse the header content.

[SHIFT] + [TAB]  See TAB, in reverse order.
[F6] If the focus is before the header title bar, set the focus to the header title bar. Expand the header content.

If the focus is within the header content, move the focus out of header and collapse the header content.

[SHIFT] + [F6]   See F6, in reverse order.

Responsiveness

The dynamic page layout offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to adapt automatically to small, medium, and large screen sizes.

The title (sap.m.Title) and subtitle (sap.m.Text) on the left truncate in collapsed mode and wrap in expanded mode. This behavior comes from the respective controls for the title and subtitle, and not from the dynamic page itself.

Key information like KPIs (middle area, left aligned) stays as long as possible.

Global actions stay as long as possible. If there is no key information, the title and the global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds the available buttons to the overflow menu from right to left.

Layout actions: The dynamic page offers a specific area for layout actions, which reacts to the predefined breakpoint of 1280 px:

  • Less than 1280 px: Navigation actions are placed in a separate row above the global actions
  • 1280 px or more: Navigation actions are placed to the right of the global actions in the same line

This breakpoint is independent of whether it is used in the flexible column layout, on a desktop device, or on a mobile device.

Letterboxing limits the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability. Letterboxing can be used together with the dynamic page if the use case requires it. However, most business apps offer so much content that the page is typically shown across the entire screen, without letterboxing.

Size L

Size M

Size S


Summary Line

To save vertical space on smartphones, you can opt to display a smaller summary line instead of the expand/collapse header feature. Switching on this feature can help users focus on the actual content of the page and is recommended.

Size S with summary line
Size S with summary line

Examples

The dynamic page layout is a generic control. The content of both the header and the page differs from floorplan to floorplan. Here are some examples showing the most frequently-used variant per floorplan. For detailed guidance, see the corresponding floorplan guidelines (analytical list pageoverview pagelist reportobject pageworklistwizard).

Top Tips

  • Use always a header title – either as a text or link, or by including variant management.
  • Use the header title and header content to provide the most relevant information and actions for your use case.
  • Only use KPI tags within the analytical list page floorplan.
  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • Make sure that the layout actions in the flexible column layout are displayed correctly and never get hidden in the overflow.
  • Start your application in expanded mode if users need further content or adjustment options to get started.
  • Offer the pinning feature whenever users may need to fix the header content while scrolling through the page content.
  • Activate the summary line on smartphones to help users focus on the actual content of the page.

Related Topics

Elements and Controls

Implementation

Dynamic Page Layout

The dynamic page is the foundation for all pages in SAP Fiori. It is a generic layout control designed to support various floorplans and use cases. As a result, the content of both the header and the page can vary. Depending on your use case, you can either use one of the predefined floorplans or create your own layout.

The header of the dynamic page (1) is collapsible, which helps users to focus on the actual page content (2), while ensuring that important header information and actions are readily available. The dynamic page also includes an optional footer toolbar (3) for closing or finalizing actions that impact the whole page.

All SAP Fiori floorplans use the dynamic page, or are visually aligned to look the same. For detailed guidance, see the corresponding floorplan articles.

Floorplans that use the dynamic page:

You can also combine the dynamic page with the following floorplans. This replaces the snapping header feature.

When to Use

Use the dynamic page layout if:

Do not use the dynamic page layout if:

Dynamic Page vs. Semantic Page

The dynamic page is a skeleton structure that comes with empty content containers (page header, page content) and built-in responsive behavior.

This basic structure can be “filled” with content elements in three ways:

  • Automatically: If you are using an SAP Fiori element floorplan, the content of the dynamic page is provided out of the box.
  • Via the semantic page (recommended for freestyle apps): If you are creating a floorplan from scratch, you can use the semantic page (sap.f.semanticPage) to create a freestyle page. The semantic page is a separate control that comes with built-in logic for adding predefined content elements to the page, such as a title, global actions, and a footer toolbar. Using the semantic page significantly reduces the development effort for app teams, and ensures that the header and footer content is structured consistently.
    Note: In this case, the app developer uses only the semantic page control (which already embeds the dynamic page), and not the dynamic page control itself.
  • Manually: Technically, it’s possible to build the dynamic page from scratch. However, implementing the dynamic page manually is a significant development effort! Only consider this option in exceptional cases (for example, if you have special requirements for a freestyle app that cannot be implemented using the preconfigured semantic page control).

Components

Like all layouts, the dynamic page layout is below the shell bar of the SAP Fiori launchpad, which is always at the very top. The dynamic page layout consists of the following areas:

  1. Dynamic page header, comprising the the header title (1a) and the expandable/collapsible header content (1b)
  2. Title
  3. Subtitle/summary
  4. Key information / KPI
  5. Global actions
  6. Header features to collapse/expand (6a) and pin/unpin (6b) the header
  7. Page content (differs depending on the use case and floorplan)
  8. Footer toolbar with finalizing actions

Dynamic Page Header

Together, the header title (mandatory) and the header content (optional) form the dynamic page header.

Header Title

Dynamic page layout - Header title example
Dynamic page layout - Header title example

The header title bar (sap.f.DynamicPageTitle) always contains one of the following elements:

Mandatory Elements

  • Title (1): The title is located on the left of the header title bar, and is always visible. The title can contain one of the following components:

Optional Elements

  • Subtitle/summary (2)
    Placement: Always below the title. The subtitle (sap.m.Text) is often used to summarize the most important information in the collapsed header content. For example, if the header area contains a filter (as in a list reportanalytical list page, or overview page), the subtitle can be used to display the “Filtered By” information.
  • Breadcrumb (3)
    Placement: Above the title. Depending on the floorplan and use case, you can add breadcrumb navigation. The breadcrumb is located above the header title, and is primarily used to display the hierarchy of subpages within an object page.
    Note: In the flexible column layout, the breadcrumb is only available in full screen mode and not in the multi-column layout.
  • Key information (4)
    Placement: In the middle area, but left-aligned. Floorplans can also contain key information such as text, mini facets, and KPI tags.
    Note: Currently, KPI tags are only used within the analytical list page and worklist floorplans.
  • Global actions (5)
    Placement: Global actions for the entire floorplan appear on the right-hand side of the header title bar. Always offer the actions as buttons, visualized either as text or icons. For more information, see Header Toolbar. In the collapsed mode, the header title offers the same actions as in the expanded mode and keeps them actionable.
  • Layout actions (6)
    Placement: Depending on the screen size, the layout actions are placed either on the very right of the global actions toolbar, separated by a divider line, or above the global actions (see more in the Responsiveness section). Layout actions, such as the Close or Full Screen / Exit Full Screen icons, are mainly offered by the flexible column layout.
    Note: The dynamic page only provides the area for the layout actions. The navigation actions themselves are defined separately (for example, using the semantic page).
Guidelines

  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • In the flexible column layout layout, ensure that the icons for the Close or Full Screen / Exit Full Screen actions always stay on the very right. Their position then remains stable, even if other layout actions are added (such as the paging buttons  and  ). The Close and Full Screen / Exit Full Screen actions never move into the overflow.

Header Content

Dynamic page layout - Header content example
Dynamic page layout - Header content example

Located below the header title, the header content (sap.f.DynamicPageHeader) is optional. You can place any components in the header content area (1), provided that they follow the guidelines for the respective floorplan.

When the dynamic page header collapses, the header content is hidden. You can also hide the header content if it is empty. In the latter case, the header title is not interactive.


Header Features

Dynamic page layout - Header features
Dynamic page layout - Header features

The header features (3) allow users to expand and collapse the header content. They can control the visibility of header content using two icon buttons at bottom of the header content area:

  1. Expand/collapse header or   
  2. Pin/unpin header content 

Footer Toolbar

Dynamic page layout - Footer Toolbar
Dynamic page layout - Footer Toolbar

The footer toolbar (sap.m.Toolbar) is also an optional part of the dynamic page layout. You can use it to offer closing or finalizing actions.


Combination with the Flexible Column Layout

The dynamic page layout is responsive and optimized for use within a flexible column layout. Each column (1, 2, 3) can contain its own dynamic page layout with a different floorplan, depending on the use case.

Dynamic page layout inside the flexible column layout
Dynamic page layout inside the flexible column layout

Behavior and Interaction

Dynamic Page Header

The header content collapses or expands upon defined triggers (snap on scroll and snap on click) to show more of the actual page content.

Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on click
Dynamic page layout - Snap on click
Dynamic page layout - Pin/unpin
Dynamic page layout - Pin/unpin

Starting in expanded or collapsed mode

By default, the header content is initially expanded. Always expand the header content when starting the application if no query was fired (and the content area is therefore empty).

In certain cases, it can also make sense to deviate from the default and allow the header to appear in collapsed mode when initiating the app.

Snap on Scroll

Scrolling is the typical trigger for collapsing the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to collapsed mode, and stays fixed. When the user scrolls up the page, the header content is expanded again.

Expand/Collapse Header Feature

The expand/collapse header feature is a small icon button directly below the header content that enables the user to expand or collapse the header content. When the pin is active, the expand/collapse header feature is still available and overrules the pin. The icon buttons for expanding and collapsing the header are an alternative to clicking in the header title area, which might not have much clickable space.

On smartphones, the header content scrolls away when the user scrolls up the page. If you have enabled the summary line, the header converts to a summary line when the arrow of the header reaches the header title. As a visual cue, an arrow icon  then appears on the very right of the screen. Tapping the summary line expands the header. The rest of the page stays in the same position.

The expand/collapse header feature is not available if there is no header content.

Snap on Click

In addition to the “snap on scroll” function, the user can also expand and collapse the header content by clicking anywhere on the header title bar that has no active elements (such as links or active buttons).

On desktop devices, the cursor changes from an arrow to a hand to support the user’s interaction. If the header is expanded and user clicks on the title bar, the header content collapses, and vice versa.

Pinning the Header Content

Activating the pin feature keeps the header expanded while the user scrolls through the page content. This mode remains fixed until the user clicks or taps the pin icon again. This feature is optional and can be switched off if it is not useful for your application.

The expand/collapse header feature remains visible when the pin is activated. Clicking or tapping the Collapse Header icon overrules the pin and collapses the header.

The pin functionality is not available for floorplans without scrollbars (see special case below), or when there is no header container, such as in a copy and create scenario.

In the smartphone version, the pin action isn’t provided, as the pinned header would take up too much screen real estate.

Special Case: No Page Scrolling Possible

The following special case applies for pages containing desktop-centric tables, such as the analytical tablegrid table, or tree table.

Because desktop-centric tables use up all of the available screen space, there is no scroll function, and hence no “snap on scroll” functionality. In this special case, a click interaction via the expand/collapse header feature is required to expand or collapse the content area. The Pin/Unpin action is obsolete and is not provided.

This exceptional case also applies to chart containers that use up all the available screen space in a similar way to desktop-centric tables.

Keyboard Interaction

The dynamic page header expands automatically as soon as keyboard actions like tabbing or group jumps (F6) bring the content of the dynamic page header into focus.

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Key(s) Behavior
[TAB] Move the focus to the dynamic page header – header title bar. The dynamic page header expands automatically.

If the focus is inside the header content area, move the focus to the next UI element within the header.

If the focus is on the last UI element (expand/collapse header feature) within the header content area, leave the header. Collapse the header content.

[SHIFT] + [TAB]  See TAB, in reverse order.
[F6] If the focus is before the header title bar, set the focus to the header title bar. Expand the header content.

If the focus is within the header content, move the focus out of header and collapse the header content.

[SHIFT] + [F6]   See F6, in reverse order.

Responsiveness

The dynamic page layout offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to adapt automatically to small, medium, and large screen sizes.

The title (sap.m.Title) and subtitle (sap.m.Text) on the left truncate in collapsed mode and wrap in expanded mode. This behavior comes from the respective controls for the title and subtitle, and not from the dynamic page itself.

Key information like KPIs (middle area, left aligned) stays as long as possible.

Global actions stay as long as possible. If there is no key information, the title and the global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds the available buttons to the overflow menu from right to left.

Layout actions: The dynamic page offers a specific area for layout actions, which reacts to the predefined breakpoint of 1280 px:

  • Less than 1280 px: Navigation actions are placed in a separate row above the global actions
  • 1280 px or more: Navigation actions are placed to the right of the global actions in the same line

This breakpoint is independent of whether it is used in the flexible column layout, on a desktop device, or on a mobile device.

Letterboxing limits the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability. Letterboxing can be used together with the dynamic page if the use case requires it. However, most business apps offer so much content that the page is typically shown across the entire screen, without letterboxing.

Size L

Size M

Size S


Summary Line

To save vertical space on smartphones, you can opt to display a smaller summary line instead of the expand/collapse header feature. Switching on this feature can help users focus on the actual content of the page and is recommended.

Size S with summary line
Size S with summary line

Examples

The dynamic page layout is a generic control. The content of both the header and the page differs from floorplan to floorplan. Here are some examples showing the most frequently-used variant per floorplan. For detailed guidance, see the corresponding floorplan guidelines (analytical list pageoverview pagelist reportobject pageworklistwizard).

Top Tips

  • Use always a header title – either as a text or link, or by including variant management.
  • Use the header title and header content to provide the most relevant information and actions for your use case.
  • Only use KPI tags within the analytical list page and worklist floorplans.
  • Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • Make sure that the layout actions in the flexible column layout are displayed correctly and never get hidden in the overflow.
  • Start your application in expanded mode if users need further content or adjustment options to get started.
  • Offer the pinning feature whenever users may need to fix the header content while scrolling through the page content.
  • Activate the summary line on smartphones to help users focus on the actual content of the page.

Related Topics

Elements and Controls

Implementation

Flexible Column Layout (Layout + SAP Fiori Elements)

The flexible column layout is a layout control that displays multiple floorplans on a single page. This allows faster and more fluid navigation between multiple floorplans than the usual page-by-page navigation. The flexible column layout offers different layouts with up to three columns. Users can expand the column they want to focus on, switch between different layouts, and view the rightmost column in full screen mode.

Flexible column layout - Example with three columns
Flexible column layout - Example with three columns

The flexible column layout behaves responsively, which makes it suitable for both desktop and mobile devices. Depending on the available screen width, an optimized layout is loaded to ensure the best possible user experience on each device. The flexible column layout is a generic control. As a layout container, it does not provide any content itself.

The flexible column layout is already incorporated within SAP Fiori elements.

Usage

Use the flexible column layout if:

  • You want to create a master-detail or master-detail-detail scenario in which the user can drill down or navigate.

Do not use the flexible column layout if:

  • You want to build a workbench or tools layout. The flexible column layout is not meant to provide a main column with additional side columns on the left and/or right. If you want to display additional content to enrich the main content and to help users better perform their tasks, use the dynamic side content instead.
  • You want to create a dashboard with context-independent pages.
  • You want to open multiple instances of the same object type. Use the multi-instance handling floorplan instead.
  • You want to split a single object into multiple columns, or display only a small amount of information.
  • You want to embed the SAP Fiori launchpad or overview page into one of the columns.

Structure

As with all layouts, the flexible column layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

Depending on the current layout and display size, the flexible column layout consists of one, two, or three horizontally-aligned columns. Each column contains content that is not provided by the flexible column layout itself. The flexible column layout is not restricted to a specific floorplan, as long as the floorplan you use is responsive down to phone size. However, we recommend using the dynamic page.

Information
It is not possible to use the SAP Fiori launchpad or the overview page in one of the columns.

Possible Layouts

To give users a better overview, the flexible column layout offers different layouts with one, two, or three columns. Depending on the screen size, up to five different base layouts are available.

Information

Language Dependency

For simplicity, this article assumes that the last column (the lowest drilldown level in the hierachy) is the rightmost column (left-to-right languages).

For right-to-left languages, however, the last column is the leftmost column.

Flexible column layout - Structure example (25% + 50% + 25%)
Flexible column layout - Structure example (25% + 50% + 25%)

Size L and XL (Desktop)

There are five different layouts in sizes L and XL: a full screen layout, as well as two different 2-column and 3-column layouts.

Available layouts in sizes L and XL
Available layouts in sizes L and XL

Size M (Tablet)

There are three different layouts in size M: a full screen layout and two different 2-column layouts. There is no 3-column layout due to the limited width. However, you can still load 3 pages in size M. Instead of showing them all side-by-side, the user can switch between columns 1/2 and 2/3.

Available layouts in size M
Available layouts in size M

Size S (Phone)

Because of the limited width, there is no multi-column layout for Size S. Instead, the rightmost column is shown in full screen mode.

Available layout in size S
Available layout in size S

Components

The flexible column layout offers a few simple actions that allow users to adapt the current layout according to their needs.

Note: Some of the actions (illustrated by blue lines in the image below) recover the last state of the layout to which they refer. In other words, the result of the action depends on the previous state of the layout.

Layout Arrow

The layout arrows allow users to expand the width of a given column, thereby changing the current layout. However, this action cannot be used to expand a column to full screen mode. There is a separate action for expanding a column to full screen mode.

The layout arrow is located next to the divider and points in the direction in which a column can be expanded. If a column cannot be expanded any further, the action is hidden.

Information
The user cannot change the size of a column freely (for example, 15% + 85%).

Enter Full Screen Mode

With the Full Screen icon  , the user can switch the rightmost column to full screen mode. The action is located in the rightmost column, and is only offered if there is more than one column.

Exit Full Screen Mode

By selecting the Exit Full Screen icon  , the user can exit the full screen and switch back to the multi-column (side-by-side) view. The action is only available while in full screen mode.

Information
The actions are not available in size S, which only displays a single column.

Close

With the Close icon   , the user can close the last (rightmost) column. If the user selects this action in the second column while the third column is minimized, both columns are closed. Close is also available in full screen mode, and in the second/third column for size S.

Information

The Close and Enter Full Screen / Exit Full Screen actions:

  • Are only displayed in the third column (or in the second column if there is no third column, or if the third column is minimized).
  • Are displayed as the last actions in the layout action section (or in the global actions toolbar if there is no layout action section in the floorplan). The layout action section is displayed to the right of the global actions on columns ≥1280 px wide, and in a separate line above the global actions on columns <1280 px wide.
  • Never move into the overflow.
  • Are always shown side-by-side (Enter Full Screen / Exit Full Screen icon left, Close icon right).
    Exception: There is no Enter Full Screen action in size S.

Developer Hint
The actions for entering and exiting full screen mode and closing columns are not provided automatically by the flexible column layout control, and need to be implemented manually. However, you can use the semantic page, which supports these actions for freestyle applications (only available with the dynamic page).

Navigation

In addition to the actions specific to the flexible column layout, the user can also use the forward and backward navigation to navigate through the flexible column layout. Drilling in or navigating forward opens a new column, while Back closes a column or exits the full screen mode (depending on what the last action was).
Please note: Back does not restore layout changes (such as switching from 33% + 67% to 67% + 33%). It also doesn’t reopen columns that were closed previously using the Close button (  ).

Because the flexible column layout only supports a maximum of 3 columns, any follow-on pages are loaded in full screen mode. These pages do not contain Close or Enter Full Screen / Exit Full Screen actions.

By default, the width is initially 33% for the second column and 25% for the third column. You can also set the width of the second column to 67%, or the third to 50% if your use case requires it.

Developer Hint
To implement the navigation/routing, you can use the SemanticHelper class, which provides predefined behavior to simplify the implementation.

Responsiveness

The flexible column layout changes its behavior for sizes XL, L, M and S in real time whenever the user resizes the screen.

If no previous state has been saved, ensure that the default layout appears automatically. For example, if the flexible column layout was initially loaded in size S and the user then navigates to the second column and changes the browser window to size M, show the default 2-column layout for size M (67% + 33%).

Responsiveness of the flexible column layout
Responsiveness of the flexible column layout

Behavior and Interaction

Dialogs

Dialogs triggered in one of the columns are centered over the entire screen.

Do
Center dialogs triggered in a column
Center dialogs triggered in a column
Don't
Do not right-align dialogs triggered in a column
Do not right-align dialogs triggered in a column

Vertical Size / Scrolling

Each column inside the flexible column layout contains an independent floorplan with its own scrolling behavior. There is no “all-encompassing” scrollbar which scrolls all columns simultaneously. The height of each floorplan is defined by the screen size.

Do
Give each column its own scrollbar
Give each column its own scrollbar
Don't
There is no universal scrollbar for all columns
There is no universal scrollbar for all columns

Two Columns (Master-Detail Mode)

By default, the flexible column layout starts off with one column. The user opens new columns by navigating forward. Since the flexible column layout is the successor of the split-screen layout, you can also use just two columns if your use case requires it. Do not start your application with three columns. Too much information at the beginning can confuse users.

Note:

  • If you start with two columns, make sure that size S shows the first column. Otherwise, users see the second column first, which might be confusing. (Showing the second column is the normal responsive behavior of the flexible column layout, which always shows the last column in size S.)
  • Even if you start with two columns, offer the layout arrow and the Close action in the second column.
Examples: Starting with two columns (sizes L and XL)
Examples: Starting with two columns (sizes L and XL)

Titles / Breadcrumbs / Up and Down Arrows

If more than one column is visible, show the application title in the shell bar. If the user switches to full screen mode, show the page title. Also show the page title for size S, where only one column is visible.

If multiple columns are visible, hide the breadcrumbs and up/down arrows.

Application title in the shell bar
Application title in the shell bar
Page title in the shell bar
Page title in the shell bar

Bookmarks

Every layout inside the flexible column layout can be bookmarked. For example, if the user bookmarks a 3-column layout set to 25% + 50% + 25%, load this layout when the user opens the bookmark.

Minimized Third Column

When the user expands the first column in a 3-column layout, the third column is minimized. CloseEnter Full Screen, and layout arrow actions also appear on the right-hand border of the second column to allow the user to return to the original 3-column layout.

Close: The second and third (minimized) columns close. A dialog can appear to warn the user about any unsaved data in the third column.

Full screen: When the user clicks the Enter Full Screen icon, the second column switches to full screen mode. The third column remains open (but not visible), and closes as soon as the user selects another item in the second column, or uses the Close action in the second column. If the user selects the same item in the second column, it opens in the same state as before it was minimized.

Layout arrow: The arrow for changing the layout to 25% + 50% + 25% is only available in the 33% + 67% layout. This arrow is hidden if the user is changing the layout to 67% + 33%.

Example of a minimized third column (33% + 67%)
Example of a minimized third column (33% + 67%)

Using Close in Combination with Back Navigation

The back navigation must not restore a column that was previously closed with the Close icon  .

Example: The user closes the third column by clicking the Close icon   in the upper-right corner. If the user then navigates back (UI or browser), the second column should close.

Using 'Close' in combination with back navigation
Using 'Close' in combination with back navigation

3 Columns in Size M

To offer a desktop-like experience in size M, the flexible column layout displays either the first and second or the second and third column. The user can switch between these views by using the layout arrow on the left or right side of the flexible column layout. Note: This behavior is only intended for size M. Do not use it for sizes L or XL.

3-column interaction in size M
3-column interaction in size M

Letterboxing

Do not use letterboxing in combination with the flexible column layout, as it will reduce the size of the usable screen area.

Do
Proper use of usable screen area
Proper use of usable screen area
Don't
Improper use of usable screen area with letterboxing
Improper use of usable screen area with letterboxing

Full Screen Navigation

After switching a column to full screen mode, selecting the Back icon exits the full screen mode.

If the screen is in full screen mode, and the user navigates forward, also show the next column in full screen mode. If the user navigates backward, go back in full screen mode until the point where the user initially switched to full screen. If the user then clicks Back again, return to the multi-column mode.

Using full screen mode in combination with navigation
Using full screen mode in combination with navigation

Footer Toolbar

Each column of the flexible column layout can have its own footer toolbar. There is no overall footer toolbar that spans several columns.

Do
Give each column its own footer toolbar
Give each column its own footer toolbar
Don't
There is no overall footer toolbar spanning several columns
There is no overall footer toolbar spanning several columns

Overlapping Header

The flexible column layout can display multiple floorplans side-by-side. However, it is not designed for splitting a single floorplan into several columns. As a result, there is no overall header that spans several columns. If you need to show additional content within a floorplan, use the dynamic side content.

Do
Each column has its own header
Each column has its own header
Don't
There should be no overall header
There should be no overall header

Empty Details Column

Do not display an empty details column when using the flexible column layout. For example, if no items have been selected in the second column, do not show an empty third column.

Do
If no items are selected in the 2nd column, show only 2 columns
If no items are selected in the 2nd column, show only 2 columns
Don't
Do not show an empty 3rd column
Do not show an empty 3rd column

Usage With One or Several Initial Full Screen Pages

Some use cases require starting an application with one or more full screen pages. You can do this by using the first column of the flexible column layout in full screen mode. This allows you to show one or several initial full screen pages with different content. Because of technical constraints, you must always use the flexible column layout to show this initial content.

Using the flexible column layout with initial full screen pages
Using the flexible column layout with initial full screen pages

Content Padding Inside Columns

The flexible column layout doesn’t provide additional paddings around the content area. Since some controls have different internal paddings, please ensure that they are aligned correctly.

Developer Hint
If you are using the dynamic page inside the flexible column layout, you can use the class sapFDynamicPageAlignContent to overcome misalignment issues.

Content Interaction

Selecting a Different Item

If the user selects a different item in the master-detail or master-detail-detail scenario, the content of the details column changes to reflect the data of the newly selected item. If the item is selected in the first column, and the last column (column C) was open before the new item was selected, selecting the item closes the last column.

Selecting a different item
Selecting a different item

Deleting an Item

When an item is deleted, there are two options for handling the content of the details columns:

  • Select the next item and change the content in the details column.
    If the user deletes the last item, you can opt to either select the previous item or close the details column(s). If the user deletes all the objects, always close all columns, since there is no content to display.
  • Do not select an item and close the other columns.
Deleting and selecting the next item
Deleting and selecting the next item
Deleting and closing the other columns
Deleting and closing the other columns

Behavior on Filtering

Filtering in one of the columns does not affect the content in the other columns.

Once a filter is applied, the results are shown in the same column. The content in the remaining columns does not change, unless another item is selected.

Filtering does not affect the other columns
Filtering does not affect the other columns

Tab/Anchor Navigation

Tabs and anchors are used for navigation within an object or as a filter (for example, in object pages). They affect only the respective column and do not close or change the content in the other columns.

Tab/anchor navigation does not affect the other columns
Tab/anchor navigation does not affect the other columns

SAP Fiori Elements

The flexible column layout is available in SAP Fiori elements for scenarios that use draft handling. If you use draft handling, we strongly recommend using the SAP Fiori elements implementation, wherever possible. The implementation already includes the navigation and routing behavior, as well as the Close and Full Screen actions, for example. Starting the application with two columns is also supported by SAP Fiori elements.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page Layout

The dynamic page is a generic layout control designed to support various floorplans and use cases. The content of both the header and the page can differ from floorplan to floorplan.

The header of the dynamic page is collapsible, which helps users to focus on the actual page content, but still ensures that important header information and actions are readily available.

The dynamic page also includes an optional footer toolbar for closing or finalizing actions that impact the whole page.

All SAP Fiori floorplans use the dynamic page, or are visually aligned to look the same. For detailed guidance, see the corresponding floorplan articles.

Floorplans that use the dynamic page:

With SAPUI5 release 1.54, you can also combine the dynamic page with the following floorplans. This replaces the snapping header feature.


Dynamic Page vs. Semantic Page

The dynamic page itself is a skeleton structure that comes with empty content containers (page header, page content) and built-in responsive behavior.

This basic structure can be “filled” with content elements in three ways:

  • Automatically: If you are using an SAP Fiori element floorplan, the content of the dynamic page is provided out of the box.
  • Via the semantic page (recommended): If you are creating a floorplan from scratch, developers can use the semantic page (sap.f.semanticPage) to create a freestyle page. The semantic page is a separate control that comes with built-in logic for adding predefined content elements to the page, such as a title, global actions, and a footer toolbar. Using the semantic page significantly reduces the development effort for app teams, and ensures that the header and footer content is structured consistently.
    Note: In this case, the app developer uses only the semantic page control (which already embeds the dynamic page), and not the dynamic page control itself.
  • Manually: Technically, it’s possible to build the dynamic page from scratch. However, implementing the dynamic page manually is a significant development effort! Only consider this option in exceptional cases (for example, if you have special requirements for a freestyle app that cannot be implemented using the preconfigured semantic page control).

Usage

Use the dynamic page layout if:

  • You are building a freestyle application that uses the dynamic page header and footer toolbar features of SAP Fiori 2.0 (versions 1.40 and higher).

Do not use the dynamic page layout if:

  • You are planning to use SAP Fiori elements, such as the list reportanalytical list pageoverview page, or object page, which already incorporate the dynamic page layout.
  • You want to implement an initial page or object page floorplan. These floorplans already incorporate snapping header and footer toolbar features. The behavior is similar to the dynamic page, but the technical foundation is different.
  • You only need to display a small amount of information. In this case, use a dialog instead. If you cannot avoid using the dynamic page layout, use letterboxing to mitigate the issue.

Structure

Like all layouts, the dynamic page layout is below the shell bar of the SAP Fiori launchpad. The shell bar is always at the very top, and gives users access to the launchpad services, including the home page, search, settings, and help. The shell bar also provides the back navigation and the app title, including the navigation menu.

The dynamic page layout is responsive and optimized for use within a flexible column layout. Each column can contain its own dynamic page layout with a different floorplan, depending on the use case.

The dynamic page layout consists of the following areas:

  • The header title combined with the subtitle/summary, key information, and global actions (always visible)
  • The header content (expandable/collapsible area) (optional)
  • The header features to actively collapse/expand and pin/unpin the header
  • The content of the page, with a footer toolbar and finalizing actions (optional)

Depending on your use case, you can either use one of the predefined floorplans, or create your own layout.

Components

Together, the header title (mandatory) and the header content (optional) form the dynamic page header.

Header Title

The header title bar (sap.f.DynamicPageTitle) always contains one of the following elements:

Mandatory Elements

  • Title: The title is located on the left of the header title bar, and is always visible. The title can contain the following components:

Additional Elements (optional)

  • Expand/collapse header feature: Allows the user to expand and collapse the header content (see Behavior and Interaction).
  • Subtitle/summary
    Placement: Always below the title. The subtitle (sap.m.Text) is often used to summarize the most important information pertaining to the collapsed header content.  For instance, it can be used to display the “Filtered By” information when the header content area contains a filter bar (for example, in a list reportanalytical list page, or overview page).
  • Breadcrumb
    Placement: Above the title. Depending on the floorplan and use case, you can add breadcrumb navigation. The breadcrumb is located above the header title, and is primarily used to display the hierarchy of subpages within an object page. In the flexible column layout, the breadcrumb is only available in full screen mode and not in the multi-column layout.
  • Key information
    Placement: In the middle area, but left-aligned. Floorplans can also contain key information such as text, mini facets, and KPI tags. Currently, KPI tags are only used within the analytical list page floorplan.
  • Global actions
    Placement: Global actions for the entire floorplan appear on the right-hand side of the header title bar. Always offer the actions as buttons, visualized either as text or icons. For more information, see Header Toolbar.
    In the collapsed mode, the header title offers the same actions as in expanded mode and keeps them actionable. Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • Layout actions
    Placement: Depending on the screen size, the layout actions are placed either on the very right of the global actions toolbar, separated by a divider line, or above the global actions (see more in the Responsiveness section). Layout actions, such as the Close or Full Screen / Exit Full Screen icons, are mainly offered by the flexible column layout. The Close or Full Screen / Exit Full Screen icons should always stay on the very right. This ensures that the position of the actions remains stable, even if other layout actions (like Up and Down arrows) are added. They never move into the overflow. The dynamic page only offers the area for the layout actions. The navigation actions themselves are defined separately (for example, using the semantic page).
Dynamic page layout - Header title example
Dynamic page layout - Header title example

Header Content

Located below the header title, the header content (sap.f.DynamicPageHeader) is optional. You can place any components in the header content area, provided that they follow the guidelines for the respective floorplan.

When the dynamic page header collapses, the header content is hidden. You can also hide the header content if it is empty. In the latter case, the header title is not interactive.

Dynamic page layout - Header content example
Dynamic page layout - Header content example

Header Features

Users can control the visibility of header content using two icon buttons at bottom of the header content area:

Footer Toolbar

The footer toolbar (sap.m.Toolbar) is also an optional part of the dynamic page layout. You can use it to offer closing or finalizing actions.

Dynamic page layout - Footer toolbar
Dynamic page layout - Footer toolbar

Responsiveness

The dynamic page layout offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to adapt automatically to small, medium, and large screen sizes.

The title (sap.m.Title) and subtitle (sap.m.Text) on the left truncate in collapsed mode and wrap in expanded mode. This behavior comes from the respective controls for the title and subtitle, and not from the dynamic page itself.

Key information like KPIs (middle area, left aligned) stays as long as possible.

Global actions stay as long as possible. If there is no key information, the title and the global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds the available buttons to the overflow menu from right to left.

Layout actions: The dynamic page offers a specific area for layout actions, which reacts to the predefined breakpoint of 1280 px:

  • Less than 1280 px: Navigation actions are placed in a separate row above the global actions
  • 1280 px or more: Navigation actions are placed to the right of the global actions in the same line

This breakpoint is independent of whether it is used in the flexible column layout on a desktop device, or on a mobile device.

To save vertical space on smartphones, you can opt to display a smaller summary line instead of the expand/collapse header feature. Switching on this feature can help users focus on the actual content of the page.

Letterboxing means limiting the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability. Letterboxing can be used together with the dynamic page if the use case requires it. However, most business apps offer so much content that the page is typically shown across the entire screen, without letterboxing.

Dynamic page layout - With letterboxing on a desktop device
Dynamic page layout - With letterboxing on a desktop device

Behavior and Interaction

Dynamic Page Header

The header content collapses or expands on defined triggers (snap on scroll and snap on click) to show more of the actual page content.

Starting in expanded or collapsed mode

By default, the header content is initially expanded. For example, always expand the header content when starting the application if no query was fired (and the table is therefore empty).

In certain cases, depending on the way a floorplan is used, it can also make sense to deviate from the default and allow the header to appear in collapsed mode when initiating the app.

Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on click
Dynamic page layout - Snap on click
Dynamic page layout - Pin/unpin
Dynamic page layout - Pin/unpin

Snap on Scroll

Scrolling is the typical trigger for collapsing the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to collapsed mode, and stays fixed. When the user scrolls up the page, the header content is expanded again.

Snap on Click

In addition to the “snap on scroll” function, the user can also expand and collapse the header content by clicking anywhere on the header title bar where there are no active elements (such as links, active buttons, and so on).

On desktop devices, the cursor changes from an arrow to a hand to support the user’s interaction. If the header is expanded and user clicks on the title bar, the header content collapses, and vice versa.

Expand/Collapse Header Feature

The expand/collapse header feature is a small icon button directly below the header content that enables the user to expand or collapse the header content. When the pin is active, the expand/collapse header feature is still available and overrules the pin. The icon buttons for expanding and collapsing the header are an alternative to clicking in the header title area, which may not have much clickable space.

On smartphones, the header content scrolls away when the user scrolls up the page. If you have enabled the summary line, the header converts to a summary line when the arrow of the header reaches the header title. As a visual cue, an arrow icon  then appears on the very right of the screen.

Tapping the summary line expands the header. The rest of the page stays in the same position.

The expand/collapse header feature is not available if there is no header content.

Special Case: No Page Scrolling Possible

The following special case applies for pages containing desktop-centric tables, such as the analytical tablegrid table, or tree table.

Because desktop-centric tables use up all of the available screen space, there is no scroll function, and hence no “snap on scroll” functionality. In this special case, a click interaction via the expand/collapse header feature is required to expand or collapse the content area. The Pin/Unpin action is obsolete and is therefore not provided.

This exceptional case also applies to chart containers that use up all the available screen space in a similar way to desktop-centric tables.

Pinning the Header Content

Activating the pin feature keeps the header expanded while the user scrolls through the page content. This mode remains fixed until the user clicks or taps the pin icon again. This feature is optional and can be switched off if it is not useful for your application.

The expand/collapse header feature remains visible when the pin is activated. Clicking or tapping the Collapse Header icon overrules the pin and collapses the header.

The pin functionality is not available for floorplans without scrollbars (see exception above), or when there is no header container, such as in a copy and create scenario.

In the smartphone version, the pin action isn’t provided, as the pinned header would take up too much screen real estate.

Keyboard Interaction

For keyboard interaction, the dynamic page header expands automatically as soon as the content of the dynamic page header comes into focus via the keyboard, such as via tabbing or via group jumps (F6).

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Key(s) Behavior
[TAB] Move the focus to the dynamic page header – header title bar. The dynamic page header expands automatically. 

If the focus is inside the header content area, move the focus to the next UI element within the header.

If the focus is on the last UI element (expand/collapse header feature) within the header content area, leave the header. Collapse the header content. 

[SHIFT] + [TAB]  See TAB, in reverse order.
[F6] If the focus is before the header title bar, set the focus to the header title bar. Expand the header content. 

If the focus is within the header content, move the focus out of header and collapse the header content. 

[SHIFT] + [F6]   See F6, in reverse order.

Examples

The dynamic page layout is a generic control. The content of both the header and the page differs from floorplan to floorplan. Here are some examples showing the most frequently-used variant per floorplan. For detailed guidance, see the corresponding floorplan guidelines (analytical list pageoverview pagelist reportobject pageworklistwizard).

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page Layout – Semantic Page

The semantic page is recommended for freestyle applications. By predefining where elements such as titles, global actions, and finalizing actions are placed, the semantic page helps designers and developers to implement and comply with the SAP Fiori Design Guidelines more easily. Based on the dynamic page and possessing its functionalities, the semantic page also adds semantic meaning to specific elements on the page.

Usage

Use the semantic page if:

  • You are building a freestyle application.
  • You want to use a predefined layout to reduce development time.

Do not use the semantic page if:

Structure

The semantic page is based on the structure of the dynamic page layout. The semantic page consists of:

  • The header title with global actions (always visible).
  • The content of the page with a footer toolbar and finalizing actions (optional).

The control’s semantics determine whether content specified in the control will appear in the header toolbar or footer toolbar.

Semantic page structure
Semantic page structure

Header Title

The header title bar contains the following elements:

  • Title (mandatory): The title is located on the left-hand side of the header title bar (sap.m.Title) and is always visible.
  • Key information (optional): Key information is located in the middle area, and is left aligned. This can be text, mini facets, or KPI tags, for example.
  • Global actions toolbar (optional): The global actions toolbar for the entire floorplan is located on the right-hand side. Always use buttons for global actions, visualized either as text or icons. For more information, see Header Toolbar.
  • Overflow menu: Actions move into the overflow from right to left. Icons are shown in the overflow menu with a corresponding text.
  • Layout actions: These are actions like the Close or Full Screen / Exit Full Screen icons, which are mainly offered by the flexible column layout. Depending on the screen size, layout actions are placed either to the right of the global actions toolbar, separated by a divider line, or above the global actions. Layout actions never move into the overflow and are always last in the header toolbar.
Semantic page header title
Semantic page header title

Footer Toolbar

The footer toolbar is optional and contains the following components:

  • Message indicator (containing message popover) on the left-hand side
  • Draft indicator on the right-hand side, just before the finalizing actions
  • Finalizing actions on the right-hand side
Semantic page footer toolbar
Semantic page footer toolbar

Actions

Actions in the Header Toolbar

The following actions are available in the semantic page:

  • App-specific actions determined by the use case
  • Global actions
  • Layout actions – mainly in flexible column layout

In the semantic page, the order of the actions is predefined:

  1. Emphasized button: App-specific or semantic text button
  2. Text buttons: App-specific actions precede semantic (generic) actions
  3. Icon buttons: App-specific buttons precede semantic icons, such as Favorite, Flag and Share
  4. Layout actions with vertical separator: Close, Full Screen or Exit Full Screen

Order of Semantic Actions

Ensure that the semantic actions reflect the following order:

  • Text buttons
    • Edit
    • Delete
    • Copy
    • Add
  • Icon buttons
  • Layout actions
    • Full Screen    or Exit Full Screen   
    • Close  
Example for the order of actions in semantic header
Example for the order of actions in semantic header

Actions in the Footer Toolbar

In the semantic page, the order of the actions is predefined.

  • The leftmost button is emphasized or positive/negative. Only one button can be emphasized at a time. The default actions for these buttons are Save, Accept, and Reject. If your header toolbar contains an emphasized button (excluding the message handling button), try to avoid using emphasized buttons in the footer toolbar.
  • The transparent buttons appear next. They can include some of the actions below:
    • Post
    • Start Process
    • Send
    • Release
    • Create
    • Save
    • Submit
    • Cancel
    • Forward
    • Confirm

A transparent button can also include custom application-specific actions. These will appear on the right-hand side of the footer toolbar.

Examples of actions in the footer toolbar
Examples of actions in the footer toolbar

Responsiveness and Adaptiveness

The responsive behavior of the semantic page depends on the behavior of the content being displayed.

  • The title truncates in collapsed mode and wraps in expanded mode. This behavior comes from the title control (sap.m.Title).
  • Key information stays as long as possible.
  • Global actions have a predefined width depending on the available space. If there is no key information available, then the title and global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, adding buttons to the overflow menu from right to left.
  • Layout actions are shown to the right of the global actions if there is enough space, or above them on smaller screens.
Size M
Size M
Size S
Size S

Guidelines

Please see the Guidelines section in the toolbar overview and dynamic page layout article.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Flexible Column Layout (Layout + SAP Fiori Elements)

The flexible column layout is a layout control that displays multiple floorplans on a single page. This allows faster and more fluid navigation between multiple floorplans than the usual page-by-page navigation. The flexible column layout offers different layouts with up to three columns. Users can expand the column they want to focus on, switch between different layouts, and view the rightmost column in full screen mode.

Flexible column layout - Example with three columns
Flexible column layout - Example with three columns

The flexible column layout behaves responsively, which makes it suitable for both desktop and mobile devices. Depending on the available screen width, an optimized layout is loaded to ensure the best possible user experience on each device. The flexible column layout is a generic control. As a layout container, it does not provide any content itself.

The flexible column layout is already incorporated within SAP Fiori elements.

Usage

Use the flexible column layout if:

  • You want to create a master-detail or master-detail-detail scenario in which the user can drill down or navigate.

Do not use the flexible column layout if:

  • You want to build a workbench or tools layout. The flexible column layout is not meant to provide a main column with additional side columns on the left and/or right. If you want to display additional content to enrich the main content and to help users better perform their tasks, use the dynamic side content instead.
  • You want to create a dashboard with context-independent pages.
  • You want to open multiple instances of the same object type. Use the multi-instance handling floorplan instead.
  • You want to split a single object into multiple columns, or display only a small amount of information.
  • You want to embed the SAP Fiori launchpad or overview page into one of the columns.

Structure

As with all layouts, the flexible column layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

Depending on the current layout and display size, the flexible column layout consists of one, two, or three horizontally-aligned columns. Each column contains content that is not provided by the flexible column layout itself. The flexible column layout is not restricted to a specific floorplan, as long as the floorplan you use is responsive down to phone size. However, we recommend using the dynamic page.

Information
It is not possible to use the SAP Fiori launchpad or the overview page in one of the columns.

Possible Layouts

To give users a better overview, the flexible column layout offers different layouts with one, two, or three columns. Depending on the screen size, up to five different base layouts are available.

Information

Language Dependency

For simplicity, this article assumes that the last column (the lowest drilldown level in the hierachy) is the rightmost column (left-to-right languages).

For right-to-left languages, however, the last column is the leftmost column.

Flexible column layout - Structure example (25% + 50% + 25%)
Flexible column layout - Structure example (25% + 50% + 25%)

Size L and XL (Desktop)

There are five different layouts in sizes L and XL: a full screen layout, as well as two different 2-column and 3-column layouts.

Available layouts in sizes L and XL
Available layouts in sizes L and XL

Size M (Tablet)

There are three different layouts in size M: a full screen layout and two different 2-column layouts. There is no 3-column layout due to the limited width. However, you can still load 3 pages in size M. Instead of showing them all side-by-side, the user can switch between columns 1/2 and 2/3.

Available layouts in size M
Available layouts in size M

Size S (Phone)

Because of the limited width, there is no multi-column layout for Size S. Instead, the rightmost column is shown in full screen mode.

Available layout in size S
Available layout in size S

Components

The flexible column layout uses a few simple actions let users to adapt the current layout according to their needs.

Note: Some of the actions (illustrated by blue lines in the image below) recover the last state of the layout to which they refer. In other words, the result of the action depends on the previous state of the layout.

Layout Arrow

The layout arrows allow users to expand the width of a given column, thereby changing the current layout. However, this action cannot be used to expand a column to full screen mode. There is a separate action for expanding a column to full screen mode.

The layout arrow is located next to the divider and points in the direction in which a column can be expanded. If a column cannot be expanded any further, the action is hidden.

Information
The user cannot change the size of a column freely (for example, 15% + 85%).

Enter Full Screen Mode

With the Full Screen icon  , the user can switch the rightmost column to full screen mode. The action is located in the rightmost column, and is only offered if there is more than one column.

Exit Full Screen Mode

By selecting the Exit Full Screen icon  , the user can exit the full screen and switch back to the multi-column (side-by-side) view. The action is only available while in full screen mode.

Information
The actions are not available in size S, which only displays a single column.

Close

With the Close icon   , the user can close the last (rightmost) column. If the user selects this action in the second column while the third column is minimized, both columns are closed. Close is also available in full screen mode, and in the second/third column for size S.

Information

The Close and Enter Full Screen / Exit Full Screen actions:

  • Are only displayed in the third column (or in the second column if there is no third column, or if the third column is minimized).
  • Are displayed as the last actions in the layout action section (or in the global actions toolbar if there is no layout action section in the floorplan). The layout action section is displayed to the right of the global actions on columns ≥1280 px wide, and in a separate line above the global actions on columns <1280 px wide.
  • Never move into the overflow.
  • Are always shown side-by-side (Enter Full Screen / Exit Full Screen icon left, Close icon right).
    Exception: There is no Enter Full Screen action in size S.

Developer Hint
The actions for entering and exiting full screen mode and closing columns are not provided automatically by the flexible column layout control, and need to be implemented manually. However, you can use the semantic page, which supports these actions for freestyle applications (only available with the dynamic page).

Navigation

In addition to the actions specific to the flexible column layout, the user can also use the forward and backward navigation to navigate through the flexible column layout. Drilling in or navigating forward opens a new column, while Back closes a column or exits the full screen mode (depending on what the last action was).
Please note: Back does not restore layout changes (such as switching from 33% + 67% to 67% + 33%). It also doesn’t reopen columns that were closed previously using the Close button (  ).

Because the flexible column layout only supports a maximum of 3 columns, any follow-on pages are loaded in full screen mode. These pages do not contain Close or Enter Full Screen / Exit Full Screen actions.

By default, the width is initially 33% for the second column and 25% for the third column. You can also set the width of the second column to 67%, or the third to 50% if your use case requires it.

Developer Hint
To implement the navigation/routing, you can use the SemanticHelper class, which provides predefined behavior to simplify the implementation.

Responsiveness

The flexible column layout changes its behavior for sizes XL, L, M and S in real time whenever the user resizes the screen.

If no previous state has been saved, ensure that the default layout appears automatically. For example, if the flexible column layout was initially loaded in size S and the user then navigates to the second column and changes the browser window to size M, show the default 2-column layout for size M (67% + 33%).

Responsiveness of the flexible column layout
Responsiveness of the flexible column layout

Behavior and Interaction

Dialogs

Dialogs triggered in one of the columns are centered over the entire screen.

Do
Center dialogs triggered in a column
Center dialogs triggered in a column
Don't
Do not right-align dialogs triggered in a column
Do not right-align dialogs triggered in a column

Vertical Size / Scrolling

Each column inside the flexible column layout contains an independent floorplan with its own scrolling behavior. There is no “all-encompassing” scrollbar which scrolls all columns simultaneously. The height of each floorplan is defined by the screen size.

Do
Give each column its own scrollbar
Give each column its own scrollbar
Don't
There is no universal scrollbar for all columns
There is no universal scrollbar for all columns

Two Columns (Master-Detail Mode)

By default, the flexible column layout starts off with one column. The user opens new columns by navigating forward. Since the flexible column layout is the successor of the split-screen layout, you can also use just two columns if your use case requires it. Do not start your application with three columns. Too much information at the beginning can confuse users.

Note:

  • If you start with two columns, make sure that size S shows the first column. Otherwise, users see the second column first, which might be confusing. (Showing the second column is the normal responsive behavior of the flexible column layout, which always shows the last column in size S.)
  • Even if you start with two columns, offer the layout arrow and the Close action in the second column.
Examples: Starting with two columns (sizes L and XL)
Examples: Starting with two columns (sizes L and XL)

Titles / Breadcrumbs / Up and Down Arrows

If more than one column is visible, show the application title in the shell bar. If the user switches to full screen mode, show the page title. Also show the page title for size S, where only one column is visible.

If multiple columns are visible, hide the breadcrumbs and up/down arrows.

Application title in the shell bar
Application title in the shell bar
Page title in the shell bar
Page title in the shell bar

Bookmarks

Every layout inside the flexible column layout can be bookmarked. For example, if the user bookmarks a 3-column layout set to 25% + 50% + 25%, load this layout when the user opens the bookmark.

Minimized Third Column

When the user expands the first column in a 3-column layout, the third column is minimized. CloseEnter Full Screen, and layout arrow actions also appear on the right-hand border of the second column to allow the user to return to the original 3-column layout.

Close: The second and third (minimized) columns close. A dialog can appear to warn the user about any unsaved data in the third column.

Full screen: When the user clicks the Enter Full Screen icon, the second column switches to full screen mode. The third column remains open (but not visible), and closes as soon as the user selects another item in the second column, or uses the Close action in the second column. If the user selects the same item in the second column, it opens in the same state as before it was minimized.

Layout arrow: The arrow for changing the layout to 25% + 50% + 25% is only available in the 33% + 67% layout. This arrow is hidden if the user is changing the layout to 67% + 33%.

Example of a minimized third column (33% + 67%)
Example of a minimized third column (33% + 67%)

Using Close in Combination with Back Navigation

The back navigation must not restore a column that was previously closed with the Close icon  .

Example: The user closes the third column by clicking the Close icon   in the upper-right corner. If the user then navigates back (UI or browser), the second column should close.

Using 'Close' in combination with back navigation
Using 'Close' in combination with back navigation

3 Columns in Size M

To offer a desktop-like experience in size M, the flexible column layout displays either the first and second or the second and third column. The user can switch between these views by using the layout arrow on the left or right side of the flexible column layout. Note: This behavior is only intended for size M. Do not use it for sizes L or XL.

3-column interaction in size M
3-column interaction in size M

Letterboxing

Do not use letterboxing in combination with the flexible column layout, as it will reduce the size of the usable screen area.

Do
Proper use of usable screen area
Proper use of usable screen area
Don't
Improper use of usable screen area with letterboxing
Improper use of usable screen area with letterboxing

Full Screen Navigation

After switching a column to full screen mode, selecting the Back icon exits the full screen mode.

If the screen is in full screen mode, and the user navigates forward, also show the next column in full screen mode. If the user navigates backward, go back in full screen mode until the point where the user initially switched to full screen. If the user then clicks Back again, return to the multi-column mode.

Using full screen mode in combination with navigation
Using full screen mode in combination with navigation

Footer Toolbar

Each column of the flexible column layout can have its own footer toolbar. There is no overall footer toolbar that spans several columns.

Do
Give each column its own footer toolbar
Give each column its own footer toolbar
Don't
There is no overall footer toolbar spanning several columns
There is no overall footer toolbar spanning several columns

Overlapping Header

The flexible column layout can display multiple floorplans side-by-side. However, it is not designed for splitting a single floorplan into several columns. As a result, there is no overall header that spans several columns. If you need to show additional content within a floorplan, use the dynamic side content.

Do
Each column has its own header
Each column has its own header
Don't
There should be no overall header
There should be no overall header

Empty Details Column

Do not display an empty details column when using the flexible column layout. For example, if no items have been selected in the second column, do not show an empty third column.

Do
If no items are selected in the 2nd column, show only 2 columns
If no items are selected in the 2nd column, show only 2 columns
Don't
Do not show an empty 3rd column
Do not show an empty 3rd column

Usage With One or Several Initial Full Screen Pages

Some use cases require starting an application with one or more full screen pages. You can use the flexible column layout to display one or several initial full screen pages in the first column. Each page can have different content.

Using the flexible column layout with initial full screen pages
Using the flexible column layout with initial full screen pages

Content Padding Inside Columns

The flexible column layout doesn’t provide additional paddings around the content area. Since some controls have different internal paddings, please ensure that they are aligned correctly.

Developer Hint
If you are using the dynamic page inside the flexible column layout, you can use the class sapFDynamicPageAlignContent to overcome misalignment issues.

SAP Fiori Elements

The flexible column layout is available in SAP Fiori elements for scenarios that use draft handling. If you use draft handling, we strongly recommend using the SAP Fiori elements implementation, wherever possible. The implementation already includes the navigation and routing behavior, as well as the Close and Full Screen actions, for example. Starting the application with two columns is also supported by SAP Fiori elements.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page Layout

The dynamic page is a generic layout control designed to support various floorplans and use cases. The content of both the header and the page can differ from floorplan to floorplan.

The header of the dynamic page is collapsible, which helps users to focus on the actual page content, but still ensures that important header information and actions are readily available.

The dynamic page also includes an optional footer toolbar for closing or finalizing actions that impact the whole page.

All SAP Fiori floorplans use the dynamic page, or are visually aligned to look the same. For detailed guidance, see the corresponding floorplan articles.

Floorplans that use the dynamic page:

With SAPUI5 release 1.54, you can also combine the dynamic page with the following floorplans. This replaces the snapping header feature.


Dynamic Page vs. Semantic Page

The dynamic page itself is a skeleton structure that comes with empty content containers (page header, page content) and built-in responsive behavior.

This basic structure can be “filled” with content elements in three ways:

  • Automatically: If you are using an SAP Fiori element floorplan, the content of the dynamic page is provided out of the box.
  • Via the semantic page (recommended): If you are creating a floorplan from scratch, developers can use the semantic page (sap.f.semanticPage) to create a freestyle page. The semantic page is a separate control that comes with built-in logic for adding predefined content elements to the page, such as a title, global actions, and a footer toolbar. Using the semantic page significantly reduces the development effort for app teams, and ensures that the header and footer content is structured consistently.
    Note: In this case, the app developer uses only the semantic page control (which already embeds the dynamic page), and not the dynamic page control itself.
  • Manually: Technically, it’s possible to build the dynamic page from scratch. However, implementing the dynamic page manually is a significant development effort! Only consider this option in exceptional cases (for example, if you have special requirements for a freestyle app that cannot be implemented using the preconfigured semantic page control).

Usage

Use the dynamic page layout if:

  • You are building a freestyle application that uses the dynamic page header and footer toolbar features of SAP Fiori 2.0 (versions 1.40 and higher).

Do not use the dynamic page layout if:

  • You are planning to use SAP Fiori elements, such as the list reportanalytical list pageoverview page, or object page, which already incorporate the dynamic page layout.
  • You want to implement an initial page or object page floorplan. These floorplans already incorporate snapping header and footer toolbar features. The behavior is similar to the dynamic page, but the technical foundation is different.
  • You only need to display a small amount of information. In this case, use a dialog instead. If you cannot avoid using the dynamic page layout, use letterboxing to mitigate the issue.

Structure

Like all layouts, the dynamic page layout is below the shell bar of the SAP Fiori launchpad. The shell bar is always at the very top, and gives users access to the launchpad services, including the home page, search, settings, and help. The shell bar also provides the back navigation and the app title, including the navigation menu.

The dynamic page layout is responsive and optimized for use within a flexible column layout. Each column can contain its own dynamic page layout with a different floorplan, depending on the use case.

The dynamic page layout consists of the following areas:

  • The header title combined with the subtitle/summary, key information, and global actions (always visible)
  • The header content (expandable/collapsible area) (optional)
  • The header features to actively collapse/expand and pin/unpin the header
  • The content of the page, with a footer toolbar and finalizing actions (optional)

Depending on your use case, you can either use one of the predefined floorplans, or create your own layout.

Components

Together, the header title (mandatory) and the header content (optional) form the dynamic page header.

Header Title

The header title bar (sap.f.DynamicPageTitle) always contains one of the following elements:

Mandatory Elements

  • Title: The title is located on the left of the header title bar, and is always visible. The title can contain the following components:

Additional Elements (optional)

  • Expand/collapse header feature: Allows the user to expand and collapse the header content (see Behavior and Interaction).
  • Subtitle/summary
    Placement: Always below the title. The subtitle (sap.m.Text) is often used to summarize the most important information pertaining to the collapsed header content.  For instance, it can be used to display the “Filtered By” information when the header content area contains a filter bar (for example, in a list reportanalytical list page, or overview page).
  • Breadcrumb
    Placement: Above the title. Depending on the floorplan and use case, you can add breadcrumb navigation. The breadcrumb is located above the header title, and is primarily used to display the hierarchy of subpages within an object page. In the flexible column layout, the breadcrumb is only available in full screen mode and not in the multi-column layout.
  • Key information
    Placement: In the middle area, but left-aligned. Floorplans can also contain key information such as text, mini facets, and KPI tags. Currently, KPI tags are only used within the analytical list page floorplan.
  • Global actions
    Placement: Global actions for the entire floorplan appear on the right-hand side of the header title bar. Always offer the actions as buttons, visualized either as text or icons. For more information, see Header Toolbar.
    In the collapsed mode, the header title offers the same actions as in expanded mode and keeps them actionable. Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • Layout actions
    Placement: Depending on the screen size, the layout actions are placed either on the very right of the global actions toolbar, separated by a divider line, or above the global actions (see more in the Responsiveness section). Layout actions, such as the Close or Full Screen / Exit Full Screen icons, are mainly offered by the flexible column layout. The Close or Full Screen / Exit Full Screen icons should always stay on the very right. This ensures that the position of the actions remains stable, even if other layout actions (like Up and Down arrows) are added. They never move into the overflow. The dynamic page only offers the area for the layout actions. The navigation actions themselves are defined separately (for example, using the semantic page).
Dynamic page layout - Header title example
Dynamic page layout - Header title example

Header Content

Located below the header title, the header content (sap.f.DynamicPageHeader) is optional. You can place any components in the header content area, provided that they follow the guidelines for the respective floorplan.

When the dynamic page header collapses, the header content is hidden. You can also hide the header content if it is empty. In the latter case, the header title is not interactive.

Dynamic page layout - Header content example
Dynamic page layout - Header content example

Header Features

Users can control the visibility of header content using two icon buttons at bottom of the header content area:

Footer Toolbar

The footer toolbar (sap.m.Toolbar) is also an optional part of the dynamic page layout. You can use it to offer closing or finalizing actions.

Dynamic page layout - Footer toolbar
Dynamic page layout - Footer toolbar

Responsiveness

The dynamic page layout offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to adapt automatically to small, medium, and large screen sizes.

The title (sap.m.Title) and subtitle (sap.m.Text) on the left truncate in collapsed mode and wrap in expanded mode. This behavior comes from the respective controls for the title and subtitle, and not from the dynamic page itself.

Key information like KPIs (middle area, left aligned) stays as long as possible.

Global actions stay as long as possible. If there is no key information, the title and the global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds the available buttons to the overflow menu from right to left.

Layout actions: The dynamic page offers a specific area for layout actions, which reacts to the predefined breakpoint of 1280 px:

  • Less than 1280 px: Navigation actions are placed in a separate row above the global actions
  • 1280 px or more: Navigation actions are placed to the right of the global actions in the same line

This breakpoint is independent of whether it is used in the flexible column layout on a desktop device, or on a mobile device.

Letterboxing means limiting the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability. Letterboxing can be used together with the dynamic page if the use case requires it. However, most business apps offer so much content that the page is typically shown across the entire screen, without letterboxing.

Dynamic page layout - With letterboxing on a desktop device
Dynamic page layout - With letterboxing on a desktop device

Behavior and Interaction

Dynamic Page Header

The header content collapses or expands on defined triggers (snap on scroll and snap on click) to show more of the actual page content.

Starting in expanded or collapsed mode

By default, the header content is initially expanded. For example, always expand the header content when starting the application if no query was fired (and the table is therefore empty).

In certain cases, depending on the way a floorplan is used, it can also make sense to deviate from the default and allow the header to appear in collapsed mode when initiating the app.

Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on click
Dynamic page layout - Snap on click
Dynamic page layout - Pin/unpin
Dynamic page layout - Pin/unpin

Snap on Scroll

Scrolling is the typical trigger for collapsing the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to collapsed mode, and stays fixed. When the user scrolls up the page, the header content is expanded again.

Snap on Click

In addition to the “snap on scroll” function, the user can also expand and collapse the header content by clicking anywhere on the header title bar where there are no active elements (such as links, active buttons, and so on).

On desktop devices, the cursor changes from an arrow to a hand to support the user’s interaction. If the header is expanded and user clicks on the title bar, the header content collapses, and vice versa.

Expand/Collapse Header Feature

The expand/collapse header feature is a small icon button directly below the header content that enables the user to expand or collapse the header content. When the pin is active, the expand/collapse header feature is still available and overrules the pin. The icon buttons for expanding and collapsing the header are an alternative to clicking in the header title area, which may not have much clickable space.

The expand/collapse header feature is not available if there is no header content.

Special Case: No Page Scrolling Possible

The following special case applies for pages containing desktop-centric tables, such as the analytical tablegrid table, or tree table.

Because desktop-centric tables use up all of the available screen space, there is no scroll function, and hence no “snap on scroll” functionality. In this special case, a click interaction via the expand/collapse header feature is required to expand or collapse the content area. The Pin/Unpin action is obsolete and is therefore not provided.

This exceptional case also applies to chart containers that use up all the available screen space in a similar way to desktop-centric tables.

Pinning the Header Content

Activating the pin feature keeps the header expanded while the user scrolls through the page content. This mode remains fixed until the user clicks or taps the pin icon again. This feature is optional and can be switched off if it is not useful for your application.

The expand/collapse header feature remains visible when the pin is activated. Clicking or tapping the Collapse Header icon overrules the pin and collapses the header.

The pin functionality is not available for floorplans without scrollbars (see exception above), or when there is no header container, such as in a copy and create scenario.

In the smartphone version, the pin action isn’t provided, as the pinned header would take up too much screen real estate.

Keyboard Interaction

For keyboard interaction, the dynamic page header expands automatically as soon as the content of the dynamic page header comes into focus via the keyboard, such as via tabbing or via group jumps (F6).

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Key(s) Behavior
[TAB] Move the focus to the dynamic page header – header title bar. The dynamic page header expands automatically. 

If the focus is inside the header content area, move the focus to the next UI element within the header.

If the focus is on the last UI element (expand/collapse header feature) within the header content area, leave the header. Collapse the header content. 

[SHIFT] + [TAB]  See TAB, in reverse order.
[F6] If the focus is before the header title bar, set the focus to the header title bar. Expand the header content. 

If the focus is within the header content, move the focus out of header and collapse the header content. 

[SHIFT] + [F6]   See F6, in reverse order.

Examples

The dynamic page layout is a generic control. The content of both the header and the page differs from floorplan to floorplan. Here are some examples showing the most frequently-used variant per floorplan. For detailed guidance, see the corresponding floorplan guidelines (analytical list pageoverview pagelist reportobject pageworklistwizard).

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page (Layout + SAP Fiori Elements)

The dynamic page is a generic layout control designed to support various floorplans and use cases. The content of both the header and the page can differ from floorplan to floorplan.

The header of the dynamic page is collapsible, which helps users to focus on the actual page content, but still ensures that important header information and actions are readily available.

The dynamic page also includes an optional footer toolbar for closing or finalizing actions that impact the whole page.

All SAP Fiori floorplans use the dynamic page, or are visually aligned to look the same. For detailed guidance, see the corresponding floorplan articles.

Floorplans that use the dynamic page:

With SAPUI5 release 1.54, you can also combine the dynamic page with the following floorplans. This replaces the snapping header feature.


Dynamic Page vs. Semantic Page

The dynamic page itself is a skeleton structure that comes with empty content containers (page header, page content) and built-in responsive behavior.

This basic structure can be “filled” with content elements in three ways:

  • Automatically: If you are using an SAP Fiori element floorplan, the content of the dynamic page is provided out of the box.
  • Via the semantic page (recommended): If you are creating a floorplan from scratch, developers can use the semantic page (sap.f.semanticPage) to create a freestyle page. The semantic page is a separate control that comes with built-in logic for adding predefined content elements to the page, such as a title, global actions, and a footer toolbar. Using the semantic page significantly reduces the development effort for app teams, and ensures that the header and footer content is structured consistently.
    Note: In this case, the app developer uses only the semantic page control (which already embeds the dynamic page), and not the dynamic page control itself.
  • Manually: Technically, it’s possible to build the dynamic page from scratch. However, implementing the dynamic page manually is a significant development effort! Only consider this option in exceptional cases (for example, if you have special requirements for a freestyle app that cannot be implemented using the preconfigured semantic page control).

Usage

Use the dynamic page layout if:

  • You are building a freestyle application that uses the dynamic page header and footer toolbar features of SAP Fiori 2.0 (versions 1.40 and higher).

Do not use the dynamic page layout if:

  • You are planning to use SAP Fiori elements, such as the list reportanalytical list pageoverview page, or object page, which already incorporate the dynamic page layout.
  • You want to implement an initial page or object page floorplan. These floorplans already incorporate snapping header and footer toolbar features. The behavior is similar to the dynamic page, but the technical foundation is different.
  • You only need to display a small amount of information. In this case, use a dialog instead. If you cannot avoid using the dynamic page layout, use letterboxing to mitigate the issue.

Structure

Like all layouts, the dynamic page layout is below the shell bar of the SAP Fiori launchpad. The shell bar is always at the very top, and gives users access to the launchpad services, including the home page, search, settings, and help. The shell bar also provides the back navigation and the app title, including the navigation menu.

The dynamic page layout is responsive and optimized for use within a flexible column layout. Each column can contain its own dynamic page layout with a different floorplan, depending on the use case.

The dynamic page layout consists of the following areas:

  • The header title combined with the subtitle/summary, key information, and global actions (always visible)
  • The header content (expandable/collapsible area) (optional)
  • The header features to actively collapse/expand and pin/unpin the header
  • The content of the page, with a footer toolbar and finalizing actions (optional)

Depending on your use case, you can either use one of the predefined floorplans, or create your own layout.

Components

Together, the header title (mandatory) and the header content (optional) form the dynamic page header.

Header Title

The header title bar (sap.f.DynamicPageTitle) always contains one of the following elements:

Mandatory Elements

  • Title: The title is located on the left of the header title bar, and is always visible. The title can contain the following components:

Additional Elements (optional)

  • Subtitle/summary
    Placement: Always below the title. The subtitle (sap.m.Text) is often used to summarize the most important information pertaining to the collapsed header content.  For instance, it can be used to display the “Filtered By” information when the header content area contains a filter bar (for example, in a list reportanalytical list page, or overview page).
  • Breadcrumb
    Placement: Above the title. Depending on the floorplan and use case, you can add breadcrumb navigation. The breadcrumb is located above the header title, and is primarily used to display the hierarchy of subpages within an object page. In the flexible column layout, the breadcrumb is only available in full screen mode and not in the multi-column layout.
  • Key information
    Placement: In the middle area, but left-aligned. Floorplans can also contain key information such as text, mini facets, and KPI tags. Currently, KPI tags are only used within the analytical list page floorplan.
  • Global actions
    Placement: Global actions for the entire floorplan appear on the right-hand side of the header title bar. Always offer the actions as buttons, visualized either as text or icons. For more information, see Header Toolbar.
    In the collapsed mode, the header title offers the same actions as in expanded mode and keeps them actionable. Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • Layout actions
    Placement: Depending on the screen size, the layout actions are placed either on the very right of the global actions toolbar, separated by a divider line, or above the global actions (see more in the Responsiveness section). Layout actions, such as the Close or Full Screen / Exit Full Screen icons, are mainly offered by the flexible column layout. The Close or Full Screen / Exit Full Screen icons should always stay on the very right. This ensures that the position of the actions remains stable, even if other layout actions (like Up and Down arrows) are added. They never move into the overflow. The dynamic page only offers the area for the layout actions. The navigation actions themselves are defined separately (for example, using the semantic page).
Dynamic page layout - Header title example
Dynamic page layout - Header title example

Header Content

Located below the header title, the header content (sap.f.DynamicPageHeader) is optional. You can place any components in the header content area, provided that they follow the guidelines for the respective floorplan.

When the dynamic page header collapses, the header content is hidden. You can also hide the header content if it is empty. In the latter case, the header title is not interactive.

Dynamic page layout - Header content example
Dynamic page layout - Header content example

Header Features

Users can control the visibility of header content using two icon buttons at bottom of the header content area:

Footer Toolbar

The footer toolbar (sap.m.Toolbar) is also an optional part of the dynamic page layout. You can use it to offer closing or finalizing actions.

Dynamic page layout - Footer toolbar
Dynamic page layout - Footer toolbar

Responsiveness

The dynamic page layout offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to adapt automatically to small, medium, and large screen sizes.

The title (sap.m.Title) and subtitle (sap.m.Text) on the left truncate in collapsed mode and wrap in expanded mode. This behavior comes from the respective controls for the title and subtitle, and not from the dynamic page itself.

Key information like KPIs (middle area, left aligned) stays as long as possible.

Global actions stay as long as possible. If there is no key information, the title and the global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds the available buttons to the overflow menu from right to left.

Layout actions: The dynamic page offers a specific area for layout actions, which reacts to the predefined breakpoint of 1280 px:

  • Less than 1280 px: Navigation actions are placed in a separate row above the global actions
  • 1280 px or more: Navigation actions are placed to the right of the global actions in the same line

This breakpoint is independent of whether it is used in the flexible column layout on a desktop device, or on a mobile device.

Letterboxing means limiting the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability. Letterboxing can be used together with the dynamic page if the use case requires it. However, most business apps offer so much content that the page is typically shown across the entire screen, without letterboxing.

Dynamic page layout - With letterboxing on a desktop device
Dynamic page layout - With letterboxing on a desktop device

Behavior and Interaction

Dynamic Page Header

The header content collapses or expands on defined triggers (snap on scroll and snap on click) to show more of the actual page content.

Starting in expanded or collapsed mode

By default, the header content is initially expanded. For example, always expand the header content when starting the application if no query was fired (and the table is therefore empty).

In certain cases, depending on the way a floorplan is used, it can also make sense to deviate from the default and allow the header to appear in collapsed mode when initiating the app.

Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on click
Dynamic page layout - Snap on click
Dynamic page layout - Pin/unpin
Dynamic page layout - Pin/unpin

Snap on Scroll

Scrolling is the typical trigger for collapsing the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to collapsed mode, and stays fixed. When the user scrolls up the page, the header content is expanded again.

Snap on Click

In addition to the “snap on scroll” function, the user can also expand and collapse the header content by clicking anywhere on the header title bar where there are no active elements (such as links, active buttons, and so on).

On desktop devices, the cursor changes from an arrow to a hand to support the user’s interaction. If the header is expanded and user clicks on the title bar, the header content collapses, and vice versa.

Developer Hint

Collapsing the dynamic page header by accident

When using a popover in the header title (for example, variant management), the user might accidentally collapse the header by closing the popover. In order to avoid this situation, control the closing behavior as shown in the example below. This behavior must be implemented manually in freestyle applications.

Example: Popover – controlling closing behavior

Expand/Collapse Header Feature

The expand/collapse header feature is a small icon button directly below the header content that enables the user to expand or collapse the header content. When the pin is active, the expand/collapse header feature is still available and overrules the pin. The icon buttons for expanding and collapsing the header are an alternative to clicking in the header title area, which may not have much clickable space.

The expand/collapse header feature is not available if there is no header content.

Special Case: No Page Scrolling Possible

The following special case applies for pages containing desktop-centric tables, such as the analytical tablegrid table, or tree table:

Because desktop-centric tables use up all of the available screen space, there is no scroll function, and hence no “snap on scroll” functionality. In this special case, a click interaction via the visual indicator is required to expand or collapse the content area. The Pin/Unpin action is obsolete and is therefore not provided.

This exceptional case also applies to chart containers, which use up all the available screen space in a similar way to desktop-centric tables.

Pinning the Header Content

Activating the pin feature keeps the header expanded while the user scrolls through the page content. This mode remains fixed until the user clicks or taps the pin icon again. This feature is optional and can be switched off if it is not useful for your application.

The expand/collapse header feature remains visible when the pin is activated. Clicking or tapping the Collapse Header icon overrules the pin and collapses the header.

The pin functionality is not available for floorplans without scrollbars (see Exceptions above).

In the smartphone version, the pin action isn’t provided, as the pinned header would take up too much screen real estate.

Keyboard Interaction

For keyboard interaction, the dynamic page header expands automatically as soon as the content of the dynamic page header comes into focus via the keyboard, such as via tabbing or via group jumps (F6).

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Key(s) Behavior
[TAB] Move the focus to the dynamic page header – header title bar. The dynamic page header expands automatically. 

If the focus is inside the header content area, move the focus to the next UI element within the header.

If the focus is on the last UI element (visual indicator) within the header content area, leave the header. Collapse the header content. 

[SHIFT] + [TAB]  See TAB, in reverse order.
[F6] If the focus is before the header title bar, set the focus to the header title bar. Expand the header content. 

If the focus is within the header content, move the focus out of header and collapse the header content. 

[SHIFT] + [F6]   See F6, in reverse order.

Examples

The dynamic page layout is a generic control. The content of both the header and the page differs from floorplan to floorplan. Here are some examples showing the most frequently-used variant per floorplan. For detailed guidance, see the corresponding floorplan guidelines (analytical list pageoverview pagelist reportobject pageworklistwizard).

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Flexible Column Layout (Layout + SAP Fiori Elements)

The flexible column layout is a layout control that displays multiple floorplans on a single page. This allows faster and more fluid navigation between multiple floorplans than the usual page-by-page navigation. The flexible column layout offers different layouts with up to three columns. Users can expand the column they want to focus on, switch between different layouts, and view the rightmost column in full screen mode.

Flexible column layout - Example with three columns
Flexible column layout - Example with three columns

The flexible column layout behaves responsively, which makes it suitable for both desktop and mobile devices. Depending on the available screen width, an optimized layout is loaded to ensure the best possible user experience on each device. The flexible column layout is a generic control. As a layout container, it does not provide any content itself.

The flexible column layout is already incorporated within SAP Fiori elements.

Usage

Use the flexible column layout if:

  • You want to create a master-detail or master-detail-detail scenario in which the user can drill down or navigate.

Do not use the flexible column layout if:

  • You want to build a workbench or tools layout. The flexible column layout is not meant to provide a main column with additional side columns on the left and/or right. If you want to display additional content to enrich the main content and to help users better perform their tasks, use the dynamic side content instead.
  • You want to create a dashboard with context-independent pages.
  • You want to open multiple instances of the same object type. Use the multi-instance handling floorplan instead.
  • You want to split a single object into multiple columns, or display only a small amount of information.
  • You want to embed the SAP Fiori launchpad or overview page into one of the columns.

Structure

As with all layouts, the flexible column layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

Depending on the current layout and display size, the flexible column layout consists of one, two, or three horizontally-aligned columns. Each column contains content that is not provided by the flexible column layout itself. The flexible column layout is not restricted to a specific floorplan, as long as the floorplan you use is responsive down to phone size. However, we recommend using the dynamic page.

Information
It is not possible to use the SAP Fiori launchpad or the overview page in one of the columns.

Possible Layouts

To give users a better overview, the flexible column layout offers different layouts with one, two, or three columns. Depending on the screen size, up to five different base layouts are available.

Information

Language Dependency

For simplicity, this article assumes that the last column (the lowest drilldown level in the hierachy) is the rightmost column (left-to-right languages).

For right-to-left languages, however, the last column is the leftmost column.

Flexible column layout - Structure example (25% + 50% + 25%)
Flexible column layout - Structure example (25% + 50% + 25%)

Size L and XL (Desktop)

There are five different layouts in sizes L and XL: a full screen layout, as well as two different 2-column and 3-column layouts.

Available layouts in sizes L and XL
Available layouts in sizes L and XL

Size M (Tablet)

There are three different layouts in size M: a full screen layout and two different 2-column layouts. There is no 3-column layout due to the limited width. However, you can still load 3 pages in size M. Instead of showing them all side-by-side, the user can switch between columns 1/2 and 2/3.

Available layouts in size M
Available layouts in size M

Size S (Phone)

Because of the limited width, there is no multi-column layout for Size S. Instead, the rightmost column is shown in full screen mode.

Available layout in size S
Available layout in size S

Components

The flexible column layout uses a few simple actions let users to adapt the current layout according to their needs.

Note: Some of the actions (illustrated by blue lines in the image below) recover the last state of the layout to which they refer. In other words, the result of the action depends on the previous state of the layout.

Layout Arrow

The layout arrows allow users to expand the width of a given column, thereby changing the current layout. However, this action cannot be used to expand a column to full screen mode. There is a separate action for expanding a column to full screen mode.

The layout arrow is located next to the divider and points in the direction in which a column can be expanded. If a column cannot be expanded any further, the action is hidden.

Information
The user cannot change the size of a column freely (for example, 15% + 85%).

Enter Full Screen Mode

With the Full Screen icon  , the user can switch the rightmost column to full screen mode. The action is located in the rightmost column, and is only offered if there is more than one column.

Exit Full Screen Mode

By selecting the Exit Full Screen icon  , the user can exit the full screen and switch back to the multi-column (side-by-side) view. The action is only available while in full screen mode.

Information
The actions are not available in size S, which only displays a single column.

Close

With the Close icon   , the user can close the last (rightmost) column. If the user selects this action in the second column while the third column is minimized, both columns are closed. Close is also available in full screen mode, and in the second/third column for size S.

Information

The Close and Enter Full Screen / Exit Full Screen actions:

  • Are only displayed in the third column (or in the second column if there is no third column, or if the third column is minimized).
  • Are displayed as the last actions in the layout action section (or in the global actions toolbar if there is no layout action section in the floorplan). The layout action section is displayed to the right of the global actions on columns ≥1280 px wide, and in a separate line above the global actions on columns <1280 px wide.
  • Never move into the overflow.
  • Are always shown side-by-side (Enter Full Screen / Exit Full Screen icon left, Close icon right).
    Exception: There is no Enter Full Screen action in size S.

Developer Hint
The actions for entering and exiting full screen mode and closing columns are not provided automatically by the flexible column layout control, and need to be implemented manually. However, you can use the semantic page, which supports these actions for freestyle applications (only available with the dynamic page).

Navigation

In addition to the actions specific to the flexible column layout, the user can also use the forward and backward navigation to navigate through the flexible column layout. Drilling in or navigating forward opens a new column, while Back closes a column or exits the full screen mode (depending on what the last action was).
Please note: Back does not restore layout changes (such as switching from 33% + 67% to 67% + 33%). It also doesn’t reopen columns that were closed previously using the Close button (  ).

Because the flexible column layout only supports a maximum of 3 columns, any follow-on pages are loaded in full screen mode. These pages do not contain Close or Enter Full Screen / Exit Full Screen actions.

By default, the width is initially 33% for the second column and 25% for the third column. You can also set the width of the second column to 67%, or the third to 50% if your use case requires it.

Developer Hint
To implement the navigation/routing, you can use the SemanticHelper class, which provides predefined behavior to simplify the implementation.

Responsiveness

The flexible column layout changes its behavior for sizes XL, L, M and S in real time whenever the user resizes the screen.

If no previous state has been saved, ensure that the default layout appears automatically. For example, if the flexible column layout was initially loaded in size S and the user then navigates to the second column and changes the browser window to size M, show the default 2-column layout for size M (67% + 33%).

Responsiveness of the flexible column layout
Responsiveness of the flexible column layout

Behavior and Interaction

Dialogs

Dialogs triggered in one of the columns are centered over the entire screen.

Do
Center dialogs triggered in a column
Center dialogs triggered in a column
Don't
Do not right-align dialogs triggered in a column
Do not right-align dialogs triggered in a column

Vertical Size / Scrolling

Each column inside the flexible column layout contains an independent floorplan with its own scrolling behavior. There is no “all-encompassing” scrollbar which scrolls all columns simultaneously. The height of each floorplan is defined by the screen size.

Do
Give each column its own scrollbar
Give each column its own scrollbar
Don't
There is no universal scrollbar for all columns
There is no universal scrollbar for all columns

Two Columns (Master-Detail Mode)

By default, the flexible column layout starts off with one column. The user opens new columns by navigating forward. Since the flexible column layout is the successor of the split-screen layout, you can also use just two columns if your use case requires it. Do not start your application with three columns. Too much information at the beginning can confuse users.

Note:

  • If you start with two columns, make sure that size S shows the first column. Otherwise, users see the second column first, which might be confusing. (Showing the second column is the normal responsive behavior of the flexible column layout, which always shows the last column in size S.)
  • Even if you start with two columns, offer the layout arrow and the Close action in the second column.
Examples: Starting with two columns (sizes L and XL)
Examples: Starting with two columns (sizes L and XL)

Titles / Breadcrumbs / Up and Down Arrows

If more than one column is visible, show the application title in the shell bar. If the user switches to full screen mode, show the page title. Also show the page title for size S, where only one column is visible.

If multiple columns are visible, hide the breadcrumbs and up/down arrows.

Application title in the shell bar
Application title in the shell bar
Page title in the shell bar
Page title in the shell bar

Bookmarks

Every layout inside the flexible column layout can be bookmarked. For example, if the user bookmarks a 3-column layout set to 25% + 50% + 25%, load this layout when the user opens the bookmark.

Minimized Third Column

When the user expands the first column in a 3-column layout, the third column is minimized. CloseEnter Full Screen, and layout arrow actions also appear on the right-hand border of the second column to allow the user to return to the original 3-column layout.

Close: The second and third (minimized) columns close. A dialog can appear to warn the user about any unsaved data in the third column.

Full screen: When the user clicks the Enter Full Screen icon, the second column switches to full screen mode. The third column remains open (but not visible), and closes as soon as the user selects another item in the second column, or uses the Close action in the second column. If the user selects the same item in the second column, it opens in the same state as before it was minimized.

Layout arrow: The arrow for changing the layout to 25% + 50% + 25% is only available in the 33% + 67% layout. This arrow is hidden if the user is changing the layout to 67% + 33%.

Example of a minimized third column (33% + 67%)
Example of a minimized third column (33% + 67%)

Using Close in Combination with Back Navigation

The back navigation must not restore a column that was previously closed with the Close icon  .

Example: The user closes the third column by clicking the Close icon   in the upper-right corner. If the user then navigates back (UI or browser), the second column should close.

Using 'Close' in combination with back navigation
Using 'Close' in combination with back navigation

3 Columns in Size M

To offer a desktop-like experience in size M, the flexible column layout displays either the first and second or the second and third column. The user can switch between these views by using the layout arrow on the left or right side of the flexible column layout. Note: This behavior is only intended for size M. Do not use it for sizes L or XL.

3-column interaction in size M
3-column interaction in size M

Letterboxing

Do not use letterboxing in combination with the flexible column layout, as it will reduce the size of the usable screen area.

Do
Proper use of usable screen area
Proper use of usable screen area
Don't
Improper use of usable screen area with letterboxing
Improper use of usable screen area with letterboxing

Full Screen Navigation

After switching a column to full screen mode, selecting the Back icon exits the full screen mode.

If the screen is in full screen mode, and the user navigates forward, also show the next column in full screen mode. If the user navigates backward, go back in full screen mode until the point where the user initially switched to full screen. If the user then clicks Back again, return to the multi-column mode.

Using full screen mode in combination with navigation
Using full screen mode in combination with navigation

Footer Toolbar

Each column of the flexible column layout can have its own footer toolbar. There is no overall footer toolbar that spans several columns.

Do
Give each column its own footer toolbar
Give each column its own footer toolbar
Don't
There is no overall footer toolbar spanning several columns
There is no overall footer toolbar spanning several columns

Overlapping Header

The flexible column layout can display multiple floorplans side-by-side. However, it is not designed for splitting a single floorplan into several columns. As a result, there is no overall header that spans several columns. If you need to show additional content within a floorplan, use the dynamic side content.

Do
Each column has its own header
Each column has its own header
Don't
There should be no overall header
There should be no overall header

Empty Details Column

Do not display an empty details column when using the flexible column layout. For example, if no items have been selected in the second column, do not show an empty third column.

Do
If no items are selected in the 2nd column, show only 2 columns
If no items are selected in the 2nd column, show only 2 columns
Don't
Do not show an empty 3rd column
Do not show an empty 3rd column

Usage After One or Several Pages

Some use cases require starting an application with one or more full screen pages. You can therefore start the flexible column layout after several full screen pages.

Using the flexible column layout after several (full screen) pages
Using the flexible column layout after several (full screen) pages

Content Padding Inside Columns

The flexible column layout doesn’t provide additional paddings around the content area. Since some controls have different internal paddings, please ensure that they are aligned correctly.

Developer Hint
If you are using the dynamic page inside the flexible column layout, you can use the class sapFDynamicPageAlignContent to overcome misalignment issues.

SAP Fiori Elements

The flexible column layout is available in SAP Fiori elements for scenarios that use draft handling. If you use draft handling, we strongly recommend using the SAP Fiori elements implementation, wherever possible. The implementation already includes the navigation and routing behavior, as well as the Close and Full Screen actions, for example. Starting the application with two columns is also supported by SAP Fiori elements.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page Layout – Semantic Page

The semantic page is designed to support freestyle applications. By predefining where elements such as titles, global actions, and finalizing actions are placed, the semantic page helps designers and developers to implement and comply with the SAP Fiori Design Guidelines more easily. Based on the dynamic page and possessing its functionalities, the semantic page also adds semantic meaning to specific elements on the page.

Usage

Use the semantic page if:

  • You are building a freestyle application.
  • You want to use a predefined layout to reduce development time.

Do not use the semantic page if:

Structure

The semantic page is based on the structure of the dynamic page layout. The semantic page consists of:

  • The header title with global actions (always visible).
  • The content of the page with a footer toolbar and finalizing actions (optional).

The control’s semantics determine whether content specified in the control will appear in the header toolbar or footer toolbar.

Semantic page structure
Semantic page structure

Header Title

The header title bar contains the following elements:

  • Title (mandatory): The title is located on the left-hand side of the header title bar (sap.m.Title) and is always visible.
  • Key information (optional): Key information is located in the middle area, and is left aligned. This can be text, mini facets, or KPI tags, for example.
  • Global actions toolbar (optional): The global actions toolbar for the entire floorplan is located on the right-hand side. Always use buttons for global actions, visualized either as text or icons. For more information, see Header Toolbar.
  • Overflow menu: Actions move into the overflow from right to left. Icons are shown in the overflow menu with a corresponding text.
  • Layout actions: These are actions like the Close or Full Screen / Exit Full Screen icons, which are mainly offered by the flexible column layout. Depending on the screen size, layout actions are placed either to the right of the global actions toolbar, separated by a divider line, or above the global actions. Layout actions never move into the overflow and are always last in the header toolbar.
Semantic page header title
Semantic page header title

Footer Toolbar

The footer toolbar is optional and contains the following components:

  • Message indicator (containing message popover) on the left-hand side
  • Draft indicator on the right-hand side, just before the finalizing actions
  • Finalizing actions on the right-hand side
Semantic page footer toolbar
Semantic page footer toolbar

Actions

Actions in the Header Toolbar

The following actions are available in the semantic page:

  • App-specific actions determined by the use case
  • Global actions
  • Layout actions – mainly in flexible column layout

In the semantic page, the order of the actions is predefined:

  1. Emphasized button: App-specific or semantic text button
  2. Text buttons: App-specific actions precede semantic (generic) actions
  3. Icon buttons: App-specific buttons precede semantic icons, such as Favorite, Flag and Share
  4. Layout actions with vertical separator: Close, Full Screen or Exit Full Screen

Order of Semantic Actions

Ensure that the semantic actions reflect the following order:

  • Text buttons
    • Edit
    • Delete
    • Copy
    • Add
  • Icon buttons
  • Layout actions
    • Full Screen    or Exit Full Screen   
    • Close  
Example for the order of actions in semantic header
Example for the order of actions in semantic header

Actions in the Footer Toolbar

In the semantic page, the order of the actions is predefined.

  • The leftmost button is emphasized or positive/negative. Only one button can be emphasized at a time. The default actions for these buttons are Save, Accept, and Reject. If your header toolbar contains an emphasized button (excluding the message handling button), try to avoid using emphasized buttons in the footer toolbar.
  • The transparent buttons appear next. They can include some of the actions below:
    • Post
    • Start Process
    • Send
    • Release
    • Save
    • Submit
    • Cancel
    • Forward
    • Confirm

A transparent button can also include custom application-specific actions. These will appear on the right-hand side of the footer toolbar.

Examples of actions in the footer toolbar
Examples of actions in the footer toolbar

Responsiveness and Adaptiveness

The responsive behavior of the semantic page depends on the behavior of the content being displayed.

  • The title truncates in collapsed mode and wraps in expanded mode. This behavior comes from the title control (sap.m.Title).
  • Key information stays as long as possible.
  • Global actions have a predefined width depending on the available space. If there is no key information available, then the title and global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, adding buttons to the overflow menu from right to left.
  • Layout actions are shown to the right of the global actions if there is enough space, or above them on smaller screens.
Size M
Size M
Size S
Size S

Guidelines

Please see the Guidelines section in the toolbar overview and dynamic page layout article.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page Layout – Semantic Page

The semantic page is designed to support freestyle applications. By predefining where elements such as titles, global actions, and finalizing actions are placed, the semantic page helps designers and developers to implement and comply with the SAP Fiori Design Guidelines more easily. Based on the dynamic page and possessing its functionalities, the semantic page also adds semantic meaning to specific elements on the page.

Usage

Use the semantic page if:

  • You are building a freestyle application.
  • You want to use a predefined layout to reduce development time.

Do not use the semantic page if:

Structure

The semantic page is based on the structure of the dynamic page layout. The semantic page consists of:

  • The header title with global actions (always visible).
  • The content of the page with a footer toolbar and finalizing actions (optional).

The control’s semantics determine whether content specified in the control will appear in the header toolbar or footer toolbar.

Semantic page structure
Semantic page structure

Header Title

The header title bar contains the following elements:

  • Title (mandatory): The title is located on the left-hand side of the header title bar (sap.m.Title) and is always visible.
  • Key information (optional): Key information is located in the middle area, and is left aligned. This can be text, mini facets, or KPI tags, for example.
  • Global actions toolbar (optional): The global actions toolbar for the entire floorplan is located on the right-hand side. Always use buttons for global actions, visualized either as text or icons. For more information, see Header Toolbar.
  • Overflow menu: Actions move into the overflow from right to left. Icons are shown in the overflow menu with a corresponding text.
  • Layout actions: These are actions like the Close or Full Screen / Exit Full Screen icons, which are mainly offered by the flexible column layout. Depending on the screen size, layout actions are placed either to the right of the global actions toolbar, separated by a divider line, or above the global actions. Layout actions never move into the overflow and are always last in the header toolbar.
Semantic page header title
Semantic page header title

Footer Toolbar

The footer toolbar is optional and contains the following components:

  • Message indicator (containing message popover) on the left-hand side
  • Draft indicator on the right-hand side, just before the finalizing actions
  • Finalizing actions on the right-hand side
Semantic page footer toolbar
Semantic page footer toolbar

Actions

Actions in the Header Toolbar

The following actions are available in the semantic page:

  • App-specific actions determined by the use case
  • Global actions
  • Layout actions – mainly in flexible column layout

In the semantic page, the order of the actions is predefined:

  1. Emphasized button: App-specific or semantic text button
  2. Text buttons: App-specific actions precede semantic (generic) actions
  3. Icon buttons: App-specific buttons precede semantic icons, such as Favorite, Flag and Share
  4. Layout actions with vertical separator: Close, Full Screen or Exit Full Screen

Order of Semantic Actions

Ensure that the semantic actions reflect the following order:

  • Text buttons
    • Edit
    • Delete
    • Copy
    • Add
  • Icon buttons
  • Layout actions
    • Full Screen    or Exit Full Screen   
    • Close  
Example for the order of actions in semantic header
Example for the order of actions in semantic header

Actions in the Footer Toolbar

In the semantic page, the order of the actions is predefined.

  • The leftmost button is emphasized or positive/negative. Only one button can be emphasized at a time. The default actions for these buttons are Save, Accept, and Reject. If your header toolbar contains an emphasized button (excluding the message handling button), try to avoid using emphasized buttons in the footer toolbar.
  • The transparent buttons appear next. They can include some of the actions below:
    • Post
    • Start Process
    • Send
    • Release
    • Save
    • Submit
    • Cancel
    • Forward
    • Confirm

A transparent button can also include custom application-specific actions. These will appear on the right-hand side of the footer toolbar.

Examples of actions in the footer toolbar
Examples of actions in the footer toolbar

Responsiveness and Adaptiveness

The responsive behavior of the semantic page depends on the behavior of the content being displayed.

  • The title truncates in collapsed mode and wraps in expanded mode. This behavior comes from the title control (sap.m.Title).
  • Key information stays as long as possible.
  • Global actions have a predefined width depending on the available space. If there is no key information available, then the title and global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, adding buttons to the overflow menu from right to left.
  • Layout actions are shown to the right of the global actions if there is enough space, or above them on smaller screens.
Size M
Size M
Size S
Size S

Guidelines

Please see the Guidelines section in the toolbar overview and dynamic page layout article.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Flexible Column Layout (Layout + SAP Fiori Elements)

The flexible column layout is a layout control that displays multiple floorplans on a single page. This allows faster and more fluid navigation between multiple floorplans than the usual page-by-page navigation. The flexible column layout offers different layouts with up to three columns. Users can expand the column they want to focus on, switch between different layouts, and view the rightmost column in full screen mode.

Flexible column layout - Example with three columns
Flexible column layout - Example with three columns

The flexible column layout behaves responsively, which makes it suitable for both desktop and mobile devices. Depending on the available screen width, an optimized layout is loaded to ensure the best possible user experience on each device. The flexible column layout is a generic control. As a layout container, it does not provide any content itself.

The flexible column layout is already incorporated within SAP Fiori elements.

Usage

Use the flexible column layout if:

  • You want to create a master-detail or master-detail-detail scenario in which the user can drill down or navigate.

Do not use the flexible column layout if:

  • You want to build a workbench or tools layout. The flexible column layout is not meant to provide a main column with additional side columns on the left and/or right. If you want to display additional content to enrich the main content and to help users better perform their tasks, use the dynamic side content instead.
  • You want to create a dashboard with context-independent pages.
  • You want to open multiple instances of the same object type. Use the multi-instance handling floorplan instead.
  • You want to split a single object into multiple columns, or display only a small amount of information.
  • You want to embed the SAP Fiori launchpad or overview page into one of the columns.

Structure

As with all layouts, the flexible column layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

Depending on the current layout and display size, the flexible column layout consists of one, two, or three horizontally-aligned columns. Each column contains content that is not provided by the flexible column layout itself. The flexible column layout is not restricted to a specific floorplan, as long as the floorplan you use is responsive down to phone size. However, we recommend using the dynamic page.

Information
It is not possible to use the SAP Fiori launchpad or the overview page in one of the columns.

Possible Layouts

To give users a better overview, the flexible column layout offers different layouts with one, two, or three columns. Depending on the screen size, up to five different base layouts are available.

Information

Language Dependency

For simplicity, this article assumes that the last column (the lowest drilldown level in the hierachy) is the rightmost column (left-to-right languages).

For right-to-left languages, however, the last column is the leftmost column.

Flexible column layout - Structure example (25% + 50% + 25%)
Flexible column layout - Structure example (25% + 50% + 25%)

Size L and XL (Desktop)

There are five different layouts in sizes L and XL: a full screen layout, as well as two different 2-column and 3-column layouts.

Available layouts in sizes L and XL
Available layouts in sizes L and XL

Size M (Tablet)

There are three different layouts in size M: a full screen layout and two different 2-column layouts. There is no 3-column layout due to the limited width. However, you can still load 3 pages in size M. Instead of showing them all side-by-side, the user can switch between columns 1/2 and 2/3.

Available layouts in size M
Available layouts in size M

Size S (Phone)

Because of the limited width, there is no multi-column layout for Size S. Instead, the rightmost column is shown in full screen mode.

Available layout in size S
Available layout in size S

Components

The flexible column layout uses a few simple actions let users to adapt the current layout according to their needs.

Note: Some of the actions (illustrated by blue lines in the image below) recover the last state of the layout to which they refer. In other words, the result of the action depends on the previous state of the layout.

Layout Arrow

The layout arrows allow users to expand the width of a given column, thereby changing the current layout. However, this action cannot be used to expand a column to full screen mode. There is a separate action for expanding a column to full screen mode.

The layout arrow is located next to the divider and points in the direction in which a column can be expanded. If a column cannot be expanded any further, the action is hidden.

Information
The user cannot change the size of a column freely (for example, 15% + 85%).

Enter Full Screen Mode

With the Enter Full Screen icon  , the user can switch the rightmost column to full screen mode. The action is located in the rightmost column, and is only offered if there is more than one column.

Exit Full Screen Mode

By selecting the Exit Full Screen icon  , the user can exit the full screen and switch back to the multi-column (side-by-side) view. The action is only available while in full screen mode.

Information
The actions are not available in size S, which only displays a single column.

Close

With the Close icon   , the user can close the last (rightmost) column. If the user selects this action in the second column while the third column is minimized, both columns are closed. Close is also available in full screen mode, and in the second/third column for size S.

Information

The Close and Enter Full Screen / Exit Full Screen actions:

  • Are only displayed in the third column (or in the second column if there is no third column, or if the third column is minimized).
  • Are displayed as the last actions in the layout action section (or in the global actions toolbar if there is no layout action section in the floorplan). The layout action section is displayed to the right of the global actions on columns ≥1280 px wide, and in a separate line above the global actions on columns <1280 px wide.
  • Never move into the overflow.
  • Are always shown side-by-side (Enter Full Screen / Exit Full Screen icon left, Close icon right).
    Exception: There is no Enter Full Screen action in size S.

Developer Hint
The actions for entering and exiting full screen mode and closing columns are not provided automatically by the flexible column layout control, and need to be implemented manually. However, you can use the semantic page, which supports these actions for freestyle applications (only available with the dynamic page).

Navigation

In addition to the actions specific to the flexible column layout, the user can also use the forward and backward navigation to navigate through the flexible column layout. Drilling in or navigating forward opens a new column, while Back closes a column or exits the full screen mode (depending on what the last action was).
Please note: Back does not restore layout changes (such as switching from 33% + 67% to 67% + 33%).

Because the flexible column layout only supports a maximum of 3 columns, any follow-on pages are loaded in full screen mode. These pages do not contain Close or Enter Full Screen / Exit Full Screen actions.

By default, the width is initially 33% for the second column and 25% for the third column. You can also set the width of the second column to 67%, or the third to 50% if your use case requires it.

Developer Hint
To implement the navigation/routing, you can use the SemanticHelper class, which provides predefined behavior to simplify the implementation.

Responsiveness

The flexible column layout changes its behavior for sizes XL, L, M and S in real time whenever the user resizes the screen.

If no previous state has been saved, ensure that the default layout appears automatically. For example, if the flexible column layout was initially loaded in size S and the user then navigates to the second column and changes the browser window to size M, show the default 2-column layout for size M (67% + 33%).

Responsiveness of the flexible column layout
Responsiveness of the flexible column layout

Behavior and Interaction

Dialogs

Dialogs triggered in one of the columns are centered over the entire screen.

Do
Center dialogs triggered in a column
Center dialogs triggered in a column
Don't
Do not right-align dialogs triggered in a column
Do not right-align dialogs triggered in a column

Vertical Size / Scrolling

Each column inside the flexible column layout contains an independent floorplan with its own scrolling behavior. There is no “all-encompassing” scrollbar which scrolls all columns simultaneously. The height of each floorplan is defined by the screen size.

Do
Give each column its own scrollbar
Give each column its own scrollbar
Don't
There is no universal scrollbar for all columns
There is no universal scrollbar for all columns

Two Columns (Master-Detail Mode)

By default, the flexible column layout starts off with one column. The user opens new columns by navigating forward. Since the flexible column layout is the successor of the split-screen layout, you can also use just two columns if your use case requires it. Do not start your application with three columns. Too much information at the beginning can confuse users.

Note:

  • If you start with two columns, make sure that size S shows the first column. Otherwise, users see the second column first, which might be confusing. (Showing the second column is the normal responsive behavior of the flexible column layout, which always shows the last column in size S.)
  • Even if you start with two columns, offer the layout arrow and the Close action in the second column.
Examples: Starting with two columns (sizes L and XL)
Examples: Starting with two columns (sizes L and XL)

Titles / Breadcrumbs / Up and Down Arrows

If more than one column is visible, show the application title in the shell bar. If the user switches to full screen mode, show the page title. Also show the page title for size S, where only one column is visible.

If multiple columns are visible, hide the breadcrumbs and up/down arrows.

Application title in the shell bar
Application title in the shell bar
Page title in the shell bar
Page title in the shell bar

Bookmarks

Every layout inside the flexible column layout can be bookmarked. For example, if the user bookmarks a 3-column layout set to 25% + 50% + 25%, load this layout when the user opens the bookmark.

Minimized Third Column

When the user expands the first column in a 3-column layout, the third column is minimized. CloseEnter Full Screen, and layout arrow actions also appear on the right-hand border of the second column to allow the user to return to the original 3-column layout.

Close: The second and third (minimized) columns close. A dialog can appear to warn the user about any unsaved data in the third column.

Full screen: When the user clicks the Enter Full Screen icon, the second column switches to full screen mode. The third column remains open (but not visible), and closes as soon as the user selects another item in the second column, or uses the Close action in the second column. If the user selects the same item in the second column, it opens in the same state as before it was minimized.

Layout arrow: The arrow for changing the layout to 25% + 50% + 25% is only available in the 33% + 67% layout. This arrow is hidden if the user is changing the layout to 67% + 33%.

Example of a minimized third column (33% + 67%)
Example of a minimized third column (33% + 67%)

Using Close in Combination with Back Navigation

The back navigation must not restore a column that was previously closed with the Close icon  .

Example: The user closes the third column by clicking the Close icon   in the upper-right corner. If the user then navigates back (UI or browser), the second column should close.

Using 'Close' in combination with back navigation
Using 'Close' in combination with back navigation

3 Columns in Size M

To offer a desktop-like experience in size M, the flexible column layout displays either the first and second or the second and third column. The user can switch between these views by using the layout arrow on the left or right side of the flexible column layout. Note: This behavior is only intended for size M. Do not use it for sizes L or XL.

3-column interaction in size M
3-column interaction in size M

Letterboxing

Do not use letterboxing in combination with the flexible column layout, as it will reduce the size of the usable screen area.

Do
Proper use of usable screen area
Proper use of usable screen area
Don't
Improper use of usable screen area with letterboxing
Improper use of usable screen area with letterboxing

Full Screen Navigation

After switching a column to full screen mode, selecting the Back icon exits the full screen mode.

If the screen is in full screen mode, and the user navigates forward, also show the next column in full screen mode. If the user navigates backward, go back in full screen mode until the point where the user initially switched to full screen. If the user then clicks Back again, return to the multi-column mode.

Using full screen mode in combination with navigation
Using full screen mode in combination with navigation

Footer Toolbar

Each column of the flexible column layout can have its own footer toolbar. There is no overall footer toolbar that spans several columns.

Do
Give each column its own footer toolbar
Give each column its own footer toolbar
Don't
There is no overall footer toolbar spanning several columns
There is no overall footer toolbar spanning several columns

Overlapping Header

The flexible column layout can display multiple floorplans side-by-side. However, it is not designed for splitting a single floorplan into several columns. As a result, there is no overall header that spans several columns. If you need to show additional content within a floorplan, use the dynamic side content.

Do
Each column has its own header
Each column has its own header
Don't
There should be no overall header
There should be no overall header

Empty Details Column

Do not display an empty details column when using the flexible column layout. For example, if no items have been selected in the second column, do not show an empty third column.

Do
If no items are selected in the 2nd column, show only 2 columns
If no items are selected in the 2nd column, show only 2 columns
Don't
Do not show an empty 3rd column
Do not show an empty 3rd column

Usage After One or Several Pages

Some use cases require starting an application with one or more full screen pages. You can therefore start the flexible column layout after several full screen pages.

Using the flexible column layout after several (full screen) pages
Using the flexible column layout after several (full screen) pages

SAP Fiori Elements

The flexible column layout is available in SAP Fiori elements for scenarios that use draft handling. If you use draft handling, we strongly recommend using the SAP Fiori elements implementation, wherever possible. The implementation already includes the navigation and routing behavior, as well as the Close and Full Screen actions, for example. Starting the application with two columns is also supported by SAP Fiori elements.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Multi-Instance Layout

The multi-instance layout allows users to open multiple documents in a tabular view. After selecting items from a list, the user opens them in a tab container.

The user selects items from a list and clicks or taps on the
The user selects items from a list and clicks or taps on the "Show Items" button
The selected items are opened in the multi-instance handling
The selected items are opened in the multi-instance handling

Usage

Use multi-instance handling if you want to let users open and edit multiple items simultaneously (such as object pages or documents). Multi-instance handling also allows users to switch between items without having to move between multiple browser tabs.

Do not use multi-instance handling to open a single item.

Responsiveness

The multi-instance layout is controlled by the sap.m.TabContainer control. The tab container supports all three SAP Fiori responsive sizes: small, medium, and large.

Size S
Size S
Size M
Size M
Size L
Size L

Structure

The  multi-instance handling can be used in full screen together with dynamic page.

Schematic visualization of multi-instance handling
Schematic visualization of multi-instance handling

The display mode of the multi-instance layout contains:

  • Tab container
  • Content

The edit and create modes of the multi-instance layout contain:

  • Tab container
  • Content
  • Footer toolbar for actions and messaging

Behavior and Interaction

Tab Container

Multi-instance handling – Tab container/Desktop
Multi-instance handling – Tab container/Desktop

The tab container is the backbone of the multi-instance layout. Users can use the tabs to navigate between the opened items. The tab container contains the opened tabs, the overflow mechanism, and the plus (  ) button for adding new items.

Tabs

The tabs represent the opened items. One tab is always active, while the others are inactive. The user can switch between tabs by clicking or tapping them in the tab container.

Each tab contains:

  • A title
    The title is the same as the title of the opened item. If the title is longer than 25 characters, the text will be truncated.
  • A Close Tab button
    The Close Tab button closes the tab. In size L, the button is shown only on the active tab. The Close Tab buttons on inactive tabs are shown only when the user hovers over them. In size M, the buttons are always visible. In size S, the buttons are also always visible in the overflow overview.

Unsaved Changes in Tabs

If one or more opened items in the tab container have unsaved changes, the corresponding tabs show visual notifications. An asterisk (*) after the title of the relevant tab indicates that the item has unsaved changes.

If the user clicks or taps the Close Tab button for a tab that has unsaved changes, a warning message appears.

If the user tries to exit multi-instance handling (by using the Back button or by navigating to a different floorplan) and there are tabs with unsaved changes, a warning message appears.

Warning message when closing a tab with unsaved changes
Warning message when closing a tab with unsaved changes
Warning message when navigating out of multi-instance handling when tabs still have unsaved changes
Warning message when navigating out of multi-instance handling when tabs still have unsaved changes

Closing the Last Tab

When the last remaining tab is closed, direct the user back to the original list from which the items were selected.

Overflow

The tab container has an overflow mechanism in case there are too many tabs for them all to be displayed on the screen.

If tabs are hidden in the overflow, the user can click or tap the overflow button (left or right) to scroll the tabs horizontally and show the hidden tabs.

An overflow overview button provides a list of all the opened tabs in a hierarchical dropdown menu, including those that are hidden in the overflow.

Close Tab buttons are also shown in the overflow overview dropdown list. In size L, the Close Tab buttons are shown only when the user hovers over them. In sizes M and S, the Close Tab buttons are always visible.

Button for Adding New Items

The tab container can have a button for adding new items, which appears as an icon () and is located on the far right of the tab container. When the user clicks or taps this button, a new empty item is created and a new tab is opened.

Only use the plus button if the application allows users to create new items or objects, such as a new sales order.

Do not use the plus button to create tabs without content.

Button for adding new items
Button for adding new items

Content Area

Since multi-instance handling shows instances of objects, use the the following floorplan in the content area:

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page (Layout + SAP Fiori Elements)

The dynamic page is a generic layout control designed to support various floorplans and use cases. The content of both the header and the page can differ from floorplan to floorplan.

The header of the dynamic page is collapsible, which helps users to focus on the actual page content, but still ensures that important header information and actions are readily available.

The dynamic page also includes an optional footer toolbar for closing or finalizing actions that impact the whole page.

All SAP Fiori floorplans use the dynamic page, or are visually aligned to look the same. For detailed guidance, see the corresponding floorplan articles.

Floorplans that use the dynamic page:

With SAPUI5 release 1.54, you can also combine the dynamic page with the following floorplans. This replaces the snapping header feature.


Dynamic Page vs. Semantic Page

The dynamic page itself is a skeleton structure that comes with empty content containers (page header, page content) and built-in responsive behavior.

This basic structure can be “filled” with content elements in three ways:

  • Automatically: If you are using an SAP Fiori element floorplan, the content of the dynamic page is provided out of the box.
  • Via the semantic page (recommended): If you are creating a floorplan from scratch, developers can use the semantic page (sap.f.semanticPage) to create a freestyle page. The semantic page is a separate control that comes with built-in logic for adding predefined content elements to the page, such as a title, global actions, and a footer toolbar. Using the semantic page significantly reduces the development effort for app teams, and ensures that the header and footer content is structured consistently.
    Note: In this case, the app developer uses only the semantic page control (which already embeds the dynamic page), and not the dynamic page control itself.
  • Manually: Technically, it’s possible to build the dynamic page from scratch. However, implementing the dynamic page manually is a significant development effort! Only consider this option in exceptional cases (for example, if you have special requirements for a freestyle app that cannot be implemented using the preconfigured semantic page control).

Usage

Use the dynamic page layout if:

  • You are building a freestyle application that uses the dynamic page header and footer toolbar features of SAP Fiori 2.0 (versions 1.40 and higher).

Do not use the dynamic page layout if:

  • You are planning to use SAP Fiori elements, such as the list reportanalytical list pageoverview page, or object page, which already incorporate the dynamic page layout.
  • You want to implement an initial page or object page floorplan. These floorplans already incorporate snapping header and footer toolbar features. The behavior is similar to the dynamic page, but the technical foundation is different.
  • You only need to display a small amount of information. In this case, use a dialog instead. If you cannot avoid using the dynamic page layout, use letterboxing to mitigate the issue.

Structure

Like all layouts, the dynamic page layout is below the shell bar of the SAP Fiori launchpad. The shell bar is always at the very top, and gives users access to the launchpad services, including the home page, search, settings, and help. The shell bar also provides the back navigation and the app title, including the navigation menu.

The dynamic page layout is responsive and optimized for use within a flexible column layout. Each column can contain its own dynamic page layout with a different floorplan, depending on the use case.

The dynamic page layout consists of three main areas:

  • The header title combined with the subtitle/summary, key information, and global actions (always visible)
  • The header content (expandable/collapsible area) (optional)
  • The content of the page, with a footer toolbar and finalizing actions (optional)

Depending on your use case, you can either use one of the predefined floorplans, or create your own layout.

Components

Together, the header title (mandatory) and the header content (optional) form the dynamic page header.

Header Title

The header title bar (sap.f.DynamicPageTitle) always contains one of the following elements:

Mandatory Elements

  • Title: The title is located on the left of the header title bar, and is always visible. The title can contain the following components:

Additional Elements (optional)

  • Subtitle/summary
    Placement: Always below the title. The subtitle (sap.m.Text) is often used to summarize the most important information pertaining to the collapsed header content.  For instance, it can be used to display the “Filtered By” information when the header content area contains a filter bar (for example, in a list reportanalytical list page, or overview page).
  • Breadcrumb
    Placement: Above the title. Depending on the floorplan and use case, you can add breadcrumb navigation. The breadcrumb is located above the header title, and is primarily used to display the hierarchy of subpages within an object page. In the flexible column layout, the breadcrumb is only available in full screen mode and not in the multi-column layout.
  • Key information
    Placement: In the middle area, but left-aligned. Floorplans can also contain key information such as text, mini facets, and KPI tags. Currently, KPI tags are only used within the analytical list page floorplan.
  • Global actions
    Placement: Global actions for the entire floorplan appear on the right-hand side of the header title bar. Always offer the actions as buttons, visualized either as text or icons. For more information, see Header Toolbar.
    In the collapsed mode, the header title offers the same actions as in expanded mode and keeps them actionable. Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • Layout actions
    Placement: Depending on the screen size, the layout actions are placed either on the very right of the global actions toolbar, separated by a divider line, or above the global actions (see more in the Responsiveness section). Layout actions, such as the Close or Full Screen / Exit Full Screen icons, are mainly offered by the flexible column layout. The Close or Full Screen / Exit Full Screen icons should always stay on the very right. This ensures that the position of the actions remains stable, even if other layout actions (like Up and Down arrows) are added. They never move into the overflow. The dynamic page only offers the area for the layout actions. The navigation actions themselves are defined separately (for example, using the semantic page).
Dynamic page layout - Header title example
Dynamic page layout - Header title example

Header Content

Located below the header title, the header content (sap.f.DynamicPageHeader) is optional. You can place any components in the header content area, provided that they follow the guidelines for the respective floorplan.

When the dynamic page header collapses, the header content is hidden. You can also hide the header content if it is empty. In the latter case, the header title is not interactive.

The header content area includes an optional Pin/Unpin toggle action. This feature allows the user to keep the header title and all elements in the header content expanded, even when scrolling and clicking (see Behavior and Interaction).

Dynamic page layout - Header content example
Dynamic page layout - Header content example

Footer Toolbar

The footer toolbar (sap.m.Toolbar) is also an optional part of the dynamic page layout. You can use it to offer closing or finalizing actions.

Dynamic page layout - Footer toolbar
Dynamic page layout - Footer toolbar

Responsiveness

The dynamic page layout offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to adapt automatically to small, medium, and large screen sizes.

The title (sap.m.Title) and subtitle (sap.m.Text) on the left truncate in collapsed mode and wrap in expanded mode. This behavior comes from the respective controls for the title and subtitle, and not from the dynamic page itself.

Key information like KPIs (middle area, left aligned) stays as long as possible.

Global actions stay as long as possible. If there is no key information, the title and the global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds the available buttons to the overflow menu from right to left.

Layout actions: The dynamic page offers a specific area for layout actions, which reacts to the predefined breakpoint of 1280 px:

  • Less than 1280 px: Navigation actions are placed in a separate row above the global actions
  • 1280 px or more: Navigation actions are placed to the right of the global actions in the same line

This breakpoint is independent of whether it is used in the flexible column layout on a desktop device, or on a mobile device.

Letterboxing means limiting the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability. Letterboxing can be used together with the dynamic page if the use case requires it. However, most business apps offer so much content that the page is typically shown across the entire screen, without letterboxing.

Dynamic page layout - With letterboxing on a desktop device
Dynamic page layout - With letterboxing on a desktop device

Behavior and Interaction

Dynamic Page Header

The header content collapses or expands on defined triggers (snap on scroll and snap on click) to show more of the actual page content.

Starting in expanded or collapsed mode

By default, the header content is initially expanded. For example, always expand the header content when starting the application if no query was fired (and the table is therefore empty).

In certain cases, depending on the way a floorplan is used, it can also make sense to deviate from the default and allow the header to appear in collapsed mode when initiating the app.

Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on click
Dynamic page layout - Snap on click
Dynamic page layout - Pin/unpin
Dynamic page layout - Pin/unpin

Snap on Scroll

Scrolling is the typical trigger for collapsing the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to collapsed mode, and stays fixed. When the user scrolls up the page, the header content is expanded again.

Snap on Click

In addition to the “snap on scroll” function, the user can also expand and collapse the header content by clicking anywhere on the header title bar where there are no active elements (such as links, active buttons, and so on).

On desktop devices, the cursor changes from an arrow to a hand to support the user’s interaction. If the header is expanded and user clicks on the title bar, the header content collapses, and vice versa.

Developer Hint

Collapsing the dynamic page header by accident

When using a popover in the header title (for example, variant management), the user might accidentally collapse the header by closing the popover. In order to avoid this situation, control the closing behavior as shown in the example below. This behavior must be implemented manually in freestyle applications.

Example: Popover – controlling closing behavior

Visual Indicator

Since there is generally not much clickable space in the header title for expanding and collapsing the header, there is another way to do so. The visual indicator is a small icon button directly below the header content that enables the user to expand or collapse the header content.

The visual indicator is not available:

  • When the header content is pinned
  • When no header content is available

Special Case: No Page Scrolling Possible

The following special case applies for pages containing desktop-centric tables, such as the analytical tablegrid table, or tree table:

Because desktop-centric tables use up all of the available screen space, there is no scroll function, and hence no “snap on scroll” functionality. In this special case, a click interaction via the visual indicator is required to expand or collapse the content area. The Pin/Unpin action is obsolete and is therefore not provided.

This exceptional case also applies to chart containers, which use up all the available screen space in a similar way to desktop-centric tables.

Pinning the Header Content

The header content also includes a Pin/Unpin icon (toggle button) on the right-hand side ( ). Clicking the pin icon disables the snapping functionality of the header content, and the visual indicator is hidden. This lets the user keep the expanded mode of the header title and all elements in the header content even when scrolling and clicking. This mode remains fixed until the user clicks the pin icon again. This feature is optional and can be switched off if it is not useful for your application.

The pin functionality is not available for floorplans without scrollbars (see Exceptions above).

In the smartphone version, the pin action isn’t provided, as it would take up too much screen real estate.

Keyboard Interaction

For keyboard interaction, the dynamic page header expands automatically as soon as the content of the dynamic page header comes into focus via the keyboard, such as via tabbing or via group jumps (F6).

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Key(s) Behavior
[TAB] Move the focus to the dynamic page header – header title bar. The dynamic page header expands automatically. 

If the focus is inside the header content area, move the focus to the next UI element within the header.

If the focus is on the last UI element (visual indicator) within the header content area, leave the header. Collapse the header content. 

[SHIFT] + [TAB]  See TAB, in reverse order.
[F6] If the focus is before the header title bar, set the focus to the header title bar. Expand the header content. 

If the focus is within the header content, move the focus out of header and collapse the header content. 

[SHIFT] + [F6]   See F6, in reverse order.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page (Layout + SAP Fiori Elements)

The dynamic page is a generic layout control designed to support various floorplans and use cases. The content of both the header and the page can differ from floorplan to floorplan.

The header of the dynamic page is collapsible, which helps users to focus on the actual page content, but still ensures that important header information and actions are readily available.

The dynamic page also includes an optional footer toolbar for closing or finalizing actions that impact the whole page.

All SAP Fiori floorplans use the dynamic page, or are visually aligned to look the same. For detailed guidance, see the corresponding floorplan articles.

Floorplans that use the dynamic page:

Floorplans that are visually aligned with the dynamic page:


Dynamic Page vs. Semantic Page

The dynamic page itself is a skeleton structure that comes with empty content containers (page header, page content) and built-in responsive behavior.

This basic structure can be “filled” with content elements in three ways:

  • Automatically: If you are using an SAP Fiori element floorplan, the content of the dynamic page is provided out of the box.
  • Via the semantic page (recommended): If you are creating a floorplan from scratch, developers can use the semantic page (sap.f.semanticPage) to create a freestyle page. The semantic page is a separate control that comes with built-in logic for adding predefined content elements to the page, such as a title, global actions, and a footer toolbar. Using the semantic page significantly reduces the development effort for app teams, and ensures that the header and footer content is structured consistently.
    Note: In this case, the app developer uses only the semantic page control (which already embeds the dynamic page), and not the dynamic page control itself.
  • Manually: Technically, it’s possible to build the dynamic page from scratch. However, implementing the dynamic page manually is a significant development effort! Only consider this option in exceptional cases (for example, if you have special requirements for a freestyle app that cannot be implemented using the preconfigured semantic page control).

Usage

Use the dynamic page layout if:

  • You are building a freestyle application that uses the dynamic page header and footer toolbar features of SAP Fiori 2.0 (versions 1.40 and higher).

Do not use the dynamic page layout if:

  • You are planning to use SAP Fiori elements, such as the list reportanalytical list pageoverview page, or object page, which already incorporate the dynamic page layout.
  • You want to implement an initial page or object page floorplan. These floorplans already incorporate snapping header and footer toolbar features. The behavior is similar to the dynamic page, but the technical foundation is different.
  • You only need to display a small amount of information. In this case, use a dialog instead. If you cannot avoid using the dynamic page layout, use letterboxing to mitigate the issue.

Structure

Like all layouts, the dynamic page layout is below the shell bar of the SAP Fiori launchpad. The shell bar is always at the very top, and gives users access to the launchpad services, including the home page, search, settings, and help. The shell bar also provides the back navigation and the app title, including the navigation menu.

The dynamic page layout is responsive and optimized for use within a flexible column layout. Each column can contain its own dynamic page layout with a different floorplan, depending on the use case.

The dynamic page layout consists of three main areas:

  • The header title combined with the subtitle/summary, key information, and global actions (always visible)
  • The header content (expandable/collapsible area) (optional)
  • The content of the page, with a footer toolbar and finalizing actions (optional)

Depending on your use case, you can either use one of the predefined floorplans, or create your own layout.

Components

Together, the header title (mandatory) and the header content (optional) form the dynamic page header.

Header Title

The header title bar (sap.f.DynamicPageTitle) always contains one of the following elements:

Mandatory Elements

  • Title: The title is located on the left of the header title bar, and is always visible. The title can contain the following components:

Additional Elements (optional)

  • Subtitle/summary
    Placement: Always below the title. The subtitle (sap.m.Text) is often used to summarize the most important information pertaining to the collapsed header content.  For instance, it can be used to display the “Filtered By” information when the header content area contains a filter bar (for example, in a list reportanalytical list page, or overview page).
  • Breadcrumb
    Placement: Above the title. Depending on the floorplan and use case, you can add breadcrumb navigation. The breadcrumb is located above the header title, and is primarily used to display the hierarchy of subpages within an object page. In the flexible column layout, the breadcrumb is only available in full screen mode and not in the multi-column layout.
  • Key information
    Placement: In the middle area, but left-aligned. Floorplans can also contain key information such as text, mini facets, and KPI tags. Currently, KPI tags are only used within the analytical list page floorplan.
  • Global actions
    Placement: Global actions for the entire floorplan appear on the right-hand side of the header title bar. Always offer the actions as buttons, visualized either as text or icons. For more information, see Header Toolbar.
    In the collapsed mode, the header title offers the same actions as in expanded mode and keeps them actionable. Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • Layout actions
    Placement: Depending on the screen size, the layout actions are placed either on the very right of the global actions toolbar, separated by a divider line, or above the global actions (see more in the Responsiveness section). Layout actions, such as the Close or Full Screen / Exit Full Screen icons, are mainly offered by the flexible column layout. The Close or Full Screen / Exit Full Screen icons should always stay on the very right. This ensures that the position of the actions remains stable, even if other layout actions (like Up and Down arrows) are added. They never move into the overflow. The dynamic page only offers the area for the layout actions. The navigation actions themselves are defined separately (for example, using the semantic page).
Dynamic page layout - Header title example
Dynamic page layout - Header title example

Header Content

Located below the header title, the header content (sap.f.DynamicPageHeader) is optional. You can place any components in the header content area, provided that they follow the guidelines for the respective floorplan.

When the dynamic page header collapses, the header content is hidden. You can also hide the header content if it is empty. In the latter case, the header title is not interactive.

The header content area includes an optional Pin/Unpin toggle action. This feature allows the user to keep the header title and all elements in the header content expanded, even when scrolling and clicking (see Behavior and Interaction).

Dynamic page layout - Header content example
Dynamic page layout - Header content example

Footer Toolbar

The footer toolbar (sap.m.Toolbar) is also an optional part of the dynamic page layout. You can use it to offer closing or finalizing actions.

Dynamic page layout - Footer toolbar
Dynamic page layout - Footer toolbar

Responsiveness

The dynamic page layout offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to adapt automatically to small, medium, and large screen sizes.

The title (sap.m.Title) and subtitle (sap.m.Text) on the left truncate in collapsed mode and wrap in expanded mode. This behavior comes from the respective controls for the title and subtitle, and not from the dynamic page itself.

Key information like KPIs (middle area, left aligned) stays as long as possible.

Global actions have a predefined width, depending on the available screen size. If there is no key information, the title and the global actions automatically get more space. The toolbar follows the standard toolbar overflow guidelines, and adds the available buttons to the overflow menu from right to left.

Layout actions: The dynamic page offers a specific area for layout actions, which reacts to the predefined breakpoint of 1280 px:

  • Less than 1280 px: Navigation actions are placed in a separate row above the global actions
  • 1280 px or more: Navigation actions are placed to the right of the global actions in the same line

This breakpoint is independent of whether it is used in the flexible column layout on a desktop device, or on a mobile device.

Letterboxing means limiting the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability. Letterboxing can be used together with the dynamic page if the use case requires it. However, most business apps offer so much content that the page is typically shown across the entire screen, without letterboxing.

Dynamic page layout - With letterboxing on a desktop device
Dynamic page layout - With letterboxing on a desktop device

Behavior and Interaction

Dynamic Page Header

The header content collapses or expands on defined triggers (snap on scroll and snap on click) to show more of the actual page content.

Starting in expanded or collapsed mode

By default, the header content is initially expanded. For example, always expand the header content when starting the application if no query was fired (and the table is therefore empty).

In certain cases, depending on the way a floorplan is used, it can also make sense to deviate from the default and allow the header to appear in collapsed mode when initiating the app.

Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on click
Dynamic page layout - Snap on click
Dynamic page layout - Pin/unpin
Dynamic page layout - Pin/unpin

Snap on Scroll

Scrolling is the typical trigger for collapsing the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to collapsed mode, and stays fixed. When the user scrolls up the page, the header content is expanded again.

Snap on Click

In addition to the “snap on scroll” function, the user can also expand and collapse the header content by clicking anywhere on the header title bar where there are no active elements (such as links, active buttons, and so on).

On desktop devices, the cursor changes from an arrow to a hand to support the user’s interaction. If the header is expanded and user clicks on the title bar, the header content collapses, and vice versa.

Developer Hint

Collapsing the dynamic page header by accident

When using a popover in the header title (for example, variant management), the user might accidentally collapse the header by closing the popover. In order to avoid this situation, control the closing behavior as shown in the example below. This behavior must be implemented manually in freestyle applications.

Example: Popover – controlling closing behavior

Visual Indicator

Since there is generally not much clickable space in the header title for expanding and collapsing the header, there is another way to do so. The visual indicator is a small icon button directly below the header content that enables the user to expand or collapse the header content.

The visual indicator is not available:

  • When the header content is pinned
  • When no header content is available

Special Case: No Page Scrolling Possible

The following special case applies for pages containing desktop-centric tables, such as the analytical tablegrid table, or tree table:

Because desktop-centric tables use up all of the available screen space, there is no scroll function, and hence no “snap on scroll” functionality. In this special case, a click interaction via the visual indicator is required to expand or collapse the content area. The Pin/Unpin action is obsolete and is therefore not provided.

This exceptional case also applies to chart containers, which use up all the available screen space in a similar way to desktop-centric tables.

Pinning the Header Content

The header content also includes a Pin/Unpin icon (toggle button) on the right-hand side ( ). Clicking the pin icon disables the snapping functionality of the header content, and the visual indicator is hidden. This lets the user keep the expanded mode of the header title and all elements in the header content even when scrolling and clicking. This mode remains fixed until the user clicks the pin icon again. This feature is optional and can be switched off if it is not useful for your application.

The pin functionality is not available for floorplans without scrollbars (see Exceptions above).

In the smartphone version, the pin action isn’t provided, as it would take up too much screen real estate.

Keyboard Interaction

For keyboard interaction, the dynamic page header expands automatically as soon as the content of the dynamic page header comes into focus via the keyboard, such as via tabbing or via group jumps (F6).

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Key(s) Behavior
[TAB] Move the focus to the dynamic page header – header title bar. The dynamic page header expands automatically. 

If the focus is inside the header content area, move the focus to the next UI element within the header.

If the focus is on the last UI element (visual indicator) within the header content area, leave the header. Collapse the header content. 

[SHIFT] + [TAB]  See TAB, in reverse order.
[F6] If the focus is before the header title bar, set the focus to the header title bar. Expand the header content. 

If the focus is within the header content, move the focus out of header and collapse the header content. 

[SHIFT] + [F6]   See F6, in reverse order.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Flexible Column Layout (Layout + SAP Fiori Elements)

The flexible column layout is a layout control that displays multiple floorplans on a single page. This allows faster and more fluid navigation between multiple floorplans than the usual page-by-page navigation. The flexible column layout offers different layouts with up to three columns. Users can expand the column they want to focus on, switch between different layouts, and view the rightmost column in full screen mode.

Flexible column layout - Example with three columns
Flexible column layout - Example with three columns

The flexible column layout behaves responsively, which makes it suitable for both desktop and mobile devices. Depending on the available screen width, an optimized layout is loaded to ensure the best possible user experience on each device. The flexible column layout is a generic control. As a layout container, it does not provide any content itself.

The flexible column layout is already incorporated within SAP Fiori elements.

Usage

Use the flexible column layout if:

  • You want to create a master-detail or master-detail-detail scenario in which the user can drill down or navigate.

Do not use the flexible column layout if:

  • You want to build a workbench or tools layout. The flexible column layout is not meant to provide a main column with additional side columns on the left and/or right. If you want to display additional content to enrich the main content and to help users better perform their tasks, use the dynamic side content instead.
  • You want to create a dashboard with context-independent pages.
  • You want to open multiple instances of the same object type. Use the multi-instance handling floorplan instead.
  • You want to split a single object into multiple columns, or display only a small amount of information.
  • You want to embed the SAP Fiori launchpad or overview page into one of the columns.

Structure

As with all layouts, the flexible column layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

Depending on the current layout and display size, the flexible column layout consists of one, two, or three horizontally-aligned columns. Each column contains content that is not provided by the flexible column layout itself. The flexible column layout is not restricted to a specific floorplan, as long as the floorplan you use is responsive down to phone size. However, we recommend using the dynamic page.

Information
It is not possible to use the SAP Fiori launchpad or the overview page in one of the columns.

Possible Layouts

To give users a better overview, the flexible column layout offers different layouts with one, two, or three columns. Depending on the screen size, up to five different base layouts are available.

Information

Language Dependency

For simplicity, this article assumes that the last column (the lowest drilldown level in the hierachy) is the rightmost column (left-to-right languages).

For right-to-left languages, however, the last column is the leftmost column.

Flexible column layout - Structure example (25% + 50% + 25%)
Flexible column layout - Structure example (25% + 50% + 25%)

Size L and XL (Desktop)

There are five different layouts in sizes L and XL: a full screen layout, as well as two different 2-column and 3-column layouts.

Available layouts in sizes L and XL
Available layouts in sizes L and XL

Size M (Tablet)

There are three different layouts in size M: a full screen layout and two different 2-column layouts. There is no 3-column layout due to the limited width. However, you can still load 3 pages in size M. Instead of showing them all side-by-side, the user can switch between columns 1/2 and 2/3.

Available layouts in size M
Available layouts in size M

Size S (Phone)

Because of the limited width, there is no multi-column layout for Size S. Instead, the rightmost column is shown in full screen mode.

Available layout in size S
Available layout in size S

Components

The flexible column layout uses a few simple actions let users to adapt the current layout according to their needs.

Note: Some of the actions (illustrated by blue lines in the image below) recover the last state of the layout to which they refer. In other words, the result of the action depends on the previous state of the layout.

Layout Arrow

The layout arrows allow users to expand the width of a given column, thereby changing the current layout. However, this action cannot be used to expand a column to full screen mode. There is a separate action for expanding a column to full screen mode.

The layout arrow is located next to the divider and points in the direction in which a column can be expanded. If a column cannot be expanded any further, the action is hidden.

Information
The user cannot change the size of a column freely (for example, 15% + 85%).

Enter Full Screen Mode

With the Enter Full Screen icon  , the user can switch the rightmost column to full screen mode. The action is located in the rightmost column, and is only offered if there is more than one column.

Exit Full Screen Mode

By selecting the Exit Full Screen icon  , the user can exit the full screen and switch back to the multi-column (side-by-side) view. The action is only available while in full screen mode.

Information
The actions are not available in size S, which only displays a single column.

Close

With the Close icon   , the user can close the last (rightmost) column. If the user selects this action in the second column while the third column is minimized, both columns are closed. Close is also available in full screen mode, and in the second/third column for size S.

Information

The Close and Enter Full Screen / Exit Full Screen actions:

  • Are only displayed in the third column (or in the second column if there is no third column, or if the third column is minimized).
  • Are displayed as the last actions in the layout action section (or in the global actions toolbar if there is no layout action section in the floorplan). The layout action section is displayed to the right of the global actions on columns ≥1280 px wide, and in a separate line above the global actions on columns <1280 px wide.
  • Never move into the overflow.
  • Are always shown side-by-side (Enter Full Screen / Exit Full Screen icon left, Close icon right).
    Exception: There is no Enter Full Screen action in size S.

Developer Hint
The actions for entering and exiting full screen mode and closing columns are not provided automatically by the flexible column layout control, and need to be implemented manually. However, you can use the semantic page, which supports these actions for freestyle applications (only available with the dynamic page).

Due to the technical restrictions of the overflow toolbar, it’s currently not possible to display these actions behind the overflow action ( ). This also applies to the object page, which does not use the overflow toolbar.

Navigation

In addition to the actions specific to the flexible column layout, the user can also use the forward and backward navigation to navigate through the flexible column layout. Drilling in or navigating forward opens a new column, while Back closes a column or exits the full screen mode (depending on what the last action was).
Please note: Back does not restore layout changes (such as switching from 33% + 67% to 67% + 33%).

Because the flexible column layout only supports a maximum of 3 columns, any follow-on pages are loaded in full screen mode. These pages do not contain Close or Enter Full Screen / Exit Full Screen actions.

By default, the width is initially 33% for the second column and 25% for the third column. You can also set the width of the second column to 67%, or the third to 50% if your use case requires it.

Developer Hint
To implement the navigation/routing, you can use the SemanticHelper class, which provides predefined behavior to simplify the implementation.

Responsiveness

The flexible column layout changes its behavior for sizes XL, L, M and S in real time whenever the user resizes the screen.

If no previous state has been saved, ensure that the default layout appears automatically. For example, if the flexible column layout was initially loaded in size S and the user then navigates to the second column and changes the browser window to size M, show the default 2-column layout for size M (67% + 33%).

Responsiveness of the flexible column layout
Responsiveness of the flexible column layout

Behavior and Interaction

Dialogs

Dialogs triggered in one of the columns are centered over the entire screen.

Do
Center dialogs triggered in a column
Center dialogs triggered in a column
Don't
Do not right-align dialogs triggered in a column
Do not right-align dialogs triggered in a column

Vertical Size / Scrolling

Each column inside the flexible column layout contains an independent floorplan with its own scrolling behavior. There is no “all-encompassing” scrollbar which scrolls all columns simultaneously. The height of each floorplan is defined by the screen size.

Do
Give each column its own scrollbar
Give each column its own scrollbar
Don't
There is no universal scrollbar for all columns
There is no universal scrollbar for all columns

Two Columns (Master-Detail Mode)

By default, the flexible column layout starts off with one column, and the user opens new columns by navigating forward. Since the flexible column layout is the successor of the split-screen layout, you can also use just two columns if your use case requires it. Do not start your application with three columns. Too much information at the beginning can confuse users.

Note:

  • When starting with two columns, make sure that you show the first column on size S when the app opens. Otherwise, users see the the second column first, which might be confusing.
  • Even if you start with two columns, offer the layout arrow and the Close action in the second column.
  • Only start with two columns if the flexible column layout is used when the application opens (do not show full screen pages before using the flexible column layout).
Examples: Starting with two columns (sizes L and XL)
Examples: Starting with two columns (sizes L and XL)

Titles / Breadcrumbs / Up and Down Arrows

If more than one column is visible, show the application title in the shell bar. If the user switches to full screen mode, show the page title. Also show the page title for size S, where only one column is visible.

If multiple columns are visible, hide the breadcrumbs and up/down arrows.

Application title in the shell bar
Application title in the shell bar
Page title in the shell bar
Page title in the shell bar

Bookmarks

Every layout inside the flexible column layout can be bookmarked. For example, if the user bookmarks a 3-column layout set to 25% + 50% + 25%, load this layout when the user opens the bookmark.

Minimized Third Column

When the user expands the first column in a 3-column layout, the third column is minimized. CloseEnter Full Screen, and layout arrow actions also appear on the right-hand border of the second column to allow the user to return to the original 3-column layout.

Close: The second and third (minimized) columns close. A dialog can appear to warn the user about any unsaved data in the third column.

Full screen: When the user clicks the Enter Full Screen icon, the second column switches to full screen mode. The third column remains open (but not visible), and closes as soon as the user selects another item in the second column, or uses the Close action in the second column. If the user selects the same item in the second column, it opens in the same state as before it was minimized.

Layout arrow: The arrow for changing the layout to 25% + 50% + 25% is only available in the 33% + 67% layout. This arrow is hidden if the user is changing the layout to 67% + 33%.

Example of a minimized third column (33% + 67%)
Example of a minimized third column (33% + 67%)

Using Close in Combination with Back Navigation

The back navigation must not restore a column that was previously closed with the Close icon  .

Example: The user closes the third column by clicking the Close icon   in the upper-right corner. If the user then navigates back (UI or browser), the second column should close.

Using 'Close' in combination with back navigation
Using 'Close' in combination with back navigation

3 Columns in Size M

To offer a desktop-like experience in size M, the flexible column layout displays either the first and second or the second and third column. The user can switch between these views by using the layout arrow on the left or right side of the flexible column layout. Note: This behavior is only intended for size M. Do not use it for sizes L or XL.

3-column interaction in size M
3-column interaction in size M

Letterboxing

Do not use letterboxing in combination with the flexible column layout, as it will reduce the size of the usable screen area.

Do
Proper use of usable screen area
Proper use of usable screen area
Don't
Improper use of usable screen area with letterboxing
Improper use of usable screen area with letterboxing

Full Screen Navigation

After switching a column to full screen mode, selecting the Back icon exits the full screen mode.

If the screen is in full screen mode, and the user navigates forward, also show the next column in full screen mode. If the user navigates backward, go back in full screen mode until the point where the user initially switched to full screen. If the user then clicks Back again, return to the multi-column mode.

Using full screen mode in combination with navigation
Using full screen mode in combination with navigation

Footer Toolbar

Each column of the flexible column layout can have its own footer toolbar. There is no overall footer toolbar that spans several columns.

Do
Give each column its own footer toolbar
Give each column its own footer toolbar
Don't
There is no overall footer toolbar spanning several columns
There is no overall footer toolbar spanning several columns

Overlapping Header

The flexible column layout can display multiple floorplans side-by-side. However, it is not designed for splitting a single floorplan into several columns. As a result, there is no overall header that spans several columns. If you need to show additional content within a floorplan, use the dynamic side content.

Do
Each column has its own header
Each column has its own header
Don't
There should be no overall header
There should be no overall header

Empty Details Column

Do not display an empty details column when using the flexible column layout. For example, if no items have been selected in the second column, do not show an empty third column.

Do
If no items are selected in the 2nd column, show only 2 columns
If no items are selected in the 2nd column, show only 2 columns
Don't
Do not show an empty 3rd column
Do not show an empty 3rd column

Usage After One or Several Pages

Some use cases require starting an application with one or more full screen pages. You can therefore start the flexible column layout after several full screen pages.

Using the flexible column layout after several (full screen) pages
Using the flexible column layout after several (full screen) pages

SAP Fiori Elements

The flexible column layout is available in SAP Fiori elements for scenarios that use draft handling. If you use draft handling, we strongly recommend using the SAP Fiori elements implementation, wherever possible. The implementation already includes the navigation and routing behavior, as well as the Close and Full Screen actions, for example. Starting the application with two columns is also supported by SAP Fiori elements.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page Layout – Semantic Page

The semantic page is designed to support freestyle applications. By predefining where elements such as titles, global actions, and finalizing actions are placed, the semantic page helps designers and developers to implement and comply with the SAP Fiori Design Guidelines more easily. Based on the dynamic page and possessing its functionalities, the semantic page also adds semantic meaning to specific elements on the page.

Usage

Use the semantic page if:

  • You are building a freestyle application.
  • You want to use a predefined layout to reduce development time.

Do not use the semantic page if:

Structure

The semantic page is based on the structure of the dynamic page layout. The semantic page consists of:

  • The header title with global actions (always visible).
  • The content of the page with a footer toolbar and finalizing actions (optional).

The control’s semantics determine whether content specified in the control will appear in the header toolbar or footer toolbar.

Semantic page structure
Semantic page structure

Header Title

The title is located on the left-hand side of the header title (sap.m.Title) and contains the following components :

  • An optional global actions toolbar for the entire floorplan, located on the right-hand side. These actions should be represented using buttons, visualized either as text or icons. For more information, see header toolbar.
  • Overflow menu for actions, moving into the overflow from right to left. Icons are shown in the overflow menu with a corresponding text.

In the case of the flexible column layout, navigation actions are placed in the same toolbar as the global actions, separated with a vertical separation line.

Semantic page header title
Semantic page header title

Footer Toolbar

The footer toolbar is optional and contains the following components:

  • Message indicator (containing message popover) on the left-hand side
  • Draft indicator on the right-hand side, just before the finalizing actions
  • Finalizing actions on the right-hand side
Semantic page footer toolbar
Semantic page footer toolbar

Actions

Actions in the Header Toolbar

The following actions are available in the semantic page:

  • Application-specific actions determined by use case
  • Global actions
  • Navigation actions – only in flexible column layout.

In the semantic page, the order of the actions is predefined:

  1. Emphasized button: Application-specific or semantic text button
  2. Text buttons: Application-specific actions precede semantic (generic) actions
  3. Icon buttons: Application-defined buttons precede semantic icons, such as Favorite, Flag and Share
  4. Navigation actions with vertical separator: Used only in flexible column layout

Order of Semantic Actions

Ensure that the semantic actions reflect the following order:

Example for the order of actions in semantic header
Example for the order of actions in semantic header

Actions in the Footer Toolbar

In the semantic page, the order of the actions is predefined.

  • The leftmost button is emphasized or positive/negative. Only one button can be emphasized at a time. The default actions for these buttons are Save, Accept, and Reject. If your header toolbar contains an emphasized button (excluding the message handling button), try to avoid using emphasized buttons in the footer toolbar.
  • The transparent buttons appear next. They can include some of the actions below:
    • Post
    • Start Process
    • Send
    • Release
    • Save
    • Submit
    • Cancel
    • Forward
    • Confirm

A transparent button can also include custom application-specific actions. These will appear on the right-hand side of the footer toolbar.

Examples of actions in the footer toolbar
Examples of actions in the footer toolbar

Responsiveness and Adaptiveness

The responsive behavior of the semantic page depends on the behavior of the content that is displayed.

  1. Global actions within the toolbar move first into the overflow menu (1). The toolbar follows the standard toolbar overflow guidelines by adding the available buttons to the overflow menu from right to left. If there is not enough space left, the title and subtitle text will wrap.
  2. Navigation actions used in the flexible column layout (2) do not move into the overflow menu.

 

Size S
Size S
Size M
Size M
Size L
Size L

Guidelines

Please see the Guidelines section in the toolbar overview and dynamic page layout article.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page (Layout + SAP Fiori Elements)

The dynamic page is a layout control designed to support various floorplans and use cases. The layout is fully responsive and is the successor of the full screen layout.

The design of the dynamic page header helps users to focus on the actual page content, but still ensures that important header information and actions are readily available.

The dynamic page layout is a generic control. The content of both the header and the page differs from floorplan to floorplan. The dynamic page header itself is a container that can be used for several controls. For detailed guidance, see the corresponding floorplan article:

The dynamic page is already incorporated within all SAP Fiori element floorplans. You can also create a floorplan from scratch as a freestyle page using the semantic page. The semantic page provides an additional layer on top of the dynamic page layout, and helps to structure the content in the header and footer, such as the title and actions.

The footer toolbar is also part of the dynamic page layout and is used for closing or finalizing actions that impact the whole page.

Usage

Use the dynamic page layout if:

  • You are building a freestyle application that uses the dynamic page header and footer toolbar features of SAP Fiori 2.0 (versions 1.40 and higher).

Do not use the dynamic page layout if:

  • You are planning to use SAP Fiori elements, such as the list reportanalytical list pageoverview page, or object page, which already incorporate the dynamic page layout.
  • You want to implement an initial page or object page floorplan. These floorplans already incorporate snapping header and footer toolbar features. The behavior is similar to the dynamic page, but the technical foundation is different.
  • You only need to display a small amount of information. In this case, use a dialog instead. If you cannot avoid using the dynamic page layout, use letterboxing to mitigate the issue.

Structure

Like all layouts, the dynamic page layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

The dynamic page layout is responsive and optimized for use within a flexible column layout. Each column can contain its own dynamic page layout with a different floorplan, depending on the use case.

The dynamic page layout consists of three main areas:

  • The header title combined with the subtitle/summary, key information (optional), and global actions (always visible)
  • The header content (expandable/collapsible area)
  • The content of the page, with a footer toolbar and finalizing actions (optional)

Depending on your use case, you can either use one of the predefined floorplans, or create your own layout.

Components

Together, the header title (mandatory) and the header content (optional) form the dynamic page header.

Dynamic page layout - Components (expanded mode)
Dynamic page layout - Components (expanded mode)
Dynamic page layout - Components (collapsed mode)
Dynamic page layout - Components (collapsed mode)

Header Title

The header title bar contains the following elements.

Mandatory Elements

  • Title
    The title is located on the left of the header title bar, and is always visible. The title can contain the following components:

Additional Elements (optional)

  • Subtitle/summary
    The subtitle is often used to summarize the most important information pertaining to the collapsed header content.  For instance, it can be used to display the “Filtered by” information when the header content area contains a filter bar (for example, in a list report, analytical list page, or overview page). The subtitle can also be used to show information about the active tab within the worklist floorplan. Because the initial page contains an input field, no subtitle is needed. If the subtitle is used as a summary, make it clickable to allow the user to expand/collapse the header content. This needs to be provided as an additional feature, in parallel to the clickable area for the header title bar (see Behavior and Interaction).
  • Breadcrumb
    Depending on the floorplan and use case, you can add breadcrumb navigation. The breadcrumb is located above the header title, and is primarily used to display the hierarchy of subpages within an object page. In the flexible column layout, the breadcrumb is only available in full screen mode and not in the multi-column layout.
  • Key information
    Floorplans can also contain key information such as text, mini-facets, and KPI tags. Currently, KPI tags are only used within the analytical list page floorplan.
  • Global actions toolbar
    Place global actions for the entire floorplan on the right-hand side of the header title bar. Always offer the actions as buttons, visualized either as text or icons. For more information, see Header Toolbar.
    In the collapsed mode, the header title offers the same actions as in expanded mode and keeps them actionable. Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • Layout actions
    Layout actions, such as the Close or Full Screen / Exit Full Screen icons offered by the flexible column layout. Place these actions on the very right of the global actions toolbar and never move them into the overflow. Position the transparent Show/Hide <header content> button as the last text button before the icons. For more information, see the Exceptions section.
Placement of layout actions
Placement of layout actions

Header Content

Located below the header title, the header content is optional.

You can place any components in the header content area, provided that they follow the guidelines for the respective floorplan.

When the dynamic page header collapses, the header content is hidden. If the header content is empty, it can also be hidden. If no header content is available, the header title is not interactive, and hence no dynamic page header functionality is provided.

In addition, the header content area includes an optional Pin/Unpin toggle action. This feature allows the user to keep the header title and all elements in the header content expanded, even when scrolling and clicking (see Behavior and Interaction).

Dynamic page layout - Header content (unpinned)
Dynamic page layout - Header content (unpinned)
Dynamic page layout - Header content (pinned)
Dynamic page layout - Header content (pinned)

Footer Toolbar

The footer toolbar is also an optional part of the dynamic page layout. You can use it to offer closing or finalizing actions.

Dynamic page layout - footer toolbar
Dynamic page layout - footer toolbar

Responsiveness

The dynamic page layout offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to adapt automatically to small, medium, and large screen sizes.

Currently, global actions within the header toolbar are first to move into the overflow menu if there is a shortage of space. The toolbar follows the standard toolbar overflow guidelines by adding the available buttons to the overflow menu from right to left. If there still not enough space, the title and subtitle text wrap. The second line of the subtitle starts to wrap first.

Letterboxing means limiting the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability.

Dynamic page layout - With letterboxing on a desktop device
Dynamic page layout - With letterboxing on a desktop device

Behavior and Interaction

Dynamic Page Header

The header content collapses or expands on defined triggers (snap on scroll and snap on click) to show more of the actual page content.

In collapsed mode, the header title can display additional key information, such as a summary of the header content. The dynamic page header enables the user to focus on the actual work context by displaying the most important content. The footer toolbar isn’t affected by the snapping header.

Starting in expanded or collapsed mode

By default, the header content is initially expanded. For example, always expand the header content when starting the application if no query was fired (and the table is therefore empty).

In certain cases, depending on the way a floorplan is used, it can also make sense to deviate from the default and allow the header to appear in collapsed mode when initiating the app.

Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on click
Dynamic page layout - Snap on click
Dynamic page layout - Pin/unpin
Dynamic page layout - Pin/unpin

Snap on Scroll

Scrolling is the typical trigger for collapsing the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to snapped mode, and stays fixed. When the user scrolls up the page, the header content is revealed again.

Snap on Click

In addition to the “snap on scroll” function, the user can also expand and collapse the header content by clicking anywhere on the header title bar where there are no active elements (such as links, active buttons, and so on). Titles and subtitles are part of the clickable area and also trigger the manual expand/collapse interaction.

On desktop devices, the cursor changes from an arrow to a hand to support the user’s interaction. If the header is expanded and user clicks on the title bar, the header content collapses, and vice versa.

Exceptions

The following exception applies for pages containing desktop-centric tables, such as the analytical table, grid table, or tree table:

Because desktop-centric tables use up all of the available screen space, there is no scroll function, and hence no “snap on scroll” functionality. In this exceptional case, provide an additional transparent button for collapsing/expanding the header content area with the “snap on click” functionality in the global actions toolbar (for example, Hide Filters / Show Filters). Note that because a click interaction is required to expand or collapse the content area, the Pin/Unpin action is obsolete and is therefore not provided.

This exceptional case also applies to chart containers, which use up all the available screen space in a similar way to desktop-centric tables.

Wording: Show/Hide are mandatory terms for the “snap on click” action. Replace the second element of the action text after Show or Hide with a meaningful term, such as Filters. By default, this button goes into the overflow. However, depending on your use case, you can also keep it in the visible part of the global actions toolbar (Check: What is the main action on the screen?).

Dynamic page layout - Desktop-centric usage example (expanded mode)
Dynamic page layout - Desktop-centric usage example (expanded mode)
Dynamic page layout - Desktop-centric usage example (collapsed mode)
Dynamic page layout - Desktop-centric usage example (collapsed mode)

Pinning the Header Content

The header content also includes a Pin/Unpin icon (toggle button) on the right-hand side ( ). Clicking the pin icon disables the snapping functionality of the header content. This lets the user keep the expanded mode of the header title and all elements in the header content even when scrolling and clicking. This mode remains fixed until the user clicks the pin icon again. This feature is optional and can be switched off if it is not useful for your application.

The pin functionality is not available for floorplans without scrollbars (see Exceptions above).

In the smartphone version, the pin action isn’t provided, as it would take up too much screen real estate.

Keyboard Interaction

The dynamic page header is a header that expands/collapses its content. We recommend exposing the expand functionality on click (on the header title bar) and on scroll events.

In addition, an optional expand button/link allows the user to manually expand the header via mouse interaction (see the exceptional case: desktop-centric table usage). This button is not embedded into the tab chain if the dynamic page header automatically expands while receiving keyboard focus.

For keyboard interaction, the dynamic page header expands automatically as soon as the content of the snapping header comes into focus via the keyboard, such as via tabbing or via group jumps (F6).

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Information
Please note that not all keyboard interactions are already available within the current SAPUI5 version.
Key(s) Behavior
[TAB] Move focus to into dynamic page header – header title bar. Dynamic page header expands automatically.

If focus is inside the header content area, move focus to the next UI element within the header.

If focus is on last UI element within the header content area, leave the header. Collapse header content.

[SHIFT] + [TAB]  See TAB, in reverse order.
[F6] If focus is before the header title bar, set focus into the header title bar. Expand header content.

If focus is within the header content, move focus out of header and collapse header content.

[SHIFT] + [F6]   See F6, in reverse order.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Flexible Column Layout (Layout + SAP Fiori Elements)

The flexible column layout is a layout control that displays multiple floorplans on a single page. This allows faster and more fluid navigation between multiple floorplans than the usual page-by-page navigation. The flexible column layout offers different layouts with up to three columns. Users can expand the column they want to focus on, switch between different layouts, and view the rightmost column in full screen mode.

Flexible column layout - Example with three columns
Flexible column layout - Example with three columns

The flexible column layout behaves responsively, which makes it suitable for both desktop and mobile devices. Depending on the available screen width, an optimized layout is loaded to ensure the best possible user experience on each device. The flexible column layout is a generic control. As a layout container, it does not provide any content itself.

The flexible column layout is already incorporated within SAP Fiori elements.

Usage

Use the flexible column layout if:

  • You want to create a master-detail or master-detail-detail scenario in which the user can drill down or navigate.

Do not use the flexible column layout if:

  • You want to build a workbench or tools layout. The flexible column layout is not meant to provide a main column with additional side columns on the left and/or right. If you want to display additional content to enrich the main content and to help users better perform their tasks, use the dynamic side content instead.
  • You want to create a dashboard with context-independent pages.
  • You want to open multiple instances of the same object type. Use the multi-instance handling floorplan instead.
  • You want to split a single object into multiple columns, or display only a small amount of information.
  • You want to embed the SAP Fiori launchpad or overview page into one of the columns.

Structure

As with all layouts, the flexible column layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

Depending on the current layout and display size, the flexible column layout consists of one, two, or three horizontally-aligned columns. Each column contains content that is not provided by the flexible column layout itself. The flexible column layout is not restricted to a specific floorplan, as long as the floorplan you use is responsive down to phone size. However, we recommend using the dynamic page.

Information
It is not possible to use the SAP Fiori launchpad or the overview page in one of the columns.

Possible Layouts

To give users a better overview, the flexible column layout offers different layouts with one, two, or three columns. Depending on the screen size, up to five different base layouts are available.

Information

Language Dependency

For simplicity, this article assumes that the last column (the lowest drilldown level in the hierachy) is the rightmost column (left-to-right languages).

For right-to-left languages, however, the last column is the leftmost column.

Flexible column layout - Structure example (25% + 50% + 25%)
Flexible column layout - Structure example (25% + 50% + 25%)

Size L and XL (Desktop)

There are five different layouts in sizes L and XL: a full screen layout, as well as two different 2-column and 3-column layouts.

Available layouts in sizes L and XL
Available layouts in sizes L and XL

Size M (Tablet)

There are three different layouts in size M: a full screen layout and two different 2-column layouts. There is no 3-column layout due to the limited width. However, you can still load 3 pages in size M. Instead of showing them all side-by-side, the user can switch between columns 1/2 and 2/3.

Available layouts in size M
Available layouts in size M

Size S (Phone)

Because of the limited width, there is no multi-column layout for Size S. Instead, the rightmost column is shown in full screen mode.

Available layouts in size S
Available layouts in size S

Components

The flexible column layout uses a few simple actions let users to adapt the current layout according to their needs.

Note: Some of the actions (illustrated by blue lines in the image below) recover the last state of the layout to which they refer. In other words, the result of the action depends on the previous state of the layout.

Layout Arrow

The layout arrows allow users to expand the width of a given column, thereby changing the current layout. However, this action cannot be used to expand a column to full screen mode. There is a separate action for expanding a column to full screen mode.

The layout arrow is located next to the divider and points in the direction in which a column can be expanded. If a column cannot be expanded any further, the action is hidden.

Information
The user cannot change the size of a column freely (for example, 15% + 85%).

Enter Full Screen Mode

With the Enter Full Screen icon  , the user can switch the rightmost column to full screen mode. The action is located in the rightmost column, and is only offered if there is more than one column.

Exit Full Screen Mode

By selecting the Exit Full Screen icon  , the user can exit the full screen and switch back to the multi-column (side-by-side) view. The action is only available while in full screen mode.

Information
The actions are not available in size S, which only displays a single column.

Close

With the Close icon   , the user can close the last (rightmost) column. If the user selects this action in the second column while the third column is minimized, both columns are closed. Close is also available in full screen mode, and in the second/third column for size S.

Information
The Close and Enter Full Screen / Exit Full Screen actions:

  • Are only displayed in the third column (or in the second column if there is no third column, or if the third column is minimized)
  • Are displayed as the last actions in the global actions toolbar
  • Never move into the overflow
  • Are always shown side-by-side (Enter Full Screen / Exit Full Screen icon left, Close icon right).
    Exception: There is no Enter Full Screen action in size S.

Developer Hint
The actions for entering and exiting full screen mode and closing columns are not provided automatically by the flexible column layout control, and need to be implemented manually. However, you can use the semantic page, which supports these actions for freestyle applications (only available with the dynamic page).

Due to the technical restrictions of the overflow toolbar, it’s currently not possible to display these actions behind the overflow action ( ). This also applies to the object page, which does not use the overflow toolbar.

Navigation

In addition to the actions specific to the flexible column layout, the user can also use the forward and backward navigation to navigate through the flexible column layout. Drilling in or navigating forward opens a new column, while Back closes a column or exits the full screen mode (depending on what the last action was).
Please note: Back does not restore layout changes (such as switching from 33% + 67% to 67% + 33%).

Because the flexible column layout only supports a maximum of 3 columns, any follow-on pages are loaded in full screen mode. These pages do not contain Close or Enter Full Screen / Exit Full Screen actions.

By default, the width is initially 33% for the second column and 25% for the third column. You can also set the width of the second column to 67%, or the third to 50% if your use case requires it.

Developer Hint
To implement the navigation/routing, you can use the SemanticHelper class, which provides predefined behavior to simplify the implementation.

Responsiveness

The flexible column layout changes its behavior for sizes XL, L, M and S in real time whenever the user resizes the screen.

If no previous state has been saved, ensure that the default layout appears automatically. For example, if the flexible column layout was initially loaded in size S and the user then navigates to the second column and changes the browser window to size M, show the default 2-column layout for size M (67% + 33%).

Responsiveness of the flexible column layout
Responsiveness of the flexible column layout

Behavior and Interaction

Dialogs

Dialogs triggered in one of the columns are centered over the entire screen.

Do
Do: Center dialogs triggered in a column
Do: Center dialogs triggered in a column
Don't
Do not: Right-align dialogs triggered in a column
Do not: Right-align dialogs triggered in a column

Vertical Size / Scrolling

Each column inside the flexible column layout contains an independent floorplan with its own scrolling behavior. There is no “all-encompassing” scrollbar which scrolls all columns simultaneously. The height of each floorplan is defined by the screen size.

Do
Do: Each column contains its own scrollbar
Do: Each column contains its own scrollbar
Don't
Do not: There is no all-encompassing scrollbar for all columns
Do not: There is no all-encompassing scrollbar for all columns

Two Columns (Master-Detail Mode)

By default, the flexible column layout starts off with one column, and the user opens new columns by navigating forward. Since the flexible column layout is the successor of the split-screen layout, you can also use just two columns if your use case requires it. Do not start your application with three columns. Too much information at the beginning can confuse users.

Note:

  • When starting with two columns, make sure that you show the first column on size S when the app opens. Otherwise, users see the the second column first, which might be confusing.
  • Even if you start with two columns, offer the layout arrow and the Close action in the second column.
Examples: Starting with two columns (sizes L and XL)
Examples: Starting with two columns (sizes L and XL)

Titles / Breadcrumbs / Up and Down Arrows

If more than one column is visible, show the application title in the shell bar. If the user switches to full screen mode, show the page title. Also show the page title for size S, where only one column is visible.

If multiple columns are visible, hide the breadcrumbs and up/down arrows.

Application title in the shell bar
Application title in the shell bar
Page title in the shell bar
Page title in the shell bar

Bookmarks

Every layout inside the flexible column layout can be bookmarked. For example, if the user bookmarks a 3-column layout set to 25% + 50% + 25%, load this layout when the user opens the bookmark.

Minimized Third Column

When the user expands the first column in a 3-column layout, the third column is minimized. Close, Enter Full Screen, and layout arrow actions also appear on the right-hand border of the second column to allow the user to return to the original 3-column layout.

Close: The second and third (minimized) columns close. A dialog can appear to warn the user about any unsaved data in the third column.

Full screen: When the user clicks the Enter Full Screen icon, the second column switches to full screen mode. The third column remains open (but not visible), and closes as soon as the user selects another item in the second column, or uses the Close action in the second column. If the user selects the same item in the second column, it opens in the same state as before it was minimized.

Layout arrow: The arrow for changing the layout to 25% + 50% + 25% is only available in the 33% + 67% layout. This arrow is hidden if the user is changing the layout to 67% + 33%.

Example of minimized third column (33% + 67%)
Example of minimized third column (33% + 67%)

Using Close in Combination with Back Navigation

The back navigation must not restore a column that was previously closed with the Close icon  .

Example: The user closes the third column by clicking the Close icon   in the upper-right corner. If the user then navigates back (UI or browser), the second column should close.

Using
Using "Close" in combination with back navigation

3 Columns in Size M

To offer a desktop-like experience in size M, the flexible column layout displays either the first and second or the second and third column. The user can switch between these views by using the layout arrow on the left or right side of the flexible column layout. Note: This behavior is only intended for size M. Do not use it for sizes L or XL.

3-column interaction in size M
3-column interaction in size M

Letterboxing

Do not use letterboxing in combination with the flexible column layout, as it will reduce the size of the usable screen area.

Do
Do: Proper use of usable screen area
Do: Proper use of usable screen area
Don't
Do not: Improper use of usable screen area with letterboxing
Do not: Improper use of usable screen area with letterboxing

Full Screen Navigation

After switching a column to full screen mode, selecting the Back icon exits the full screen mode.

If the screen is in full screen mode, and the user navigates forward, also show the next column in full screen mode. If the user navigates backward, go back in full screen mode until the point where the user initially switched to full screen. If the user then clicks Back again, return to the multi-column mode.

Using the full screen mode in combination with navigation
Using the full screen mode in combination with navigation

SAP Fiori Elements

The flexible column layout is available in SAP Fiori elements for scenarios that use draft handling. If you use draft handling, we strongly recommend using the SAP Fiori elements implementation, wherever possible. The implementation already includes the navigation and routing behavior, as well as the Close and Full Screen actions, for example.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Flexible Column Layout (Layout + SAP Fiori Elements)

The flexible column layout is a layout control that displays multiple floorplans on a single page. This allows faster and more fluid navigation between multiple floorplans than the usual page-by-page navigation. The flexible column layout offers different layouts with up to three columns. Users can expand the column they want to focus on, switch between different layouts, and view the rightmost column in full screen mode.

Flexible column layout - Example with three columns
Flexible column layout - Example with three columns

The flexible column layout behaves responsively, which makes it suitable for both desktop and mobile devices. Depending on the available screen width, an optimized layout is loaded to ensure the best possible user experience on each device. The flexible column layout is a generic control. As a layout container, it does not provide any content itself.

The flexible column layout is already incorporated within SAP Fiori elements.

Usage

Use the flexible column layout if:

  • You want to create a master-detail or master-detail-detail scenario in which the user can drill down or navigate.

Do not use the flexible column layout if:

  • You want to build a workbench or tools layout. The flexible column layout is not meant to provide a main column with additional side columns on the left and/or right. If you want to display additional content to enrich the main content and to help users better perform their tasks, use the dynamic side content instead.
  • You want to create a dashboard with context-independent pages.
  • You want to open multiple instances of the same object type. Use the multi-instance handling floorplan instead.
  • You want to split a single object into multiple columns, or display only a small amount of information.
  • You want to embed the SAP Fiori launchpad or overview page into one of the columns.

Structure

As with all layouts, the flexible column layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

Depending on the current layout and display size, the flexible column layout consists of one, two, or three horizontally-aligned columns. Each column contains content that is not provided by the flexible column layout itself. The flexible column layout is not restricted to a specific floorplan, as long as the floorplan you use is responsive down to phone size. However, we recommend using the dynamic page.

Information
It is not possible to use the SAP Fiori launchpad or the overview page in one of the columns.

Possible Layouts

To give users a better overview, the flexible column layout offers different layouts with one, two, or three columns. Depending on the screen size, up to five different base layouts are available.

Information

Language Dependency

For simplicity, this article assumes that the last column (the lowest drilldown level in the hierachy) is the rightmost column (left-to-right languages).

For right-to-left languages, however, the last column is the leftmost column.

Flexible column layout - Structure example (25% + 50% + 25%)
Flexible column layout - Structure example (25% + 50% + 25%)

Size L and XL (Desktop)

There are five different layouts in sizes L and XL: a full screen layout, as well as two different 2-column and 3-column layouts.

Available layouts in sizes L and XL
Available layouts in sizes L and XL

Size M (Tablet)

There are three different layouts in size M: a full screen layout and two different 2-column layouts. There is no 3-column layout due to the limited width. However, you can still load 3 pages in size M. Instead of showing them all side-by-side, the user can switch between columns 1/2 and 2/3.

Available layouts in size M
Available layouts in size M

Size S (Phone)

Because of the limited width, there is no multi-column layout for Size S. Instead, the rightmost column is shown in full screen mode.

Available layouts in size S
Available layouts in size S

Components

The flexible column layout uses a few simple actions let users to adapt the current layout according to their needs.

Note: Some of the actions (illustrated by blue lines in the image below) recover the last state of the layout to which they refer. In other words, the result of the action depends on the previous state of the layout.

Layout Arrow

The layout arrows allow users to expand the width of a given column, thereby changing the current layout. However, this action cannot be used to expand a column to full screen mode. There is a separate action for expanding a column to full screen mode.

The layout arrow is located next to the divider and points in the direction in which a column can be expanded. If a column cannot be expanded any further, the action is hidden.

Information
The user cannot change the size of a column freely (for example, 15% + 85%).

Enter Full Screen Mode

With the Enter Full Screen icon  , the user can switch the rightmost column to full screen mode. The action is located in the rightmost column, and is only offered if there is more than one column.

Exit Full Screen Mode

By selecting the Exit Full Screen icon  , the user can exit the full screen and switch back to the multi-column (side-by-side) view. The action is only available while in full screen mode.

Information
The actions are not available in size S, which only displays a single column.

Close

With the Close icon   , the user can close the last (rightmost) column. If the user selects this action in the second column while the third column is minimized, both columns are closed. Close is also available in full screen mode, and in the second/third column for size S.

Information
The Close and Enter Full Screen / Exit Full Screen actions:

  • Are only displayed in the third column (or in the second column if there is no third column, or if the third column is minimized)
  • Are displayed as the last actions in the global actions toolbar
  • Never move into the overflow
  • Are always shown side-by-side (Enter Full Screen / Exit Full Screen icon left, Close icon right).
    Exception: There is no Enter Full Screen action in size S.

Developer Hint
The actions for entering and exiting full screen mode and closing columns are not provided automatically by the flexible column layout control, and need to be implemented manually. However, you can use the semantic page, which supports these actions for freestyle applications (only available with the dynamic page).

Due to the technical restrictions of the overflow toolbar, it’s currently not possible to display these actions behind the overflow action ( ). This also applies to the object page, which does not use the overflow toolbar.

Navigation

In addition to the actions specific to the flexible column layout, the user can also use the forward and backward navigation to navigate through the flexible column layout. Drilling in or navigating forward opens a new column, while Back closes a column or exits the full screen mode (depending on what the last action was).
Please note: Back does not restore layout changes (such as switching from 33% + 67% to 67% + 33%).

Because the flexible column layout only supports a maximum of 3 columns, any follow-on pages are loaded in full screen mode. These pages do not contain Close or Enter Full Screen / Exit Full Screen actions.

By default, the width is initially 33% for the second column and 25% for the third column. You can also set the width of the second column to 67%, or the third to 50% if your use case requires it.

Developer Hint
To implement the navigation/routing, you can use the SemanticHelper class, which provides predefined behavior to simplify the implementation.

Responsiveness

The flexible column layout changes its behavior for sizes XL, L, M and S in real time whenever the user resizes the screen.

If no previous state has been saved, ensure that the default layout appears automatically. For example, if the flexible column layout was initially loaded in size S and the user then navigates to the second column and changes the browser window to size M, show the default 2-column layout for size M (67% + 33%).

Responsiveness of the flexible column layout
Responsiveness of the flexible column layout

Behavior and Interaction

Dialogs

Dialogs triggered in one of the columns are centered over the entire screen.

Do
Do: Center dialogs triggered in a column
Do: Center dialogs triggered in a column
Don't
Do not: Right-align dialogs triggered in a column
Do not: Right-align dialogs triggered in a column

Vertical Size / Scrolling

Each column inside the flexible column layout contains an independent floorplan with its own scrolling behavior. There is no “all-encompassing” scrollbar which scrolls all columns simultaneously. The height of each floorplan is defined by the screen size.

Do
Do: Each column contains its own scrollbar
Do: Each column contains its own scrollbar
Don't
Do not: There is no all-encompassing scrollbar for all columns
Do not: There is no all-encompassing scrollbar for all columns

Two Columns (Master-Detail Mode)

By default, the flexible column layout starts off with one column, and the user opens new columns by navigating forward. Since the flexible column layout is the successor of the split-screen layout, you can also use just two columns if your use case requires it. Do not start your application with three columns. Too much information at the beginning can confuse users.

Note:

  • When starting with two columns, make sure that you show the first column on size S when the app opens. Otherwise, users see the the second column first, which might be confusing.
  • Even if you start with two columns, offer the layout arrow and the Close action in the second column.
Examples: Starting with two columns (sizes L and XL)
Examples: Starting with two columns (sizes L and XL)

Titles / Breadcrumbs / Up and Down Arrows

If more than one column is visible, show the application title in the shell bar. If the user switches to full screen mode, show the page title. Also show the page title for size S, where only one column is visible.

If multiple columns are visible, hide the breadcrumbs and up/down arrows.

Application title in the shell bar
Application title in the shell bar
Page title in the shell bar
Page title in the shell bar

Bookmarks

Every layout inside the flexible column layout can be bookmarked. For example, if the user bookmarks a 3-column layout set to 25% + 50% + 25%, load this layout when the user opens the bookmark.

Minimized Third Column

When the user expands the first column in a 3-column layout, the third column is minimized. CloseEnter Full Screen, and layout arrow actions also appear on the right-hand border of the second column to allow the user to return to the original 3-column layout.

Close: The second and third (minimized) columns close. A dialog can appear to warn the user about any unsaved data in the third column.

Full screen: When the user clicks the Enter Full Screen icon, the second column switches to full screen mode. The third column remains open (but not visible), and closes as soon as the user selects another item in the second column, or uses the Close action in the second column. If the user selects the same item in the second column, it opens in the same state as before it was minimized.

Layout arrow: The arrow for changing the layout to 25% + 50% + 25% is only available in the 33% + 67% layout. This arrow is hidden if the user is changing the layout to 67% + 33%.

Example of minimized third column (33% + 67%)
Example of minimized third column (33% + 67%)

Using Close in Combination with Back Navigation

The back navigation must not restore a column that was previously closed with the Close icon  .

Example: The user closes the third column by clicking the Close icon   in the upper-right corner. If the user then navigates back (UI or browser), the second column should close.

Using
Using "Close" in combination with back navigation

3 Columns in Size M

To offer a desktop-like experience in size M, the flexible column layout displays either the first and second or the second and third column. The user can switch between these views by using the layout arrow on the left or right side of the flexible column layout. Note: This behavior is only intended for size M. Do not use it for sizes L or XL.

3-column interaction in size M
3-column interaction in size M

Letterboxing

Do not use letterboxing in combination with the flexible column layout, as it will reduce the size of the usable screen area.

Do
Do: Proper use of usable screen area
Do: Proper use of usable screen area
Don't
Do not: Improper use of usable screen area with letterboxing
Do not: Improper use of usable screen area with letterboxing

Full Screen Navigation

After switching a column to full screen mode, selecting the Back icon exits the full screen mode.

If the screen is in full screen mode, and the user navigates forward, also show the next column in full screen mode. If the user navigates backward, go back in full screen mode until the point where the user initially switched to full screen. If the user then clicks Back again, return to the multi-column mode.

Using the full screen mode in combination with navigation
Using the full screen mode in combination with navigation

SAP Fiori Elements

The flexible column layout is available in SAP Fiori elements for scenarios that use draft handling. If you use draft handling, we strongly recommend using the SAP Fiori elements implementation, wherever possible. The implementation already includes the navigation and routing behavior, as well as the Close and Full Screen actions, for example.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page (Layout + SAP Fiori Elements)

The dynamic page is a layout control designed to support various floorplans and use cases. The layout is fully responsive and is the successor of the full screen layout.

The design of the dynamic page header helps users to focus on the actual page content, but still ensures that important header information and actions are readily available.

The dynamic page layout is a generic control. The content of both the header and the page differs from floorplan to floorplan. The dynamic page header itself is a container that can be used for several controls. For detailed guidance, see the corresponding floorplan article:

The dynamic page is already incorporated within all SAP Fiori element floorplans. You can also create a floorplan from scratch as a freestyle page using the semantic page. The semantic page provides an additional layer on top of the dynamic page layout, and helps to structure the content in the header and footer, such as the title and actions.

The footer toolbar is also part of the dynamic page layout and is used for closing or finalizing actions that impact the whole page.

Usage

Use the dynamic page layout if:

  • You are building a freestyle application that uses the dynamic page header and footer toolbar features of SAP Fiori 2.0 (versions 1.40 and higher).

Do not use the dynamic page layout if:

  • You are planning to use SAP Fiori elements, such as the list reportanalytical list pageoverview page, or object page, which already incorporate the dynamic page layout.
  • You want to implement an initial page or object page floorplan. These floorplans already incorporate snapping header and footer toolbar features. The behavior is similar to the dynamic page, but the technical foundation is different.
  • You only need to display a small amount of information. In this case, use a dialog instead. If you cannot avoid using the dynamic page layout, use letterboxing to mitigate the issue.

Structure

Like all layouts, the dynamic page layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

The dynamic page layout is responsive and optimized for use within a flexible column layout. Each column can contain its own dynamic page layout with a different floorplan, depending on the use case.

The dynamic page layout consists of three main areas:

  • The header title combined with the subtitle/summary, key information (optional), and global actions (always visible)
  • The header content (expandable/collapsible area)
  • The content of the page, with a footer toolbar and finalizing actions (optional)

Depending on your use case, you can either use one of the predefined floorplans, or create your own layout.

Components

Together, the header title (mandatory) and the header content (optional) form the dynamic page header.

Dynamic page layout - Components (expanded mode)
Dynamic page layout - Components (expanded mode)
Dynamic page layout - Components (collapsed mode)
Dynamic page layout - Components (collapsed mode)

Header Title

The header title bar contains the following elements.

Mandatory Elements

  • Title
    The title is located on the left of the header title bar, and is always visible. The title can contain the following components:

Additional Elements (optional)

  • Subtitle/summary
    The subtitle is often used to summarize the most important information pertaining to the collapsed header content.  For instance, it can be used to display the “Filtered by” information when the header content area contains a filter bar (for example, in a list reportanalytical list page, or overview page). The subtitle can also be used to show information about the active tab within the worklist floorplan. Because the initial page contains an input field, no subtitle is needed. If the subtitle is used as a summary, make it clickable to allow the user to expand/collapse the header content. This needs to be provided as an additional feature, in parallel to the clickable area for the header title bar (see Behavior and Interaction).
  • Breadcrumb
    Depending on the floorplan and use case, you can add breadcrumb navigation. The breadcrumb is located above the header title, and is primarily used to display the hierarchy of subpages within an object page. In the flexible column layout, the breadcrumb is only available in full screen mode and not in the multi-column layout.
  • Key information
    Floorplans can also contain key information such as text, mini-facets, and KPI tags. Currently, KPI tags are only used within the analytical list page floorplan.
  • Global actions toolbar
    Place global actions for the entire floorplan on the right-hand side of the header title bar. Always offer the actions as buttons, visualized either as text or icons. For more information, see Header Toolbar.
    In the collapsed mode, the header title offers the same actions as in expanded mode and keeps them actionable. Do not remove or disable the actions within the global action toolbar when the header content is collapsed.
  • Layout actions
    Layout actions, such as the Close or Full Screen / Exit Full Screen icons offered by the flexible column layout. Place these actions on the very right of the global actions toolbar and never move them into the overflow. Position the transparent Show/Hide <header content> button as the last text button before the icons. For more information, see the Exceptions section.
Placement of layout actions
Placement of layout actions

Header Content

Located below the header title, the header content is optional.

You can place any components in the header content area, provided that they follow the guidelines for the respective floorplan.

When the dynamic page header collapses, the header content is hidden. If the header content is empty, it can also be hidden. If no header content is available, the header title is not interactive, and hence no dynamic page header functionality is provided.

In addition, the header content area includes an optional Pin/Unpin toggle action. This feature allows the user to keep the header title and all elements in the header content expanded, even when scrolling and clicking (see Behavior and Interaction).

Dynamic page layout - Header content (unpinned)
Dynamic page layout - Header content (unpinned)
Dynamic page layout - Header content (pinned)
Dynamic page layout - Header content (pinned)

Footer Toolbar

The footer toolbar is also an optional part of the dynamic page layout. You can use it to offer closing or finalizing actions.

Dynamic page layout - footer toolbar
Dynamic page layout - footer toolbar

Responsiveness

The dynamic page layout offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to adapt automatically to small, medium, and large screen sizes.

Currently, global actions within the header toolbar are first to move into the overflow menu if there is a shortage of space. The toolbar follows the standard toolbar overflow guidelines by adding the available buttons to the overflow menu from right to left. If there still not enough space, the title and subtitle text wrap. The second line of the subtitle starts to wrap first.

Letterboxing means limiting the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability.

Dynamic page layout - With letterboxing on a desktop device
Dynamic page layout - With letterboxing on a desktop device

Behavior and Interaction

Dynamic Page Header

The header content collapses or expands on defined triggers (snap on scroll and snap on click) to show more of the actual page content.

In collapsed mode, the header title can display additional key information, such as a summary of the header content. The dynamic page header enables the user to focus on the actual work context by displaying the most important content. The footer toolbar isn’t affected by the snapping header.

Starting in expanded or collapsed mode

By default, the header content is initially expanded. For example, always expand the header content when starting the application if no query was fired (and the table is therefore empty).

In certain cases, depending on the way a floorplan is used, it can also make sense to deviate from the default and allow the header to appear in collapsed mode when initiating the app.

Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on scroll
Dynamic page layout - Snap on click
Dynamic page layout - Snap on click
Dynamic page layout - Pin/unpin
Dynamic page layout - Pin/unpin

Snap on Scroll

Scrolling is the typical trigger for collapsing the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to snapped mode, and stays fixed. When the user scrolls up the page, the header content is revealed again.

Snap on Click

In addition to the “snap on scroll” function, the user can also expand and collapse the header content by clicking anywhere on the header title bar where there are no active elements (such as links, active buttons, and so on). Titles and subtitles are part of the clickable area and also trigger the manual expand/collapse interaction.

On desktop devices, the cursor changes from an arrow to a hand to support the user’s interaction. If the header is expanded and user clicks on the title bar, the header content collapses, and vice versa.

Exceptions

The following exception applies for pages containing desktop-centric tables, such as the analytical tablegrid table, or tree table:

Because desktop-centric tables use up all of the available screen space, there is no scroll function, and hence no “snap on scroll” functionality. In this exceptional case, provide an additional transparent button for collapsing/expanding the header content area with the “snap on click” functionality in the global actions toolbar (for example, Hide Filters / Show Filters). Note that because a click interaction is required to expand or collapse the content area, the Pin/Unpin action is obsolete and is therefore not provided.

This exceptional case also applies to chart containers, which use up all the available screen space in a similar way to desktop-centric tables.

WordingShow/Hide are mandatory terms for the “snap on click” action. Replace the second element of the action text after Show or Hide with a meaningful term, such as Filters. By default, this button goes into the overflow. However, depending on your use case, you can also keep it in the visible part of the global actions toolbar (Check: What is the main action on the screen?).

Dynamic page layout - Desktop-centric usage example (expanded mode)
Dynamic page layout - Desktop-centric usage example (expanded mode)
Dynamic page layout - Desktop-centric usage example (collapsed mode)
Dynamic page layout - Desktop-centric usage example (collapsed mode)

Pinning the Header Content

The header content also includes a Pin/Unpin icon (toggle button) on the right-hand side ( ). Clicking the pin icon disables the snapping functionality of the header content. This lets the user keep the expanded mode of the header title and all elements in the header content even when scrolling and clicking. This mode remains fixed until the user clicks the pin icon again. This feature is optional and can be switched off if it is not useful for your application.

The pin functionality is not available for floorplans without scrollbars (see Exceptions above).

In the smartphone version, the pin action isn’t provided, as it would take up too much screen real estate.

Keyboard Interaction

The dynamic page header is a header that expands/collapses its content. We recommend exposing the expand functionality on click (on the header title bar) and on scroll events.

In addition, an optional expand button/link allows the user to manually expand the header via mouse interaction (see the exceptional case: desktop-centric table usage). This button is not embedded into the tab chain if the dynamic page header automatically expands while receiving keyboard focus.

For keyboard interaction, the dynamic page header expands automatically as soon as the content of the snapping header comes into focus via the keyboard, such as via tabbing or via group jumps (F6).

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Information
Please note that not all keyboard interactions are already available within the current SAPUI5 version.
Key(s) Behavior
[TAB] Move focus to into dynamic page header – header title bar. Dynamic page header expands automatically.

If focus is inside the header content area, move focus to the next UI element within the header.

If focus is on last UI element within the header content area, leave the header. Collapse header content.

[SHIFT] + [TAB]  See TAB, in reverse order.
[F6] If focus is before the header title bar, set focus into the header title bar. Expand header content.

If focus is within the header content, move focus out of header and collapse header content.

[SHIFT] + [F6]   See F6, in reverse order.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page Layout – Semantic Page

The semantic page is designed to support freestyle applications. By predefining where elements such as titles, global actions, and finalizing actions are placed, the semantic page helps designers and developers to implement and comply with the SAP Fiori Design Guidelines more easily. Based on the dynamic page and possessing its functionalities, the semantic page also adds semantic meaning to specific elements on the page.

Usage

Use the semantic page if:

  • You are building a freestyle application.
  • You want to use a predefined layout to reduce development time.

Do not use the semantic page if:

Structure

The semantic page is based on the structure of the dynamic page layout. The semantic page consists of:

  • The header title with global actions (always visible).
  • The content of the page with a footer toolbar and finalizing actions (optional).

The control’s semantics determine whether content specified in the control will appear in the header toolbar or footer toolbar.

Semantic page structure
Semantic page structure

Header Title

The title is located on the left-hand side of the header title (sap.m.Title) and contains the following components :

  • An optional global actions toolbar for the entire floorplan, located on the right-hand side. These actions should be represented using buttons, visualized either as text or icons. For more information, see header toolbar.
  • Overflow menu for actions, moving into the overflow from right to left. Icons are shown in the overflow menu with a corresponding text.

In the case of the flexible column layout, navigation actions are placed in the same toolbar as the global actions, separated with a vertical separation line.

Semantic page header title
Semantic page header title

Footer Toolbar

The footer toolbar is optional and contains the following components:

  • Message indicator (containing message popover) on the left-hand side
  • Draft indicator
  • Finalizing actions on the right-hand side
Semantic page footer toolbar
Semantic page footer toolbar

Actions

Actions in the Header Toolbar

The following actions are available in the semantic page:

  • Application-specific actions determined by use case
  • Global actions
  • Navigation actions – only in flexible column layout.

In the semantic page, the order of the actions is predefined:

  1. Emphasized button: Application-specific or semantic text button
  2. Text buttons: Application-specific actions precede semantic (generic) actions
  3. Icon buttons: Application-defined buttons precede semantic icons, such as Favorite, Flag and Share
  4. Navigation actions with vertical separator: Used only in flexible column layout

Order of Semantic Actions

Ensure that the semantic actions reflect the following order:

Example for the order of actions in semantic header
Example for the order of actions in semantic header

Actions in the Footer Toolbar

In the semantic page, the order of the actions is predefined.

  • The leftmost button is emphasized or positive/negative. Only one button can be emphasized at a time. The default actions for these buttons are Save, Accept, and Reject. If your header toolbar contains an emphasized button (excluding the message handling button), try to avoid using emphasized buttons in the footer toolbar.
  • The transparent buttons appear next. They can include some of the actions below:
    • Post
    • Start Process
    • Send
    • Release
    • Save
    • Submit
    • Cancel
    • Forward
    • Confirm

A transparent button can also include custom application-specific actions. These will appear on the right-hand side of the footer toolbar.

Example for actions in the footer toolbar
Example for actions in the footer toolbar

Responsiveness and Adaptiveness

The responsive behavior of the semantic page depends on the behavior of the content that is displayed.

  1. Global actions within the toolbar move first into the overflow menu (1). The toolbar follows the standard toolbar overflow guidelines by adding the available buttons to the overflow menu from right to left. If there is not enough space left, the title and subtitle text will wrap.
  2. Navigation actions used in the flexible column layout (2) do not move into the overflow menu.

 

Size S
Size S
Size M
Size M
Size L
Size L

Guidelines

Please see the Guidelines section in the toolbar overview and dynamic page layout article.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Flexible Column Layout (Layout + SAP Fiori Elements)

The flexible column layout is a layout control that displays multiple floorplans on a single page. This allows a faster and more fluid navigation between multiple floorplans compared to the usual page-by-page navigation. The flexible column layout offers different layouts with up to three columns (panels). Depending on which panel the user is focused on, it can get prioritized (wider). The user can also switch between different layouts and view the last panel in full screen.

Flexible column layout - Example with three panels
Flexible column layout - Example with three panels

The flexible column layout behaves responsively, which makes it suitable for mobile devices as well as for desktops. Depending on the available screen width, an optimized layout is loaded to ensure the best possible user experience on each device. The flexible column layout is a generic control. As layout container, it does not provide any content itself.

The flexible column layout is already incorporated within SAP Fiori elements.

Usage

Use the flexible column layout if:

  • You want to create a master-detail or master-detail-detail scenario in which the user can drill down or navigate.

Do not use the flexible column layout if:

  • You want to build a workbench or tools layout. The flexible column layout is not meant to provide a main panel with additional side panels on the left and/or right. If you want to display additional content to enrich the main content and to help the user better perform his/her tasks, please use the dynamic side content instead.
  • You want to create a dashboard with context-independent pages.
  • You want to open multiple instances of the same object type. Please use the multi-instance handling floorplan instead.
  • You want to split a single object into multiple panels, or you want to display a small amount of information.
  • You want to embed the SAP Fiori launchpad or overview page into one of the panels.

Structure

As with all layouts, the flexible column layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. The shell bar also provides the back navigation and the app title, including the navigation menu.

Depending on the current layout and display size, the flexible column layout consists of one, two, or three horizontally-aligned columns. Each column contains content which is not provided by the flexible column layout itself. The flexible column layout is not restricted to a specific floorplan as long as the desired floorplan is responsive down to phone size. However, we recommend using the dynamic page.

Information
It is not possible to use the SAP Fiori launchpad or the overview page in one of the panels.

Possible Layouts

To provide the user a better overview, the flexible column layout offers different layouts with one, two and three panels. Depending on the screen size, up to five different base layouts are available.

Flexible column layout - Structure example (25%, 50%, 25%)
Flexible column layout - Structure example (25%, 50%, 25%)

Size XL and L (Desktop)

There are five different layouts in size XL and L: The full screen as well as two different 2-panel and 3-panel layouts.

Available layouts in sizes XL and L
Available layouts in sizes XL and L

Size M (Tablet)

There are three different layouts in size M: Full screen and two different 2-panel layouts. There is no 3-panel layout due to the limited width. However, it’s possible to load three pages in size M. Instead of showing them all side-by-side, the user will be able to switch between panels 1/2 and 2/3.

Available layouts in size M
Available layouts in size M

Size S (Phone)

Due to the very limited width in size S, there is no multi-panel layout available. For this reason, the last panel will be shown in full screen instead.

Available layouts in size S
Available layouts in size S

Components

The flexible column layout uses a few simple actions to allow the users to change the current layout according to their needs.

Note: Some of the actions (illustrated in blue lines below) should recover the last state of the layout to which they refer. This means that they react depending on the last state of the triggered layout.

Toggle

With toggle, users can expand the size of a certain panel, thereby changing the current layout. However, it’s not possible to expand a panel to full screen via toggle. To do this, the user can use the full screen action instead.

The toggle action is located over the divider and points in the direction in which a panel can be expanded. If a panel cannot be expanded any more, the action is hidden.

Information
The user cannot change the size of a panel freely (for example, 15%/85%).

Enter Full-Screen Mode

With the full screen icon  , the user can switch the rightmost (RTL: leftmost) panel to full screen. The action is located in the rightmost panel and only if there is more than one panel available.

Exit Full-Screen Mode

By selecting the exit full screen icon , the user can exit the full screen and switch back to the multi-panel (side-by-side) view. The action is only available while in full-screen mode.

Information
The actions are not available in size S, as there is always just only one panel shown.

Close

With the close icon   , the user can close the last (rightmost) panel. When using this action in the second panel while the third panel is minimized, both panels will be closed. Close is also available in full screen as well as in size S in the second/third panel.

Information
The close and enter/exit full screen actions:

  • Are only displayed in the third panel (or second panel if there is no third panel, or if the third is minimized).
  • Are displayed in the global actions as the last actions.
  • Never go into the overflow.
  • Are always shown side-by-side (full screen: left / close: right). Exception: There is no full screen action in size S.

Developer Hint
The actions for exiting/entering full-screen mode and closing panels are not provided automatically by the flexible column layout control and need to be implemented manually. However, it is possible to use the semantic page (only with dynamic page), which supports these actions for freestyle applications.

Due to the technical restrictions of the overflow toolbar, it’s currently not possible to display the actions behind the overflow action ( ). This also applies to the object page, which does not use the overflow toolbar.

Navigation

In addition to the actions specific to the flexible column layout, the user can also use the forward and backward navigation to navigate through the flexible column layout. Drilling in/navigating forward opens a new panel, while using back will close a panel or the full-screen mode (depending on what the last action was). Please note: Back does not restore layout changes (such as switching from 33%/67% to 67%/33%).

As there is a maximum of three panels available, every following page will be loaded in full screen. These pages do not contain close or full screen actions.

By default, the second panel will be opened in 33% and the third panel in 25% width initially. You can also open the second panel in 67% and the third in 50% if your use case require it.

Developer Hint
To implement the navigation/routing, you can use the SemanticHelper class which provides a predefined behavior to simplify the implementation.

Responsiveness

The flexible column layout is runtime responsive, which means it changes its behavior for sizes XL, L, M and S, while resizing the screen in real time.

If no previous state has been saved, the default should appear automatically. For example, if the flexible column layout was initially loaded in size S and the user then navigates to the second panel and changes the browser window to size M, the default two panel layout of size M should appear (67%/33%).

Responsiveness of the flexible column layout
Responsiveness of the flexible column layout

Behavior and Interaction

Dialogs

Dialogs triggered in one of the panels are centered over the entire screen.

Do

Do: Center dialogs triggered in a panel
Do: Center dialogs triggered in a panel

Don’t

Do not: Right-align dialogs triggered in a panel
Do not: Right-align dialogs triggered in a panel

Vertical Size/Scrolling

Each panel inside the flexible column layout contains an independent floorplan with its own scrolling. There is no “all-encompassing” scrollbar which scrolls all panels simultaneously. The height of each floorplan is defined by the screen size.

Do

Do: Each panel contains its own scrollbar
Do: Each panel contains its own scrollbar

Don’t

Do not: There is no all-encompassing scrollbar for all panels
Do not: There is no all-encompassing scrollbar for all panels

Two Panels (Master-Detail Mode)

By default, the flexible column layout starts off with one panel, and the user opens new panels by navigating forward. As the flexible column layout is the successor of the split-screen layout, it can also be used with just two panels if your use case requires it. Do not start your application with three panels as it might confuse the user by displaying too much information initially.

Note: When starting with two panels, please make sure that you show the first panel on size S initially. Otherwise, the user would directly see the second panel, which might be confusing.

Examples: Starting with two panels (Size XL and L)
Examples: Starting with two panels (Size XL and L)

Titles/Breadcrumbs/Up and Down Arrows

The application title is shown in the shell bar as long as there is more than one panel visible on the screen. In full screen, the page title is shown. This also applies in size S, where just one panel is visible.

The breadcrumbs and up/down arrows are hidden if there are multiple panels visible.

Application title in the shell bar
Application title in the shell bar
Page title in the shell bar
Page title in the shell bar

Bookmarks

Every layout inside the flexible column layout can be bookmarked. For example, if the user bookmarks a 3-panel layout with 25%/50%/25%, this layout should be loaded when accessing the bookmark.

Minimized Third Panel

When the user expands the first panel in a 3-panel layout, the third panel gets minimized. Close, full screen, and toggle actions also appear on the right-hand border of the second panel to allow the user to return to the original 3-panel layout.

Close: The second and third (minimized) panel close. A dialog can appear to warn the user if there is, for example, any unsaved information in the third panel.

Full screen: When the user clicks on full screen, the second panel goes into full-screen mode. The third panel remains open (but not visible), and closes as soon as the user selects another item in the second panel or uses the close action of the second panel. If the user selects the same (still open) item in the second panel, it opens in the same state as it appeared before minimizing it.

Toggle: The toogle action is only available in 33%/67% layout and will hide if the user is changing to a 67%/33% layout.

Example of minimized third panel (33%/67%)
Example of minimized third panel (33%/67%)

Using Close in Combination with Back Navigation

The back navigation should not restore a panel which was closed before by using the close icon  .

Example: The user closes the third panel by clicking the close icon   in the upper-right corner. If the user then navigates back (UI or browser), the second panel should close.

Using close in combination with back navigation
Using close in combination with back navigation

Three Panels in Size M

To provide a desktop-like experience in size M, the flexible column layout displays either the first and second or the second and third panel. The user can switch between both views by using the toggle action on the left or right side of the flexible column layout. Note: This behavior is only meant for size M and should not be used in size XL or L.

Three panel interaction in size M
Three panel interaction in size M

Letterboxing

Please do not use letterboxing in combination with the flexible column layout as it will reduce the size of the usable screen area.

Do

Do: Proper use of usable screen area
Do: Proper use of usable screen area

Don’t

Do not: Improper use of usable screen area with letterboxing
Do not: Improper use of usable screen area with letterboxing

Full Screen Navigation

When switching a panel to full-screen mode, selecting the back icon closes the full-screen mode.

When the user navigates forward inside the full-screen mode, the next panel should also appear in full-screen mode. The back navigation should go back in full screen until the point in which the user initially switched to full screen. Then, the back icon should bring the user back to the multi-panel mode.

Example of using the full screen in combination with navigation
Example of using the full screen in combination with navigation

SAP Fiori Elements

The flexible column layout is available in SAP Fiori elements for scenarios that use draft handling. If you use draft handling, we strongly recommend using the SAP Fiori elements implementation, wherever possible. The implementation already includes the navigation and routing behavior, as well as the Close and Full Screen actions, for example.

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page (Layout + SAP Fiori Elements)

The dynamic page is a new layout control designed to support various floorplans and use cases. The layout is fully responsive and is set to be the successor of the full screen layout.

The dynamic page header enables the user to focus on the actual content, while still keeping the most important information and actions of the header available to provide additional value to the user.

The dynamic page layout is a generic control. The content of the dynamic page header as well as the content of the page differs from floorplan to floorplan. The dynamic page header itself is a kind of container which can be used for several controls. For detailed guidance, please refer to the corresponding floorplan article:

The dynamic page is already incorporated within all SAP Fiori element floorplans.

The footer toolbar is also part of the dynamic page layout and is used for closing or finalizing actions that impact the whole page.

Usage

Use the dynamic page layout if:

  • You are building a freestyle application that uses the dynamic page header and footer toolbar features of SAP Fiori 2.0 (versions 1.40 and higher).

Do not use the dynamic page layout if:

  • You are planning to use SAP Fiori Elements, such as list reportoverview pageobject page, which already incorporate the dynamic page layout.
  • You want to implement an initial page or object page floorplan, as they already incorporate the snapping header and footer toolbar features. The behavior is similar to the dynamic page, but the technical base is different.
  • You only need to display a small amount of information. In this case, use a dialog instead. If you cannot avoid using the dynamic page layout, use letterboxing to mitigate the issue.

Structure

Like all layouts, the dynamic page layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. It also provides the back navigation and the app title, including the navigation menu.

The dynamic page layout consists of three main areas:

  • The header title combined with global actions (always visible)
  • The header content (expandable/collapsible area)
  • The content of the page, with a footer toolbar and finalizing actions (optional).

Depending on your use case, you can either use one of the predefined floorplans, or create your own layout.

Components

Together, the header title (mandatory) and the header content (optional) form the dynamic page header.

Dynamic page layout - components (expanded mode)
Dynamic page layout - components (expanded mode)
Dynamic page layout - components (collapsed mode)
Dynamic page layout - components (collapsed mode)

The content of the dynamic page header and the page content differ from floorplan to floorplan. For detailed guidance and more information about the variations within the respective floorplans, please refer to the corresponding floorplan article:

There are different states for the dynamic page header. You can find further information in the Behavior and Interaction section of this article.

Header Title

The header title bar contains the following elements.

Mandatory Elements

  • Title
    Located to the left of the dynamic page header, the title is always visible. The title can contain the following components:

If the title does not use an actionable element (such as variant management or link), the header title text must be used to expand and collapse the corresponding header content (see the Behavior and Interaction section). Exceptions exist for two floorplans: The initial page contains an input field instead of the title and subtitle; and in the overview page, the header title and title text are optional when no filter bar is used within the header content.

Dynamic page layout - header title (expanded mode)
Dynamic page layout - header title (expanded mode)
Dynamic page layout - header title (collapsed mode)
Dynamic page layout - header title (collapsed mode)

Optional Elements

  • Breadcrumb
    Depending on the use case and the way that a floorplan is used, breadcrumb navigation can be added. The breadcrumb is located above the header title. It’s mainly used for displaying the hierarchy of subpages within the object page.
  • Subtitle
    The subtitle is often used to summarize the most important information pertaining to the collapsed header content.  For instance, it can be used to display the “Filtered by” information when a filter bar is used within the header content, such as with the list report, , or overview page. The subtitle can also be used to show information about the active tab within the worklist floorplan. Because the initial page contains an input field, no subtitle is needed. If the subtitle is used as a summary, it should be clickable to allow the user to expand/collapse the header content. This needs to be provided additionally to the entire clickable area of the header title bar (see Behavior and Interaction).
  • Key information
    Floorplans can also contain key information such as text, mini-facets, and KPI tags.
  • Global action toolbar
    Global actions for the entire floorplan should be placed on the right-hand side of the header title. The actions should be represented only with buttons, visualized either as text or icons. For more information, see header toolbar.
    In the collapsed mode, the header title incorporates all the same actions as with the expanded mode and keeps them actionable. Do not remove or disable the actions within the global action toolbar when the header content is collapsed.

Header Content

Located below the header title, the header content is optional.

Any components may be placed within the header content provided these follow the respective standard floorplan guidelines.

When the dynamic page header collapses, the header content is hidden. If the header content is empty, it can also be hidden. If there is no header content available, the header title will not be interactive, and hence no dynamic page header functionality will be provided.

Additionally, the header content includes a “Pin/Unpin” toggle action (optional feature), which allows the user to keep the expanded mode of the header title and all elements in the header content fixed even upon scrolling and clicking (see Behavior and Interaction).

Dynamic page layout - header content (unpinned)
Dynamic page layout - header content (unpinned)
Dynamic page layout - header content (pinned)
Dynamic page layout - header content (pinned)

Footer Toolbar

The footer toolbar is also an optional part of the dynamic page layout that provides the possibility of finalizing actions.

Dynamic page layout - footer toolbar
Dynamic page layout - footer toolbar

Responsiveness

The dynamic page layout offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to provide maximum flexibility, adapting automatically to small, medium, and large screen sizes.

Currently, global actions within the toolbar move first into the overflow menu. The toolbar follows the standard toolbar overflow guidelines by adding the available buttons to the overflow menu from right to left. If there is not enough space left, the title and subtitle text will wrap. The subtitle will wrap first in the second line.

Letterboxing means limiting the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability.

Dynamic page layout - With letterboxing on a desktop device
Dynamic page layout - With letterboxing on a desktop device

Behavior and Interaction

Dynamic Page Header

The header content collapses or expands on defined triggers (snap on scroll and snap on click) to show more from the actual content of the page.

In the collapsed mode, the header title can display additional key information such as a summary of the header content. The dynamic page header enables the user to focus on the actual work context by displaying the most important content. The footer toolbar isn’t affected by the snapping of the header.

By default, the header content is initially expanded with the dynamic page layout.

Dynamic page layout - snap on scroll
Dynamic page layout - snap on scroll
Dynamic page layout - snap on click
Dynamic page layout - snap on click
Dynamic page layout - pin/unpin
Dynamic page layout - pin/unpin

Snap on Scroll

Scrolling is the typical way to trigger the collapse of the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to snapped mode, and does not scroll out, but rather stays fixed. When the user scrolls up the page, the header content is again revealed while scrolling up.

Snap on Click

In addition to the snap on scroll function, the user can also expand/collapse the header content by clicking anywhere on the header title bar where there are no active elements (such as links, active buttons, and so on). Titles and subtitles are part of the clickable area and also trigger the manual expand/collapse interaction.

On desktop devices, the cursor will change from an arrow to a hand to support the user’s interaction. If the header is expanded and user clicks on the title bar, the header content collapses, and vice versa.

Exceptions

Exception when using a desktop-centric table such as the analytical table, the grid table, or the tree table:

Because desktop-centric tables use up all of the available screen space, there is no scrolling available for these, and hence no snap on scroll functionality. In this exceptional case, please provide an additional transparent button in the toolbar for collapsing/expanding with snap on click functionality. For example, Hide Filters/ Show Filters. In addition, as it is only expandable and collapsible via click interaction, the pin/unpin action in this case is obsolete and not provided.

This exceptional case is also true for chart container usage, as the chart container reacts similiarly as the desktop centric table using up all available screen space.

Dynamic page layout - desktop-centric usage example (expanded mode)
Dynamic page layout - desktop-centric usage example (expanded mode)
Dynamic page layout - desktop-centric usage example (collapsed mode)
Dynamic page layout - desktop-centric usage example (collapsed mode)

Pinning the Header Content

The header content also includes a pin icon (toggle button) on the right-hand side. Clicking the pin icon disables the snapping functionality of the header content. This enables the user to keep the expanded mode of the header title and all elements in the header content even when scrolling and clicking. This mode will remain fixed until the user once again clicks the pin icon. This feature is optional and, if not useful for your application, can be switched off.

The pin functionality is also not available for floorplans without scrollbars (see Exceptions above).

In the smartphone version, the pinning action isn’t provided as it would take up too much screen real estate.

Keyboard Interaction

The dynamic page header is a header that expands/collapses its content. The interaction design recommends exposing the expand functionality on click (on the header title bar) and on scroll events.

In addition, an optional expand button/link allows the user to manually expand the header via mouse interaction (see the exceptional case: desktop-centric table usage). This button is not embedded into the tab chain if the dynamic page header automatically expands while receiving keyboard focus.

For keyboard interaction, the dynamic page header expands automatically as soon as the content of the snapping header comes into focus via the keyboard, such as via tabbing or via group jumps (F6).

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Information
Please note that, not all keyboard interactions are already available within the current SAPUI5 version.
Key(s) Behavior
[TAB] Move focus to into dynamic page header – header title bar. Dynamic page header expands automatically.

If focus is inside the header content area, move focus to the next UI element within the header.

If focus is on last UI element within the header content area, leave the header. Collapse header content.

[SHIFT] + [TAB]  See TAB, in reverse order.
[F6] If focus is before the header title bar, set focus into the header title bar. Expand header content.

If focus is within the header content, move focus out of header and collapse header content.

[SHIFT] + [F6]   See F6, in reverse order.

Examples

The dynamic page layout is a generic control. The content of the dynamic page header as well as the content of the page differs from floorplan to floorplan. Here you can find examples of the frequently-used variant per floorplan. For detailed guidance, please refer to the corresponding floorplan article (overview pagelist reportworklistwizard).

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Multi-Instance Floorplan (Layout)

The multi-instance floorplan allows users to open multiple documents in a tabular view. After selecting items from a list, the user opens them in a tab container.

The user selects items from a list and clicks or taps on the
The user selects items from a list and clicks or taps on the "Show Items" button
The selected items are opened in the multi-instance handling floorplan
The selected items are opened in the multi-instance handling floorplan

Usage

Use multi-instance handling if you want to let users open and edit multiple items simultaneously (such as object pages or documents). Multi-instance handling also allows users to switch between items without having to move between multiple browser tabs.

Do not use multi-instance handling to open a single item.

Responsiveness

The multi-instance floorplan is controlled by the sap.m.TabContainer control. The tab container supports all three SAP Fiori responsive sizes: small, medium, and large.

Size S
Size S
Size M
Size M
Size L
Size L

Structure

The floorplan for multi-instance handling is a full screen floorplan.

Schematic visualization of multi-instance handling
Schematic visualization of multi-instance handling

The display mode of the multi-instance floorplan contains:

  • Tab container
  • Content

The edit and create modes of the multi-instance floorplan contain:

  • Tab container
  • Content
  • Footer toolbar for actions and messaging

Behavior and Interaction

Tab Container

Multi-instance handling – Tab container/Desktop
Multi-instance handling – Tab container/Desktop

The tab container is the backbone of the multi-instance floorplan. Users can use the tabs to navigate between the opened items. The tab container contains the opened tabs, the overflow mechanism, and the plus (  ) button for adding new items.

Tabs

The tabs represent the opened items. One tab is always active, while the others are inactive. The user can switch between tabs by clicking or tapping them in the tab container.

Each tab contains:

  • A title
    The title is the same as the title of the opened item. If the title is longer than 25 characters, the text will be truncated.
  • A Close Tab button
    The Close Tab button closes the tab. In size L, the button is shown only on the active tab. The Close Tab buttons on inactive tabs are shown only when the user hovers over them. In size M, the buttons are always visible. In size S, the buttons are also always visible in the overflow overview.

Unsaved Changes in Tabs

If one or more opened items in the tab container have unsaved changes, the corresponding tabs show visual notifications. An asterisk (*) after the title of the relevant tab indicates that the item has unsaved changes.

If the user clicks or taps the Close Tab button for a tab that has unsaved changes, a warning message appears.

If the user tries to exit multi-instance handling (by using the Back button or by navigating to a different floorplan) and there are tabs with unsaved changes, a warning message appears.

Warning message when closing a tab with unsaved changes
Warning message when closing a tab with unsaved changes
Warning message when navigating out of multi-instance handling when tabs still have unsaved changes
Warning message when navigating out of multi-instance handling when tabs still have unsaved changes

Closing the Last Tab

When the last remaining tab is closed, direct the user back to the original list from which the items were selected.

Overflow

The tab container has an overflow mechanism in case there are too many tabs for them all to be displayed on the screen.

If tabs are hidden in the overflow, the user can click or tap the overflow button (left or right) to scroll the tabs horizontally and show the hidden tabs.

An overflow overview button provides a list of all the opened tabs in a hierarchical dropdown menu, including those that are hidden in the overflow.

Close Tab buttons are also shown in the overflow overview dropdown list. In size L, the Close Tab buttons are shown only when the user hovers over them. In sizes M and S, the Close Tab buttons are always visible.

Button for Adding New Items

The tab container can have a button for adding new items, which appears as an icon () and is located on the far right of the tab container. When the user clicks or taps this button, a new empty item is created and a new tab is opened.

Only use the plus button if the application allows users to create new items or objects, such as a new sales order.

Do not use the plus button to create tabs without content.

Button for adding new items
Button for adding new items

Content Area

Since multi-instance handling shows instances of objects, use the the following floorplans in the content area:

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page Layout

The dynamic page is a new layout control designed to support various floorplans and use cases. The layout is fully responsive and is set to be the successor of the full screen layout.

The dynamic page header enables the user to focus on the actual content, while still keeping the most important information and actions of the header available to provide additional value to the user.

The dynamic page layout is a generic control. The content of the dynamic page header as well as the content of the page differs from floorplan to floorplan. The dynamic page header itself is a kind of container which can be used for several controls. For detailed guidance, please refer to the corresponding floorplan article:

The dynamic page is already incorporated within all SAP Fiori element floorplans.

The footer toolbar is also part of the dynamic page layout and is used for closing or finalizing actions that impact the whole page.

Usage

Use the dynamic page layout if:

  • You are building a freestyle application that uses the dynamic page header and footer toolbar features of SAP Fiori 2.0 (versions 1.40 and higher).

Do not use the dynamic page layout if:

  • You are planning to use SAP Fiori Elements, such as list reportoverview pageobject page, which already incorporate the dynamic page layout.
  • You want to implement an initial page or object page floorplan, as they already incorporate the snapping header and footer toolbar features. The behavior is similar to the dynamic page, but the technical base is different.
  • You only need to display a small amount of information. In this case, use a dialog instead. If you cannot avoid using the dynamic page layout, use letterboxing to mitigate the issue.

Structure

Like all layouts, the dynamic page layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. It also provides the back navigation and the app title, including the navigation menu.

The dynamic page layout consists of three main areas:

  • The header title combined with global actions (always visible)
  • The header content (expandable/collapsible area)
  • The content of the page, with a footer toolbar and finalizing actions (optional).

Depending on your use case, you can either use one of the predefined floorplans, or create your own layout.

Components

Together, the header title (mandatory) and the header content (optional) form the dynamic page header.

Dynamic page layout - components (expanded mode)
Dynamic page layout - components (expanded mode)
Dynamic page layout - components (collapsed mode)
Dynamic page layout - components (collapsed mode)

The content of the dynamic page header and the page content differ from floorplan to floorplan. For detailed guidance and more information about the variations within the respective floorplans, please refer to the corresponding floorplan article:

There are different states for the dynamic page header. You can find further information in the Behavior and Interaction section of this article.

Header Title

The header title bar contains the following elements.

Mandatory Elements

  • Title
    Located to the left of the dynamic page header, the title is always visible. The title can contain the following components:

If the title does not use an actionable element (such as variant management or link), the header title text must be used to expand and collapse the corresponding header content (see the Behavior and Interaction section). Exceptions exist for two floorplans: The initial page contains an input field instead of the title and subtitle; and in the overview page, the header title and title text are optional when no filter bar is used within the header content.

Dynamic page layout - header title (expanded mode)
Dynamic page layout - header title (expanded mode)
Dynamic page layout - header title (collapsed mode)
Dynamic page layout - header title (collapsed mode)

Optional Elements

  • Breadcrumb
    Depending on the use case and the way that a floorplan is used, breadcrumb navigation can be added. The breadcrumb is located above the header title. It’s mainly used for displaying the hierarchy of subpages within the object page.
  • Subtitle
    The subtitle is often used to summarize the most important information pertaining to the collapsed header content.  For instance, it can be used to display the “Filtered by” information when a filter bar is used within the header content, such as with the list report, , or overview page. The subtitle can also be used to show information about the active tab within the worklist floorplan. Because the initial page contains an input field, no subtitle is needed. If the subtitle is used as a summary, it should be clickable to allow the user to expand/collapse the header content. This needs to be provided additionally to the entire clickable area of the header title bar (see Behavior and Interaction).
  • Key information
    Floorplans can also contain key information such as text, mini-facets, and KPI tags.
  • Global action toolbar
    Global actions for the entire floorplan should be placed on the right-hand side of the header title. The actions should be represented only with buttons, visualized either as text or icons. For more information, see header toolbar.
    In the collapsed mode, the header title incorporates all the same actions as with the expanded mode and keeps them actionable. Do not remove or disable the actions within the global action toolbar when the header content is collapsed.

Header Content

Located below the header title, the header content is optional.

Any components may be placed within the header content provided these follow the respective standard floorplan guidelines.

When the dynamic page header collapses, the header content is hidden. If the header content is empty, it can also be hidden. If there is no header content available, the header title will not be interactive, and hence no dynamic page header functionality will be provided.

Additionally, the header content includes a “Pin/Unpin” toggle action (optional feature), which allows the user to keep the expanded mode of the header title and all elements in the header content fixed even upon scrolling and clicking (see Behavior and Interaction).

Dynamic page layout - header content (unpinned)
Dynamic page layout - header content (unpinned)
Dynamic page layout - header content (pinned)
Dynamic page layout - header content (pinned)

Footer Toolbar

The footer toolbar is also an optional part of the dynamic page layout that provides the possibility of finalizing actions.

Dynamic page layout - footer toolbar
Dynamic page layout - footer toolbar

Responsiveness

The dynamic page layout offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to provide maximum flexibility, adapting automatically to small, medium, and large screen sizes.

Currently, global actions within the toolbar move first into the overflow menu. The toolbar follows the standard toolbar overflow guidelines by adding the available buttons to the overflow menu from right to left. If there is not enough space left, the title and subtitle text will wrap. The subtitle will wrap first in the second line.

Letterboxing means limiting the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability.

Dynamic page layout - With letterboxing on a desktop device
Dynamic page layout - With letterboxing on a desktop device

Behavior and Interaction

Dynamic Page Header

The header content collapses or expands on defined triggers (snap on scroll and snap on click) to show more from the actual content of the page.

In the collapsed mode, the header title can display additional key information such as a summary of the header content. The dynamic page header enables the user to focus on the actual work context by displaying the most important content. The footer toolbar isn’t affected by the snapping of the header.

By default, the header content is initially expanded with the dynamic page layout.

Dynamic page layout - snap on scroll
Dynamic page layout - snap on scroll
Dynamic page layout - snap on click
Dynamic page layout - snap on click
Dynamic page layout - pin/unpin
Dynamic page layout - pin/unpin

Snap on Scroll

Scrolling is the typical way to trigger the collapse of the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to snapped mode, and does not scroll out, but rather stays fixed. When the user scrolls up the page, the header content is again revealed while scrolling up.

Snap on Click

In addition to the snap on scroll function, the user can also expand/collapse the header content by clicking anywhere on the header title bar where there are no active elements (such as links, active buttons, and so on). Titles and subtitles are part of the clickable area and also trigger the manual expand/collapse interaction.

On desktop devices, the cursor will change from an arrow to a hand to support the user’s interaction. If the header is expanded and user clicks on the title bar, the header content collapses, and vice versa.

Exceptions

Exception when using a desktop-centric table such as the analytical table, the grid table, or the tree table:

Because desktop-centric tables use up all of the available screen space, there is no scrolling available for these, and hence no snap on scroll functionality. In this exceptional case, please provide an additional transparent button in the toolbar for collapsing/expanding with snap on click functionality. For example, Hide Filters/ Show Filters. In addition, as it is only expandable and collapsible via click interaction, the pin/unpin action in this case is obsolete and not provided.

This exceptional case is also true for chart container usage, as the chart container reacts similiarly as the desktop centric table using up all available screen space.

Dynamic page layout - desktop-centric usage example (expanded mode)
Dynamic page layout - desktop-centric usage example (expanded mode)
Dynamic page layout - desktop-centric usage example (collapsed mode)
Dynamic page layout - desktop-centric usage example (collapsed mode)

Pinning the Header Content

The header content also includes a pin icon (toggle button) on the right-hand side. Clicking the pin icon disables the snapping functionality of the header content. This enables the user to keep the expanded mode of the header title and all elements in the header content even when scrolling and clicking. This mode will remain fixed until the user once again clicks the pin icon. This feature is optional and, if not useful for your application, can be switched off.

The pin functionality is also not available for floorplans without scrollbars (see Exceptions above).

In the smartphone version, the pinning action isn’t provided as it would take up too much screen real estate.

Keyboard Interaction

The dynamic page header is a header that expands/collapses its content. The interaction design recommends exposing the expand functionality on click (on the header title bar) and on scroll events.

In addition, an optional expand button/link allows the user to manually expand the header via mouse interaction (see the exceptional case: desktop-centric table usage). This button is not embedded into the tab chain if the dynamic page header automatically expands while receiving keyboard focus.

For keyboard interaction, the dynamic page header expands automatically as soon as the content of the snapping header comes into focus via the keyboard, such as via tabbing or via group jumps (F6).

The dynamic page header collapses as soon as the keyboard focus leaves the dynamic page header content area.

Information
Please note that, not all keyboard interactions are already available within the current SAPUI5 version.
Key(s) Behavior
[TAB] Move focus to into dynamic page header – header title bar. Dynamic pageheader expands automatically.

If focus is inside the header content area, move focus to the next UI element within the header.

If focus is on last UI element within the header content area, leave the header. Collapse header content.

[SHIFT] + [TAB]  See TAB, in reverse order.
[F6] If focus is before the header title bar, set focus into the header title bar. Expand header content.

If focus is within the header content, move focus out of header and collapse header content.

[SHIFT] + [F6]   See F6, in reverse order.

Examples

The dynamic page layout is a generic control. The content of the dynamic page header as well as the content of the page differs from floorplan to floorplan. Here you can find examples of the frequently-used variant per floorplan. For detailed guidance, please refer to the corresponding floorplan article (overview pagelist reportworklistwizard).

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Multi-Instance Handling Floorplan

The multi-instance handling floorplan allows users to open multiple documents in a tabular view. After selecting items from a list, the user opens them in a tab container.

The user selects items from a list and clicks or taps on the
The user selects items from a list and clicks or taps on the "Show Items" button
The selected items are opened in the multi-instance handling floorplan
The selected items are opened in the multi-instance handling floorplan

Usage

Use multi-instance handling if you want to let users open and edit multiple items simultaneously (such as object pages or documents). Multi-instance handling also allows users to switch between items without having to move between multiple browser tabs.

Do not use multi-instance handling to open a single item.

Responsiveness

The multi-instance handling floorplan is controlled by the sap.m.TabContainer control. The tab container supports all three SAP Fiori responsive sizes: small, medium, and large.

Size S
Size S
Size M
Size M
Size L
Size L

Structure

Multi-instance handling is a full-screen floorplan.

Schematic visualization of multi-instance handling
Schematic visualization of multi-instance handling

The display mode of the multi-instance handling floorplan contains:

  • Tab container
  • Content

The edit and create modes of the multi-instance handling floorplan contain:

  • Tab container
  • Content
  • Footer toolbar for actions and messaging

Behavior and Interaction

Tab Container

Multi-instance handling – Tab container/Desktop
Multi-instance handling – Tab container/Desktop

The tab container is the backbone of the multi instance handling floorplan. Users can use the tabs to navigate between the opened items. The tab container contains the opened tabs, the overflow mechanism, and the plus (  ) button for adding new items.

Tabs

The tabs represent the opened items. One tab is always active, while the others are inactive. The user can switch between tabs by clicking or tapping them in the tab container.

Each tab contains:

  • A title
    The title is the same as the title of the opened item. If the title is longer than 25 characters, the text will be truncated.
  • A Close Tab button
    The Close Tab button closes the tab. In size L, the button is shown only on the active tab. The Close Tab buttons on inactive tabs are shown only when the user hovers over them. In size M, the buttons are always visible. In size S, the buttons are also always visible in the overflow overview.

Unsaved Changes in Tabs

If one or more opened items in the tab container have unsaved changes, the corresponding tabs show visual notifications. An asterisk (*) after the title of the relevant tab indicates that the item has unsaved changes.

If the user clicks or taps the Close Tab button for a tab that has unsaved changes, a warning message appears.

If the user tries to exit multi-instance handling (by using the Back button or by navigating to a different floorplan) and there are tabs with unsaved changes, a warning message appears.

Warning message when closing a tab with unsaved changes
Warning message when closing a tab with unsaved changes
Warning message when navigating out of multi-instance handling when tabs still have unsaved changes
Warning message when navigating out of multi-instance handling when tabs still have unsaved changes

Closing the Last Tab

When the last remaining tab is closed, direct the user back to the original list from which the items were selected.

Overflow

The tab container has an overflow mechanism in case there are too many tabs for them all to be displayed on the screen.

If tabs are hidden in the overflow, the user can click or tap the overflow button (left or right) to scroll the tabs horizontally and show the hidden tabs.

An overflow overview button provides a list of all the opened tabs in a hierarchical dropdown menu, including those that are hidden in the overflow.

Close Tab buttons are also shown in the overflow overview dropdown list. In size L, the Close Tab buttons are shown only when the user hovers over them. In sizes M and S, the Close Tab buttons are always visible.

Button for Adding New Items

The tab container can have a button for adding new items, which appears as an icon () and is located on the far right of the tab container. When the user clicks or taps this button, a new empty item is created and a new tab is opened.

Only use the plus button if the application allows users to create new items or objects, such as a new sales order.

Do not use the plus button to create tabs without content.

Button for adding new items
Button for adding new items

Content Area

Since multi-instance handling shows instances of objects, use the the following floorplans in the content area:

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Multi-Instance Handling Floorplan

The multi-instance handling floorplan allows users to open multiple documents in a tabular view. After selecting items from a list, the user opens them in a tab container.

The user selects items from a list and clicks or taps on the
The user selects items from a list and clicks or taps on the "Show Items" button
The selected items are opened in the multi-instance handling floorplan
The selected items are opened in the multi-instance handling floorplan

Usage

Use multi-instance handling if you want to let users open and edit multiple items simultaneously (such as object pages or documents). Multi-instance handling also allows users to switch between items without having to move between multiple browser tabs.

Responsiveness

The multi-instance handling floorplan is controlled by the sap.m.TabContainer control. The tab container supports all three SAP Fiori responsive sizes: small, medium, and large.

Size S
Size S
Size M
Size M
Size L
Size L

Structure

Multi-instance handling is a full screen floorplan.

Schematic visualization of multi instance handling
Schematic visualization of multi instance handling

The display mode of the multi instance handling floorplan contains:

  • Tab container
  • Content

The edit and create modes of the multi instance handling floorplan contain:

  • Tab container
  • Content
  • Footer toolbar for actions and messaging

Behavior and Interaction

Tab Container

Multi instance handling – Tab container / Desktop
Multi instance handling – Tab container / Desktop

The tab container is the backbone of the multi instance handling floorplan. Users can use the tabs to navigate between the opened items. The tab container contains the opened tabs, the overflow mechanism, and the plus (  ) button for adding new items.

Tabs

The tabs represent the opened items. One tab is always active, while the others are inactive. The user can switch between tabs by clicking or tapping them in the tab container.

Each tab contains:

  • A title
    The title is the same as the title of the opened item. If the title is longer than 25 characters, the text will be truncated.
  • A Close Tab button
    The Close Tab button closes the tab. In size L, the button is shown only on the active tab. The Close Tab buttons on inactive tabs are shown only when the user hovers over them. In size M, the buttons are always visible. In size S, the buttons are also always visible in the overflow overview.

Unsaved Changes in Tabs

If one or more opened items in the tab container have unsaved changes, the corresponding tabs show visual notifications. An asterisk (*) after the title of the relevant tab indicates that the item has unsaved changes.

If the user clicks or taps the Close Tab button for a tab that has unsaved changes, a warning message appears.

If the user tries to exit multi-instance handling (by using the Back button or by navigating to a different floorplan) and there are tabs with unsaved changes, a warning message appears.

Warning message when closing a tab with unsaved changes
Warning message when closing a tab with unsaved changes
Warning message when navigating out of multi-instance handling when tabs still have unsaved changes
Warning message when navigating out of multi-instance handling when tabs still have unsaved changes

Closing the Last Tab

When the last remaining tab is closed, direct the user back to the original list from which the items were selected.

Overflow

The tab container has an overflow mechanism in case there are too many tabs for them all to be displayed on the screen.

If tabs are hidden in the overflow, the user can click or tap the overflow button (left or right) to scroll the tabs horizontally and show the hidden tabs.

An overflow overview button provides a list of all the opened tabs in a hierarchical dropdown menu, including those that are hidden in the overflow.

Close Tab buttons are also shown in the overflow overview dropdown list. In size L, the Close Tab buttons are shown only when the user hovers over them. In sizes M and S, the Close Tab buttons are always visible.

Button for Adding New Items

The tab container can have a button for adding new items, which appears as a plus ( )  icon and is located on the far right of the tab container. When the user clicks or taps this button, a new empty item is created and a new tab is opened.

Only use the plus button if the application allows users to create new items or objects, such as a new sales order.

Do not use the plus button to create tabs without content.

Button for adding new items
Button for adding new items

Content Area

Since multi-instance handling shows instances of objects, use the the following floorplans in the content area:

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Multi-Instance Handling Floorplan

The multi-instance handling floorplan allows users to open multiple documents in a tabbed view. After selecting items from a list, the user opens them in a tab container.

The user selects items from a list and clicks or taps on the
The user selects items from a list and clicks or taps on the "Show Items" button
The selected items are opened in the multi-instance handling floorplan
The selected items are opened in the multi-instance handling floorplan

Usage

Use multi-instance handling if you want to let users open and edit multiple items simultaneously (such as object pages or documents). Multi-instance handling also allows users to switch between items without having to move between multiple browser tabs.

Responsiveness

The multi-instance handling floorplan is controlled by the sap.m.TabContainer control. The tab container supports all three SAP Fiori responsive sizes: small, medium, and large.

Size S
Size S
Size M
Size M
Size L
Size L

Structure

Multi-instance handling is a full screen floorplan.

Schematic visualization of multi instance handling
Schematic visualization of multi instance handling

The display mode of the multi instance handling floorplan contains:

  • Tab container
  • Content

The edit and create modes of the multi instance handling floorplan contain:

  • Tab container
  • Content
  • Footer toolbar for actions and messaging

Behavior and Interaction

Tab Container

Multi instance handling – Tab container
Multi instance handling – Tab container

The tab container is the backbone of the multi instance handling floorplan. Users can use the tabs to navigate between the opened items. The tab container contains the opened tabs, the overflow mechanism, and the plus (  ) button for adding new items.

Tabs

The tabs represent the opened items. One tab is always active, while the others are inactive. The user can switch between tabs by clicking or tapping them in the tab container.

Each tab contains:

  • A title
    The title is the same as the title of the opened item. If the title is longer than 25 characters, the text is truncated.
  • A Close Tab button
    The Close Tab button closes the tab. In size L, the button is shown only on the active tab. The Close Tab buttons on inactive tabs are shown only when the user hovers over them. In size M, the buttons are always visible. In size S, the buttons are also always visible in the overflow overview.

Unsaved Changes in Tabs

If one or more opened items in the tab container have unsaved changes, the corresponding tabs show visual notifications. An asterisk (*) after the title of the relevant tab indicates that the item has unsaved changes.

If the user clicks or taps the Close Tab button for a tab that has unsaved changes, a warning message appears.

If the user tries to exit multi-instance handling (by using the Back button or by navigating to a different floorplan) and there are tabs with unsaved changes, a warning message appears.

Warning message when closing a tab with unsaved changes
Warning message when closing a tab with unsaved changes
Warning message when navigating out of multi-instance handling when tabs still have unsaved changes
Warning message when navigating out of multi-instance handling when tabs still have unsaved changes

Closing the Last Tab

When the last remaining tab is closed, the user should be directed back to the original list where the item selection started.

Overflow

The tab container has an overflow mechanism in case there are too many tabs for them all to be displayed on the screen.

If tabs are hidden in the overflow, the user can click or tap the overflow button (left or right) to scroll the tabs horizontally and show the hidden tabs.

An overview overflow button provides a list of all the opened tabs in a hierarchical dropdown menu, including those that are hidden in the overflow.

Close Tab buttons are also shown in the overflow overview dropdown list. In size L, the Close Tab buttons are shown only when the user hovers over them. In sizes M and S, the Close Tab buttons are always visible.

Button for Adding New Items

The tab container can have a button for adding new items, which appears as a plus ( ) icon and is located on the far right of the tab container. When the user clicks or taps this button, a new empty item is created and a new tab is opened.

Only use the plus button if the application allows users to create new items or objects, such as a new sales order.

Do not use the plus button to create tabs without content.

Button for adding new items
Button for adding new items

Content Area

Since multi-instance handling shows instances of objects, use the the following floorplans in the content area:

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation

Dynamic Page Layout

The dynamic page is a new layout control designed to support various floorplans and use cases. The layout is fully responsive and is set to be the successor of the full screen layout.

The dynamic page header enables the user to focus on the actual content, while still keeping the most important information and actions of the header available to provide additional value to the user.

The dynamic page layout is a generic control. The content of the dynamic page header as well as the content of the page differs from floorplan to floorplan. The dynamic page header itself is a kind of container which can be used for several controls. For detailed guidance, please refer to the corresponding floorplan article:

The dynamic page is already incorporated within all SAP Fiori element floorplans.

The footer toolbar is also part of the dynamic page layout and is used for closing or finalizing actions that impact the whole page.

Usage

Use the dynamic page layout if:

  • You are building a freestyle application that uses the dynamic page header and footer toolbar features of SAP Fiori 2.0 (versions 1.40 and higher).

Do not use the dynamic page layout if:

  • You are planning to use SAP Fiori Elements, such as list reportoverview pageobject page, which already incorporate the dynamic page layout.
  • You want to implement an initial page or object page floorplan, as they already incorporate the snapping header and footer toolbar features. The behavior is similar to the dynamic page, but the technical base is different.
  • You only need to display a small amount of information. In this case, use a dialog instead. If you cannot avoid using the dynamic page layout, use letterboxing to mitigate the issue.

Structure

Like all layouts, the dynamic page layout is embedded in the shell bar of the SAP Fiori launchpad. From the shell bar, users have access to the launchpad services, including the home page, search, settings, and help. Apps are embedded in the shell and have little influence over its features. It also provides the back navigation and the app title, including the navigation menu.

The dynamic page layout consists of three main areas:

  • The header title combined with global actions (always visible)
  • The header content (expandable/collapsible area)
  • The content of the page, with a footer toolbar and finalizing actions (optional).

Depending on your use case, you can either use one of the predefined floorplans, or create your own layout.

Components

Together, the header title (mandatory) and the header content (optional) form the dynamic page header.

Dynamic page layout - components (expanded mode)
Dynamic page layout - components (expanded mode)
Dynamic page layout - components (collapsed mode)
Dynamic page layout - components (collapsed mode)

The content of the dynamic page header and the page content differ from floorplan to floorplan. For detailed guidance and more information about the variations within the respective floorplans, please refer to the corresponding floorplan article:

There are different states for the dynamic page header. You can find further information in the Behavior and Interaction section of this article.

Header Title

The header title bar contains the following elements.

Mandatory Elements

  • Title
    Located to the left of the dynamic page header, the title is always visible. The title can contain the following components:

If the title does not use an actionable element (such as variant management or link), the header title text must be used to expand and collapse the corresponding header content (see the Behavior and Interaction section). Exceptions exist for two floorplans: The initial page contains an input field instead of the title and subtitle; and in the overview page, the header title and title text are optional when no filter bar is used within the header content.

Dynamic page layout - header title (expanded mode)
Dynamic page layout - header title (expanded mode)
Dynamic page layout - header title (collapsed mode)
Dynamic page layout - header title (collapsed mode)

Optional Elements

  • Breadcrumb
    Depending on the use case and the way that a floorplan is used, breadcrumb navigation can be added. The breadcrumb is located above the header title. It’s mainly used for displaying the hierarchy of subpages within the object page.
  • Subtitle
    The subtitle is often used to summarize the most important information pertaining to the collapsed header content.  For instance, it can be used to display the “Filtered by” information when a filter bar is used within the header content, such as with the list report,  or overview page. The subtitle can also be used to show information about the active tab within the worklist floorplan. Because the initial page contains an input field, no subtitle is needed. If the subtitle is used as a summary, it should be clickable to allow the user to expand/collapse the header content. This needs to be provided additionally to the entire clickable area of the header title bar (see Behavior and Interaction).
  • Key information
    Floorplans can also contain key information such as text, mini-facets, and KPI tags.
  • Global action toolbar
    Global actions for the entire floorplan should be placed on the right-hand side of the header title. The actions should be represented only with buttons, visualized either as text or icons. For more information, see header toolbar.
    In the collapsed mode, the header title incorporates all the same actions as with the expanded mode and keeps them actionable. Do not remove or disable the actions within the global action toolbar when the header content is collapsed.

Header Content

Located below the header title, the header content is optional.

Any components may be placed within the header content provided these follow the respective standard floorplan guidelines.

When the dynamic page header collapses, the header content is hidden. If the header content is empty, it can also be hidden. If there is no header content available, the header title will not be interactive, and hence no dynamic page header functionality will be provided.

Additionally, the header content includes a “Pin/Unpin” toggle action (optional feature), which allows the user to keep the expanded mode of the header title and all elements in the header content fixed even upon scrolling and clicking (see Behavior and Interaction).

Dynamic page layout - header content (unpinned)
Dynamic page layout - header content (unpinned)
Dynamic page layout - header content (pinned)
Dynamic page layout - header content (pinned)

Footer Toolbar

The footer toolbar is also an optional part of the dynamic page layout that provides the possibility of finalizing actions.

Dynamic page layout - footer toolbar
Dynamic page layout - footer toolbar

Responsiveness

The dynamic page layout offers considerable freedom and flexibility. In addition, the dynamic page header and the footer toolbar are designed to provide maximum flexibility, adapting automatically to small, medium, and large screen sizes.

Currently, global actions within the toolbar move first into the overflow menu. The toolbar follows the standard toolbar overflow guidelines by adding the available buttons to the overflow menu from right to left. If there is not enough space left, the title and subtitle text will wrap. The subtitle will wrap first in the second line.

Letterboxing means limiting the width of the content area to 1280 px. This prevents the app content from becoming too “stretched” on wide screens, and optimizes readability.

Dynamic page layout - With letterboxing on a desktop device
Dynamic page layout - With letterboxing on a desktop device

Behavior and Interaction

Dynamic Page Header

The header content collapses or expands on defined triggers (snap on scroll and snap on click) to show more from the actual content of the page.

In the collapsed mode, the header title can display additional key information such as a summary of the header content. The dynamic page header enables the user to focus on the actual work context by displaying the most important content. The footer toolbar isn’t affected by the snapping  of the header.

By default, the header content is initially expanded with the dynamic page layout.

Dynamic page layout - snap on scroll
Dynamic page layout - snap on scroll
Dynamic page layout - snap on click
Dynamic page layout - snap on click
Dynamic page layout - pin/unpin
Dynamic page layout - pin/unpin

Snap on Scroll

Scrolling is the typical way to trigger the collapse of the header content. When the user scrolls down the page, the header content scrolls away. The header title switches to snapped mode, and does not scroll out, but rather stays fixed. When the user scrolls up the page, the header content is again revealed while scrolling up.

Snap on Click

In addition to the snap on scroll function, the user can also expand/collapse the header content by clicking anywhere on the header title bar where there are no active elements (such as links, active buttons, and so on). Titles and subtitles are part of the clickable area and also trigger the manual expand/collapse interaction.

On desktop devices, the cursor will change from an arrow to a hand to support the user’s interaction. If the header is expanded and user clicks on the title bar, the header content collapses, and vice versa.

Exceptions

Exception when using a desktop-centric table such as the analytical table, the grid table, or the tree table:

Because desktop-centric tables use up all of the available screen space, there is no scrolling available for these, and hence no snap on scroll functionality. In this exceptional case, please provide an additional transparent button in the toolbar for collapsing/expanding with snap on click functionality. For example, Hide Filters/ Show Filters. In addition, as it is only expandable and collapsible via click interaction, the pin/unpin action in this case is obsolete and not provided.

Dynamic page layout - desktop-centric usage example (expanded mode)
Dynamic page layout - desktop-centric usage example (expanded mode)
Dynamic page layout - desktop-centric usage example (collapsed mode)
Dynamic page layout - desktop-centric usage example (collapsed mode)

Pinning the Header Content

The header content also includes a pin icon (toggle button) on the right-hand side. Clicking the pin icon disables the snapping functionality of the header content. This enables the user to keep the expanded mode of the header title and all elements in the header content even when scrolling and clicking. This mode will remain fixed until the user once again clicks the pin icon. This feature is optional and, if not useful for your application, can be switched off.

The pin functionality is also not available for floorplans without scrollbars (see Exceptions above).

In the smartphone version, the pinning action isn’t provided as it would take up too much screen real estate.

Examples

The dynamic page layout is a generic control. The content of the dynamic page header as well as the content of the page differs from floorplan to floorplan. Here you can find examples of the frequently-used variant per floorplan. For detailed guidance, please refer to the corresponding floorplan article (overview pagelist reportworklistwizard).

Resources

Want to dive deeper? Follow the links below to find out more about related controls, the SAPUI5 implementation, and the visual design.

Elements and Controls

Implementation