Flag and Favorite

You can let users flag objects for follow-up, or mark frequently-used objects as favorites. When an object is flagged or marked as a favorite, the corresponding object marker appears next to it:

  • A small flag indicates that the object is flagged.
  • A small star indicates that the object is marked as a favorite.
"Flag" and "Favorite" icons
Object marked as a favorite
Object marked as a favorite

Usage

  • Offer the Flag option if users need to flag objects for later reference and follow-up.
  • Offer the Favorite option if users need to mark frequently-used objects.
Information
The flag and favorite behavior is not support by SAP Fiori Elements
Information
The markFlagged and markFavorite properties are deprecated for the object header (sap.m.ObjectHeader) and the object list item (sap.m.ObjectListItem). When using these controls, please use the marker aggregation of sap.m.ObjectMarker instead.

Responsiveness

The Flag and Favorite markers are normally displayed as icons (rather than text) on all screen sizes. If you implement the overflow toolbar, you can specify how the Flag and Favorite actions are handled when there is a shortage of space on the toolbar (move to overflow menu as necessary, always show on toolbar, always show in the overflow menu). For more information, see the toolbar overview.

Favorite icon shown in the overflow
Favorite icon shown in the overflow

Layout

The position of the flag or favorite marker depends on the UI control or floorplan. The button for making the setting appears in the relevant toolbar.

Object Header (Object Page)

In the object header, the markers appear right next to object title. The icon button for setting the status appears in the header toolbar.

Object marked as a favorite in the object header
Object marked as a favorite in the object header

Object List item

In an object list item, the marker appears in the first status line.

Flagged item in an object list
Flagged item in an object list

Tables

In tables and  list reports, the marker for a line item shows right beside the checkbox. To make the settings, users need to drill down into the object itself.

List report item marked as a favorite
List report item marked as a favorite

Custom List Item

In custom lists, the position of the Flag or Favorite icon depends on whether it is read-only or interactive:

  • If the Flag or Favorite marker is read-only, place it after the text.
  • If the Flag or Favorite marker is interactive, place it before the text.

Behavior and Interaction

Users switch the setting on or off by clicking the Flag or Favorite button (icon), which behaves as a toggle.

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

Worklist Floorplan

Information
This floorplan is available as an SAP Fiori Element.

For information on the default settings and other options for the SAP Fiori element implementation, see Worklist in the SAP Fiori Elements section.

Intro

A worklist displays a collection of items a user needs to process. Working through the list usually involves reviewing details of the items and taking action. In most cases, the user has to either complete a work item or delegate it.

The worklist is a versatile floorplan that offers three main variants: a simple worklist (plain page with a table), a worklist with tabs, and a worklist with one or more KPI tags. These variants are based on different user needs and use cases. For more details, see the options under Components.

Simple worklist
Simple worklist
Worklist with tabs
Worklist with tabs
Worklist with KPI
Worklist with KPI

When to Use

Use the worklist floorplan if:

  • Users have numerous work items and need to decide which ones to process first.
  • You want to give users a direct entry point for taking action on work items.
  • Users need to work with multiple views of the same content (for example, items that are “Open”, “In Process”, or “Completed”). You want to offer tabs for switching between views.

Do not use the worklist floorplan if:

  • The items you are showing are not work items.
  • You want to show large item lists, or combine different data visualizations (charts or tables). In this case, use the list report floorplan instead.
  • Users need to find and act on relevant items from within a large set of items by searching, filtering, sorting, and grouping. Use the list report floorplan instead.

Components

The worklist floorplan is based on the dynamic page layout and is divided into a header and the page content. The header has a header title, but no header content. As a result, the expand/collapse and pin features are not needed.

The worklist consists of the following areas:

  1. The header title containing:
  2. The content area displaying:
  3.  A footer toolbar (optional) including:

Header Title

Variant Management

Variant management is optional. If used, apply it to the whole page. Use the variants to save and restore all settings, including selected tabs, all tables, and all personalization settings.

If variant management is not needed, just show a title that describes the view.

Key performance indicator/ KPI

The key performance indicator (KPI) allows users to track the impact of their actions while processing the worklist. You can display one or more KPIs within the KPI container next to the page title to show the status/criticality of the tag.

Header Toolbar (Global Actions)

Use the header toolbar for global actions, such as Share. Do not place actions that finalize the current process (“finalizing actions”) on the header toolbar of the header title, even if they affect the entire page.

For more information, see Global Actions.

Content Area

Tab Bar

The tab bar is part of the page content container, and must be sticky.

In the worklist, the icon tab bar works as a filter on the content below. It enables users to call up work items in specific categories. This can help users to identify critical items more easily. Different tabs show different perspectives on the same dataset.

Guidelines

  • Display the number of items shown in the table on each tab (sap.m.IconTabFilter, property: count).
  • Only use icons if you need to display semantic colors on the icon tab bar. You can offer visual orientation by applying semantic colors to the icons for the different categories (for example, red for the Error tab).
  • Bear in mind that each tab in an icon tab bar contains its own table toolbar.

Table Toolbar

Display at least a table title (ideally with an item count) and, if needed, icon-only buttons for sorting, grouping, and column settings. For filter, sort, and group, show a view settings dialog with only the corresponding features enabled. For column settings, show the table personalization dialog. If you need more extensive functionality (for example, grouping or sorting on several levels, tables with more than 20 columns), use the P13n-Dialog with just the corresponding feature enabled.

Table

In general, you can use any kind of table and list for the worklist floorplan in the content area.

If there are no items to display, use the “no data text” for the corresponding table. Explain why the table is empty, and what the user needs to do to display items. For more information and examples see: “No data” texts.

The most basic version of the worklist is the simple worklist: a plain page with a table.

Simple worklist without tabs
Simple worklist without tabs

Footer Toolbar

The footer toolbar is an optional component of the worklist floorplan. Only use it if finalizing actions for the whole page and/or the message popover are required. Keep in mind that the footer toolbar is only visible in edit mode. For more information, see the guidelines for the footer toolbar.

Guidelines
Follow the standard naming conventions for all objects, the object name, action buttons, and the title in the shell bar. For more information, see:

Behavior and Interaction

Initial Focus

When the worklist is loaded, set the initial focus as follows:

  • If the worklist contains only a table, set the focus on the first line item of the table.
  • If the worklist contains an icon tab bar, set the focus on the first tab.

Sticky Behavior

The tab bar, table toolbar, and column headers must all be “sticky”. This means that they stay fixed at the top when the user scrolls down the page. 

Table Navigation

The worklist floorplan supports three types of navigation at item level:

  • Line item navigation: If applicable, allow navigation to a detail view (usually an object page) at line item level. Show a navigation indicator (chevron icon) for each line item that provides a detail view. In a listtree, or responsive table, clicking the line item triggers the navigation. In a grid tableanalytical table, or tree table, clicking the navigation indicator triggers the navigation. Another option is to use a link as the identifier for the line item. This link triggers the navigation. Use it only if the navigation indicator points to a different target.
  • Drilldown navigation: If a line item contains aggregated data, allow navigation to a view that contains details for the aggregated amount. This is usually a list report. Use a link to display the aggregated amount. If the table contains many columns with links, use the link options to provide different levels of highlighting. In charts, offer the drilldown navigation link in the popover for the chart element, and navigate to the corresponding list report to show the details.
  • Cross navigation: If a line item contains a cross-reference to another entity, such as a person or business object, use a link to display the corresponding data point in the table. Triggering the link opens a quick view.

Actions

Action placement in the worklist
Action placement in the worklist

The worklist offers four locations for actions:

  1. Global actions in the header toolbar
  2. Table actions in the table toolbar
  3. Line item actions
  4. Finalizing actions in the footer toolbar
Guidelines

  • Hide actions that cannot be used. This can be the case if the user has no authorization or the line item has the wrong state.
  • To save space, group similar actions using a menu button. For example: 
    • Release and Release with Conditions
    • Add Contact and Replace Contact
    • Edit Account and Edit Title
  • If there is not enough space to show all actions, they are moved to an overflow menu, depending on their priority. For more information, see Action Placement. 

1. Global Actions

Place actions that affect the entire page in the header title within the header toolbar. Examples of global actions are EditDelete, or Share.
Actions in the header toolbar are always right-aligned. Emphasize the most important action and place it on the very left.

For more information, see Header Toolbar.

2. Table Actions

Place actions that affect the content of a table in the table toolbar.

When to Enable, Disable, or Hide Actions

Indicate whether an action is available. Some actions are always available, such as Create for new objects. Other actions are only relevant if items have been selected. For example, Edit at item level, Remove, object-specific actions, or actions that change the status of an item.

Enable the following actions:

  • All Add/Create actions, unless the user needs to specify where in the table the new item should be added.
  • Edit actions that switch the entire table to edit mode (independent of the selected items).
    If the user triggers the Edit button, replace it with Save and Cancel buttons (see Editing the Whole Table).
  • Item-dependent actions that can be applied to some or all of the selected items.

Disable the following actions:

  • Item-dependent actions (such as Delete) when no items or only unsuitable items have been selected .
  • Add/Create actions where the user needs to specify the insert position in the table, but either no item has been selected, or more than one item has been selected.

For more information, see UI Element States – Control States.

Partial Processing

Allow the user to apply the changes to as many of the selected items as possible.

If an action can’t be applied to all selected items, show a warning message before executing the action:

  • Indicate the number of selected items that can’t be processed (out of the total number of selected items).
  • Give a reason why the action can’t be applied to these items.
  • Let the user choose whether to apply the action to the remaining items anyway or cancel the action.

See an example here.

Note: In some scenarios, you might not be able to identify whether an action can be applied to all selected items before executing it. If the system is unable to apply the action to all items, show a message after executing the action.

Sort, Group, Personalization

Decide if you need to provide sorting, grouping or personalization for your use case. If you offer more than one of these actions, offer them as single actions. We recommend keeping them in the following order: Sort, GroupPersonalization.

For more information on table and chart actions, see:

3. Line Item Actions

In rare cases, actions that affect a single item can be placed directly inside the line item. Use this option only for specific, frequently-used tasks. If the same action can also be applied to several items at once, you can also place it on the table toolbar. However, if you do so, reconsider whether you really need to offer the action at line item level. For more information, see Actions in Table Rows.

Examples of line item actions include: Start/Stop (a batch job), Approve (an item) or Assign (an item).

Do not disable line item actions. If an action can’t be used, hide it.

4. Finalizing Actions

Place actions that trigger the end of a process and affect the entire page in the footer toolbar. Examples of finalizing actions include SaveCancel, and Submit.

Bear in mind that even if you are using the icon tab bar, there is only one footer toolbar for all tabs.

Guidelines
Often, users will need more information before they can take action. If this is the case, offer navigation to the work item details, and show all the relevant actions in the detail screen. Once the user has completed the task, the app should:

  • Return the user to the worklist
  • Remove the processed item from the list, or move it to a “completed” section
  • Confirm the user’s action with a message toast

Responsiveness

The Grid tableanalytical table, and tree table are supported on desktop and tablet devices only so you cannot use them for mobile use cases. Instead, for these cases, take an adaptive approach:

  • Create a new Fiori application with reduced complexity, not an exact match of the desktop application.
  • With the new application, address the most important use cases for users in a mobile context. The responsive controls (responsive tablelist or tree,) or a relevant control for your use case (for example a chart or the category navigation pattern) may suffice.

For more details, see the respective guideline articles.

Worklist floorplan - Size L/XL
Worklist floorplan - Size L/XL
Worklist floorplan - Size M
Worklist floorplan - Size M
Worklist floorplan - Size S
Worklist floorplan - Size S

Examples

Worklist floorplan - Size L/XL
Worklist floorplan - Size L/XL
Worklist floorplan - Size M
Worklist floorplan - Size M
Worklist floorplan - Size S
Worklist floorplan - Size S

Top Tips

General

  • Decide whether the worklist or the list report is the right floorplan for your needs: The focus of the worklist floorplan is on processing items. This differs from the list report floorplan, which focuses on finding and acting on relevant items from a large dataset.
  • Choose one of the three basic worklist variants, based on your use case and the user’s needs.

Header

  • Always display a title or offer variant management.

Content

  • Responsive table is the only fully responsive table. Analytical table, tree table and grid table are not fully responsive. They are available only for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • In the table toolbar, display at least a table title (ideally with an item count). If needed, offer icon-only buttons for sorting, grouping, and column settings.
  • The tab bar, table toolbar, and column headers of all table types must all be sticky.

Footer Toolbar

  • If you are using the icon tab bar, remember that there is only one footer toolbar for all tabs.
  • Only use the footer toolbar if finalizing actions for the whole page and/or the message popover are available.

Related Links

Elements and Controls

Implementation

Image

Images are a powerful way to capture the user’s attention and to communicate your message. You can use the image control to integrate images into your apps for dedicated purposes.

When to Use

Use the image control if:

  • You want to display decorative images. Decorative images serve as a visual eyecatcher and are useful to transport the brand identity. Usually, decorative images are used as hero images, headers, or background images.
  • You want to display images to support or enhance the page content (for example, visual representations of an object’s design, functions, or features).
  • You want to display images in a gallery.

Do not use the image control if:

  • You want to display an image, initials, or a placeholder for a person. Use the avatar instead.
  • You want to display standardized images for business-related content (such as products, parts, product and company logos, or ad campaign images). Use the avatar instead.
  • You want to display icons. Use the avatar instead.
  • You want to display images with a transparent background. Use the avatar instead.
  • You want to display a placeholder image. Use the avatar instead.
  • You want to display pictures in a carousel. Use the carousel control instead.

Behavior and Interaction

Images can be non-interactive or interactive. Most commonly, clicking an image opens a lightbox or new tab/window and displays a larger version of the image. If you plan to open a popover or dialog, ensure that this information is announced by the screen reader beforehand (property: ariaHasPopup).

The control also offers an image map option, where one image can have several click areas. Don’t use this option. It’s a relic of past times and has the potential to cause usability issues.

Guidelines

Screen Reader Details

  • Provide an alternative text for each image for screen reader users. Use the alternative text to describe the visual content specifically for blind or visually impaired users. Only decorative images don’t require an alternative text. The alternative text can also be helpful for sighted users if the image is not available or cannot be displayed.
  • An image can be decorative only. Images are considered as decorative if the same information is also conveyed in another content element and the image content is secondary. In other words, if the image doesn’t provide any additional value, it’s decorative. Decorative images are not announced by screen readers.
  • In addition to the alternative text, you can also provide screen reader users with more details about an image (property: ariaDetails). For example, images that display technical or scientific content may require background knowledge to understand the image. In the image details, you can include this background knowledge in in text form. For example, if an image shows the construction of a turbine, and certain formulas are required to understand it, the details would describe the formulas first and then relate them to the displayed image content.

Image File and Quality

  • It is extremely important that you choose the right file format when saving your images. Four image formats are used consistently in browsers – PNG, JPG, GIF, and SVG.
  • When choosing the format for your image, always be conscious of the image quality and file size.
  • Optimize high-resolution images to avoid unnecessarily large files. Large image files can severely impede page performance.
Good quality
Good quality
Poor quality
Poor quality

Responsiveness

The image size adapts responsively to the screen size.

You can also set a fixed width and/or height for an image.

Images on size S
Images on size S
Images on size M
Images on size M
Images on size L
Images on size L

Examples

Image on a small screen
Image on a small screen
Image in a carousel
Image in a carousel

Related Links

Elements and Controls

Implementation

  • Image (SAPUI5 samples)
  • Image (SAPUI5 API reference)

Busy State

You can set a busy state for each SAPUI5 control. This function adapts to the space available on the UI.

When to Use

Use the busy state of the control if:

  • The operation takes more than one second (busy state set at control level)
  • You want to indicate that data is loading on a table or on a list after performing a search or filtering (set the busy state at table or list level).

Do not use the busy state if:

  • The operation lasts less than one second.
  • You expect several busy states at once. In this case, consider setting the busy state at a higher level or container.
  • You’re loading an app from the launchpad or navigating from an app to another. Use placeholder loading instead (when available in your framework).

Examples

Busy page
Busy page
Busy buttons
Busy buttons

Guidelines

Avoid showing multiple busy states at once. If you expect multiple busy states on various controls, you can set the busy state on a control or container above.

In some cases, however, it makes sense to allow multiple busy states. For example, a page could contain a form and several tables that load asynchronously. In this case, it does not make sense to set the busy state at page level until all the data is loaded as the user can start filling out the form which is already available. Response times may vary due to table data retrieval from different services.

Try to enable as much as possible on one screen, so the user can start working while the rest of the data is being loaded in the background. Set the busy state for those UI elements that will require some time to load.

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

Busy Dialog

The busy dialog informs the user about an ongoing operation. During the operation, the entire screen is blocked.

Usage

Use the busy dialog if:

  • The user should not be able to start any other activity during an operation, and the screen needs to be blocked while the operation is ongoing.
  • The operation lasts more than one second.
  • You want to indicate loading in a page-to-page navigation.

Do not use the busy dialog if:

  • The operation lasts less than one second.
  • The screen is not supposed to be blocked. In this case, use the busy indicator or busy state of the control instead.

Responsiveness

The busy dialog is fully responsive and can be shown in compact and cozy mode.

Busy dialog - Compact mode
Busy dialog - Compact mode
Busy dialog - Cozy mode
Busy dialog - Cozy mode
Busy dialog on smartphone
Busy dialog on smartphone
Developer Hint
To switch to compact mode for a dialog, you need to use:

jQuery.sap.syncStyleClass(“sapUiSizeCompact”, this.getView(), this._oDialog);

For more information, see the SAPUI5 Demo Kit.

Components

The busy dialog can consist of several components and is configurable. The following properties can be set:

  • Title: By default, it has no title. Define a title if you need to provide more context.
  • Text: Additional text can be added above the busy animation.
  • Cancel:(Property:showCancelButton) A Cancel button is displayed. There is no Cancel button by default. The label is also configurable via Property.cancelButtonText.
  • Icon: A custom animation icon can be set via Property:customIcon.

If no title, text, or Cancel button is set, the busy dialog displays only the busy icon (busy dialog, lightweight version).

Busy dialog with 'Cancel' button
Busy dialog with 'Cancel' button
Busy dialog without 'Cancel' button
Busy dialog without 'Cancel' button
Busy dialog - Lightweight version
Busy dialog - Lightweight version

Guidelines

Lightweight Version (No Title, Text, or Cancel Button)

  • Use the lightweight version for page navigation (see live example).
  • If you do not show a title or text, use the invisible text control (sap.ui.core.InvisibleText) to provide the reason for the busy state to users with assistive technologies.

Developer Hint

The additional text should be associated to the busy dialog using ariaLabelledBy association.

Busy Dialog with Text

  • Do not use the title of the busy dialog.
  • If a busy dialog is triggered directly by the user, provide a precise text describing the operation. The text can be as short as one verb:
    • Loading…
    • Refreshing…
    • Sending…
  • If the busy dialog is not directly initiated by the end user, use at least one sentence to describe the operation. Start either the first or the last sentence with Please wait. For example: The system is busy searching data. Please wait until data is loaded.
  • Recommendation: Do not use the invisible text control when you show text in the busy dialog.

Busy Dialog with Text and Cancel Button

  • Offer Cancel if you expect the process to run more than 10 seconds. In addition, always display text that precisely describes the ongoing operation.
  • Do not change the mouse cursor to indicate the ongoing operation.
  • Recommendation: Do not use the invisible text control when you show text in the busy dialog.

Timing and Duration

We recommend displaying the busy dialog one second after the process has been triggered and for a minimum time of 500 ms to avoid flickering. For processes that last less then one second, a busy dialog is not displayed at all.

Example: A process takes 1.3 s in total. After one second, the busy dialog is displayed. The process finishes in 1.3 seconds. To avoid flickering, you should display the busy dialog for at least 500 ms, so you will need to add 200 ms to avoid flickering.

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

Category Navigation

You can use the category navigation pattern to replace tree-like structures with only a few levels in a responsive environment. In this pattern, the breadcrumb control replaces the title control. The category navigation pattern is used only in rare cases.

Usage

Use category navigation if:

  • You need to show categorized data in a responsive environment.
  • You need to replace a tree table on tablets and smartphones, and the tree table has a maximum of five levels.
  • You need to show hierarchical data with different details at each level, which cannot be represented in a tree table.

Do not use category navigation if:

  • You need only two levels, and the upper level identifies the category. In this case, use a grouped responsive table instead.
  • You need more than five levels. In this case, use a tree table.
    On a smartphone or tablet device, try to display the data on just five levels. You can do this in one of two ways:

    • Remove unnecessary root levels.
    • Offer the same items in different branches.

Responsiveness

The pattern is based on a responsive table. In contrast to the standard responsive table, the title is used to display a breadcrumb showing the current level.

The breadcrumb control determines the text of the current/last element in the breadcrumb path. It only consists of text (string element).

The responsiveness is handled by the control: As soon as the breadcrumb is truncated, it provides a dropdown menu to access further navigation levels.

Category navigation - Size S
Category navigation - Size S
Category navigation - Size M
Category navigation - Size M
Category navigation - Size L
Category navigation - Size L

Layout

The breadcrumb appears in the toolbar, and replaces the table title.

At any given level, the responsive table contains the individual line items, including their column header, as well as the categories available for further drilldown.

Category navigation - Layout
Category navigation - Layout

Components

Use the breadcrumb control to implement the category navigation pattern. Display the navigation levels as text. Use links for the titles of all levels above the current level to enable fast navigation across the levels.

A breadcrumb showing three levels
A breadcrumb showing three levels

If only the root level is displayed, there is no link.

A breadcrumb showing the root level only
A breadcrumb showing the root level only

When the breadcrumb is truncated, breadcrumb control provides a dropdown menu with the hidden navigation levels. The breadcrumb shows the title of the currently selected level.

Breadcrumb changes to a dropdown menu if there is insufficient space
Breadcrumb changes to a dropdown menu if there is insufficient space

Use one or several responsive tables to list the items for the different levels, depending on the columns shown on each level.

Responsive table
Responsive table

Within the responsive table, use the item navigation mode for container items.

Container item with navigation indicator
Container item with navigation indicator

Do not use the navigation mode for leaf items.

Leaf item without navigation indicator
Leaf item without navigation indicator

Behavior and Interaction

Initial State

Initially, this pattern looks like a standard responsive table with control items.

Navigation to Second Level (Drill-In)

Clicking an item drills into it in one of the following ways:

  • The content of the responsive table is changed (if all columns are the same on the second level).
  • The entire responsive table is changed (if there are different columns on the second level).

Navigation to Third Level

You can offer further navigation at item level. The breadcrumb adapts accordingly.

Leaves at the second level do not offer further navigation.

Initial state
Initial state
State after navigating to the second level
State after navigating to the second level
State after navigating to the third level
State after navigating to the third level

Guidelines

Navigation to Second Level (Drill-In)

Change the title to a breadcrumb.

Show navigation indicators if there are more levels.

State after navigating to the second level
State after navigating to the second level

Navigation to Third Level

Use control items to enable further navigation.

Make sure that the breadcrumb adapts accordingly. Don’t show a navigation indicator for leaves.

State after navigating to the third level
State after navigating to the third level

Enable backward navigation via the breadcrumb links. When the user navigates back to a higher level, show exactly the same state as before.

If navigating back, show the former state
If navigating back, show the former state

If there is not enough space to show the entire breadcrumb, use the dropdown menu provided by the control to show the hidden navigation levels.

Show a dropdown menu within the breadcrumb control on small screens
Show a dropdown menu within the breadcrumb control on small screens

Within the dropdown menu, show all parent nodes below the current node.

Show the levels of the breadcrumb inside the dropdown menu (select)
Show the levels of the breadcrumb inside the dropdown menu (select)

When the user navigates between the different levels, change only the responsive table and the breadcrumb. Do not change anything else or navigate to another page.

Placement

Place the breadcrumb control in a way that makes sense to the user.

  • If you are using the breadcrumb in combination with segmented buttons, place the breadcrumb above the toolbar and display the segmented buttons on the very left. That way, the page navigation is on a higher level than the view switch.
Breadcrumb with segmented buttons in hierarchy
Breadcrumb with segmented buttons in hierarchy
  • If you are using the breadcrumb with a tab pattern, replace the table title with the breadcrumb and display it under the tabs.
Breadcrumb with tabs
Breadcrumb with tabs

Related Links

Elements and Controls

Implementation

Tile

A tile is a container that represents an app on the SAP Fiori launchpad home page.

Tiles can display different types of content, which is based on data supplied by the app. They can contain an icon, a title, an informative text, KPIs, counters, and charts.

A link is a special representation of a tile. Links are displayed in a separate area below the tiles area and comprise a title and an optional subtitle. Most tile types can be converted to links, and links can be converted to tiles at any time.

Users can personalize their home page by selecting the tiles for the apps they want to use from the app finder. The apps available in the app finder depend on the user’s role.

The number of visible tiles on the launchpad home page depends on the screen resolution. If the tiles in a group do not fit in one row, they are wrapped to the next row.

Tiles - Launchpad
Tiles - Launchpad

Responsiveness

By default, the standard tile size is responsive. The tile size is independent of the device: small screens get smaller tiles (even on a desktop device), and all larger screens (including some smartphone screens) get larger tiles.

The examples below show how the tiles render for different screen sizes.

Tiles – Size S
Tiles – Size S
Tiles – Size M
Tiles – Size M

Alternative Configuration – Small Tiles for All Screen Sizes

To fit more tiles onto the screen, customers can opt to use the smaller tile size for all screen sizes. In this case, there is no special tile size for small screens.

Key users or administrators can change the tile size for all tiles on the launchpad centrally (property: sizeBehavior, value: Small).

2x2 tile (responsive)
2x2 tile (responsive)
2x2 tile (small)
2x2 tile (small)
Warning
Do not use this option for single tiles. Because all tiles on the launchpad need to be consistent (all responsive, or all small), the tile size should not be defined at app level.

Layout

The generic tile control supports the following dimensions:

  • 2×2 tile
  • 4×2 tile (wide)
  • 2×1 tile (flat)
  • 4×1 tile (flat wide)

The layout of the generic tile is fixed, with designated areas for the header, content, and footer.

Tile layout
Tile layout

Header Area

The header area is mandatory, and contains the title and an (optional) subtitle. The header is always in the upper left corner of the tile, except on feed tiles.

Title Text (Required)

The space available for the title depends on the tile type. On a regular 2×2 launch tile, the title truncates as follows:

  • If the tile contains an icon or KPI, the title text truncates after 2 lines (or after 3 lines if there is no subtitle).
  • If the tile is text-only tile, the title text truncates after 4 lines (or after 5 lines if there is no subtitle).

The title text supports hyphenation (property: wrappingtype = Hyphenated). Switching on hyphenation activates it for all languages that have hyphenation support.

Subtitle (Optional)

The subtitle can have one line of text before it is truncated.

Basic tile with hyphenated header text
Basic tile with hyphenated header text

Content Area

The content area is optional. The content itself is defined by the apps and can be a KPI, counter, chart, text, or icon.

Footer Area

The footer is optional, and comprises a single line of text. It is typically used to qualify the content (for example, the period and currency for a KPI), but can also contain a refresh icon and status.

Visual Representation

Apps can be visualized as tiles or links. While there are many types of tiles, links always have the same format: they comprise a title an optional subtitle.

For more information about links and the conversion between tiles and links, see SAP Fiori Launchpad Home Page.

Tiles and links
Tiles and links

Types

KPI Tile

Key performance indicators (KPIs) are used to measure and monitor a company’s performance at a strategic and operational level.

The tile displays the KPI values as large, easy-to-recognize digits. In addition, you can show deviation arrows, negative values, and scaling factors. You can also use semantic colors to emphasize the content. The number of digits is limited by the size of the tiles.

You can use the 4×2 tile to combine the content of two tiles into one. For example, you can show a KPI next to a comparison chart (as shown on the right), or use any other combination such as KPI/KPI, chart/chart, and so on. You can show different information in both the content and status areas. However, in all other respects, the 4×2 tile behaves as one tile – with one headline, subtitle, clickable area, and target.

2x2 KPI tile
2x2 KPI tile
4x2 KPI tile
4x2 KPI tile

Comparison Chart (Micro Chart)

You can use comparison charts to show detailed comparisons with semantic coloring for entries in a “Top N” list. You can choose between two different layouts:

  • 2×2 tile with two or three entries
  • 4×2 tile with up to four entries
Tile with comparison micro chart
Tile with comparison micro chart

Bullet Chart (Micro Chart)

bullet chart is a variation of a bar chart. It compares a single, primary value to one or more target values. The primary value is shown in the context of qualitative ranges (thresholds) such as poor, satisfactory, and good.

See the image on the right for examples of different bullet charts:

  • The chart on the left focuses on the actual value in relation to the target value and the forecast.
  • The chart in the middle shows the same combination, but without the forecast.
  • The chart on the right focuses on the delta between the actual value and the target value. Note that the delta visualization never shows the forecast.

All the charts show certain thresholds to give the user a sense of orientation.

Tile with bullet micro chart
Tile with bullet micro chart

Trend Chart/Area Chart (Micro Chart)

You can use trend charts (also known as area charts) to show cumulated totals over time, based on amounts or percentages. In this example, you can see a stacked trend chart. You can also use trend charts to depict trends for related attributes.

The trend chart is similar to the plot chart, except that the area below the plotted line is colored to indicate the volume.

Tile with area micro chart
Tile with area micro chart

Column Chart (Micro Chart)

You can use column charts (bar charts) to compare categories using vertical bars. One axis of the chart shows the specific categories, while the other axis represents a discrete value. You can also cluster multiple bars into groups within the column chart.

Tile with column micro chart
Tile with column micro chart

Basic Launch Tile

The most basic launch tile contains a title, subtitle, and icon. However, you can also use it as a text-only tile.

2x2 basic launch tile
2x2 basic launch tile

Links are a different visual representation of a tile and always look the same: they consist of a title and an optional subtitle.

Link tile
Link tile

On flat tiles, you can show:

  • A two-line title with a subtitle or footer
  • A one-line title with an icon
Information
Flat tiles are not available for the SAP Smart Business framework.
2x1 flat tile and 4x1 flat tile (wide)
2x1 flat tile and 4x1 flat tile (wide)

Monitoring Tile

Use the monitoring tile when you want to display status updates or an object count.

You can also apply semantic colors to the status bar to indicate a positive, negative, or critical status.

2x2 monitoring tile
2x2 monitoring tile

Flat monitoring tiles nearly have the same information density, but use less space. You can show:

  • A one-line title
  • A KPI

However, you can’t display a subtitle or footer when the numeric content is used.

Information
Flat tiles are not available for the SAP Smart Business framework.
Flat monitoring tile, 2x1 and 4x1
Flat monitoring tile, 2x1 and 4x1

SAP Jam Tile

If an organization uses SAP Jam, users can also add SAP Jam tiles to the launchpad. The SAP Jam tile shows the content of new notifications in 10-second intervals. It can scroll through up to 10 new notifications. Tile content is updated every five minutes. If there are no new notifications, the tile displays the most recent notification. If the 4×2 tile does not contain an icon, the headline uses the full length of the container. For more information, see collaboration.

SAP Jam tile
SAP Jam tile

Feed Tile

The feed tile is a special tile that shows a news feed. It refreshes every three to five seconds and is twice the size of a standard tile. In addition to the news headline, it comes with a background image, the news source, and a time stamp. The feed tile flips through news messages, which are configured for the tile. For accessibility reasons, the tile contains a start and pause button which can be found by hovering the mouse over the tile on desktop devices. On touch devices, the buttons are always displayed. Additionally, the number of slides contained the tile is visualized as dots on on the bottom of the tile.

Feed/news tile
Feed/news tile

Behavior and Interaction

All tiles on the SAP Fiori launchpad support one click event and one navigation target.

Open App

All tiles have one click area that opens the corresponding app.

Tile - Interaction
Tile - Interaction

Styles

Tile Loading

When a tile is loading, the standard loading indicator appears in the center of the tile. The tile itself is overlayed in white.

If a tile cannot be loaded, a warning icon and text appear at the bottom of the tile. Error messages should not be displayed in the status area. For each tile, the error text can be defined individually by the system administrator when preparing the tile.

Tile loading (left) and failing to load (right)
Tile loading (left) and failing to load (right)

Guidelines

Do’s

  • Use only this control.
  • Only use tiles on the launchpad home page. Don’t use them anywhere else.
  • In the content area, only show content types described in this guideline. For example, don’t play videos, animations, or gifs in the tiles.
  • If you are not showing a KPI or a chart, try to show an icon instead to help users to distinguish the tiles.
  • Use flat tiles to free up space and add variety to the SAP Fiori launchpad.
  • Use short tile names.

Don’ts

  • Do not use the standard tile (sap.m.StandardTile) or custom tile (sap.m.CustomTile). These are deprecated.
  • Do not use the status area for error messages.
  • Do not use the tile subtitle for explanations. Use the subtitle only if you need a differentiator (such as a specific view on the data).
  • Do not use icons on KPI tiles; only use icons on basic launch tiles or monitoring tiles.
  • Do not show icons next to an counter when you expect 5 digits or more.

Icons

  • We have decided to stop unique launch icons being created for individual apps. Creating a unique icon for every app was and is not scalable in terms of iconography and production (hinting and PNG exportation).
  • Projects without a SAP Fiori ID do not get an individual icon.
  • Do not develop your own icons or use custom icons.

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

Panel

The panel is a container for grouping and displaying information. It can be collapsed to save space on the screen.

Usage

Use the panel if:

  • You need to group or display information.
  • You want to give users the option of hiding this information.
  • You want to show additional information on demand (for example, a panel could show optional input fields for an advanced search).

Do not use the panel if:

  • You are designing an object page. Never use panels in the object page content area.

Responsiveness

If the width of the panel is set to 100% (default), the panel and its children are resized responsively, depending on its parent container.

Layout

  • The panel control is a container for controls.
  • The panel can have a solid or semi-transparent background.
  • The panel always includes a header.
  • An infobar can be added to the panel to show extra information.

Examples

Panel with a header text
Panel with a header text
Panel with a header toolbar and a infobar
Panel with a header toolbar and a infobar

Types

There are two types of panels: fixed and expandable.

Fixed Panel

Fixed panels are useful for grouping custom content. They include headers and infobars.

Fixed panel with a picture
Fixed panel with a picture

Expandable Panel

Expandable panels are much like fixed panels, except their content can be expanded and collapsed by clicking on the title bar.

Expandable panel – Collapsed
Expandable panel – Collapsed
Expandable panel – Expanded
Expandable panel – Expanded

Components

A panel consists of a title bar with a header text or header toolbar, an infobar (optional), and a content area.

The title inside the title bar can be added by using the “headerText” property. If you use the “headerToolbar” aggregation, the “headerText” property is ignored. With the “headerToolbar” aggregation, you can add a toolbar with any toolbar content inside the title bar. For example, if you need a title text on the left and some action buttons on the right, add a title to the toolbar’s content aggregation, toolbar spacer, and then your buttons.

Header toolbar of a panel
Header toolbar of a panel

Behavior and Interaction

Expand/Collapse

  • When the panel is expandable, an arrow icon (pointing to the right) appears in front of the header.
  • Click anywhere on the title bar to expand and collapse the content area.
  • When the animation is activated, expand/collapse uses a smooth animation to open or close the content area.
  • When the panel expands, the arrow icon rotates 90 degrees clockwise.
  • When the panel collapses, the arrow icon rotates 90 degrees counterclockwise.
  • The buttons in the header can be clicked separately.

Overflow Scrolling (Content Area)

  • By setting the height to use the default property “auto”, the height of the content area will automatically be adjusted to match the height of its content.
  • When the height of the panel is set to a fixed size, the content area can be scrolled through.

Panel With Scrolling

Panel with a fixed height (scrolling activated)
Panel with a fixed height (scrolling activated)

Panel Without Scrolling

Panel with auto height (no scrolling)
Panel with auto height (no scrolling)

Guidelines

  • Nesting two or more panels is not recommended.
  • Do not stack too many panels on one page.

Exceptions

If you add a header toolbar (sap.m.Toolbar) via aggregations, it will overwrite the “headerText” property.

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

  • Panel (SAPUI5 samples)
  • Panel (SAPUI5 API reference)

Busy Indicator

The busy indicator informs the user about an ongoing operation.

Busy indicator - Medium and Large
Busy indicator - Medium and Large
Busy indicator - Small
Busy indicator - Small

Usage

Use the busy indicator if:

The ongoing operation covers only part of a screen that has multiple controls, and:

  • You need to display additional information, or,
  • The user needs to be able to cancel the operation.

Examples

  • File Upload: The file upload dialog contains multiple upload operations. The user must be able to cancel each operation. Since the operation is related only to one row and not to the full app, there is no need to block the whole screen. The user still needs to interact with the system, in this case to select the next file to be uploaded.
Example: Busy indicator for file upload
Example: Busy indicator for file upload
  • Table Rows: Each row in the table has an action related to the table item. Clicking the Run button in a specific row changes status of the current item. The user is still able to work on the other items or cancel the current operation.
    Since each SAPUI5 control provides a busy state by default, you could also set the busy state at row level. In this case, however, there would be no option to cancel the operation.
Example: Busy indicator in table rows
Example: Busy indicator in table rows

Do not use the busy indicator if:

  • The operation takes less than one second.
  • You need to block the screen because the user is not supposed to start another activity. In this case, use the busy dialog.

Components

The busy indicator is a blue circle and can also display a text description.

Busy indicator text
Busy indicator text

Guidelines

  • Do not change the mouse cursor to indicate the ongoing operation.
  • Do not use a custom progress indicator icon.
  • Try to avoid showing multiple busy indicators at once.

Properties

The size of the busy indicator can also be changed.

Busy indicator sizes
Busy indicator sizes

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

Date Range Selection

The control for selecting the date range is a single-field input control. Users can enter a localized date range using touch, mouse, or keyboard input, or by selecting a date range in the calendar. They can also navigate directly from one month or year to another.

Usage

Use the date range selection if:

  • You need a time range and know that your user is a power user who has to input lots of data. If the keyboard is the primary device used for navigating the app, use two input fields. This allows the user to quickly jump from field to field. By selecting a date in one of the fields, the other field should recognize the information and jump to the same selection.

Do not use the date range selection if:

  • You want to enter a date and a time. In this case, use the date picker or time picker instead.
  • The user’s primary goal is not to select ranges. If this is the case, use the simple date picker.
  • You want to let users choose from a flexible set of absolute and relative dates and date ranges. In this case, use the dynamic date range.

Responsiveness

The date range selection is fully responsive. It is smaller in compact mode and provides a touch-friendly size in cozy mode. For more information about cozy and compact modes, see the article on content density.

Date range selection (size S)
Date range selection (size S)
Date range selection (size L)
Date range selection (size L)

Components

The date range selection consists of two components:

  1. Date range input field
  2. Date range picker
The two clickable areas of the date range selection on all devices
The two clickable areas of the date range selection on all devices

Date Range Input Field

The user can type the date directly into the input field, or use the date picker. You can also show a prompt text in the field (property: placeholder). The system validates the date and gives the user feedback.

  1. Current day
  2. Currently selected date range

It is possible to add additional descriptive texts to the input field (a unit of measurement, for example) by using a new association in the sap.m.InputBase control called ariaDescribedByThe association is responsible for referencing the elements that describe the control.

The current day is December 5 and December 19–22 are selected
The current day is December 5 and December 19–22 are selected

Date Range Picker

With the date range picker, the user can see a day view, month view, or year view. The current day and the selected date are highlighted. The calendar week is also visible in the day view. The calendar closes when a final day is selected. The user can click the arrows to view the previous and next days, months, or years (depending on the current view).

The selected date is shown with a blue background. The current day is indicated with a purple border in the calendar.

1. Previous month

2. Quick month selection

3. Quick year selection

4. Next month

5. Day selection

Clickable areas of the date range selection
Clickable areas of the date range selection

Optionally, you can offer a footer with OK and Cancel buttons. This gives users an alternative way of confirming the selected date range.

Date range picker with 'OK' and 'Cancel'
Date range picker with 'OK' and 'Cancel'

Alternative triggers for the Date Range Selection

In addition to the date range input field, you can set one of the following to trigger the date range selection popover:

  • A button
  • A link
Button and link triggers for the date range selection popover
Button and link triggers for the date range selection popover

Behavior and Interaction

Selecting a Date Range

The users can type two dates into the date range input field or click the calendar icon to open the calendar and select a date. These two possibilities work for all devices – desktops, tablets, and smartphones.

Switch View

Users can click an arrow to shows the next or previous day, month, or year.

Navigating to the next month
Navigating to the next month

When they click the month the month picker is displayed.

Opening the month picker
Opening the month picker

In the month picker, after the users click a month to select it, the day picker is displayed with the focus on the last selected start date.

Navigation from the month picker to the date picker
Navigation from the month picker to the date picker

When the users click the current year, the year picker is displayed. After selecting a year, they navigate back to the day picker.

Opening the year picker
Opening the year picker

Selecting a Range

After the users select a start date, the dates that they hover over turn light blue to indicate they are selected for the range. When the users select an end date, the calendar closes. The range appears in the date input field.

Selecting the start date
Selecting the start date
Selecting the end date
Selecting the end date

Entering Single Dates

The date range selection also allows the users to input single dates. They can type one date into the input field, or select the same day as a start and end date in the calendar.

“Today” Button

You can offer a shortcut for navigating to the current date (sap.m.DateRangeSelection, property: showCurrentDateButton). This displays an additional Today icon button ( ) in the navigation part of the calendar.

When the user clicks the Today button, the system automatically makes the current date the starting date for the new date range.

If the user has already selected the first date in the date range and then clicks the Today button, the focus is set to the current date. The system cancels the previous selection and makes the current day the starting date for the new selection.

This feature is available for pickers that enable selection of individual days. For the others, the property has no effect.

Selecting current date with the 'Today' button
Selecting current date with the 'Today' button

Styles

Delimiter

The delimiter visualizes the start and end date. If no delimiter is given, the app uses the one defined for the used locale.

Placeholder

If no range is selected, show a placeholder text to indicate the correct format. If no placeholder is defined, the control shows the default locale placeholder format. You can define your own placeholder, but you must also take localized versions into account.

Date range selection with default placeholder
Date range selection with default placeholder

Validation

Use inline validation to give the user feedback, especially for errors and warnings. Possible validation states are warning, error, success, and information. The date range input field in question is highlighted by a frame in the corresponding color. If the focus is inside the field, an explanation is shown. Ensure that this explanation is as specific as possible.

For more information on how to use the different semantic states, see How to Use Semantic Colors.

Visible frame that shows an error when the field is out of focus
Visible frame that shows an error when the field is out of focus
Error state with meaningful text; the date range input field is focused
Error state with meaningful text; the date range input field is focused
Visible frame that shows a warning when the field is out of focus
Visible frame that shows a warning when the field is out of focus
Warning state with meaningful text; the date range input field is focused
Warning state with meaningful text; the date range input field is focused
Visible frame that shows that additional information is available
Visible frame that shows that additional information is available
Information state with additional information, such as a recommendation
Information state with additional information, such as a recommendation

Guidelines

Display Format

You can choose whether the displayed texts are to be shown in short, medium, or long format, or in another date format like dd–MM–yyyy. However, other date formats (besides short, medium, and long) should be used carefully due to local dependencies.

Long display format
Long display format
Medium display format
Medium display format
Short display format
Short display format

Input Types

The following input types are available. (Note: these examples show German date formats for January 14, 2014.)

  • Unicode CLDR short format: 14.01.14
  • Unicode CLDR medium format: 14.01.2014
  • ISO date format: 2014-01-14
  • ISO date format without delimiters: 20140114
  • Unicode CLDR short format without delimiters: 140114
  • Unicode CLDR medium format: 14012014

Date Formats

Long Date Format

Use the long date format for a list in a list-detail layout / object list item / title and object header / title. Here are some examples:

  • English (US): January 16, 2022
  • German (DE): 16. Januar 2022
  • Danish (DK): 16. Jan. 2022

Short Date Format

Use the short date format for a list in a list-detail layout / object list item / list of object attributes if space is a concern. For example, you might need to save space if there is a label with the date. Here are some examples of the short date format:

  • English (US): 1/16/22
  • German (DE): 16.01.22
  • Japanese (JP): 22/01/16

Relative and Medium Date Format

If appropriate, use a relative format for a list in a list-detail layout / object list item / list of object status. For example: today, 1 day ago, 2 days ago, and so on up to 6 days ago. After 6 days, use an absolute date with the medium format.

Use the absolute date with medium format in the corresponding object header in the details area. Do not use the relative format here.

If screen space is at a premium (for example, if there are too many columns), use the short date format within table cells. Otherwise, use the medium format.

If you need to display the weekday, use the full format. For example:

  • English (US): Sunday, January 16, 2022
  • German (DE): Sonntag, 16. Januar 2022
  • French (FR): dimanche 16 janvier 2022

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

Message Box

The message box (sap.m.MessageBox) is a special dialog that allows you to display messages to the user. Compared to the message popover (sap.m.MessagePopover), you can use the message box to display messages that are not related to a field on the UI, such as technical errors.

Formulate messages in plain language (no code), describe the issue precisely, and suggest a constructive solution. Always help your user to recognize, diagnose, and recover from messages. Bear in mind that no message is always preferable to even a good message. When you design your apps, aim to prevent problems from occurring in the first place.

Developer Hint
You can create a message box using the sap.m.MessageBox control or by using the sap.m.Dialog control with the type Message.

Usage

Use the message box if:

  • You want to display non-field-related messages.
  • You want to interrupt the user while he or she performs an action.
  • You want to display error, warning, success, confirmation, or information messages.
  • You need to interrupt the user for some other reason.
  • You need the user to acknowledge the message.
  • You need the user to make a decision.

Do not use the message box if:

  • You want to display a short success message. (Use a toast instead. For more information, see Message Toast.)
  • You can show the message directly in a form field.

Responsiveness

The sap.m.MessageBox control has the same responsive behavior as the sap.m.Dialog control. The message box should only be opened in modal mode. Its basic width is 25 rem. For more information, see Dialog.

Types

The following categories of messages are available:

  • Error
  • Warning
  • Success
  • Information
  • Confirmation

Error Message

Error messages can be triggered after the user has entered incorrect data or a system error has occurred. They should interrupt the user by displaying a dialog. A final action such as Submit cannot be carried out until the user has rectified the error.

Control: sap.m.MessageBox
Icon: sap-icon://message-error
Title: Error
Stretch: False (no full screen on all devices)

Error message with one action
Error message with one action
Error message with two actions
Error message with two actions

Text guidelines for an error message:

  • Do not just describe the problem; tell the user how to resolve it.
  • In the short text, speak the language of the end user. Do not include system or configuration details.
  • If the solution is more involved or technical, add a long text.
  • Do not repeat the short text in the long text. They both appear together on the screen.

Warning Message

Warning messages highlight potential issues, but the user can still continue. This includes unintended data loss scenarios.

Control: sap.m.MessageBox
Icon: sap-icon://alert
Title: Warning
Stretch: False (no full screen on all devices)

Use cases for warnings

a) No decision required: Formulate the message as a statement.
Button(s): OK

Warning message with 'OK' button
Warning message with 'OK' button

b) Decision to continue required: Formulate the message as a statement.

Button(s): OK, Cancel

Warning message with 'OK' and 'Cancel' buttons
Warning message with 'OK' and 'Cancel' buttons

c) Specific decision required, with one action

Use a relevant action button. The message may also be formulated as a question.
Button(s): Leave Page, Cancel

Warning message with action and 'Cancel' buttons
Warning message with action and 'Cancel' buttons

Success Message

Success messages give feedback to the user that an action has been executed. The user needs to acknowledge the message.

Guidelines
You should generally use a message toast (sap.m.MessageToast) to display success messages.

Only use a message box for success messages in exceptional cases.
Example: A success message contains key information that users must be able to copy.

Control: sap.m.MessageBox
Icon: sap-icon://message-success
Title: Success
Stretch: False (no full screen on all devices)
Button(s): OK

Success message
Success message

Information Message

Information messages provide information the user needs to acknowledge, but which does not involve a decision. The message provides information that is useful and relevant, but never critical.

Control: sap.m.MessageBox
Icon: sap-icon://message-information
Title: Information
Stretch: False (no full screen on all devices)

Button(s): OK

Information message
Information message

Confirmation Message

Confirmation messages prompt users to confirm an action that they have triggered. The title of the message box already includes the action that has to be confirmed, such as an intended deletion or an approval.

Control: sap.m.MessageBox
Icon: sap-icon://question-mark
Title:  (such as “Approve”, “Reject”, or “Delete”)
Stretch: False (no full screen on all devices)

Button(s): Approve, Cancel

Confirmation message
Confirmation message

Confirmation Message with “Note” Section

Developer Hint
The image belows shows a “Note” section which allows the user to add notes, for example in a “Reject” process. This feature is not provided by the sap.m.MessageBox. Instead, you can use a normal sap.m.Dialog and place those controls inside the confirmation message.

Confirmation messages prompt users to confirm an action that they have triggered. The title of the message box already includes the action that needs to be confirmed, such as an intended deletion or an approval.

Control: sap.m.Dialog
Type: Message
Icon: sap-icon://question-mark
Title:  Such as “Approve” or “Reject”
Stretch: False (no full screen on all devices)

Button(s): ApproveCancel

Confirmation message with note
Confirmation message with note

Confirmation for “Delete”

If the user clicks Delete, display a “Delete” dialog that confirms the delete action.

Control: sap.m.MessageBox
Icon: sap-icon://alert
Title: Delete
Stretch: False (no full screen on all devices)

Button(s): Delete, Cancel

 

Use cases for delete confirmation messages in object page and list reports

a) No context is available. For example, neither the ID nor the description of the business object are available at the time of deletion.
Body text: Delete this <object>?

Confirmation for 'Delete' action
Confirmation for 'Delete' action

b) The ID of the object is available.
Body text: Delete <object> <object ID>?

Confirmation for 'Delete' action with object ID
Confirmation for 'Delete' action with object ID

c) The object ID and description are both available at the time of deletion.
Body text: Delete <object> <object ID> “<object description>”?

Confirmation for 'Delete' action with object ID and description
Confirmation for 'Delete' action with object ID and description

Deleting several objects

If more than one object is being deleted, do not display the object ID and description.
Body text: Delete the <n = optional> selected <objects>?

Confirmation for 'Delete' action with several objects
Confirmation for 'Delete' action with several objects
Developer Hint
The default text in SAP Fiori elements will be slightly different, usually using the default term “object” to designate the item to be deleted. When using SAP Fiori elements, replace “object” with the correct business object name. For more information, see Introduction to SAP Fiori Elements – Adjustments.

Components

The message box contains the following sections and options:

Title: Title text appears in the message box header.

Content: This area contains the actual content of the message box.

Footer with actions: The footer can contain one or more buttons. We recommend limiting the number to two: A primary action and a negative path action.

Example of a message box structure
Example of a message box structure

Show Details button

The message displayed for the user should provide sufficient information to ensure that the user knows what has happened. A message box without an explicit details section should be sufficient. Therefore, the Show Details link is only shown if detailed information is available that differs from the message text and is important for the user.

If details are available, the application has three options to display the text. Text can be displayed as:

  • Plain
  • Formatted
  • The original code format
Message details - Plain text
Message details - Plain text
Message details - Formatted text
Message details - Formatted text
Message details with code excerpt
Message details with code excerpt

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

Text Area

The text area is an input control that allows the user to enter several lines of text.

Usage

Use the text area if you want users to enter multiple lines of text. If you only want them to enter a single line of text, use the input field instead.

Responsiveness

You can set the maximum number of lines to be shown. The amount of text depends on the size of the screen. On smaller screens, the user can scroll down the text area to see the entire text. To indicate that the text continues, the control shows only half of the last line. This also applies for mobile devices.

Components

The text area allows the user to enter multiple lines of text.

Text area – Default
Text area – Default
Text area – While editing
Text area – While editing

You can also set a placeholder (input prompt), which is inherited from sap.m.InputBase; property: placeholder. The prompt text is displayed when the input field is empty.

Text area – With placeholder (input prompt)
Text area – With placeholder (input prompt)
Text area – Selected text
Text area – Selected text
Information
For information on how to manage leading and trailing white space (blanks) when copying and pasting text into input controls, see removing leading and trailing white space.

Behavior and Interaction

Entering and Removing Text

As soon as the user starts typing, the placeholder disappears. It appears again when the user removes all the content from the text area.

You can also limit the number of characters a user can enter. In this case, the text area prevents the user from adding more characters than the maximum value defined (property: maxLength).

Text area – Limited
Text area – Limited

Making Text Non-Editable

You can set the text area to non-editable (property: editable). This mode still allows the user to scroll to the text that is currently hidden.

Text area – Read only
Text area – Read only

Disabling Text

You can also set the text area to disabled. In this case, the user cannot edit or scroll (property: enabled).

Text area – Disabled
Text area – Disabled

Growing Behavior

The text area control offers a growing property. It gives the control the ability to automatically grow and shrink with its content while the user is typing.

The maximum height of the text area is configurable. Define the height to reflect the space where the control will be located.

Growing text area: The text is aligned to the top of the text area.
Growing text area: The text is aligned to the top of the text area.
Growing text area: As the user continues to type, a new line is added to the bottom of the text area.
Growing text area: As the user continues to type, a new line is added to the bottom of the text area.

Text Area Counter

General Information

If you have set a character limit for the text box (property: maxLength), you can use the text area counter to show a character count (remaining characters, characters over the limit).

To turn on the counter, set the property showExceededText to true. The user can then see all inserted characters, including those that are over the limit.

Basic Interactions

The number of characters allowed is displayed below the text area, aligned to the right. A label indicates how many characters are left.

When the characters used are over the limit:

  • Тhe user can continue typing
  • The value of the counter changes.
  • We recommend changing the text area to a warning state.

When the user pastes copied text, characters that are over the limit are selected automatically. The user can delete any excess characters by pressing Delete or Back on the keyboard (or virtual keyboard for phones and tablets).

Text area counter - Default state (within the limit)
Text area counter - Default state (within the limit)
Counter over the limit
Counter over the limit
Developer Hint
If the text area already has a value state and the text length exceeds the limit, the value states are displayed in the following order (highest to lowest priority):

  • Additional error state available: This results in a higher priority (error + warning = error). If an error state is set, the text area is shown in an error state. When the error is fixed, the text area returns to the warning state until the character count is within the limit.
  • Additional warning state available: An additional warning state has the same priority as the counter warning state (warning + warning = warning). The text area stays in the warning state until all of the issues are fixed. The warning state set by the developer has the higher priority.
  • Additional success state available: In this case, the warning state has higher priority (success + warning = warning). Once the text count is within the limit, the text area shows the success state.

Styles

As with any other input control, you can validate the fields and show the result as a value state of the control (property: valueState). Possible value states are error, warning, success, information, or neutral (none).

For more information, see How To Use Semantic Colors and Form Field Validation.

Text area – Warning state
Text area – Warning state
Text area – Error state
Text area – Error state
Text area - Success state (with thinner border)
Text area - Success state (with thinner border)
Text area - Information state
Text area - Information state

Guidelines

  • As with other input fields, use a label. For exceptions regarding label usage, see the Exceptions section of the Label article.
  • The placeholder does not substitute a label. It can be used to give an additional hint, but should not repeat the label in long format.
  • If you want to use the text area with a fixed text length (property: maxLength), for example, inside a form, use text beside the text area to count down the number of remaining characters while the user is typing.
  • If you are applying the growing behavior of the text area, bear in mind that its maximum height should not exceed the height of the screen.
  • As a display mode equivalent, consider using an expandable text.

Saving Forms with a Text Area Counter

If a text exceeds the limit for the text area, there are two options for saving the form:

  • The form can be saved, but only contains the text within the character limit. If you follow this approach, inform the user that only part of the text will be saved. In this case, we strongly recommend setting the text area state to “warning” to indicate that there is a problem with the text.
  • The form cannot be saved until the user edits the text and the character count is within the limit. In this case, we strongly recommend setting the text area state to “error”.

Properties

  • You can provide a width by specifying the average character width (property: cols).
  • You can define the height of the text area by specifying the number of lines of text (property: rows). You can also set the height of the text area (property: height), which overrides the rows property.
  • You can define the type of wrapping for the text area (property: wrapping) as soft, hard, or off.
  • sap.m.TextArea has a growing property that enables the height of the text area to change dynamically while the user is typing.
  • sap.m.TextArea can show a count for the number of permitted characters, and allow users to type/paste text over the limit (property: showExceededText). This property determines whether characters that exceed the character limit are visible.
    • If this property is set to false, the user is not allowed to exceed the number of characters set in the maxLength property.
    • If this property is set to true, characters exceeding the maxLength value are selected on paste, and the counter below the input field displays the number of characters that are over the limit.
  • To provide additional information for assistive technologies like screen readers, use ariaDescribedBy and ariaLabelledBy.

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

Icon Tab Bar

The icon tab bar comprises a series of tabs that each link to a different content area or view. You can use it for navigation within an object, or as a filter.

There are two key use cases:

  • You want to let users navigate between different object facets in the object details area.
  • You want to let users filter lists, and give them the option of calling up the entire list, or only items with a specific attribute.

In both cases, the user switches between tab pages by clicking the respective tab.

Usage

Use the icon tab bar if:

  • Your business objects need to show multiple facets at the same time.
  • You want to allow the user to browse through these facets.
  • You need a prominent or very visual filter on top of a list.
  • You have clear-cut process steps that need to be visualized.

Do not use the icon tab bar if:

  • You plan to use only one single tab.

Responsiveness

The icon tab bar stretches horizontally, which often exceeds the available width on small screens. It responds to limited space by offering a scrolling mechanism.

Responsiveness – Text tabs
Responsiveness – Text tabs
Responsiveness – Icon tabs
Responsiveness – Icon tabs

In addition to the responsive overflow behavior, the icon tab bar can be forced into compact mode or even react dynamically to the application’s global density setting. See the Tab Density section for details.

If there is not enough space to show all the tabs on the main tab bar, an overflow menu appears, containing all the remaining tabs that do not fit on the screen. By default, the overflow menu appears on the far right (see image “Responsiveness – Overflow on the far right”).

Another option is to display an overflow menu on both sides of the icon tab bar. The use of this overflow behavior depends on whether the order of the tabs is fixed or can be rearranged:

Responsiveness – Overflow on the far right
Responsiveness – Overflow on the far right

Layout

The horizontal layout of the icon tab bar never changes. The tabs always appear side by side. However, there are several types of tab bar to choose from. These are described in detail below.

Types

You can use the icon tab bar control to build the following types of tab bars:

  • Text only
  • Icon tabs
  • Tabs as filters
  • Tabs as process steps

Text Only

The text-only variant is one of the most common types. It allows longer labels, and can also display counters next to the text to indicate the number of items on the tab page.

Unlike all other tab variants, the labels do not get truncated. The full text is always shown. As a result, you need to ensure that your labels do not become too long. They should still be easy to read on smaller screens.

If you use text-only tabs, make sure that the UpperCase property is disabled and that you enter the labels in title case (for example: Approval Flow).

Types – Text-only without counters
Types – Text-only without counters
Types – Text-only with inline counters
Types – Text-only with inline counters

Counters and Text Tabs

If counters are used, set the property HeaderMode to “Inline” so the counters appear in brackets after the labels.

Do not use the old layout that shows the counters on top of the labels (Headermode = “Standard”).

Do
Counters – Inline layout ('HeaderMode' set to 'Inline')
Counters – Inline layout ('HeaderMode' set to 'Inline')
Don't
Counters – Old layout ('HeaderMode' set to 'Standard')
Counters – Old layout ('HeaderMode' set to 'Standard')

Icon Tabs

Icon tabs are also common tab types. These round tabs can be populated with any icon from the SAP icon font.

Labels are optional. If you decide to use labels, use them for all tabs. You can use counters as needed.

Types – Icons with counters
Types – Icons with counters

Please note that starting with SAPUI5 version 1.40, you should only use the horizontal type of label (icon and label side by side).

If your labels get truncated, consider using shorter labels or text tabs (without icons), since text tabs cannot get truncated.

Types – Icons with counters and labels
Types – Icons with counters and labels
Types – Icon-only
Types – Icon-only

Tabs as Filters

If you build the tab bar as a filter, it can comprise two parts:

  • An “all” tab on the left (optional)
    This tab shows the total number of items, and describes the type of item (for example, 189 Products).
  • Tabs for specific filters
    Use the tab text to indicate the filter attribute.
    We strongly recommend showing a counter on every tab.
Types – Filter
Types – Filter

Tabs as Process Steps

You can also use the tab bar to depict a process. In this case, each tab stands for one step.

To connect the process steps, you can use the triple-chevron icon ( ) from the SAP icon font (technical name: process). Do not use the triple-chevron icon in the anchor bar of an object page.

If the process steps have a fixed order, set the property TabsOverflowMode to “StartAndEnd” to show an overflow menu on both sides and to keep the order of the tabs intact.

Types – Process
Types – Process
Developer Hint
When using icons with labels, add a comment in the properties file to make editors and translators aware that space is limited.
Example: Label for icon tab on detail screen. Max 14-16 characters (depending on character width).

Test whether your labels and their translations are displayed in full, and do not get truncated.

Hierarchies

The tab bar supports hierarchies, allowing multiple tabs underneath one main tab. This way, you can group several tabs together, with the main tab acting as a headline.

Subtabs

The example on the right shows the main tab Notes with two subtabs, Internal and External, with no specific hierarchy except for their order.

Types – Subtabs
Types – Subtabs

Nested Tabs

Nesting allows deeper hierarchies with indentations to indicate the level of each tab.

By default, the property maxNestingLevel is “0” (zero). To enable nesting, adjust this value to the highest level of nesting that your app allows.

Types – Nested tabs
Types – Nested tabs

Behavior and Interaction

Clicking a Tab

To navigate through the views, the user clicks the tabs.

Optional behavior: If the user clicks a tab that is already open, the container collapses. It opens again when the user clicks any tab.

Use the expandable property to specify whether users can collapse the tab container (default = “true”):

  • Let users collapse the container if there is additional content below the container, and the information inside the container is not always needed.
  • If there is no content below the tab container, set the expandable property to “false”.

The expandable property controls the initial state of the container. Do not change the default state (“true”).

Changing the Order of Tabs

You can allow users to rearrange the tab order in a desktop environment (property: enableTabReordering). If this feature is enabled, users can drag and drop tabs to reorder them, either directly on the tab bar or inside the overflow menu.

It is also possible to drag and drop tabs from the tab bar to the overflow menu and vice versa.

If nesting is enabled (property maxNestingLevel > 0), users can choose the level at which they want to drop a tab.

Dragging a tab activates a visual indicator for positioning the tab. For example, dragging tab 8 on top of tab 5 makes tab 8 the child of the now highlighted tab 5 (see image 1).

If the user drags a tab between two other tabs, the indicator shows the level at which level the tab will be nested (see image 2).

Interaction - Tab nesting using drag and drop (1 of 2)
Interaction - Tab nesting using drag and drop (1 of 2)
Interaction - Tab nesting using drag and drop (2 of 2)
Interaction - Tab nesting using drag and drop (2 of 2)
Guidelines
Do not use this feature for:

  • Tabs as process steps:
    This ensures that consecutive steps do not get mixed up.
  • Anchor bar navigation:
    Sections that are represented in the anchor bar have a fixed order.

Styles

Tab Density

The default responsive design of the icon tab bar applies to both compact and cozy modes. However, in addition to this responsive behavior, the control can be forced into a compact mode, or even react dynamically to the application’s global density setting. This feature can be used to:

  • Save vertical space on the page (applies to both text and icon tabs)
  • Save horizontal space (icon tabs only; this is especially helpful when there are many tabs)
  • Generally use less space on mobile devices
  • Reduce noise when there are already more important visual elements on the screen (primarily icon tabs)

The property for the override is called tabDensityMode, which can be set to “Cozy”, “Compact”, or “Inherit”. “Cozy” is the default setting that renders the control in its regular dimensions. “Compact” reduces the control’s height and icon sizes (if applicable), even if there would be enough space for the cozy design. “Inherit” instructs the control to follow the global density mode defined for the application. For backward compatibility, the default setting is “Cozy”.

The following image shows some types of tabs with their default style (cozy, left) and the reduced density mode (compact, right).

Style – Tab density
Style – Tab density

Colors

The two different styles (round tabs and text only) are discussed in the Types section. In both cases, you can use semantic colors to give users additional orientation.

Only use semantic colors if it is important for users to know that they need to take action (for example, to indicate errors or critical situations requiring action). Otherwise, use the neutral default colors. For more information, see How to Use Semantic Colors.

Developer Hint
To apply semantic colors to the icons and the text-only tabs, you can use the property sap.ui.core.IconColor.

Example

In the example below, one step in the process is indicating an error. Since the other tabs have neutral colors, it is clear that they do not contain errors. Coloring them green to show that they are OK is unnecessary, and would reduce the severity of the red tab.

Styles – Colors
Styles – Colors

Badge

A tab can have an attention badge to indicate that new items were added to that tab. Only display a badge if new items are triggered from outside the app. Do not display a badge when users add new items themselves.

Icon tab with an attention badge
Icon tab with an attention badge

Badge in Default or Semantic State

You can add a badge to all types of icon tab bar.

The badge inherits the state of its tab (default state or semantic state):

  • For the default tab state, the default red badge is displayed.
  • If the tab has a semantic state, the badge inherits the semantic color for the current state.

Don’t mix tabs in the default state with tabs that have a semantic state.

Badge Interaction

The badge becomes part of the tab. When the user selects a tab with a badge, the badge disappears. If a new item is added to the tab that is currently open, no badge is shown.

In addition, the badge inherits the interaction of its tab. For example, if a tab is moved using drag and drop, the attention badge moves with it.

Selecting a tab with a badge
Selecting a tab with a badge

Overflow Menu

If there isn’t enough space to show all the tabs on the main bar, an overflow menu appears on the right by default, containing all the remaining tabs. Depending on the use case, an overflow menu can also appear on both sides (for example, for process steps or anchor bar navigation).

A badge on the chevron icon   indicates that a tab within the overflow menu has received new items. The tab in question is indicated by a second badge on the item in the overflow menu.

Badge within overflow menu
Badge within overflow menu

Guidelines

Apply the styles as follows:

  • Icons only: Use this option if you have only 4-5 tabs that can be very clearly identified by their icon. If a short description is needed, use icons and labels.
  • Text only: Use this option if you have more than 4-5 tabs, or if there are no clear icons to represent the content. The text-only style also allows for longer labels. Set the property HeaderMode to “Inline”.
Do
Counters – Inline layout ('HeaderMode' set to 'Inline')
Counters – Inline layout ('HeaderMode' set to 'Inline')
Don't
Counters – Old layout ('HeaderMode' set to 'Standard')
Counters – Old layout ('HeaderMode' set to 'Standard')

If you use icon tabs, ensure the following:

  • The icons clearly identify the content on the tab pages.
  • Each tab has a unique icon. Do not use the same icon more than once.
  • The icons are easily distinguishable.
  • Any icons between tabs (for example, as separators or connectors) are visually very different from the icons on the tabs.
  • Either all or none of the icons have labels.

Implement the focus as follows:

  • By default, show the first tab as open. This is the initial setting provided by the control.
    Note: Technically, you can also override the initial selection. However, this is not recommended.
  • Later on, you can show the tab last selected by the user.

Additional guidelines:

  • Do not display a loading indicator above the tab while the number for the item count is loading.
  • Handle empty tabs as follows:
    • Hide tabs that do not contain any information, and do not allow the user to create content..
    • Show empty tabs that allow users to create content, such as notes or attachments.
  • Only use the tab bars to navigate between tabs. Do not use any other navigation links. For example, do not let users click an item in tab A that takes them to tab B. This type of cross-navigation inside a container is confusing, and cannot be handled by the back navigation.

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

Date Picker

The date picker lets users select a localized date using touch, mouse, or keyboard input. It consists of two parts: the date input field and the date picker.

Use this control if the user needs to enter a single date or a date range. The control also allows users to navigate directly from one month or year to another.

Usage

Use the date picker if:

  • You need a range and know that your user is a power user who has to input lots of data. If the keyboard is the primary device used for navigating the app, use two input fields. This allows the user to quickly jump from field to field. By selecting a date in one of the fields, the other field should know what is selected and jump to the same selection.

Responsiveness

The date picker provides responsive behavior that allows for simple operation on all devices. It is smaller in compact mode and provides a touch-friendly size in cozy mode.

Clicking the date picker button opens the popover in full screen. To close it, the user can select a date (which triggers the close event), or click Cancel without selecting a date. Clicking the date input field allows the user to type and does not open the date picker popover.

Date picker on a smartphone
Date picker on a smartphone
Date picker on a desktop device
Date picker on a desktop device

Components

The date picker has two components: the date input field (1) and the date picker button (2). On all devices users can either use the input field to type a date or use the date picker button to open the date picker calendar.

Date picker with input field and button
Date picker with input field and button

Date Input Field

In the input field, the user can enter a date directly or select it using the date picker. The system validates the entry and provides the user with feedback. You can also show placeholder text in the field.

It is possible to add additional descriptive texts to the input field (a unit of measurement, for example) by using a new association in the sap.m.InputBase control called ariaDescribedByThe association is responsible for referencing the elements that describe the control.

Date Picker

With the date picker, the user can see a day view, month view, year view, or year ranges.

The current day (1) and the selected date (2) are highlighted. The calendar week is also visible in the day view. The calendar closes when a final day is selected. The user can click the arrows to navigate to the previous and the next day (3), month (4), or year view (5), depending on the current view. To select a date the use can use the calendar (6).

The selected date is shown with a blue background. The current day is indicated with a purple border and owns the focus.

The date picker can also show special days, which are highlighted with a colored line at the bottom of the date cell. For more information about the colors and legend, see Legend for Highlighted Days.

Date picker with a selected date and the current date
Date picker with a selected date and the current date
Clickable areas of the date picker
Clickable areas of the date picker
Date picker with highlighted days
Date picker with highlighted days

You can change the default focus “today” to another date. This can save users several clicks when they create events. For an event end date, for example, the focus should propose a date in the future (after the start date).

Use case-specific focus date
Use case-specific focus date

Month and Year Views

The month and year views can be used separately in a month or year picker. The year ranges are related to the year view and are not used separately. Selecting a year range navigates back to the year view, not the day view.

Month view in the date picker
Month view in the date picker
Year view in the date picker
Year view in the date picker
Year ranges in the date picker
Year ranges in the date picker

Footer

You can add a footer with OK and Cancel buttons to the date picker popover. However, we advise against this unless it’s very important that the user can pick multiple values (day, month, year) without closing the popover.

The default and recommended behavior is to close the date picker popover upon selection of the day (or month/year for the month and year pickers).

Date picker with footer
Date picker with footer

Behavior and Interaction

Selecting a Date

The user selects a date by clicking it. After the user selects a day, the calendar closes and the date appears in the date input field.

Date selection
Date selection

Clicking the arrow shows the next day, month, or year view.

Navigating to the next month
Navigating to the next month

If the current month is clicked, the view changes to the month view and the user can change the month.

Switching to month view
Switching to month view

By clicking on a month, the user changes the month and the view changes to the day view.

Selecting another month
Selecting another month

The user can similarly change the year. By clicking the current year, the view changes to the year view. After the user selects a year, the view changes back to the day view.

Switching to year view
Switching to year view

After the user selects a year, the view changes back to the day view. The date in the date input field stays the same until the user selects a new date.

Selecting another year
Selecting another year

“Today” Button

You can offer a shortcut for navigating to the current date (sap.m.DatePicker, property: showCurrentDateButton). This displays an additional Today icon button ( ) in the navigation part of the calendar. Pressing this button sets the focus to the current date.

This feature is available for pickers that enable selection of individual days. For the others, the property has no effect.

Selecting the current date with the 'Today' button
Selecting the current date with the 'Today' button

Styles

Value States

The date picker supports the following value states:

  1. Regular
  2. Positive
  3. Warning
  4. Error
  5. Information

You can display a value state text for error, warning, and information states to provide hints for the user.

For more information on how to use the different semantic states, see How to Use Semantic Colors.

For more information about different value states, see UI Element States.

Date picker value states
Date picker value states

Guidelines

Date Formats

Long Date Format

Use the long date format for a list in a list-detail layout / object list item / title and object header / title. Here are some examples:

  • English (US): January 16, 2022
  • German (DE): 16. Januar 2022
  • Danish (DK): 16. Jan. 2022

Short Date Format

Use the short date format for a list in a list-detail layout / object list item / list of object attributes if space is a concern. For example, you might need to save space if there is a label with the date. Here are some examples of the short date format:

  • English (US): 1/16/22
  • German (DE): 16.01.22
  • Japanese (JP): 22/01/16

Relative and Medium Date Format

If appropriate, use a relative format for a list in a list-detail layout / object list item / list of object status. For example: today, 1 day ago, 2 days ago, and so on up to 6 days ago. After 6 days, use an absolute date with the medium format.

Use the absolute date with medium format in the corresponding object header in the details area. Do not use the relative format here.

Responsive Table

If screen space is at a premium (for example, if there are too many columns), use the short date format in table cells. Otherwise use the medium format.

If you need to display the weekday, use the full format. For example:

  • English (US): Sunday, January 16, 2022
  • German (DE): Sonntag, 16. Januar 2022
  • French (FR): dimanche 16 janvier 2022

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

Message Toast

A message toast (sap.m.MessageToast) is a small, non-disruptive popup for success messages that disappears automatically after a few seconds.

Usage

Use the message toast if:

  • You want to display a short success message.
  • You do not want to interrupt users while they are performing an action.
  • You want to confirm a successful action.

Do not use the message toast if:

  • You want to display an error or warning message.
  • You want to interrupt users while they are performing an action.
  • You want to make sure that users read the message before they leave the page.
  • You want users to be able to copy the message content to the clipboard (such as a product or transaction number). In this case, use a success message dialog instead.

Responsiveness

The message toast has the same behavior on all devices.

Layout

Position

The message toast is always centered horizontally at the bottom of the screen.

Message toast on a desktop
Message toast on a desktop

Width

The standard width of the toast is 15 rem, and text that exceeds this width will wrap.

Behavior and Interaction

Choreography

When an action is successful, the message toast fades in and out automatically. The timing and duration of the message toast is defined by the application team.

Users can also keep the message toast on screen with the following keyboard shortcuts:

  • Ctrl + Shift + M (Windows)
  • Cmd + Shift + M (Mac OS)

Navigation

In some scenarios, the action that triggers the message toast also triggers navigation to a different page (for example, after a save or submit action).

In this case, always navigate first, and then show the message toast on the target page.

Only show the message toast on the same page if no navigation is involved.

Exception: success message dialog

If you need to interrupt users before they leave the current page, do not use the message toast, but a message box (sap.m.MessageBox, property: type – success), which includes a success message. For more information, see message box.

Information
Only put a success message in a message box if your use case requires explicit user interaction, such as copying an order number to process it. We strongly recommend using a message toast where possible.

Animation

Set the duration of the animation according to the length of the message text: the longer the text, the longer the duration should be. The message does not react to the user’s focus.

Guidelines

Message Toast Texts

To make the toast message easy to scan, keep the text as short as possible. Remember that the user will not have time to take in very much detail.

Do not use the word “successfully” in the message text. This is implicit in a success message.

Patterns

For standard actions (such as create, save, delete, or send), we recommend using the following patterns, depending on your use case.

Use Case Use Case Variant Pattern (EN) Example (EN)
Single item Object name is not needed.

Hint: If the name or ID is not crucial feedback in your context, leave it out.

[object] [action taken] Sales order created
Object name is needed.

Hint: If you mention the object name, you can often leave out the object type (usually obvious in the context).

[name] [action taken] SAP added to customer group
Multiple items [item count] [objects] [action taken] 2 sales orders were deleted.
Multiple actions Single items, object names are not needed 1 [object] [1st action taken], 1 [object] [2nd action taken] 1 product added, 1 product removed
Single items, object names are needed.

Hint: Only include object names if the user really needs the specific feedback.

[object] [name] [1st action taken], [object] [name] [2nd action taken] Product A was added, product B was removed.
Multiple items [item count] [objects] [1st action taken], [item count] [objects] [2nd action taken] 2 products added, 3 products removed

Notes:

  • The exact phrasing will depend on your target audience and the conventions in your app family. If an action is repeated regularly by a heavy users, be as brief as possible (for example, Order deleted). If your app is typically for occasional users, a full sentence might be more appropriate (for example, Your request has been sent to the support team.).
  • Bear in mind that long object names can increase the length of the message toast. Remember to allow for this when defining the toast duration. If long or multiple object names make the toast too cumbersome to read, leave them out. If you really need to list them in a success message, use the success message box instead.
Do
Toast without ID
Toast without ID
Don't
Do not use
Do not use "successfully"
Do
Toast with item count
Toast with item count
Don't
Do not list names of multiple items
Do not list names of multiple items

SAP Fiori Elements

If you are using SAP Fiori elements, remember to replace the “object” placeholder with your business object.

For more information, see SAP Fiori Elements – Mandatory Adjustments.

Do
Replace
Replace "object" with your specific business object
Don't
Do not leave the
Do not leave the "object" placeholder

Properties

You can change the values of the following properties. Only change the values if the standard values don’t work for your use case.

Position: We recommend that you always use the initial value (horizontally centered, at the bottom of the page).

Duration: The standard value is 3,000 ms. You can set a duration of more than 3,000 ms, but do not use less than 3,000 ms.

Offset: Do not change this value.

Auto-close: True/false

Example of a message toast
Example of a message toast

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

Button

Buttons enable users to trigger actions. There are 4 button types:

Usage

Use the button types as follows:

  • Use simple buttons for specific actions, such as:
    • Create, Edit, Save
    • Approve, Reject
    • Accept, Decline
    • OK, Cancel
  • Use toggle buttons in a toolbar to activate or deactivate an object or element. You can also use toggle buttons to switch between different states.
  • If you want the user to select one option from a small group, offer a segmented button in the toolbar. For example:
    • Year, Month, Day
    • Small, Medium, Large
  • Use the menu button if you need a menu that provides more than one option.

Do not use buttons if:

  • You want to link to a different page or object. Use the link instead.
  • You want to let users upload content. Use the upload set control instead.
Common button types
Common button types

Types

Button

Buttons can trigger primary, secondary, semantic, and negative path actions. These different action types are explained in more detail in the action placement guideline.

Header and Footer Toolbars

Use the following button styling for the different action types in the header and footer toolbar:

  • Primary action: Use the emphasized button style. Note that there can only be one primary action per page.
  • Secondary action: Use the default button style. In SAPUI5 you must implement type=”ghost” to achieve this style in the header and footer toolbar.
  • Negative path action: Use the transparent button style.
  • Semantic action: Use the semantic buttons for positive and negative actions. Use the “Accept” style for positive actions, and “Reject” for negative actions.  Semantic actions must always be text buttons.

Content Toolbars

Use the following button styles in content toolbars for tables, forms or charts:

  • If the single primary action for the whole page is in the toolbar, use the emphasized button style.
  • If the single primary action for the whole page is not in the toolbar, highlight the most important button in the toolbar with the default button style.
  • For secondary actions and negative path actions, use the transparent button style.
  • For split buttons and menu buttons, use the transparent button style.
  • Do not use semantic button styles.
Button types
Button types

Toggle Button

A toggle button switches between two actions. One of the actions is always active, one is inactive. Use the toggle button for secondary actions.

Apply the following button styles for the different toolbars:

  • Header and footer toolbars: Use the standard button style.
  • Content toolbars: Use the transparent button style.

Do not use any other styling types and ensure the button label communicates the toggleable nature of the button.

Toggle button - Regular state
Toggle button - Regular state
Toggle button - Pressed state
Toggle button - Pressed state

Segmented Button

A segmented button shows a group of options. Only one of the options can be active, the others remain or become inactive. Pressing an option activates it. By default, the control for segmented buttons calculates the button width and applies it to all buttons within the group. You can change this by setting the width for individual buttons.

The segmented button is comparable to a radio button group control.

Segmented buttons
Segmented buttons

Menu Button

There are two types of menu buttons. Both can contain items and submenus.

Standard Menu Button

When the user activates the button, the menu opens. This is the default type.

Split Menu Button

The split menu button is separated into two areas: the text and the arrow icon. The separator between them signals that the two areas result in different actions. The user has two choices: activating the text on the button triggers the action. Activating the arrow opens the menu. The split button consolidates a variety of commands, especially when one of the commands is used more often.

In split mode, the text depends on the default action. If the default action is displayed as an icon only, all the menu items must contain icons.

Split Menu Button Behaviors

The split menu button can have two different behaviors:

  1. The button always triggers the default action set by the app developer. If no default action has been defined, the first item in the menu list becomes the default.
  2. The button triggers the last action chosen by the user. Initially, it also triggers the default action. However, when the user selects a different action, this user action becomes the default, and the button text changes accordingly. The button has a fixed size and the text truncates if the menu item exceeds the available width (as with the combo box).
Standard menu button
Standard menu button
Split menu button
Split menu button

Button Content

Text or Icon

A button can contain an icon OR a text.

Always use a text button for primary, secondary, semantic, and negative path actions.

Use icon buttons only if the icon metaphor is easily recognizable. Ideally, it should have same meaning worldwide.  For more information about icons in general, check out the article on iconography.

Badge

Buttons with text (left) and icon (right)
Buttons with text (left) and icon (right)

The standard button can contain an optional badge. The badge acts as a visual eye-catcher and attracts the user’s attention. It shows a number and is typically applied in browse and collect use cases. For example, it can display the number of items in a shopping cart.

Only use the badge in combination with the emphasized and secondary button styles. The number of the badge must always be a whole number (1, 2, 3, …) and cannot be smaller than 1. If 0 or minus items are in the basket, the badge is not displayed. If the number exceeds 4 characters, such as 9999, it is truncated to 999+.

The position of the badge (attached to or on a button) can vary depending on the content density.

Buttons with a badge in cozy mode (left) and compact mode (right)
Buttons with a badge in cozy mode (left) and compact mode (right)

Behavior and Interaction

Buttons can be triggered through mouse, keyboard, touchscreen and screen reader interaction.

  • A button provides visual feedback for “hover”, “press-down”, and “focused” states.
  • A toggle button remains in the pressed state until it is pressed again.
  • In a segmented button, the chosen option stays active until the user presses one of the other options.
  • menu button displays a dropdown menu on activation.
  • In a split button, selecting the button text triggers that action directly. Activating the arrow opens a dropdown menu. If the user selects a menu item, the action is triggered and the menu closes.

If an action cannot be triggered, or is temporarily unavailable, use the disabled state for the corresponding button.

If you want to switch a text, icon or tooltip after a button click, bear in mind to use the invisible message control to also convey the information to screen reader listeners.

All three button types support the cozy and compact form factors. For more information, check out the article on content density.

Regular state
Regular state
Hover state
Hover state
Pressed state
Pressed state
Disabled state
Disabled state
Focused state
Focused state

Responsiveness

Simple Button

The simple button usually grows to fit the size of the text. If you set a fixed size for the button, the text truncates.

If the button is used in a responsive container or toolbar, it follows the responsive behavior defined for that element. For example, the button can move to another line.

Buttons with different lengths
Buttons with different lengths

Menu Button

The maximum width of the menu button is 12 rem (192 px). If the button text exceeds the maximum or fixed width, it truncates.

On tablet and desktop devices (sizes M and L), the menu button triggers a cascading dropdown menu.

On smartphones (size S), the menu opens in a full screen dialog, and the button label becomes the title of the dialog. The footer contains a Cancel button. Items with submenus become navigable. Navigation is similar to that used in a popover, with a Back button.

Open menu button - Size M/L
Open menu button - Size M/L
Menu button popover - Size S
Menu button popover - Size S

Guidelines

Button Text

  • Choose a button text that is short and meaningful. Check out the UI text guidelines for more information.
  • Use a verb in the imperative for all actions (for example: SaveCancel, Edit).
    Note: The grammatical form for actions can differ for other languages. For example, German action labels use the infinitive (Sichern, Abbrechen, Bearbeiten).
  • Keep in mind that the text can be up to 300% longer in other languages.
  • If you need to show the number of items that will be affected by the action of the button, you can add the number in parentheses. For example, Edit (3).
  • Do not change the text or icon of a toggle button when it is pressed. Screen readers announce the “pressed” state for the action. If you use a different text for the pressed state, the screen reader announcement doesn’t make sense.

Icon Buttons

  • Make sure the default accessibility text for the icon is correct for your use case. If the text is not ideal, define an app-specific accessibility text.
  • Offer a tooltip to show the label for icon buttons.
  • Don’t use the icon control for buttons. Use the icon property for the button instead.

Button Shortcut

  • You can show the keyboard shortcut for an action. The keyboard shortcut appears on hover or on keyboard focus, and its positioning (top or bottom) is context-dependent. When a tooltip is needed, it is combined with the shortcut information.
Developer Hint
To show a keyboard shortcut, use sap.ui.core.CommandExecution. Do not use a tooltip.
Button with a shortcut hint
Button with a shortcut hint

Related Links

Elements and Controls

Implementation

Slider

A slider is a control that enables the user to adjust single values within a specified numerical range.

Slider example
Slider example

Usage

Use the slider to change values with graphical support.

Responsiveness

The slider itself is not responsive. It adjusts to the responsiveness of its parent container by recalculating and resizing the width of the control.

The slider supports the cozy and compact form factors. The compact form factor is used for apps that run on devices operated by a mouse and keyboard.

Types

Only a horizontal slider is available.

Behavior and Interaction

Changing the Value

If the slider is editable, the hand cursor appears when the user hovers over the grip.

The user can change the slider setting in two ways:

  • By using drag and drop to adjust the grip
  • By clicking the bar. The grip then moves to this new position.

The grip can be moved with or without increments based on the predefined steps.

Changing the value
Changing the value

Slider with Text Fields

The slider can be used with text fields instead of tooltips. In this case, the value of the grip is displayed.

Slider with text field
Slider with text field

Slider with Input Fields

The slider can be used with input fields instead of text fields. This allows the user to enter a specific value.

Slider with input field
Slider with input field

Slider with Tick Marks

You can apply tick marks to the slider. The tick marks are related to the step property, and are responsive. If the distance between 2 tick marks is less than 8 px, all tick marks except for the first and last disappear.

Slider with tick marks
Slider with tick marks

Slider with Tick Marks and Labels

If tick marks are set, you can define labels for the tick marks. The labels are displayed below the tick marks and show the corresponding value of the tick mark. The labels must always be numbers, and must never overlap. You can also define labels only for specific tick marks if you don’t need a label for every tick mark on the slider. The application developer is responsible for defining a reasonable set of tick marks.

If there is not enough horizontal space to display all the labels, a responsive mechanism is activated. The first and the last label are always visible.

Slider with tick marks and labels
Slider with tick marks and labels

Custom Values

You can define custom values as labels. This can be useful if your scenario requires descriptive intervals, such as as dates. Always keep the values as short and meaningful as possible.

Slider with custom values as labels
Slider with custom values as labels
Developer Hint
In order to use custom scales in a slider, you must map them to the floats for the slider scale.

Styles

The slider can be shown with or without a progress bar. By default, the progress bar is shown.

Examples

Slider without progress bar
Slider without progress bar
Slider with progress bar
Slider with progress bar

Properties

  • The step property must be positive. If a negative number is provided, the default value 1 is used instead.
  • The minimum, maximum, and value properties can be decimals (float values). The slider automatically sets the minimum value to 0 and maximum value to 100 by default.
  • The width of the control can be provided in %, em, px, and all possible CSS units. The slider automatically sets the width of the slider to 100% by default.

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

Label

A label is the name or title of a control or group of related controls.

Every field needs a label. If you use one label for a group of fields, use a combined label and invisible text to label the single fields.

Label 'Name'
Label 'Name'

Usage

Use the label control if:

  • You need a label for a control.
  • Always use labels for form controls.

Do not use the label control if:

  • You want to insert a heading in the column header of a table.
  • You want to use it as an alternative for the text control. Do not use the label control to display the data (for example, in display-only forms).

Required/Optional Fields

In edit mode, the label indicates whether an entry is mandatory (“required”) or optional.

If a field is required, an asterisk is shown after the label text. The asterisk is only visible in edit mode, and not in display mode.

In the image:

  1. Required, edit mode
  2. Required, display mode
  3. Optional, edit mode
  4. Optional, display mode
Information
To indicate that a field is required, set the required property to true.
Label for required and optional fields
Label for required and optional fields

Label Placement

In forms, you can place the label above the field value (recommended), or right-align the label next to the field value. For more information, see Label Alignment.

The position of a label can depend on the screen size. For example, the labels in a form can appear next to the input fields on larger screens, but move above the input fields when the screen size is reduced.

Labels next to the field and labels above the field (recommended)
Labels next to the field and labels above the field (recommended)

Styles

For better differentiation of labels and values, labels are displayed differently in a display-only environment than in an editable environment.

Wrapping

Automatic wrap only applies to labels within forms to avoid truncation.

Do not use wrapping to enable long labels. Instead, keep your labels short: a label is not a help text. It must be meaningful, succinct, short, and descriptive. For more information about the responsive behavior of text, see Wrapping and Truncating Text.

Developer Hint

The boolean wrapping property for the sap.m.Label control determines whether or not the text wraps .
Note: Only use this property in forms.

Labels in a form (edit and read-only modes, horizontal alignment)
Labels in a form (edit and read-only modes, horizontal alignment)

Hyphenation

The label control also supports hyphenation for wrapped texts (property: wrappingtype = Hyphenated). Switching on hyphenation activates it for all languages that have hyphenation support.

Guidelines

  • Always use a label for form controls.
  • Always set the vertical alignment for labels that display outside a form and flex box (property: VAlign). You can set the vertical alignment in tables and object page header facets, for example.
  • Use title case for labels.
  • Do not use a placeholder (input prompt) instead of a label.
  • You can display labels in bold text, but we recommend using the regular font weight.
  • A label is not a help text: it must be meaningful, succinct, short, and descriptive.
  • Reserve space for translation. For more information, see UI Text Space Calculator.

Exceptions

The layout can sometimes be simplified by using a placeholder instead of the label control. This exception can be applied in the following cases:

  • In search fields. For more information, see Search.

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

Text

The text control is used to display text. It generally contains the text that developers want apps to display (property: text).

Text used within a form
Text used within a form

Usage

Use the text control if you want to display text inside a form, table, or any other content area. Do not use the text control if you need a label, or vice versa.

Responsiveness

The text control is fully adaptive to all screen sizes. You can also set a specific width and overwrite the default value. The resizing behavior depends on the settings that the apps use for the text.

Wrapping / Truncation

You can define whether the text should wrap or truncate directly (property: wrapping).

You can also define how often the text should wrap before it truncates (property: maxLines).

For more information on using wrapping and truncation, see Wrapping and Truncating Text.

Text – Maximum line examples
Text – Maximum line examples

Hyphenation

The text control supports hyphenation (property: wrappingtype =
Hyphenated). Switching on hyphenation activates it for all languages that have hyphenation support.

Text with hyphenation
Text with hyphenation
Text without hyphenation
Text without hyphenation

White Spaces

The text control can preserve white spaces (property: renderWhitespace = true). For example, if the text contains ID formats with space and tab characters, you can use this option to render the IDs correctly.

White spaces are rendered
White spaces are rendered
Unnecessary white spaces are removed (default)
Unnecessary white spaces are removed (default)

Guidelines

Empty Indicator Mode

The emptyIndicatorMode property in sap.m.Text allows app developers to indicate an empty text to users by using an n-dash (“–”). If turned on, an n-dash is rendered when no text is visible. If turned off (default), the behavior is as it is. Depending on the language, the symbol may change.

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

Size of the Chart Container

The property “autoAdjustHeight” helps to correctly manage the sizes of charts contained in a chart container.

Size

The width and height of the chart container are never defined explicitly by the app. They are always set by the container itself.

  • The width of the chart container is always resized to spread 100% of the width of its parent.
  • The height of the chart container depends on the property “autoAdjustHeight“, as explained below.

Width

The chart container automatically sets the width of the charts to 100%, regardless of the width manually set to each individual chart. That means when using the chart container, the app cannot change the width of the charts.

Height

You can choose to have the height of the chart automatically adjusted by the chart container, depending on the property autoAdjustHeight.

Use of autoAdjustHeight = false

Always use autoAdjustHeight = false when the charts are embedded in a vertically scrolled page.

When autoAdjustHeight = false, the size of each chart needs to be set manually and the height of the chart container will adapt to the height of each chart.

  • For charts that scroll horizontally, use a height in pixel.
  • For charts that scroll vertically, use a height in pixel big enough so that there is no vertical scrolling.
Chart in a vertically-scrolled page
Chart in a vertically-scrolled page

Use of autoAdjustHeight = true

Always use autoAdjustHeight = true when the charts are embedded in a frame.

When autoAdjustHeight = true, the height of the chart container is set to 100% of its parent.

Each chart is automatically resized so that it uses 100% of the chart container.

No setting is required on the chart level, since everything is done automatically.

Chart in a frame
Chart in a frame

Please consider:

  • The property autoAdjustHeight = true only works correctly if the page property enableScrolling is set to false.
  • Frames can be coded with the SAPUI5 control FixFlex.

For more details refer to the resources below.

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

Value Help Dialog

Intro

The value help dialog is a UI pattern that helps the user search and select single and multiple values. The user can also define conditions.

The value help dialog is generally called from an input field or a multi-input field by clicking the selection icon (value help icon) of the input field.

Clicking the value help icon opens the value help dialog
Clicking the value help icon opens the value help dialog

Usage

Use the value help dialog if:

  • The user is searching within a dataset that contains more than 1,000 items.
  • The user needs to use different attributes to find an object (such as city, company name, and so on).
  • The user needs to define conditions, such as ranges and exclusions.

Do not use the value help dialog if:

  • There is a simpler control that fits the use case. Always start with the least complex control. For example, use the select control if the user needs to select only one item from a short list.
Information
For more information on which selection control to choose, see the selection control overview.

Responsiveness

The behavior of the value help dialog on a phone differs from its behavior on a tablet or desktop device. Both the navigation and the positioning of the selection area differ depending on the device.

Value help dialog - Sizes L and XL
Value help dialog - Sizes L and XL
Value help dialog - Size M
Value help dialog - Size M
Value help dialog - Size S
Value help dialog - Size S

Components

The value help dialog contains the following components:

1) Header
2) Icon tab bar / list control (phone)
3) Search template (optional)
4) Basic search
5) Go button
6) Result list
7) Selected items and conditions
8) Footer toolbar
9) Filters
10) Area for defining conditions, such as ranges and exclusions

Header (1)

The header bar contains the dialog title. See the Guidelines section below.

Icon Tab Bar / List Control (Phone) (2)

Depending on the device, the following controls are used to display the content of the value help dialog:

  • Smartphones: The start dialog provides a list (sap.m.List) with the standard list items (sap.m.StandardListItem), Search and Select, and Define Conditions to navigate between the different dialogs.
  • Tablet and desktop devices: The value help dialog contains an icon tab bar (sap.m.IconTabBar) to navigate between the Search and Select and the Define Conditions tab.
  • Both controls have a counter in the title that indicates the number of items/conditions selected.

Search Template (3)

Search templates allow the user to display different or additional fields in the filter area and result list. Depending on the use case, the user can switch between the different search templates in order to use different fields when searching. For example, the search template “Customer (by Company Code)” displays the additional field “Company Code” in the filter area and result list.

Basic Search (4)

The basic search finds all results that are somehow related to the input. For example, the search term “A” returns all the results containing the letter “A”.

Always offer the basic search in the value help dialog. Position the basic search to the right of the search template control. If there is no search template control, left-align the basic search.

Go Button (5)

The Go button triggers the search and filters the result list.

Result List (6)

  • The result list is populated on initial load by default.
  • If you transferred values from the input field to the basic search field of the value help dialog, the results are filtered accordingly. Only the entered (or modified) value is transferred to the basic search. Type-ahead suggestions are ignored. The search is triggered automatically when the dialog opens.
  • If available, display the ID and description of the business object in the first and second columns. Display additional information in the next columns.
  • We recommend a maximum of five columns in the result list.

Selected Items and Conditions (7)

The selected items and conditions are displayed in a tokenizer (see Token for more information). Each selected item or condition is displayed as one token.

There is no longer a visual difference between included and excluded items and conditions. They are now differentiated using operators (see Using the Filters).

Footer Toolbar (8)

The footer bar offers the OK and Cancel buttons.

Filters (9)

The filter area offers a filter field for each column in the result list. In some cases, there can be specific filter fields that do not have a corresponding column on the UI. These fields typically come from the back-end service. Initially, the filter area is hidden.

Value help dialog - Filters
Value help dialog - Filters

For the basic search with filters, the filter bar (sap.ui.comp.filterbar.FilterBar) is implemented in advanced mode. Advanced mode differs from the basic mode in the following ways:

  • There is no Filters link or a dialog to make additional filter fields visible. All filter fields are added automatically to the filter area.
  • There is a toggle button to show and hide the filters.
  • In each of the filter fields, users can use operators like “between” or “lower than” to define conditions.

Always hide the filter area in the value help dialog by default. Only show the filter area by default if the basic search can’t be provided.

Note that the value help icon of the Product ID field in the current value help dialog will open only the Define Conditions screen. The full value help dialog is not shown in order to prevent endless loops. For example, the value help icon of the Product Name or Category field in the value help for a Product field will navigate directly to the Define Conditions: Product screen.


Using the Filters

Users can enter operators (such as “=“) to define the conditions directly within the field without opening the Define Conditions tab.


Operator Input Notation Example
between valuevalue 000100
equal to =value =0001
contains *value* *1*
starts with value* 001*
ends with *value *5
less than <value <100
less than or equal to <=value <=200
greater than >value >0300
greater than or equal to >=value >=0500
not between !(valuevalue) !(000100)
not equal to !(=value)  !(=0)
does not contain !(*value*)  !(*1*)
does not start with !(value*)  !(001*)
does not end with !(*value)  !(*5)
not less than !(<value) !(<100)
not less than or equal to !(<=value) !(<=200)
not greater than !(>value)  !(>0300)
not greater than or equal to !(>=value)  !(>=0500)
empty <empty>   <empty>
not empty !(<empty>)    !(<empty>)

Note:

Depending on the underlying field, the operators may be labeled differently in the Define Conditions area. This doesn’t affect the input notation, which is based on the operator logic and remains constant.

Example: Operators for Date Fields

Operator Label Input Notation
before <value
before or on <=value
after >value
after or on >=value

 


Users must use the following notation to get results:

Using an operator to filter the result list
Using an operator to filter the result list

Area for Defining Conditions (10)

In the Define Conditions tab, you can use the following operators to define single and multiple conditions:

  • between
  • equal to
  • contains
  • starts with
  • ends with
  • less than
  • less than or equal to
  • greater than
  • greater than or equal to
  • empty
  • not between
  • not equal to
  • does not contains
  • does not start with
  • does not end with
  • not less than
  • not less than or equal to
  • not greater than
  • not greater than or equal to
  • not empty

For convenience, the operators are grouped into two categories: Include and Exclude.

For Boolean attributes, where only two values are available, the operator dropdown in the condition panel is disabled. Users can pick one of the values from the combo box.

You can also use a combo box if the possible values for a condition are fixed. Users can then choose the value they need from the list.

Each condition is displayed as a token in the Selected Items and Conditions tokenizer.

Information
The operator dropdown list may not contain all the operators listed above. The type of field value determines which operators are available.

The type of field value also determines how the operators are labeled. For example, if the field is a date field, the operator labels “less than” and “greater than” change to “before” and “after”.

Developer Hint
For information on how to manage white space characters (blanks) when users copy and paste text into input controls, see Removing Leading and Trailing White Space.
'Define Conditions' - List of operators
'Define Conditions' - List of operators
Defining a condition for a Boolean attribute
Defining a condition for a Boolean attribute

Behavior and Interaction

Basic Search and Filters

  • The basic search (mandatory) and filters (optional) are triggered by clicking the Go button. The search results are shown in the result list.
  • If data was already entered in input field from which the user triggered the value help, this data is transferred to the basic search and the results are then filtered accordingly.
  • The basic search performs a search across all fields that are displayed in the filter area and the result list.

Selecting Items and Defining Conditions

Depending on your use case, the value help dialog can offer different selection options:

  • Select a single item
  • Define a single condition
  • Select multiple items
  • Define multiple conditions
  • Select multiple items and define multiple conditions

Users open the value help dialog by clicking the value help icon in the input field. The next steps depend on the use case and form factor (smartphone or desktop/tablet).

The different use cases are described in the sections below.

Select a Single Item (Smartphone)

Tapping the value help icon opens the dialog. As soon as an item is selected, the value help dialog closes automatically.

Single item selection on a smartphone
Single item selection on a smartphone

Select a Single Item (Desktop/Tablet)

Clicking the value help icon opens the value help dialog for single selection. The icon tab bar and the Selected Items and Conditions are hidden. As soon as an item is selected, the value help dialog closes automatically.

Single item selection on a desktop/tablet device
Single item selection on a desktop/tablet device

Define a Single Condition (Smartphone)

Tapping the value help icon opens the Define Condition tab. Users define a condition by choosing the relevant operator and entering the value or values in the corresponding input field(s).

In this example, we have defined a range.

Defining a single condition on a smartphone
Defining a single condition on a smartphone

Define a Single Condition (Desktop/Tablet)

Clicking the value help icon opens the Define Condition tab. Users define a condition by choosing the relevant operator and entering the value or values in the corresponding input field(s).

In this example, we have defined a range.

Defining a single condition (desktop/tablet)
Defining a single condition (desktop/tablet)

Select Multiple Items and Define Multiple Conditions (Smartphone)

Tapping the value help icon displays the start dialog.

  • The Search and Select tab is used to select multiple items.
  • The Define Conditions tab is used to define multiple conditions.
  • The counters in the titles of both tabs represent the number of selected items/defined conditions.

All selected items and conditions are added as tokens to the Selected Items and Conditions (n) field at the bottom of the start dialog. The counter n indicates the combined number of items selected and conditions defined.

Start dialog
Start dialog
Selecting multiple items on a smartphone
Selecting multiple items on a smartphone
Defining multiple conditions (smartphone)
Defining multiple conditions (smartphone)
Filters on a smartphone
Filters on a smartphone

Select Multiple Items and Define Multiple Conditions (Desktop/Tablet)

Clicking the value help icon displays the icon tab bar with the Search and Select and Define Conditions tabs.

  • The Search and Select tab is used to select multiple items
  • The Define Conditions tab is used to define multiple conditions.

All selected items and conditions are added as tokens to the Selected Items and Conditions (n) field at the bottom of the dialog. The counter n indicates the combined number of items selected and conditions defined.

Selecting multiple items and conditions on a desktop
Selecting multiple items and conditions on a desktop
Selecting multiple items and conditions on a desktop
Selecting multiple items and conditions on a desktop

Define Multiple Conditions (Smartphone)

Tapping the value help icon opens the start dialog with the Define Conditions tab.

The selected values are added as tokens to the Selected Conditions at the bottom of the start dialog.

Start dialog
Start dialog
Defining multiple conditions on a smartphone
Defining multiple conditions on a smartphone

Define Multiple Conditions (Desktop/Tablet)

Clicking the value help icon opens the Define Conditions tab.

The selected values are added as tokens to the Selected Conditions at the bottom of the start dialog.

Defining multiple conditions on a desktop
Defining multiple conditions on a desktop

Copying and Pasting Multiple Values

The area for defining conditions allows the user to enter multiple values at once (copied from the clipboard).

Users can paste more than one value into the value input field. In this case, the condition row repeats with the previously selected condition and shows one value per row.

If there is no vertical space for the conditions, vertical scrolling is added to the top of the dialog.

Copying and pasting multiple values
Copying and pasting multiple values

Guidelines

Dialog Title

The dialog title differs depending on the device and whether multiple or single selection is used.

For smartphones:

  • Start dialog: [Object] (for example, Company)
  • Search and Select Dialog: Search and Select
  • Filters dialog: Show Filters
  • Define single condition: Define Condition
  • Define multiple conditions: Define Conditions

For tablet and desktop devices:

  • Selection of multiple items combined with selection of multiple conditions: [Object] (for example, Company)
  • Single item selection: Select: [Object] (for example, Select: Company)
  • Define single condition: Define Condition: [Object] (for example, Define Condition: Company)
  • Define multiple conditions: Define Conditions: [Object] (for example, Define Conditions: Company)

Filtering

If necessary, also provide value help for fields offered in the filters. However, do not provide the full value help dialog for the ID and description fields of the business object that is being selected. For these two fields, make sure that the value help icon opens only the Define Conditions screen.

For example, in a value help dialog for selecting the customer, do not offer full value help for the Customer ID and Customer Name fields. Instead, try to use the value help in combination with a helpful suggestion.

Constant Parameters

You can use constant parameters to pre-filter suggestion lists, dropdowns, and the value help results list. Users can’t change these parameters.

Do not show parameters with constant values as filterable fields in the filter bar of the value help dialog or in the result table columns. Constant values should not be visible to users in any way.

Related Links

Elements and Controls

Implementation

Link

A link (also known as hyperlink) is an interactive text element.

Different links visualizing the various link types
Different links visualizing the various link types

Usage

Use a link if:

  • You want to navigate to another page.
  • You want to trigger an event.
  • You want to point to an object or person. If so, you can either navigate to the object’s/person’s details or display them in a quick view after the link is triggered.

Do not use a link if:

  • You could use a button to trigger the action instead.
  • The link text is the key identifier of an object. In this case, use an actionable object identifier instead.
  • There is no target or reference to be linked to.

Responsiveness

The link can either truncate or wrap. Favor wrapping over truncating and keep the link text as short and meaningful as possible.

For more information and guidelines on the responsive behavior of text, see Wrapping and Truncating Text.

Wrapped (first) and truncated (second) link
Wrapped (first) and truncated (second) link

Types

There are four different link types:

  • Default
  • Emphasized
  • Subtle
  • Link with icon
Guidelines
Use a meaningful link text that indicates what will happen when the user interacts with the link (for example, Open Sales Order). Avoid texts such as Click Here or Link, as these do not meet accessibility standards.
Default, emphasized, subtle link, and link with icon
Default, emphasized, subtle link, and link with icon

Default

Use a default link if you want to display a simple link.

Default links
Default links

Emphasized

Use an emphasized link for extraordinarily important links that need to attract the user’s attention quickly.

Emphasized links
Emphasized links

Subtle

Use subtle links to distinguish between important (default) and less important (subtle) links when the app page is full of various links (10+). Subtle links allow you to improve the visual hierarchy in large data lists and tables.

Subtle links
Subtle links

Link with Icon

Use the link with an icon when the user expects and profits from the icon in the UI context. Please note that the icon is supportive, which means that it supports the text next to it. Therefore, a tooltip is not required. Do not use the icon for additional information.

Guidelines
Use the link with icon only if the icon is internationally well-known and easily understood. For example,  (world),   (calendar), or (theater).
Links with icon
Links with icon

Behavior and Interaction

To trigger the event or navigation, the user clicks the link. It provides visual feedback for “hover” and “focused” states.

If the link cannot be triggered due to, for example, a disabled content area part, display the disabled state.

Default, hover, focused, and disabled link
Default, hover, focused, and disabled link

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

Chart – Reference Lines

Intro

You can add reference lines to highlight certain values. Reference lines can be added to continuous axes, but not to categorical axes.

Single Reference Line

Bar chart with vertical reference line
Bar chart with vertical reference line

Multiple Reference Lines

Line chart with 3 horizontal reference lines
Line chart with 3 horizontal reference lines

Colors

Simple Reference Lines

Use simple reference lines if the area or limit they represent does not carry a semantic meaning. In this case, all the lines have the same color and only the labels differ.

Bar chart with 3 reference lines and no semantic colors
Bar chart with 3 reference lines and no semantic colors

Semantic Reference Lines

Use semantic reference lines if you want if you want to show easily distinguishable limits or areas in semantic categories. You can use between one and a maximum of all four semantic colors in one chart. The semantic colors are used as follows:

  • Negative (red)
  • Critical (orange)
  • Positive (green)
  • Neutral (gray)

 

Bar chart with 3 semantic reference lines
Bar chart with 3 semantic reference lines

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

Chart – Legend

The legend explains the meaning of all the visual elements contained in the plot area.

Layout

You can decide where you want to legend to be positioned. By default, it is displayed to the right of the plot area, but it can also be displayed below it when the chart scrolls horizontally. However, we recommend displaying to the right of the plot area when you have many legend items.

Legend at the bottom
Legend at the bottom
Legend on the right
Legend on the right

Responsiveness

When the legend is displayed to the right of the plot area, it automatically moves to the bottom when the horizontal space is reduced as illustrated below.

Responsive legend
Responsive legend
Responsive legend 2
Responsive legend 2

Behavior and Interaction

Show/Hide Legend

The legend can be hidden or shown via a dedicated standard button in the chart toolbar (not a toggle button). The visibility of the legend changes each time the button is pressed.

Select Legend Item

Clicking a legend item selects or deselects all the associated data points. It does not show or hide them, although this functionality is in the roadmap for this control.

Custom Legend Items

By default, the chart component displays a legend based on the dataset and the colors used by the chart. All colors displayed in the chart are listed in the legend.

By default, the order of the legend item is the same as the order used to render the dataset, although the order and labels of legend items can be customized.

Order

The order of the legend items can be customized to help users read it. In the example below, the default order does not respect the chronological order (which makes the legend difficult to read). Changing the order helps users recognize the information better.

Legend with default order
Legend with default order
Legend with new order
Legend with new order

Text

It is not possible to customize the legend labels when colors are automatically assigned by the chart component. When the colors are set programmatically (such as by using value-based colors), it’s possible to customize the legend items in order to clearly describe the meaning of the color.

Legend with custom texts
Legend with custom texts

Titles

By default, the legend does not display a title, although a title can be displayed manually on top of the legend. However, we recommend only displaying a title if doing so will help users understand the legend items or make the legend item labels shorter.

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

  • No links.

Chart Color Palettes – Values and Names

This page provides all the color token names that are intended for use in all SAP chart palettes.

Extended chart colors
Extended chart colors

Use of Tokens

Do

Use token/variable names.


Don't

Don’t use HEX values!

To support cross-technology chart implementation and theming capabilities, styles are defined by token names. Tokens ensure that values can be implemented centrally for multiple usages. This is explained in detail in the design token guidelines.

The associated HEX values shown on this page are for the Morning Horizon theme and should not be implemented directly in any implementation!

Values for the theming tokens for all themes are available within the directories of the open-sourced SAP Base Theming Content repository. Also check out the guidelines for design tokens and theming.

Qualitative Palette

Qualitative Palette with Base Chart Color Tokens

The base chart colors are intended to be used across all of the SAP technologies. The value of sapChart_OrderedColor_1 (and the corresponding sapChart_Sequence_1) is used as the default color across chart libraries. All of the ordered tokens are used as base values for all chart palettes. The technical ordering of the chart colors may vary between chart libraries depending on the context. It is, however, important that the correct theming tokens are used to ensure consistency.

Token Name Morning
Horizon
sapChart_OrderedColor_1 #3278be
sapChart_OrderedColor_2 #c87b00
sapChart_OrderedColor_3 #75980b
sapChart_OrderedColor_4 #df1278
sapChart_OrderedColor_5 #8b47d7
sapChart_OrderedColor_6 #049f9a
sapChart_OrderedColor_7 #0070f2
sapChart_OrderedColor_8 #cc00dc
sapChart_OrderedColor_9 #798c77
sapChart_OrderedColor_10 #da6c6c
sapChart_OrderedColor_11 #5d36ff
sapChart_OrderedColor_12 #a68a5b

Sequential Palette

Chart Sequence Colors

Chart sequence colors are connected to the main chart ordered colors. For example, sapChart_OrderedColor_1 is used as the value for sapChart_Sequence_1. The other sequence colors are then calculated to be either lighter (plus) or darker (minus) versions of sapChart_Sequence_1. This simple color relationship logic makes colors easy to modify for themeability, allowing SAP to update any token centrally and also provide future-friendly theme compatibility across all SAP technologies.


Chart Sequence Color 1

Color Name Morning Horizon
sapChart_Sequence_1_Plus3 #84b8eb
sapChart_Sequence_1_Plus3_TextColor #000000
sapChart_Sequence_1_Plus2 #468acd
sapChart_Sequence_1_Plus2_TextColor #000000
sapChart_Sequence_1_Plus1 #3c8cdd
sapChart_Sequence_1_Plus1_TextColor #000000
sapChart_Sequence_1 #3278be
sapChart_Sequence_1_TextColor #ffffff
sapChart_Sequence_1_Minus1 #31669c
sapChart_Sequence_1_Minus1_TextColor #ffffff
sapChart_Sequence_1_Minus2 #31669c
sapChart_Sequence_1_Minus2_TextColor #ffffff
sapChart_Sequence_1_Minus3 #204060
sapChart_Sequence_1_Minus3_TextColor #ffffff
sapChart_Sequence_1_Minus4 #19334e
sapChart_Sequence_1_Minus4_TextColor #ffffff
sapChart_Sequence_1_Minus5 #13263a
sapChart_Sequence_1_Minus5_TextColor #ffffff

Chart Sequence Color 2

Color Name Morning Horizon
sapChart_Sequence_2_Plus3 #efbf72
sapChart_Sequence_2_Plus3_TextColor #000000
sapChart_Sequence_2_Plus2 #eaaa44
sapChart_Sequence_2_Plus2_TextColor #000000
sapChart_Sequence_2_Plus1 #e29419
sapChart_Sequence_2_Plus1_TextColor #000000
sapChart_Sequence_2 #c87b00
sapChart_Sequence_2_TextColor #000000
sapChart_Sequence_2_Minus1 #9f6200
sapChart_Sequence_2_Minus1_TextColor #ffffff
sapChart_Sequence_2_Minus2 #7c4c00
sapChart_Sequence_2_Minus2_TextColor #ffffff
sapChart_Sequence_2_Minus3 #623c00
sapChart_Sequence_2_Minus3_TextColor #ffffff
sapChart_Sequence_2_Minus4 #623c00
sapChart_Sequence_2_Minus4_TextColor #ffffff
sapChart_Sequence_2_Minus5 #2f1d00
sapChart_Sequence_2_Minus5_TextColor #ffffff

Chart Sequence Color 3

Color Name Morning Horizon
sapChart_Sequence_3_Plus3 #b9d369
sapChart_Sequence_3_Plus3_TextColor #000000
sapChart_Sequence_3_Plus2 #a6c742
sapChart_Sequence_3_Plus2_TextColor #000000
sapChart_Sequence_3_Plus1 #8fad33
sapChart_Sequence_3_Plus1_TextColor #000000
sapChart_Sequence_3 #75980b
sapChart_Sequence_3_TextColor #000000
sapChart_Sequence_3_Minus1 #587208
sapChart_Sequence_3_Minus1_TextColor #ffffff
sapChart_Sequence_3_Minus2 #3e5106
sapChart_Sequence_3_Minus2_TextColor #ffffff
sapChart_Sequence_3_Minus3 #2c3904
sapChart_Sequence_3_Minus3_TextColor #ffffff
sapChart_Sequence_3_Minus4 #212b03
sapChart_Sequence_3_Minus4_TextColor #ffffff
sapChart_Sequence_3_Minus5 #161c02
sapChart_Sequence_3_Minus5_TextColor #ffffff

Chart Sequence Color 4

Color Name Morning Horizon
sapChart_Sequence_4_Plus3 #f473b3
sapChart_Sequence_4_Plus3_TextColor #000000
sapChart_Sequence_4_Plus2 #f14d9e
sapChart_Sequence_4_Plus2_TextColor #000000
sapChart_Sequence_4_Plus1 #ee278a
sapChart_Sequence_4_Plus1_TextColor #000000
sapChart_Sequence_4 #df1278
sapChart_Sequence_4_TextColor #ffffff
sapChart_Sequence_4_Minus1 #b90f64
sapChart_Sequence_4_Minus1_TextColor #ffffff
sapChart_Sequence_4_Minus2 #930c4f
sapChart_Sequence_4_Minus2_TextColor #ffffff
sapChart_Sequence_4_Minus3 #770a40
sapChart_Sequence_4_Minus3_TextColor #ffffff
sapChart_Sequence_4_Minus4 #51072c
sapChart_Sequence_4_Minus4_TextColor #ffffff
sapChart_Sequence_4_Minus5 #3a051f
sapChart_Sequence_4_Minus5_TextColor #ffffff

Chart Sequence Color 5

Color Name Morning Horizon
sapChart_Sequence_5_Plus3 #d5bcf0
sapChart_Sequence_5_Plus3_TextColor #000000
sapChart_Sequence_5_Plus2 #b994e0
sapChart_Sequence_5_Plus2_TextColor #000000
sapChart_Sequence_5_Plus1 #a679d8
sapChart_Sequence_5_Plus1_TextColor #000000
sapChart_Sequence_5 #8b47d7
sapChart_Sequence_5_TextColor #ffffff
sapChart_Sequence_5_Minus1 #7236b5
sapChart_Sequence_5_Minus1_TextColor #ffffff
sapChart_Sequence_5_Minus2 #5e2c96
sapChart_Sequence_5_Minus2_TextColor #ffffff
sapChart_Sequence_5_Minus3 #522682
sapChart_Sequence_5_Minus3_TextColor #ffffff
sapChart_Sequence_5_Minus4 #46216f
sapChart_Sequence_5_Minus4_TextColor #ffffff
sapChart_Sequence_5_Minus5 #341358
sapChart_Sequence_5_Minus5_TextColor #ffffff

Chart Sequence Color 6

Color Name Morning Horizon
sapChart_Sequence_6_Plus3 #64ede9
sapChart_Sequence_6_Plus3_TextColor #000000
sapChart_Sequence_6_Plus2 #2ee0da
sapChart_Sequence_6_Plus2_TextColor #000000
sapChart_Sequence_6_Plus1 #05c7c1
sapChart_Sequence_6_Plus1_TextColor #000000
sapChart_Sequence_6 #049f9a
sapChart_Sequence_6_TextColor #000000
sapChart_Sequence_6_Minus1 #02837f
sapChart_Sequence_6_Minus1_TextColor #ffffff
sapChart_Sequence_6_Minus2 #006663
sapChart_Sequence_6_Minus2_TextColor #ffffff
sapChart_Sequence_6_Minus3 #00514f
sapChart_Sequence_6_Minus3_TextColor #ffffff
sapChart_Sequence_6_Minus4 #003d3b
sapChart_Sequence_6_Minus4_TextColor #ffffff
sapChart_Sequence_6_Minus5 #002322
sapChart_Sequence_6_Minus5_TextColor #ffffff

Chart Sequence Color 7

Color Name Morning Horizon
sapChart_Sequence_7_Plus3 #68aeff
sapChart_Sequence_7_Plus3_TextColor #000000
sapChart_Sequence_7_Plus2 #4098ff
sapChart_Sequence_7_Plus2_TextColor #000000
sapChart_Sequence_7_Plus1 #1c85ff
sapChart_Sequence_7_Plus1_TextColor #000000
sapChart_Sequence_7 #0070f2
sapChart_Sequence_7_TextColor #ffffff
sapChart_Sequence_7_Minus1 #0062d3
sapChart_Sequence_7_Minus1_TextColor #ffffff
sapChart_Sequence_7_Minus2 #0054b5
sapChart_Sequence_7_Minus2_TextColor #ffffff
sapChart_Sequence_7_Minus3 #00418c
sapChart_Sequence_7_Minus3_TextColor #ffffff
sapChart_Sequence_7_Minus4 #00244f
sapChart_Sequence_7_Minus4_TextColor #ffffff
sapChart_Sequence_7_Minus5 #001b3a
sapChart_Sequence_7_Minus5_TextColor #ffffff

Chart Sequence Color 8

Color Name Morning Horizon
sapChart_Sequence_8_Plus3 #f462ff
sapChart_Sequence_8_Plus3_TextColor #000000
sapChart_Sequence_8_Plus2 #f034ff
sapChart_Sequence_8_Plus2_TextColor #000000
sapChart_Sequence_8_Plus1 #ed0bff
sapChart_Sequence_8_Plus1_TextColor #000000
sapChart_Sequence_8 #cc00dc
sapChart_Sequence_8_TextColor #ffffff
sapChart_Sequence_8_Minus1 #a600b3
sapChart_Sequence_8_Minus1_TextColor #ffffff
sapChart_Sequence_8_Minus2 #80008a
sapChart_Sequence_8_Minus2_TextColor #ffffff
sapChart_Sequence_8_Minus3 #6d0076
sapChart_Sequence_8_Minus3_TextColor #ffffff
sapChart_Sequence_8_Minus4 #56005d
sapChart_Sequence_8_Minus4_TextColor #ffffff
sapChart_Sequence_8_Minus5 #350039
sapChart_Sequence_8_Minus5_TextColor #ffffff

Chart Sequence Color 9

Color Name Morning Horizon
sapChart_Sequence_9_Plus3 #bdc6bc
sapChart_Sequence_9_Plus3_TextColor #000000
sapChart_Sequence_9_Plus2 #b5bfb4
sapChart_Sequence_9_Plus2_TextColor #000000
sapChart_Sequence_9_Plus1 #97a695
sapChart_Sequence_9_Plus1_TextColor #000000
sapChart_Sequence_9 #798c77
sapChart_Sequence_9_TextColor #000000
sapChart_Sequence_9_Minus1 #667664
sapChart_Sequence_9_Minus1_TextColor #ffffff
sapChart_Sequence_9_Minus2 #536051
sapChart_Sequence_9_Minus2_TextColor #ffffff
sapChart_Sequence_9_Minus3 #404a3f
sapChart_Sequence_9_Minus3_TextColor #ffffff
sapChart_Sequence_9_Minus4 #2d342c
sapChart_Sequence_9_Minus4_TextColor #ffffff
sapChart_Sequence_9_Minus5 #1e231e
sapChart_Sequence_9_Minus5_TextColor #ffffff

Chart Sequence Color 10

Color Name Morning Horizon
sapChart_Sequence_10_Plus3 #f1c6c6
sapChart_Sequence_10_Plus3_TextColor #000000
sapChart_Sequence_10_Plus2 #eaadad
sapChart_Sequence_10_Plus2_TextColor #000000
sapChart_Sequence_10_Plus1 #e28d8d
sapChart_Sequence_10_Plus1_TextColor #000000
sapChart_Sequence_10 #da6c6c
sapChart_Sequence_10_TextColor #000000
sapChart_Sequence_10_Minus1 #b75757
sapChart_Sequence_10_Minus1_TextColor #000000
sapChart_Sequence_10_Minus2 #9d4343
sapChart_Sequence_10_Minus2_TextColor #ffffff
sapChart_Sequence_10_Minus3 #803737
sapChart_Sequence_10_Minus3_TextColor #ffffff
sapChart_Sequence_10_Minus4 #672c2c
sapChart_Sequence_10_Minus4_TextColor #ffffff
sapChart_Sequence_10_Minus5 #562424
sapChart_Sequence_10_Minus5_TextColor #ffffff

Chart Sequence Color 11

Color Name Morning Horizon
sapChart_Sequence_11_Plus3 #c0b0ff
sapChart_Sequence_11_Plus3_TextColor #000000
sapChart_Sequence_11_Plus2 #9b83ff
sapChart_Sequence_11_Plus2_TextColor #000000
sapChart_Sequence_11_Plus1 #8669ff
sapChart_Sequence_11_Plus1_TextColor #000000
sapChart_Sequence_11 #5d36ff
sapChart_Sequence_11_TextColor #ffffff
sapChart_Sequence_11_Minus1 #4b25e7
sapChart_Sequence_11_Minus1_TextColor #ffffff
sapChart_Sequence_11_Minus2 #3a17cd
sapChart_Sequence_11_Minus2_TextColor #ffffff
sapChart_Sequence_11_Minus3 #2f13a8
sapChart_Sequence_11_Minus3_TextColor #ffffff
sapChart_Sequence_11_Minus4 #250f83
sapChart_Sequence_11_Minus4_TextColor #ffffff
sapChart_Sequence_11_Minus5 #2f13a8
sapChart_Sequence_11_Minus5_TextColor #ffffff

Chart Sequence Color 12

Color Name Morning Horizon
sapChart_Sequence_12_Plus3 #e4ddcf
sapChart_Sequence_12_Plus3_TextColor #000000
sapChart_Sequence_12_Plus2 #dacebb
sapChart_Sequence_12_Plus2_TextColor #000000
sapChart_Sequence_12_Plus1 #c4b293
sapChart_Sequence_12_Plus1_TextColor #000000
sapChart_Sequence_12 #a68a5b
sapChart_Sequence_12_TextColor #000000
sapChart_Sequence_12_Minus1 #8c744c
sapChart_Sequence_12_Minus1_TextColor #ffffff
sapChart_Sequence_12_Minus2 #786441
sapChart_Sequence_12_Minus2_TextColor #ffffff
sapChart_Sequence_12_Minus3 #5e4e33
sapChart_Sequence_12_Minus3_TextColor #ffffff
sapChart_Sequence_12_Minus4 #433825
sapChart_Sequence_12_Minus4_TextColor #ffffff
sapChart_Sequence_12_Minus5 #30271a
sapChart_Sequence_12_Minus5_TextColor #ffffff

Semantic Palette

Semantic Token Naming

The naming of the semantic tokens is generic and may not reflect usage within the charts. Application teams determine the contextual usage of chart colors.

Token Name Morning
Horizon
sapChart_Bad #f53232
sapChart_Critical #e26300
sapChart_Good #30914c
sapChart_Neutral #758ca4

Semantic Sequence Palette

Semantic Sequence Colors for Charts

Semantic sequence colors for charts are connected to the main semantic colors. For example, sapChart_Critical is used as the value for sapChart_Sequence_Critical. The other sequence colors are then calculated to be either lighter (plus) or darker (minus) versions of sapChart_Sequence_Critical. This simple color relationship logic makes colors easy to modify for themeability, allowing SAP to update any token centrally and also provide future-friendly theme compatibility across all SAP technologies.

The naming of semantic tokens is generic and may not reflect usage within the charts. Application teams determine the contextual usage of chart colors.

Chart Sequence Bad

Context examples: a bad or error value state context; heat; lifecycle contexts like negative, minus, overdue, or stopped

Chart Token Morning
Horizon
sapChart_Sequence_Bad_Plus3 #fdcece
sapChart_Sequence_Bad_Plus3_TextColor #000000
sapChart_Sequence_Bad_Plus2 #fa9d9d
sapChart_Sequence_Bad_Plus2_TextColor #000000
sapChart_Sequence_Bad_Plus1 #f86c6c
sapChart_Sequence_Bad_Plus1_TextColor #000000
sapChart_Sequence_Bad #f53232
sapChart_Sequence_Bad_TextColor #000000
sapChart_Sequence_Bad_Minus1 #d00a0a
sapChart_Sequence_Bad_Minus1_TextColor #ffffff
sapChart_Sequence_Bad_Minus2 #a90808
sapChart_Sequence_Bad_Minus2_TextColor #ffffff
sapChart_Sequence_Bad_Minus3 #830606
sapChart_Sequence_Bad_Minus3_TextColor #ffffff
sapChart_Sequence_Bad_Minus4 #570404
sapChart_Sequence_Bad_Minus4_TextColor #ffffff
sapChart_Sequence_Bad_Minus5 #320000
sapChart_Sequence_Bad_Minus5_TextColor #ffffff


Chart Sequence Critical

Context examples: a warning value state; lifecycle contexts like critical, reduced, borderline, or low stock levels

Chart Token Morning
Horizon
sapChart_Sequence_Critical_Plus3 #ffb881
sapChart_Sequence_Critical_Plus3_TextColor #000000
sapChart_Sequence_Critical_Plus2 #ff933f
sapChart_Sequence_Critical_Plus2_TextColor #000000
sapChart_Sequence_Critical_Plus1 #ff760c
sapChart_Sequence_Critical_Plus1_TextColor #000000
sapChart_Sequence_Critical #e26300
sapChart_Sequence_Critical_TextColor #000000
sapChart_Sequence_Critical_Minus1 #c35600
sapChart_Sequence_Critical_Minus1_TextColor #ffffff
sapChart_Sequence_Critical_Minus2 #aa4a00
sapChart_Sequence_Critical_Minus2_TextColor #ffffff
sapChart_Sequence_Critical_Minus3 #903f00
sapChart_Sequence_Critical_Minus3_TextColor #ffffff
sapChart_Sequence_Critical_Minus4 #6d3000
sapChart_Sequence_Critical_Minus4_TextColor #ffffff
sapChart_Sequence_Critical_Minus5 #492000
sapChart_Sequence_Critical_Minus5_TextColor #ffffff

Chart Sequence Good

Context examples: a successful or good value state; lifecycle contexts like positive, enhanced, healthy, or full stock levels

Chart Token Morning
Horizon
sapChart_Sequence_Good_Plus3 #88d79f
sapChart_Sequence_Good_Plus3_TextColor #000000
sapChart_Sequence_Good_Plus2 #56c776
sapChart_Sequence_Good_Plus2_TextColor #000000
sapChart_Sequence_Good_Plus1 #3ab05c
sapChart_Sequence_Good_Plus1_TextColor #000000
sapChart_Sequence_Good #30914c
sapChart_Sequence_Good_TextColor #000000
sapChart_Sequence_Good_Minus1 #287a40
sapChart_Sequence_Good_Minus1_TextColor #ffffff
sapChart_Sequence_Good_Minus2 #226736
sapChart_Sequence_Good_Minus2_TextColor #ffffff
sapChart_Sequence_Good_Minus3 #1c542c
sapChart_Sequence_Good_Minus3_TextColor #ffffff
sapChart_Sequence_Good_Minus4 #13391e
sapChart_Sequence_Good_Minus4_TextColor #ffffff
sapChart_Sequence_Good_Minus5 #0a1e10
sapChart_Sequence_Good_Minus5_TextColor #ffffff

Chart Sequence Neutral

Context examples: a null value state; lifecycle contexts like neutral, normal, regular, or medium stock levels.

Chart Token Morning
Horizon
sapChart_Sequence_Neutral_Plus3 #edf0f3
sapChart_Sequence_Neutral_Plus3_TextColor #000000
sapChart_Sequence_Neutral_Plus2 #c2ccd7
sapChart_Sequence_Neutral_Plus2_TextColor #000000
sapChart_Sequence_Neutral_Plus1 #9aabbc
sapChart_Sequence_Neutral_Plus1_TextColor #000000
sapChart_Sequence_Neutral #758ca4
sapChart_Sequence_Neutral_TextColor #000000
sapChart_Sequence_Neutral_Minus1 #5b728b
sapChart_Sequence_Neutral_Minus1_TextColor #ffffff
sapChart_Sequence_Neutral_Minus2 #495e74
sapChart_Sequence_Neutral_Minus2_TextColor #ffffff
sapChart_Sequence_Neutral_Minus3 #364a5f
sapChart_Sequence_Neutral_Minus3_TextColor #ffffff
sapChart_Sequence_Neutral_Minus4 #233649
sapChart_Sequence_Neutral_Minus4_TextColor #ffffff
sapChart_Sequence_Neutral_Minus5 #1a2633
sapChart_Sequence_Neutral_Minus5_TextColor #ffffff

Visual Accessibility

Enhancing Perceivable Contrast in Charts

The base set of chart colors has been tested for several color blindness types but can not cover all color blindness types.

Each color is defined with theming variables (tokens), which allow you to customize the color values using theming tools.

The extended chart sequence colors each have a corresponding text color and also a text shadow (halo) style that ensures sufficient text-to-background contrast. Additionally, built-in logic allows you to customize the chart tokens using theming tools. These provide an automatic switch between light and dark text and text shadow colors to enhance legibility.

All of the text shadow styles for each set of sequence text colors are provided as part of the SAP Theming Base Content repository.

Guidelines

  • Where possible, use a reduced set of chart color values to avoid information overload.
  • We strongly recommend providing additional means of interpreting chart values visually, such as labeling, tooltips, and patterns.

Example:

Chart Sequence Neutral color token:
sapChart_Sequence_Neutral: #758ca4
Non-text contrast to UI background (sapBackgroundColor): 3:1;

Text color token:
sapChart_Sequence_Neutral_TextColor: #000000;
Text contrast to neutral chart color (sapChart_Sequence_Neutral) color: 3:1;

Text shadow style token:
sapChart_Sequence_Neutral_TextShadow: 0 0 .125rem #fff;
A text shadow (halo) may be used to enhance text legibility.

Non-Text Contrast using Borders

Each set of sequence colors also has one border color that will ensure the correct contrast.

Border styles for each set of sequence colors are provided as part of the SAP Theming Base Content repository.

Guidelines

  • To ensure sufficient perceivable contrast for non-text elements, we recommend applying borders to any chart sequential values that fall below a 3:1 contrast measurement against the chart or user interface background.
  • The border must also have a 3:1 contrast against any chart interaction or highlight border colors.
  • It is also recommended that interaction borders differ in size as well as contrast.

Example:

Chart Sequence 1 border color token:
sapChart_Sequence_1_BorderColor: #3278BE
Non-text contrast to UI background (sapBackgroundColor): 4.2:1;
Non-text contrast to chart Interaction color (sapChart_Data_InteractiveColor): 4.5:1;

Chart color contrast measurements
Chart color contrast measurements

  1. Regular
  2. Interactive
  3. Chart border to UI/chart background: More than 3:1
  4. Chart border color (Sequence_1) to interactive border color: More than 3:1
Text shadow (halo) measurement
Text shadow (halo) measurement

  1. Dark text measured against light halo
  2. Light text measured against dark halo

The dark and light values for the text shadow ensure that text is always legible and never blurry.

Related Links

Elements and Controls

Implementation

SAP Theming Base Content
GitHub repository of SAP themes.

Combo Box

The combo box control allows users to select an item from a predefined list.

The control provides an editable input field for filtering the list, and a dropdown menu with a list of the available options.

If the entries are not validated by the application, users can also enter custom values.

Usage

Use the combo box if:

  • Users need to select a single item from a long list of items (minimum 13, maximum 200 entries).
  • The values of the option list are secondary information and do not need to be displayed right away.

Do not use the combo box if:

  • Users need to select from a list of two options, where one of the options can be implied as on and off or yes and no. Consider using a switch control instead.
  • Users need to pick one item from a small set of options with up to 12 entries. Consider using the select control instead.
  • Users need to pick one item from a large set of options with more than 200 entries. Consider using the input field control with a select dialog or value help dialog instead.
  • You need to display more than one attribute. Consider using the input field with select dialog or value help dialog.
  • Searching on multiple attributes is required. Consider using the input field with select dialog or value help dialog.
  • Your use cases require that all available options should be displayed right away without any user interaction. Consider using radio buttons or a radio button group.
Information
For more information on which selection control to choose, see the selection control overview.

Responsiveness

Size S

Size S
Size S

Size M

Size M
Size M

Size L

Size L
Size L

Also see the section on mobile handling below.

Components

Title

A descriptive heading (1).

Input Field

The input field (2) displays the selected value. Users can type any character to filter the option list.

Dropdown Arrow

The dropdown menu’s arrow (3) collapses and expands the option list.

Option List

The option list (4) contains a list of values (5) that users can choose from.

Size S
Size S
Size M/L
Size M/L

Two-Column Layout

Use the combo box with a two-column layout if you need to display additional information for the selection options, such as currencies, country abbreviations, or system abbreviations.

Users can filter both columns simultaneously showing only matching entries.

Combo box with two-column layout
Combo box with two-column layout

Grouping

You can group the items in the suggestion list by a specific attribute and separate them visually with a group header.

The group headers are not interactive.

Grouped suggestion list
Grouped suggestion list
Grouped suggestion list - Size S
Grouped suggestion list - Size S

Clear

You can add a  (Clear) icon to the combo box (property: showClearIcon). The icon appears as soon as the combo box has a value. Clicking the Clear icon removes the value from the field.

If you offer the Clear icon, make sure that the combo box is wide enough to show the icon in addition to the value.

'Clear' icon
'Clear' icon

Behavior and Interaction

Select a Value

There are three ways to select an item from the list:

  1. Select the item directly from the dropdown list.
  2. Type the item into the input field.
  3. Use the up and down arrows to navigate the list.

Clicking the input field places the cursor in the field (1). Clicking the arrow opens the option list (2). When the user starts typing, the list is filtered accordingly. The first item that starts with the characters entered is highlighted in the list and autocompleted in the input field (3). Up/down moves the highlight in the list and populates the value in the field (4). Selecting a value closes the list of options (5).

Developer Hint
With the showitems API, you can open the option list without having the dropdown arrow in a “pressed” state. Clicking the arrow again opens the full option list and changes the state to “pressed”. This allows you to show some items on focus and all items on click.

Autocomplete

When the first few letters are typed in the input field, the control performs autocomplete to help users to easily select one item from the option list.

Warning
The typeahead input feature is not available on Android devices.

Choose from Option List

The option list displays all the available items the user can choose from. The selection is always highlighted. Selecting another option from the list moves the highlight to the newly selected option.

Clicking the arrow opens the option list below the field. If there is not enough space, the list is displayed above the input field.

Selecting a value
Selecting a value

Filtering the Option List

When the user starts typing in the input field, the option list is filtered. Only items that match the characters entered are shown in the dropdown list. The default filtering method is “starts with per term”, which matches the beginning of each word in an item’s text.

In addition, application developers can set a custom filtering method “starts with” or “contains” (method: setFilterFunction). The “starts with” approach filters only for items where the beginning of the label matches the query entered. The “Contains” approach searches the full label for a match.

As a visual hint for the user, the matched characters are highlighted in the option list items. The highlighting works on the basis of “starts with per term”, regardless of the filtering method.

If the filtered option list contains items that start with the characters entered by the user, the first matching, unselected item is autocompleted in the input field.

Combo box - Default filtering and autocomplete
Combo box - Default filtering and autocomplete
Combo box - Default filtering in both columns and autocomplete
Combo box - Default filtering in both columns and autocomplete

Auto-Resize

The width of the option list adapts to its content. The minimum width is the input field plus the dropdown arrow. The maximum width is the part of the screen furthest to the right. If the option list content requires even more width, entries become truncated.

Option list – Minimum width
Option list – Minimum width
Option list adapts to long entries
Option list adapts to long entries

Mobile Handling

The user can enter text into the input field (supported by autocompletion). Clicking the dropdown arrow of the combo box (1) opens in a full-screen dialog (2). The user can now modify the selected entry by clicking the input field of the combo box. The mobile keyboard is then displayed, and the user can begin to enter a new term to filter the option list, also supported by autocompletion (3). The option list closes when the user clicks the OK button at the bottom of the list (4) or selects an item in the list (5).

Information
For information on how to manage leading and trailing white space (blanks) when copying and pasting text into input controls, please see removing leading and trailing white space.

Styles

A combo box has different styles for its different states. Here are some examples:

Unselected
Unselected
Unselected with predefined placeholder
Unselected with predefined placeholder
Unselected on hover
Unselected on hover
Arrow on hover
Arrow on hover
Focus
Focus
Expanded
Expanded
Autocomplete
Autocomplete

The combo box offers four value states:

  • Error
  • Warning
  • Success
  • Information

For error, warning, and information states, you can show an additional value state text message when the focus is on the combo box. The message can either be a plain text or a formatted text.

For more guidance on when to use which state, see How to Use Semantic Colors.

Error
Error
Warning
Warning
Success
Success
Information
Information
Warning message with long, wrapping text
Warning message with long, wrapping text

For more information on how to use the different semantic states of the control, see How to Use Semantic Colors.

Guidelines

Label

The combo box control can be displayed with or without a label. If the field is attached to another field, you do not need to define a second label. For more information, see the article on how to use labels in SAP Fiori.

Placeholder

Do not use the placeholder attribute as an alternative to a label. This is important because the placeholder text is overwritten as soon as the form is filled out. Labels are necessary to indicate the meaning of the form fields when the placeholders are no longer visible. Show a placeholder only if the user needs a hint on data entry. Do not repeat the content of the label. A hint could be a sample value or a brief description of the expected format. Read more about how to use placeholders.

 

Option List

The option list contains text values only. Keep the text values short because the list is represented using only single lines. Values that are too long might be truncated.

If you need to express that none of the selection options are selected, show a blank input field. Define a default selection whenever possible.

Don’t disable items in the option list. If an item can’t be selected, hide it.

Sorting

We recommend sorting options alphabetically to help users find the right option quickly. For more sorting rules, check out the guidelines for the select control.

Width

You can adjust the width of the option list to some extent.

The combo box control is usually used in forms, where the width is determined by the form element or container in which the combo box control is embedded. Therefore, we do not recommend defining a fixed width, but rather working with proper layout containers that have a defined width, such as the following properties: “form”, “simpleform”, “responsivegridlayout”, and “layoutdata” .

If you need to restrict the width to a defined value, set the width accordingly.

Keep in mind that there is no horizontal scrolling in the option list. Entries in the list that are too long become truncated and users may not be able to read them.

If localized text is not an issue, consider using a smaller width.

Unit of Measurement

You can use the layout options of the form to add the unit of measurement (UoM) after the combo box control. Apps can use the label-field ratio to show the UoM after the field. However, you must make sure that the UoM is properly visualized and doesn’t wrap to the next row.

Developer Hint

For accessibility purposes, you can use ariaDescribedBy from the input control.

Properties

Selection

When you select a value, there are two events:

  • Change: Occurs when the text in the input field is changed and the focus leaves the input field or the user presses the Enter key.
  • Selection change: Occurs when the user types something that matches an item in the list; also when the user clicks a list box item, or when navigating via keyboard.

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

Column Chart

Column charts are used to compare multiple values over time, or values that have an intrinsic order (such as age, ranges, or ratings). The idea is to convey a progression or a trend, which is best represented by showing these values on the horizontal axis.

Column chart with a time category
Column chart with a time category
Column chart with a category that has an intrinsic order
Column chart with a category that has an intrinsic order

Column Chart vs. Bar Chart

Use a column chart if:

  • Category items represent a time series. The natural orientation for time is from left to right.
  • Category items have an intrinsic order.

Use a bar chart if:

  • Category items do not have an intrinsic order (such as products, projects, or countries).

If you use a column chart for categories that do not have an intrinsic order, there is a high probability that the labels will be displayed at 45°, forcing truncation and making them hard to read. However, this will not happen with a bar chart, as illustrated below.

Do
Bar chart with labels displayed correctly - Categories that do not have an intrinsic order
Bar chart with labels displayed correctly - Categories that do not have an intrinsic order
Don't
Column chart with labels at 45° - Categories that do not have an intrinsic order
Column chart with labels at 45° - Categories that do not have an intrinsic order

Time Axis

If the horizontal axis represents time, you can use the time axis.

The time axis has three main advantages:

  • It allows you to display dates and times in a responsive manner.
  • All the complexity involved with formatting the axis labels is automatically taken care of.
  • The physical spacing between the data points accurately represents the time scale, as opposed to being equidistant.

If you do not need the advantages offered by the time axis, you can use a horizontal categorical axis instead.

Labels

When space is limited, the labels are displayed at 45°, making them difficult to read. Here’s how to avoid this:

  • First, check that the category has an intrinsic order. If not, consider using a bar chart instead.
  • If the category is time-based, use a time axis.
  • If it is not possible to use a time axis, the only solution is to abbreviate the labels.

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

No links.

Chart Types

The following chart types are available in vizFrame:

Bar Chart

  • Simple
  • With dual axis

Bubble Chart

  • With horizontal value axis
  • With horizontal time axis

Bullet Chart

  • Vertical
  • Vertical with time axis
  • Horizontal

For guidelines, see Bullet Chart.

Column Chart

  • With categorical axis
  • With time axis
  • With dual axis

For guidelines, see Column Chart.

Combined Column and Line Chart

  • With categorical axis
  • With categorical axis and dual axis
  • With time axis
  • With time axis and dual axis

Combined Stacked Column and Line Chart

  • With categorical axis
  • With dual axis

Donut Chart

  • Donut chart
  • Pie chart

Heatmap

  • Heatmap chart

Line Chart

  • With categorical axis
  • With time axis
  • With dual axis

For guidelines, see Line Chart.

Scatter Chart

  • With horizontal value axis
  • With horizontal time axis

Stacked Bar Chart

  • Simple
  • 100%
  • With dual axis

Stacked Column Chart

  • With categorical axis
  • With dual axis
  • With time axis
  • 100% with categorical axis
  • 100% with dual axis
  • 100% with time axis

Treemap Chart

For guidelines, see Treemap Chart.

Waterfall Chart

  • Horizontal
  • Vertical with categorical axis
  • Vertical with time axis
  • Vertical with time axis and multiple series (periodic)

For guidelines, see Waterfall Chart.

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

VizFrame (SAPUI5 samples)

Initial Page Floorplan

The initial page floorplan allows the user to navigate to a single object to view or edit it. The interaction point on the screen is a single input field that relies on assisted input to direct the user to the object in as few steps as possible (using features such as value help and live search). If you need to display more than one object, use the list report floorplan instead.

Initial page interaction sequence
Initial page interaction sequence

When to Use

Use the initial page floorplan if:

  • The user only needs to work on one object at a time. In this case, the list report floorplan would include a redundant step for viewing a list of items found by the search.

A typical use case for the initial page floorplan is a scanning app, where each new scan leads to an object with input fields. Once the user has submitted the entries, the screen is shown in read-only mode. The cursor returns to the input field, ready for the user to scan the next object.

Do not use the initial page floorplan if:

  • The search is supposed to return a list of objects. This is the scenario for the list report floorplan.

It is also advisable to use only one input field for finding the object. If you need to include detail views, or allow the user to switch between views, offer these features when displaying the object itself.

Components

The initial page is a floorplan based on the object page, with a dynamic page header and a content area.

  1. Shell bar (mandatory)
  2. Dynamic page header (mandatory)
  3. Content Area (mandatory)
  4. Input field (mandatory)
  5. Header features (optional)
  6. Footer toolbar (optional)
Initial page structure
Initial page structure

Dynamic page header

The header area can contain the same content as the object page and thereby follows its defined structure, except for the title, which is replaced by an input field. The header initially displays in collapsed mode but expands when the user performs a search or finds an object using the input field. Choose the selection control best suited to your use case.

Content area

The content area is used to display the object. It can contain a navigation bar, sections, subsections, forms, and tables.

Behavior and Interaction

Initial Focus

When the initial page is loaded, set the initial focus on the input field in the header title area.

Live Search

The input field serves as the single starting point for finding the object. The assisted input uses the live search feature (search-as-you-type) to speed up the search. The live search feature can show anything from one attribute to an entire table of values. To guide the user, you can use an illustrated message to display a hint, such as Enter the ID manually or Scan the code.

Initial page with live search
Initial page with live search

Initial Screen with dialog

If multiple hits are possible for the same search terms, you may need to implement a select dialog, table select dialog, or value help dialog. These dialogs let the user narrow down the list of items based on more specific criteria. When the user selects an object from the list, the dialog closes and the object is displayed in the content area.

Initial page with dialog
Initial page with dialog

Behavior of the Search Field

The content of the dynamic page header is initially collapsed and cannot be expanded. The input field is located in the header title area of the object page. If no other additional actions are provided, set the focus to the input field . This allows the user to enter the search term directly without clicking into the field. However, only consider doing this if there are no other elements that could be blocked by it, such as the on-screen keyboard on touch devices.

Once the user finds an object, the dynamic page header expands and displays the relevant information for the object.

The dynamic page header collapses on scrolling or by user interaction, but the input field for performing a different search is always visible.

If the user enters new search terms in the input field, the focus moves away from the field and the app triggers a new search. If no results are found, the initial view of the page is shown – with a collapsed header and a corresponding message in the content area.

Initial page with error message
Initial page with error message

Responsiveness

The initial page features a single interaction point for the user: the input field near the top of the screen. Place the input field inside header title bar (sap.f.DynamicPageTitle). Configure the width to fit the width of the longest text (allowing some additional space for other languages), but do not make it significantly wider. When you set the maximum width of the input field, also consider the width available on mobile devices.

The field should never be as wide as the screen (except on smartphones).

Initial page floorplan - Size S
Initial page floorplan - Size S
Initial page floorplan - Size L
Initial page floorplan - Size L

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

Message Handling – Overview

Intro

Carefully orchestrated messages are key to the user experience: they guide and validate user actions, and serve to both pre-empt and help resolve problems. But messages also distract users and interrupt their flow, so it’s important to always use messages consistently and optimize the interaction as a whole.

SAP Fiori comes with a range of different message types and controls. This article provides an overview of the message formats available and how to use them in common messaging scenarios.

Basic Principles

  • Indicate errors and warnings clearly on the UI.
  • Think carefully about how prominent your message needs to be and when you need to interrupt the user. Don’t interrupt users unnecessarily.
  • Help the user to recognize, diagnose, and resolve the issue.

Message Types

The following message types are available:

Icon Message Type When to Use Example
   Error An issue has occurred that prevents further processing. The user must resolve the issue to continue. A value has been entered in the wrong format.
   Warning A problem or inconsistency has arisen. Users can carry on working, but might run into an error later on. An action can’t be applied to some of the selected items, but can still be performed for the rest.
   Success An action has been performed without errors or warnings. A business partner has been created.
   Information You want to provide additional, non-critical information. Processing is not blocked. Highlight and explain a system recommendation.
   Confirmation You want to prompt the user to confirm an action before it is executed. Confirm approval of a vacation request.

Message Controls

SAP Fiori uses the following message controls and visualizations:

Message Box

The message box (sap.m.MessageBox) displays a message dialog that interrupts the user in the course of an action. It forces the user to acknowledge the information or make a decision.

Usage

Use the message box to display messages that are not related to a field on the UI, or when you require a user decision.

More information:
Message Box
Text Guidelines – Word Choice for Actions

Error message box
Error message box

Message Popover

The message popover (sap.m.messagePopover) can display multiple messages of different types (error, warning, information, or success).

Messages are added to the popover automatically, without interrupting the user.

Usage

The message popover is used to collect messages relating to form fields and table fields.

More information:
Message Popover
Form Field Validation

Message popover for a form
Message popover for a form

Message View

The message view can contain multiple messages of different types (error, warning, information, or success). It is typically embedded in a dialog and interrupts the user action.

Usage

Use a message view to collect messages that are triggered by a user action, but are not related to form or table fields.

More information: Message View

Message view
Message view

Message Toast

A message toast (sap.m.MessageToast) is a small, non-disruptive popup that disappears automatically after a few seconds.

Usage

The message toast is the standard message component for success messages.

More information: Message Toast

Message toast
Message toast

Message Strip

The message strip is an information bar that can be placed within the content area of a page. It can contain error, warning, success, or information messages. The message strip can be static or interactive.

Usage

You can use the message strip to display general information or inform about the status of an object.

More information: Message Strip

Message strip with warning message
Message strip with warning message

Illustrated Message

An illustrated message combines a message, a supportive illustration, and an (optional) call to action.

Usage

You can use illustrated messages to improve the user experience for empty states within UI elements. Illustrated messages adjust to the size of the container (such as a card, dialog, or full page).

More information: Illustrated Message

Illustrated message
Illustrated message

Value States for Input Fields

Value states give feedback on user entries at field level. After input validation, affected fields are highlighted using semantic colors for the message type (error, warning, success, information). Clicking a field displays a corresponding in-place message.

Usage

Value state messages are used for input fields, typically in forms.

More information:
UI Element States – Value States
Form Field Validation

Form fields with error value state
Form fields with error value state

Quick Confirmation Popover

The quick confirmation popover displays a confirmation prompt adjacent to the triggering action.

Usage

Use the quick confirmation popover when the user leaves the create or edit screen for an object by pressing Cancel.

Quick confirmation popover
Quick confirmation popover

Common Message Patterns

Standard message patterns have been defined for certain scenarios. Here’s an overview of the main patterns and where to find more information.

Message Pattern Summary More Information

Validation

For specific fields SAPUI5 provides a set of controls to guide users when completing forms, including in-place value state messages for fields and a full list of all messages in a popover. Form Field Validation
For actions (not field-related) In edit mode, messages that do not relate to a particular field on a page, but result from an action, appear in the message popover. Message Popover
For multiple selection scenarios If multiple items are selected, the user is made aware of all issues and warnings in one place. The exact format depends on the available messaging controls and infrastructure. Processing Multiple Items
Draft Handling

Data loss warning

Triggered by Cancel If there is a risk of losing unsaved data, a warning message is provided as soon as the Cancel action is triggered. Message Box
Triggered by navigation If there is a risk of losing unsaved data, a warning message is provided as soon as the user navigates away from the page using in-app controls. Message box

Intelligent systems

Situation handling Situation handling is a concept for bringing business issues to the attention of specific user groups. It helps the user to recognize, understand, and resolve the situation by gathering all relevant information and proposing solutions. Situation Handling
Recommendations Intelligent systems can help users by recommending appropriate content or suggesting an action or input the user may “prefer”. In this case, we speak of a recommendation pattern and its impact on the UI. Recommendations

Message Copy

When formulating message texts, keep the following principles in mind:

More Information:

Top Tips

  • Ask yourself if you really need a message. Can the message be avoided by improving the design?
  • Define and test messaging scenarios in the design phase.
  • Always get your message texts (including the titles and buttons) reviewed by a user assistance developer.

Related Links

Elements and Controls

Implementation

  • No links.