States

Using the correct state or combination of states for a UI element helps users to recognize possible options and see where they need to take action.

Types of State

UI elements can have different types of state. Follow the links below to see the guidelines for each state.


State Description Variants
Component State Determines the interactivity and visibility of the component. Enabled
Disabled
Read Only
Hidden
Focus State Determines which component receives the user‘s input. The focus state is most important for keyboard interaction. Focused
Unfocused
Interaction State Indicates the current the interaction state of a component. Regular
Hover
Down
Selection State The selection state is applied after the user selects the element to distinguish it from other elements. Selected
Unselected
Indeterminate
Value State Shows the semantic meaning of a UI element in a specific use case and context. None
Positive
Negative
Critical
Information
Custom

Combining States

Certain states can also be combined. For details, see State Combinations.





Component States

The component state determines the interactivity and the visibility of the component. A component can have only one component state at any given time.

Variants

The following component states are available:



Enabled

An enabled component can be interactive and can be used to perform the action. Usually, this is the default state for all components. The component is focusable, visible, and – if applicable – editable.

  Use:

  • If a component can currently be used.

  Don’t Use:

  • If a component can’t currently be used.
  • If a component can’t be used at all. Hide it instead.


Button - enabled
Button - enabled
Checkbox and radio button - enabled
Checkbox and radio button - enabled
Input - enabled
Input - enabled
List - enabled
List - enabled

Disabled

A disabled component can’t currently be used. Disabled components have reduced visibility and aren’t focusable or editable.

  Use:

  • If a component can’t currently be used, but it’s obvious how to enable it.

  Don’t Use:

  • If the user can never enable the component. Hide it instead.
  • If it wouldn’t be clear why a component is disabled. In this case, keep the component enabled and provide a message if it is used incorrectly.


Button - disabled
Button - disabled
Checkbox and radio button - disabled
Checkbox and radio button - disabled
Input - disabled
Input - disabled
List - disabled
List - disabled

Read Only

Read-only components are displayed in edit mode, but aren’t editable. The component is fully legible and focusable. The value can be recognized and selected, but not changed.

  Use:

  • If a page or a part of it is in edit mode, and a component is currently not editable or changeable.
  • If an input value must be readable.

  Don’t Use:

  • If a component can never become editable. Use alternatives instead (such as text, or display only).


Checkbox and radio button - read only
Checkbox and radio button - read only
Input - read only
Input - read only
Text area - read only
Text area - read only

Hidden

Hidden components are not visible, not focusable, and not editable. The component doesn’t take up any space.

  Use:

  • If a component can never be used (for example, because the role or group assigned to the user doesn’t include the necessary authorization).
  • If hiding the component is a meaningful form of responsive behavior. Example: A column of a table isn’t needed on phones.
  • If the component isn’t available for the current context.
  • If parts of the UI are changed based on a setting.

  Don’t Use:

  • If a component can’t currently be used, but can be enabled by user actions.

Related Links

Guidelines

Multi Input

A multi input allows the user to enter multiple values, which are displayed as tokens.

To help the user enter a valid value, you can enable the suggestions feature and the value help option.

Multi input – live example

When to Use

Do

Use the multi input:

  • To provide the value help option to help users select or search for multiple business objects.
  • To let users select multiple ranges (with the value help).
  • To enable users to add custom values.
Don't

Don’t use the multi input:

  • To choose multiple options from a large list.
  • If there is not enough space available on the screen.
  • To choose only one option from a list.

Anatomy

  1. Tokens: Show individual selected values.
  2. Input field: Area for displaying tokens and typing text.
  3. Value help icon: Trigger for opening a value help dialog.
 Anatomy of a multi input
Anatomy of a multi input

Variants

With Tokens

Predefined Tokens Only

The user can write text in the input field that does not correspond with the predefined values in the list, but a token isn’t created and the text just appears in the input field.

Multi Input with predefined tokens – live example

Including Token Creation

The user can write text in the input field that does not correspond with the predefined values in the list and create tokens with this text.


Create token from value entered – live example

With Value Help Icon

You can add a value help icon in the input field to trigger a separate value help dialog for selecting the values. The dialog must be implemented separately.

Basic multi input with value help icon

Behavior and Interaction

Select/Enter Values

To add values to the multi input, users can:

  1. Start typing and select a value from the dropdown list. The selected values appear as tokens.
  2. Type a text and press Enter to add a new value. This creates a new token with the typed text.

If there isn’t enough space to display all the tokens, an overflow button appears (n More, or n Items).

The user can only enter a value once. The multi input displays an error if the same token is selected twice.

Empty multi input – live example

View/Adjust Selection

If tokens are hidden in the overflow, clicking n More or n Items displays all the selected values.

To remove an item from the selection, users can

  • Click the “X” icon in the token.
  • Focus on the token to select it and use the keyboard delete key to remove the token.

Multi input with multiple tokens – live example

Globalization and Localization

The multi input supports left-to-right (LTR) and right-to-left (RTL) reading directions.

Multi input - LTR and RTL reading directions
Multi input - LTR and RTL reading directions

Related Links

Implementation

Combobox

The combobox allows users to select an item from a predefined list.

It 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 a custom value.

Combobox – live example

When to Use

Do

Use the combobox:

  • If users need to select a single item from a long list of items.
  • If the list items are secondary information and do not need to be displayed right away.
Don't

Don’t use the combobox:

  • If there are only two options to choose from. Use a switch instead.
  • If users need to select an item from a short list of items. Use the select component instead.
  • If there are more than 200 list items. Instead, consider using an input field with a select or value help dialog.

Anatomy

  1. Input field: Displays the selected value.
  2. Value/text: The content the user has entered into the field.
  3. Dropdown button: Expands and collapses the option list.
  4. Option list: Contains values from which the user can choose.
 Anatomy of a combobox
Anatomy of a combobox

Variants

List Layouts

Use the two-column layout if you need to display additional information for each option.

You can group items in the option list.

Two-column layout – live example

Grouped items

Filters

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 following filter variants are available:

Starts with per term (default): Filters for items where the beginning of any word in in the label matches the query entered.

Starts with: Filters only for items where the beginning of the label matches the query entered.

Contains: Searches the full label for a match.

‘Starts with per term’ filter variant – live example
‘Starts with’ filter variant – live example
‘Contains’ filter variant – live example

Behavior and Interaction

Choose from List

  1. Clicking the dropdown button opens the suggestion list.
  2. Selecting an item from the list enters it in the input field.

Type or Paste Text

  1. The component responds as the user types or pastes in text:
    • Suggestions are filtered based on the typed text (see Filter Variants).
    • The autocomplete feature proposes matching labels. The autocompleted part of the text is highlighted.
  2. To enter a value in the input field, the user can:
    • Press Enter to accept the autocompleted text.
    • Click an item in the suggestion list.
Combobox – live example

Handling of Incorrect Values

  • If the user pastes or types a text that doesn’t match one of the selection options, it remains in place by default.
  • If data validation is implemented, entering an incorrect text triggers an error message and the field displays in an error state.
Data validation – error state for incorrect value

Responsive Behavior

On mobile phones, the selection list is displayed as a full screen dialog.

Related Links

Implementation

  • Combobox
    (UI5 Web Components documentation)

Date Picker

The date picker lets users enter a single date and navigate directly from one month or year to another.

Basic date picker- live example

When to Use

Do

Use the date picker:

  • If users typically need to enter a single date.
  • To navigate directly from one month or year to another.
  • Тo enter a lot of data fast or primarily using the keyboard.
Don't

Don’t use the date picker:

  • If you need a combined date and time input component. In this case, use the date/time picker.
  • If you need to keep the calendar visible and prominent. In this case, use the calendar.
  • If users typically need to enter a date range. Use the date range picker instead.

Anatomy

  1. Date input field: The container in which a user enters data. It contains a mask.
  2. Text: A placeholder or selected/typed text.
  3. Date picker button: Button that opens the calendar.
  4. Calendar component
Anatomy of the date picker
Anatomy of the date picker

Variants

The date picker supports Gregorian, Japanese, Buddhist, Islamic and Persian calendars. You can use a single calendar type only, or show two calendar types – one primary and one secondary.


Single Calendar Type

The date picker supports Gregorian, Japanese, Buddhist, Islamic and Persian calendars.


Two Calendar Types

In addition to the primary calendar, you can add a secondary calendar type.


Date picker with an Islamic calendar- live example


Date picker with a secondary calendar – live example


Custom Placeholder

You can provide a custom placeholder text. By default, the placeholder text shows the specific date format (based on the user’s locale).

Restricted Date Range

You can set minimum and maximum dates. In this case, the user can only select dates within the approved range.

Date picker with a custom placeholder text – live example

Date picker with restricted date range – live example

Behavior and Interaction

Selecting a Date

If the date picker is editable, the user can select a date in two ways:

  • By typing in the input field.
  • By choosing a date from the calendar. After selection, the calendar closes and the date appears in the date input field.

Navigation

To change the month, the user can either use the Previous/Next arrows or select a specific month in the month view.

To change the year, the user can either scroll through the months with the Previous/Next arrows or select a specific year in the year view.

Shortcuts

The following shortcuts are available for entering specific dates:

  • “today”
  • “yesterday”
  • “in x days”
  • “x days ago”

Date picker with shortcuts – live example

Restricted Date Range

If minimum and maximum dates have been set, selection and navigation to dates outside this range is disabled.

Formatting

If the user types the date in the input field, it must fit the required date format. For example, if the format pattern is “yyyy-MM-dd”, a valid user input would be “2015-07-30”.

Supported format options are pattern-based on Unicode Locale Data Markup Language (LDML) date format notation.

Related Links

Implementation

Toggle Button

A toggle button allows users to toggle between two states: active (pressed) and inactive (not pressed).

For example, a toggle button might be used to show or hide a screen element or to provide a filtered view of a dataset.


Toggle buttons – live examples
Toggle buttons with semantics – live examples
Disabled toggle buttons – live examples

When to Use

Do

Use the toggle button:

  • To switch between different states.
  • To activate or deactivate an object or element in a toolbar.
Don't

Don’t use the toggle button:

  • For actions that trigger an activity, flow, or process (such as Create, Edit, or Save). Use the button instead.
  • To show a group of options. Use the split button or the segmented button instead.

Anatomy

  1. Background: Different background colors visualize the state of the button.
  2. Text / Icon: Describes or visualizes the state when the button is pressed.
Anatomy of a toggle button
Anatomy of a toggle button

Variants

Three toggle button variants are available:

  • Text only
  • Icon only
  • Text and icon
Toggle button variants – live examples
(from top to bottom: text only, icon only, text and icon)



The toggle button also visualizes the priority of the action. Three variants are available:

  • Primary
  • Secondary (= standard)
  • Tertiary
Toggle button variants for prioritization – live examples
(from top to bottom: primary, secondary, tertiary)

Behavior and Interaction

Pressing the toggle button switches between the active and inactive states. The impact of the toggle button is directly recognizable.

Toggle button behavior – live examples

Related Links

Implementation

Title

The title is a simple, large-sized text containing additional semantic information about the header level for accessibility purposes.

Title levels 1-6

When to Use

Do

Use the title:

  • To display a title above a table or form.
  • To show headings in the page header.
Don't

Don’t use the title:

  • If text is inside a text block. Use normal text instead.
  • If text is inside a form element. Use the label instead.

Variants

Header Level

Six semantic header levels are available, ranging from H1 (highest) to H6 (lowest). The higher the level and the larger the font size, the more important the title is.

Even if titles presented on the page in a mixed order for visual appeal, assigning them to the correct header level ensures that the semantic meaning of the title is described correctly for screen reader users.

Title variants for different header levels

Header Style

The style of each header level depends on the theme being used and the specific use case. As a result, different styles may be used for titles with the same header level.

Header levels with different header styles

Title as a Link

A title can also be a link.

Title on different title level as a link – live example

Responsive Behavior

Wrapping and Truncation

You can define whether the text should wrap or truncate when there is not enough space.

For example:

  • If the title is placed outside components like a toolbar, shell bar, or dialog (dialog header), use wrapping.
  • If the component is designed to save vertical space, and only allows one line of the text with a limited width (like the title of a toolbar), use truncation.
Wrapped and truncated titles

Related Links

Components

Implementation

  • Title
    (UI5 Web Components documentation)

Table

A table contains a set of data that is structured in rows and columns.

Table cells can contain any kind of data, including interactive controls that allow users to edit the data, navigate, or trigger related actions.

Table – live example

When to Use

Do

Use the table:

  • If you need to display tabular data.
  • To enable selection of one or more items when details are needed to choose the correct item.
  • If rows are independent of each other and no operations are required across columns.
  • If you want to have only one implementation for all devices.
Don't

Don’t use the table:

  • To display content that doesn’t require tabular data, such as text or images.
  • To create a layout.

Anatomy

Table

  1. Column Header: Contains the title for each column.
  2. Column: Vertical arrangement of data within the table. A column represents a single type of information that is associated with each row in the table.
  3. Row: Horizontal arrangement of data within the table. A row represents a line item for an entity with multiple data points, organized in columns.
  4. Cell: A cell can contain any type of component. Each cell can contain one or more lines of text.
Anatomy of a table
Anatomy of a table

Group Row

A group row is a visual separator between sets of data in the table. It is used to group related data and make it easier to read and understand.

Each group row contains a heading that describes the data below it. To preserve the intended design, we strongly recommend using text only.

Table with group rows
Table with group rows

Table with Sticky Column Header

You can set the column header of the table to remain fixed at the top of the page during vertical scrolling as long as the table component is in the viewport.


Table Selection Mode

The table supports different types of selection mode:

  • None (default)
  • Single selection
  • Multiple selection

Single selection: Only one row can be selected.

Table in single selection mode


Multiple selection: Multiple rows can be selected. A checkbox appears at the beginning of each row.

Table in multiple selection mode


You can also specify if a visual response is provided upon press when the user clicks on a row or presses Enter.


Growing Behavior

You can let the table grow – either by adding a scrollbar to the table or by showing a More button. By default, the growing capability is switched off.

Scroll: More rows are loaded when the user scrolls to the bottom of the table.

Button: Shows a More button at the bottom of the table. Pressing the button loads more items.

Growing mode with ‘More’ button


You can change the text for the growing button.

In addition, you can display a subtext below the button.

Growing mode with custom button text and subtext

Cells with Additional Components

You can add additional components to a cell. This allows you to provide additional information, include a visual representation, or otherwise increase usability. Only use components that make sense in the context of the table.

Example: Product and product ID in one cell

Table with No Data

If no data is available in the table, a “No Data” text is displayed by default. App teams can customize the text.

Table without data

Busy Indicator

If the table is in the process of fetching data, show the busy indicator. The opacity of the table component is then reduced and the busy indicator is displayed on top of the table content.

Table in a busy state

Behavior and Interaction

Focus

Clicking a row sets the focus on that row.

Focus on a table row – live example

Single Selection Mode

Selecting a row in single selection mode highlights the row.

Table in single selection mode – live example

Multiple Selection Mode

In multiple selection mode, selecting the checkbox for a row selects the row and highlights it.

Selecting the checkbox in the table header selects all the table rows at once.

Table in multiple selection mode – live example

Table with group rows in multiple selection mode – live example

Sticky Column Header

If the column headers are set to “sticky”, they remain in place when the user scrolls down.

Table with sticky column headers – live example

Touch Enablement

The behavior for selecting a row from the table on touch devices is similar to the mouse interaction.

The gesture for selecting a row is a one-finger tap.

Responsive Behavior

You can make tables responsive on smaller screens by hiding columns or by moving some content into the first column.

Use of these responsive features is optional. By default, the table just minimizes all visible columns until they are no longer readable.

If you don’t implement the responsive behavior, ensure that you provide an adaptive solution for smaller screens.

Minimum Width

For each column, you can set the minimum table width that is required for the column to be displayed. In this way, you can determine which columns are shown for different screen sizes. You can also allow the column to “pop in” instead of hiding it (see below).

Pop-In Mode

If the table isn’t wide enough to show all columns, you can opt to let the content of the missing columns “pop in” below the content of the first column.

By default, the pop-in mode is switched off. App teams must activate it explicitly.

For smaller screens, you can pick which columns remain in the one-column or two-column table. All other data is moved to the space between two rows, known as the “pop-in area”.

In this area, data for the corresponding cell is provided as a label/value pair. The label is defined by the column header, and the value is taken from the corresponding cell. Labels can be displayed next to the value or above the value.

Within the pop-in area, multiple label/value pairs can be displayed in two ways:

  • Inline: Label/value pairs are listed next to each other.
  • Block: Label/value pairs are listed one below the other.

Depending on how the table will be used, we recommend using the last column to show right-aligned content.

Table in pop-in mode

Content Density

The table is available in two different sizes:

  • Cozy: Broader spacing for touch devices
  • Compact: Regular spacing for desktop devices

Table in cozy mode
Table in compact mode

Globalization and Localization

For right-to-left languages, the table is mirrored. In pop-in mode, the content pops in on the right.

Table in left-to-right mode
Table in right-to-left mode

Related Links

Implementation

  • Table
    (UI5 Web Components documentation)

Tab Bar

The tab bar comprises a series of tabs that each link to a different content area or view. You can use the tab bar to navigate between subpages for an object, as a filter, or to visualize process steps.

Tab bar – live example

When to Use

Do

Use the tab bar:

  • To display multiple subpages for a business object on one page.
  • To let users switch easily between subpages.
  • To visualize clear-cut process steps.
  • To offer prominent, one-click visual filters above a set of items.
Don't

Don’t use the tab bar:

  • To show only a single tab.

Anatomy

Tab Bar

  1. Main bar: Contains two types of element:
    1. Tab: The clickable item inside the tab container.
    2. Tab separator: Visual indicator used to separate the tabs.
  2. Overflow menu: Contains any remaining tabs that can’t be displayed in the available space.
  3. Content area: Contains the content for the selected tab.
Anatomy of the tab bar
Anatomy of the tab bar



Tab

  1. Icon: Icon for the tab.
  2. Text: Text for the tab.
  3. Additional text: Supplementary text for a tab, such as a count.
  4. Subtabs: A tab can contain subtabs. For details, see Hierarchies.

The visual representation of the tab adapts automatically, depending on the elements it contains.

Anatomy of a tab
Anatomy of a tab

Variants

You can use different tab bar variants, depending on your use case:


Text Tabs

Text tabs allow longer labels, which are not truncated. They can also display a count after the text to indicate number of items on the tab page.

Tab bar with text tabs – live example

Icon Tabs

These round tabs can be populated with any icon. Labels are optional. If you decide to use labels, use them for all tabs. You can use additional text as needed.

Tab bar with icon tabs – live example

Filter Tabs

When used as a filter, the tab bar can contain a tab for displaying all items (optional), in addition to the individual tabs for each filter attribute. We strongly recommend showing the count as an additional text for every tab.

Tab bar with filter tabs – live example


Process Tabs

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

Tab bar with process tabs – live example

Behavior and Interaction

Selection

Only one tab can be selected at a time. Selecting a new tab deselects the tab that was displayed previously.

Tab selection – live example

Hierarchies

The tab bar supports hierarchies, allowing you to group multiple tabs under a main tab. The label of the main tab then serves as the heading for the group. An arrow indicates that a tab has subtabs.

If the parent tab has its own content, it is separated into two interactive areas, like a split button:

  • Clicking the left area (text) displays the content for the parent tab.
  • Clicking the right area (arrow) opens a menu with the subtabs.
Parent tabs with own content – live example


If the parent tab doesn’t have its own content, it has only one interactive area. Clicking the main tab opens the menu with the available subtabs.

Parent tabs without own content – live example

Responsive Behavior

Overflow

If there isn’t enough space to show all the tabs on the main bar, an overflow menu appears automatically, containing all the remaining tabs.

You can set the overflow mode, depending on your use case:

  • End (default): The overflow only appears at the end of the tab bar. Use this mode if the order of the tabs isn’t relevant.
  • Start and End: The overflow menu can appear dynamically either on one or on both sides of the tab bar. Where the overflow appears depends on which tab is activated. Use this mode if the tabs need to stay in the same order.

You can also replace the buttons for the overflow menus with custom buttons.

Overflow mode ‘End’ – live example



Overflow mode ‘Start and End’ – live example

Related Links

Implementation

Switch

The switch mimics a physical switch. It allows users to toggle individual features on or off.

Switches are mainly used for settings, personalization, and other use cases where the impact of the switch is directly recognizable.

Switches – live examples

When to Use

Do

Use the switch:

  • To set something as active or inactive (such as a dialog).
  • To clearly show the mode or state of a setting.
  • If the change takes immediate effect.
Don't

Don’t use the switch:

  • If additional steps are required for changes to take effect (for example, if the setting requires confirmation or a Submit button). Use a checkbox instead.
  • If it’s not clear whether the component is showing a state or an action. Use a checkbox instead.

Anatomy

  1. Track: The track is the container for the handle. The track color also visualizes the state of the switch.
  2. Handle: The handle indicates whether the switch is toggled on or off. This is visualized by different icons within the handle.
Anatomy of a switch
Anatomy of a switch

Behavior and Interaction

Clicking the switch toggles the state of the switch between active and inactive. If the switch is active, the described state is applied.

Clicking a switch sets the focus to the switch component. This is indicated visually by a solid line that surrounds the entire component.

Switches behaviour and interaction – live examples

Related Links

Implementation

Switch
(UI5 Web Components documentation)

Step Input

The step input component allows the user to change the input value in predefined increments (steps).

Step input – live example

When to Use

Do

Use the step input component:

  • To adjust amounts, quantities, or other values quickly.
  • To adjust values for a specific step (for example, in a shopping cart).
Don't

Don’t use the step input component:

  • To enter a static number (for example, postal code, phone number, or ID).
  • To display a value that rarely needs to be adjusted and does not pertain to a particular step.
  • To enter dates or times.

Anatomy

The step input component consists of:

  1. Icon buttons to decrease or increase the value
  2. An input field
Step input anatomy
Step input anatomy

Variants

The value in the input field can be aligned left, centered, or aligned right (default). To make it easier to compare numbers, we recommend using right alignment.

You can also use a label with the step input component.

Step input with right-aligned value (default) – live example

Step input with centered value – live example

Step input with label

Behavior and Interaction

The user changes the value by clicking the increase/decrease buttons, by typing a number, or by scrolling. The buttons increase or decrease the value by the increment (step) you specify.

Initial Value

The input field always contains a value. You can set the initial value or leave the default initial value of 0.

You can also add a placeholder text, which is visible when the value is deleted and the step input is active.

Step input with initial value set to 1 and placeholder – live example

Value Precision

The step input component supports decimal values. You can specify the number of digits displayed after the decimal point.

Step input with value precision set to 1 decimal place – live example

Minimum and Maximum Values

You can specify minimum and maximum values. When the minimum or maximum value is reached, the corresponding increase/decrease button and up/down keyboard navigation are disabled.

If the user manually enters a value that is outside the permitted range, the step input component displays an error state and message.

Step input with a minimum value of -10 and a maximum value of 10 – live example

Related Links

Components

Implementation

Split Button

The split button allows users to trigger different actions via two interactive areas: a default action on the left and a menu with additional actions on the right.



Split buttons – live examples
Split buttons with semantics – live examples
Disabled split buttons

When to Use

Do

Use the split button:

  • To offer a group of actions when one option is used more often than the others.
Don't

Don’t use the split button:

  • To switch between different states. Use the toggle button or the switch instead.
  • For standalone actions with no additional options. Use the button instead.

Anatomy

  1. Background: Different background colors visualize the state of the button.
  2. Text / Icon: Describes or visualizes the action that is triggered by the left interactive area.
  3. Separator: Indicates that the two areas result in different actions.
  4. Arrow: Opens the menu.
Anatomy of a split button
Anatomy of a split button

Variants

Three split button variants are available to indicate the default action:

  • Text only
  • Icon only
  • Text and icon
Split button variants to visualize actions – live examples
(from top to bottom: text only, icon only, text and icon)



The split button also visualizes the priority. Three variants are available:

  • Primary
  • Secondary (= standard)
  • Tertiary
Split button variants for prioritization – live examples
(from top to bottom: primary, secondary, tertiary)

Behavior and Interaction

The split button has two interactive areas:

  • The left click-area triggers the default action.
  • The right area (arrow) opens a menu with the additional actions. For more information, see Menu.
Split button behavior – live examples

Related Links

Implementation

Slider

A slider enables the user to adjust a single value within a specified numerical range.

Slider – live example

When to Use

Do

Use the slider:

  • If you want to provide graphical support for changing a value.
Don't

Don’t use the slider:

  • For decorative purposes.

Anatomy

1. Start point: Minimum value of the slider range.

2. Track (active or inactive)

3. Slider handle: Grip for setting the value.

4. Tooltip (optional): Displays a tooltip with the current value above the handle.

5. Tick marks (optional): Visualize the value intervals (steps). Each tick mark represents a selectable value.

6. Labels (optional): Labels some or all of the tick marks with their values.

7. End point: Maximum value of the slider range.

Anatomy of a slider
Anatomy of a slider

Variants

The following slider variants are available:


Basic slider
Disabled slider
Slider with tooltip
Slider with tooltip, tick marks, and labels

Behavior and Interaction

Changing the Value

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

The user can change the slider setting in the following ways:

  • By using drag and drop to adjust the handle. The handle snaps to the nearest interval value.
  • By clicking the track. The handle then moves to this new position.
  • By using the key combination Shift/Cmd + Arrow keys.
Slider with tooltip, tick marks, and labels – live example

Responsive Behavior

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

Related Links

Components

Implementation

  • Slider
    (UI5 Web Components documentation)

Select

The select component enables users to select an item from a predefined list.

Basic select component – live example

When to Use

Do

Use the select component:

  • If users need to select only one item from a short list of options.
  • If the values in the option list are of secondary importance and do not need to be displayed right away.
Don't

Don’t use the select component :

  • If users need to choose between only two options. Use a switch instead.
  • You need to offer a very large set of options. In this case, use a combobox
  • You need to display more than one attribute or search on multiple attributes. In this case, use an input with a select dialog / value help.
  • All available options need to be displayed right away. In this case, use radio buttons.

Anatomy

  1. Input field: Displays the selected value.
  2. Value/Text: The content that is selected.
  3. Dropdown button: Expands and collapses the option list.
  4. Option list: Contains the selectable values.
Anatomy of the select component
Anatomy of the select component

Variants

Two-Column Layout

Use the two-column layout if you need to display additional information for each option, such as currencies or abbreviations.

Select with a two-column layout – live example

Adjustable Width

The width of the option list adapts to its content.

Select with adjustable width – live example

Basic Select with Icons

You can display an icon for each option.

Select with icons 

Behavior and Interaction

If the select component is editable, the user can select an item by first clicking on the dropdown button and then choosing a specific option from the list.

Responsive Behavior

On mobile phones, the option list is displayed as a full screen dialog.

Related Links

Implementation

  • Select
    (UI5 Web Components documentation)

Segmented Button

A segmented button is a group of buttons that can be toggled. The group appears as one large button with multiple segments.

Segmented buttons – live examples

When to Use

Do

Use the segmented button:

  • To let users choose from a small group of options, such as “Year, Month, Day” or “Small, Medium, Large”.
Don't

Don’t use the segmented button:

  • If there are too many options. Consider using a split button or radio button group instead.
  • If multiple options can be active at once. Consider using a checkbox group instead.

Anatomy

  1. Background: Different background colors visualize the state of the button and indicate the interactive areas (segments).
  2. Text / Icon: Describes or visualizes the action that is triggered for each interactive segment.
Anatomy of a segmented button
Anatomy of a segmented button

Variants

For visual representation:

  • Text only
  • Icon only
Text only – live example
Icon only – live example


For selection modes:

  • Single: Only one item is selectable. Selecting an item deselects the previous one.
  • Multi: Multiple items can be selected at once. All items ca be unselected.

Note: The segmented button can be configured to start with no items selected. However, additional customization is required to enable this functionality.

Single selection mode – live example
Multi selection mode – live example

Behavior and Interaction

The segmented button behaves differently in single and multi selection mode.

Single: When the user clicks one of the options, this option becomes active (pressed). All other options remain or become inactive (not pressed).

Multi: When the user clicks one of the options, this option toggles between active and inactive (pressed and not pressed), without affecting the other options. In multi selection mode, all options can be active or inactive simultaneously.

Behavior in single selection mode – live example


Behavior in multi selection mode – live example

Related Links

Implementation

Responsive Popover

The responsive popover displays as a popover on desktop and tablet devices but as a dialog on phones.

Responsive popover – live example

When to Use

Do

Use the responsive popover:

  • To define your own structure.
  • To show a dialog on phones.
Don't

Don’t use the responsive popover:

  • To show a popover on phones. Use the popover component instead.

Anatomy

Popover (Desktop, Tablet)

  1. Title (optional): Including a title also improves accessibility for screen reader users.
  2. Content area:  Can contain any component. Ensure that the content has a basic design and shows only the most important information.
  3. Arrow (optional, desktop/tablet only): By default, the popover has an arrow that connects it visually to the triggering component. You can opt to hide the arrow.
  4. Footer (optional): Contains one or more actions.
Anatomy of a responsive popover
Anatomy of a responsive popover

Behavior and Interaction

Responsive Behavior

On a phone, the responsive popover displays as a dialog.

The responsive popover is shown as a dialog on a phone.
The responsive popover is shown as a dialog on a phone.

Related Links

Components

Implementation

Range Slider

A range slider enables the user to select a value range within a given numeric interval.

Range slider – live example

When to Use

Do

Use the range slider:

  • To provide graphical support for selecting a value range within a given numeric interval.
Don't

Don’t use the range slider:

  • If the user only needs to select a single value within a predefined range. Use the slider instead.

Anatomy

1. Start point: Minimum value of the slider range.

2. Track (active or inactive)

3. Focused slider handle: Active handle for setting the value in focus.

4. Non-focused slider handle: Inactive handle indicating the other selected value.

5. Tooltip (optional): Displays a tooltip with the current value above the handle.

6. Tick marks (optional): Visualize the value intervals (steps). Each tick mark represents a selectable value.

7. Labels (optional): Labels some or all of the tick marks with their values.

8. End point: Maximum value of the slider range.

Anatomy of a range slider
Anatomy of a range slider

Variants

The following range slider variants are available:


Basic range slider
Disabled range slider
Range slider with tooltip
Range slider with tooltip, tick marks, and labels

Behavior and Interaction

Changing the Value Range

If the range slider is editable, the hand cursor appears when the user hovers over the range slider. If tooltips have been activated, hovering over the slider also displays tooltips showing the current values for each handle. The handles move together with the corresponding tooltips.

The user can change the value range on the slider:

  • By using drag and drop to adjust the handles. The handle snaps to the nearest incremental value.
  • By clicking the track outside the selected value range. The corresponding handle then moves to the new position.
  • By using the key combination Ctrl/Cmd + Arrow keys.
Range slider with tooltip, tick marks, and labels – live example

Moving the Entire Range

Users can move the entire value range by dragging and dropping the active segment of the track.

Equal Values

The handles of the range slider can be positioned on the same value.

Overlapping

The handles of the range slider can be moved across each other. The minimum can become the maximum, and vice versa.

Responsive Behavior

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

Related Links

Components

Implementation

Radio Button

Radio buttons provide users with a set of mutually exclusive options. They allow users to select only one option from two or more choices. Each option is represented by a radio button.

Different radio button states – live examples

When to Use

Do

Use radio buttons:

  • To choose quickly between at least two clearly distinct alternatives.
  • For single-selection scenarios only.
Don't

Don’t use radio buttons:

  • For multiple-selection scenarios. Use checkboxes instead.
  • To select list items.
  • To offer more than 8 options. Use a dropdown box or list view instead.
  • To offer only two mutually exclusive options. In this case, combine them into a single checkbox or toggle button. For example, use a checkbox for “I agree”.
  • To offer options that are numbers with fixed intervals. Use a slider instead.

Anatomy

The radio button comprises two parts:

  1. Button: Indicates whether the option is selected.
  2. Text: Describes the purpose of the radio button. The text is optional if the purpose of the radio button is already indicated by other elements.
Anatomy of the radio button
Anatomy of the radio button

Behavior and Interaction

The user can select a radio button by clicking on the button or the content. Note that clicking again on a checked option does not uncheck it. However, clicking on a different option transfers selection to that option. The user can select only one option from a group of radio buttons.

Radio button – live example

Related Links

Implementation

Progress Indicator

The progress indicator visualizes the current advancement of a process or a degree of accomplishment.

Progress indicator (progress at 0%, 60%, and 100%)

When to Use

Do

Use the progress indicator:

  • To show an ongoing process and provide an estimate of how long it will still take.
  • To show the current status visually.
  • To emphasize the current status visually.
  • To help users compare different states easily on the fly.
  • To show custom values or percentages.
Don't

Don’t use the progress indicator:

  • If visual feedback is needed for an ongoing operation. Use a busy indicator instead.

  • If the progress is indeterminate. Use a busy indicator instead.

Anatomy

The progress indicator component consists of the following parts:

  1. Text: Describes the current status. If no specific text is provided, the percentage value is displayed by default. You can also opt to hide the text.
  2. Start/end indicator: Indicates the start and end points of the progression.
  3. Track: Track representing the entire progression from start to finish.
  4. Progress bar: Bar representing the current progress, based on the percentage value.
  5. Icon (semantic states only): Additional indicator showing the value state as an icon.
Anatomy of the progress indicator
Anatomy of the progress indicator

Semantic States

Use the progress indicator to add clarity and weight to an important state that needs to be perceived very quickly.

Progress indicator used to display a status



The progress indicator can be used with value state to indicate the semantic meaning.

Progress Indicator value states (from top to bottom: None, Error, Warning, Success, Information)

Related Links

Components

Implementation

Popover

A popover is a small overlay window that appears on top of the existing content. It is used to provide additional information and options without requiring the user to navigate away from the current page or interrupt their workflow.

Popover –  live example

When to Use

Do

Use a popover:

  • If you need to define your own structure.
  • If you have very little content.
Don't

Don’t use a popover:

  • If the content takes up more than a third of the screen real estate on phones. Use the responsive popover instead.
  • To show details for a list item in list-detail layouts.
  • If a user action or confirmation is required before processing can continue. In this case, use a dialog.

Anatomy

  1. Title (optional): Including a title also improves accessibility for screen reader users.
  2. Content area:  Can contain any component. Ensure that the content has a basic design and shows only the most important information.
  3. Arrow (optional): By default, the popover has an arrow that connects it visually to the triggering component. You can opt to hide the arrow.
  4. Footer (optional): Contains one or more actions.
Anatomy of a popover
Anatomy of a popover

Behavior and Interaction

Opening and Closing a Popover

The popover opens when the user clicks on a triggering text link or button. The popover appears next to the trigger component, but doesn’t obscure it.

The popover closes when the user clicks outside the popover or selects an action within the popover.

Opening and closing a popover – live example

Placement Types

You can define how the popover is positioned in relation to its trigger.

Available options:

  • Left
  • Right (default)
  • Top
  • Bottom

The position and direction of the arrow adapt to the placement type.

Popover to the right of the trigger (default), arrow hidden – live example


Popover beneath the trigger, with arrow – live example

Responsive Behavior

The popover component always shows a popover, regardless of the form factor. Only use a non-responsive popover if it has very little content. On smartphones, the popover should not use more than a third of the phone’s real estate. If you need to include more content, use a responsive popover.

Related Links

Implementation

  • Popover
    (UI5 Web Components documentation)

Panel

The panel is a responsive container for grouping and displaying information. You can use it to structure content on a page. To save space, you can make the content area collapsible.


Expandable panel – live example

When to Use

Do

Use the panel:

  • To group information.
  • To give users the option of hiding this information.
  • To show additional information on demand.
Don't

Don’t:

  • Nest panels.
  • Stack too many panels on one page.

Anatomy

  1. Header area: By default, the header is clickable and can be used to toggle between the expanded and collapsed state.
    1. Icon: Used to expand and collapse the content area. The icon rotates when the panel is expanded (arrow points down) or collapsed (arrow points right).
      Note: If the panel is fixed, no icon is shown.
    1. Title: Title bar with a header text or custom header.
    1. Custom header (optional): Title, buttons or any other HTML elements.
  1. Content area: The content area can contain any component or set of components.
Anatomy of a panel
Anatomy of a panel

Variants

Standard Panel

By default, the panel is expandable.

Clicking anywhere on the title bar expands or collapses the content area.

Panel with list – live example

Panel with Custom Header

Use this variant if you want to add actions to the panel header.

If a panel has a custom header, the arrow icon must be used to expand and collapse the panel. Clicking on other parts of the header has no effect on the expand/collapse behavior.

Panel with custom header – live example

Fixed Panel

Use this variant if you want the content to be visible at all times.

Fixed panel – live example

Behavior and Interaction

See the variants for the standard panel and panel with custom header.

Responsive Behavior

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

If the panel has a fixed height, it will take up the designated space even if the panel is collapsed.


Truncation

When the space for the header title is not enough, the title truncates. The content wraps.

Panel with truncated title

Related Links

Components

Implementation

  • Panel
    (UI5 Web Components documentation)

Page

The page is a container component for a full application screen comprising a header, content area, and footer.

Page – live example

When to Use

Use the page as a base for any screen you need for your application.

Anatomy

  1. Header
    1. Home icon
    2. Title
    3. Button
  2. Content
  3. Footer (optional). The footer can float or be fixed at the bottom of the page.
    1. Button
Anatomy of a page
Anatomy of a page

Variants

The page can have a floating or fixed footer bar.

Page with floating footer bar
Page with floating footer bar
Page with fixed footer bar
Page with fixed footer bar

Behavior and Interaction

The page itself has no specific interactions. All interactions belong to the components within the page container and depend on the application use case.

For details, see the guidelines for the individual components, such as the button.

Example: Using a button in the header to navigate between pages
Example: Using a button in the header to navigate between pages

Responsive Behavior

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

  • The title truncates if needed.
  • The actions in the header and in the footer should stay as long as possible but when the space is not enough, they should transform to an overflow menu from right to left.
  • If a priority is set to the actions, the highest priority button is the last to move to the overflow menu.
  • It is also possible to assign one button never to move to the overflow menu.

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

The page supports both cozy and compact mode.

Toolbar actions move to an overflow menu if there is not enough space
Toolbar actions move to an overflow menu if there is not enough space

Globalization and Localization

When designing an application, have in mind that this component also can be used with languages that use right-to-left direction for writing and reading. In this case the UI should be mirrored in order to be more convenient for the users to interact with it.

Page in RTL mode – live example

Related Links

Components

Implementation

  • Page
    (UI5 Web Components documentation)

Multi Combobox

The multi combobox component enables users to select options from a predefined list or enter a custom text.

It provides an editable input field to filter the list and a dropdown arrow to open the list of available options. The select options in the list have checkboxes that permit multiple selection.

Multi combobox – live example

When to Use

Do

Use the multi combobox:

  • To select one or more options from a long list of options (no more than ~200).
  • If the values in the option list contain secondary information that doesn’t need to be displayed right away.
Don't

Don’t use the multi combobox:

  • To select multiple ranges.
  • To select or search multiple business objects.
  • To select an item from a short list of items.
  • If you want to let users add custom values. Consider using the multi input instead.
  • If the list contains more than ~200 items.

Anatomy

  1. Text: Placeholder or typed text
  2. Input field: Area for displaying tokens and typing text.
  3. Arrow button: Opens a dropdown list with the values that can be added as tokens.
  4. Tokens: Show individual selected values.
  5. Overflow button: Show all selected values.
    1. n More: Appears after the last visible token. The count n indicates how many other values are selected.
    1. n Items: Appears if no tokens fit into the input field. The count n indicates how many values are selected overall.
 Anatomy of a multi combobox
Anatomy of a multi combobox

Variants

Grouped Items

Multi combobox with grouped items

Predefined Options Only

The user can only write text that matches a predefined value in the list. The text must start with the first letter of a value. If the user types something that doesn’t match one of the options, the multi combobox switches to an error state.

Multi combobox with predefined options only – live example

With Free Text Input

The user also has the option of entering a freestyle text. If the text doesn’t match one of the available options, no token is created and the text is displayed directly in the input field.


Multi combobox with free text input – live example

Behavior and Interaction

Select

To select values, users can:

  • Click the dropdown arrow and select the relevant options from the list.
  • Start to type a value and then select the proposed option.

The selected options then appear as tokens in the input field. If there isn’t enough space to display all the tokens, an overflow button appears (n More, or n Items).

Empty multi combobox – live example

Adjust Selection

To view the selected options, users can:

  • Click the arrow button to display the full selection list (both selected and non-selected items).
  • Click the overflow button n More or n Items (if shown) to view all the selected items.

To remove an item from the selection, users can

  • Click the “X” icon in the token.
  • Focus on the token to select it and use the keyboard delete key to remove the token.

Multi combobox with multiple tokens – live example

Globalization and Localization

The multi combobox supports left-to-right (LTR) and right-to-left (RTL) reading directions.

Multi combobox with left-to-right and right-to-left reading directions
Multi combobox with left-to-right and right-to-left reading directions

Related Links

Implementation

Menu

A menu offers the user a list of alternative actions. The actions can also be grouped in submenus.

Menu – live example

When to Use

Do

Use the menu:

  • If you need to offer more than one action.
  • If users need to stay in a certain context.
  • If there are only a small number of actions.
Don't

Don’t use the menu:

  • To provide only one option. Use a button instead.
  • If users would benefit more from a split button, which offers an easy-to-access default action, with the option to select other actions.

Anatomy

Menu

  1. Menu: Container that is shown as an overlay.
  2. Menu item: List item inside the menu that represents an action.
  3. Separator (optional): Horizontal line that groups the menu items visually.
Anatomy of a menu
Anatomy of a menu

Menu Item

  1. Text: Describes the action that is triggered by the menu item. The text is mandatory.
  2. Icon (optional): Visualizes the action that is triggered by the menu item.
  3. Additional text (optional): Provides additional information relating to the menu item (such as shortcuts).
  4. Navigation indicator: Indicates that a submenu is available for the menu item.

The visualization of the menu item adapts automatically, depending on which elements are included.

Anatomy of a menu item
Anatomy of a menu item

Variants

The menu can be basic, with only a single list of options, or can contain menu items with submenus.

The elements within a menu item can be combined in various ways. The minimal variant is to show only a text. If a menu item has subitems, an additional text won’t be shown, since the space is needed for the navigation indicator.

Variants Without Icons

  • Text only
  • Text and additional text
  • Text and navigation indicator (subitems)
Menu item variants without icons – live examples
(from top to bottom: text only, with additional text, with navigation indicator)

Variants with Icons

  • Icon and text
  • Icon, text, and additional text
  • Icon, text, and navigation indicator (subitems)
Menu item variants with icons – live examples
(from top to bottom: icon and text only, with additional text, with navigation indicator)

Behavior and Interaction

Initially, the menu is closed and therefore not visible.

  • Clicking the reference control opens the menu (for example, a menu button).
  • Clicking a menu item without submenu indicator triggers the respective action.
  • Clicking a menu item with a submenu indicator opens the submenu next to the main menu. The cursor can now be moved to the submenu while all other levels remain open. For each submenu, the same navigation principles apply as for the main menu. Multiple submenus are possible.
  • Clicking outside the component closes the menu.
Menu behavior and interaction – live example

Related Links

Implementation

  • Menu
    (UI5 Web Components documentation)

Message Strip

The message strip component allows you to embed application-related messages on the UI. It draws the user’s attention to information that is important in the context of the page content. This could be a warning or a change of state that might otherwise be easy to miss.

Message strip – live example

When to Use

Do

Use the message strip:

  • To provide information related to the object as a whole in the object header, such as the object status.
  • To provide information within the detail area of an object.
  • To inform the user about a status of an object.
  • To warn the user about an issue.
Don't

Don’t use the message strip:

  • In the list of a list-detail layout.
  • Above the page header.

Anatomy

  1. Container: Holds the icon, message text, and Close button.
  2. Icon (optional): Visual indication of the message type. By default, the message strip uses standard icons for error, warning, success, and information messages.
    We strongly recommend displaying an icon. If you decide to remove it, include an additional text to indicate the message type.
  3. Text: Message text. To preserve the intended design, we strongly recommend using only text for the message itself.
  4. Close button (optional): Allows the user to remove the message strip from the UI.
Anatomy of a message strip
Anatomy of a message strip

Variants

You can use the message strip with or without an icon or Close button. If necessary, you can also configure a custom message strip.

With Icon and Close Button

Message strip with icon and ‘Close’ button

With Icon, Without Close Button

Message strip with icon, without ‘Close’ button

Without Icon, With Close Button

Message strip without icon, with ‘Close’ button

Without Icon or Close Button

Message strip without an icon or ‘Close’ button

Custom MessageStrip

If the application needs a custom message strip, other than the standard semantic variations, use the colors defined for the inverted object status tag. You can use both sets of indication colors.

See all the available icons in the Icon Explorer (Horizon).

Custom message strip

Behavior and Interaction

Clicking or tapping the Close button removes the message strip from the UI.

Message strip – live example

Responsive Behavior

The message strip is fully responsive. Message type icons always display on the left, while the Close icon always displays on the right. Text that exceeds the available width wraps to the next line.

If you place the message within the detail area for an object, it always uses 100% of the available width and reacts to the responsiveness of the container.

Message strip examples with wrapped text

Content Density

The compact message strip is used for both cozy and compact form factors.

Globalization and Localization

For right-to-left languages, such as Arabic or Hebrew, the message strip is mirrored.

Message strip for left-to-right languages
Message strip for right-to-left languages

Related Links

Components

Implementation

List

You can use the list component to display different types of list item. Each list item can include an image, text, icon, or other HTML content. List items can also be grouped.

The list component comes with built-in selection and deletion modes, as well as configurable separators.


List – live example

When to Use

Do

Use the list:

  • To display a homogeneous set of basic data.
  • To display a single-level hierarchy.
  • If a table would be too complex.
Don't

Don’t use the list:

  • To manage complex datasets. In this case, use a table.
  • If you work with complex hierarchies. In this case, use a tree.

Anatomy

List

  1. Header: The first item of the list serves as a header. The header contains the title of the list.
  2. Footer: If the footer element is used, the footer is the last item in the list.
  3. Separator: The list item separators are customizable.
Anatomy of a list
Anatomy of a list

Standard List Item

The standard list item is the simplest type of list item. It provides elements for the most common use cases, such as image, text, and icon.

  1. Image
  2. Text
  3. Icon / additional text:
    a. Icon: You can use the iconEnd property to place an icon at the end of an item.
    b. Additional text: You can use the additionalText property to display an additional text at the end of a row. The additionalTextState property applies a semantic state to this text.

Anatomy of a standard list item
Anatomy of a standard list item

Custom List Item

You can use the custom list item component within the list in the same way as a standard list item. The custom list item component accepts arbitrary HTML content to allow full customization.

Anatomy of a custom list item
Anatomy of a custom list item

Group Header List Item

The group header list item is a special list item, used only to separate other list items into logical groups.

Anatomy of a group header list item
Anatomy of a group header list item

Variants

The following list variants are available to support different use cases:



Standard List

Use this variant as a starting point.

Standard list – live example

Growing List (Scroll)

Use this variant if there are too many list items to show in the visible space. You can display a More button or let the user scroll within the list to show more items. By default, growing is switched off.

Growing list with scrollbar – live example

List with Image Content

You can use the imageContent slot to add an image or avatar to the item.

List items using the image content slot to display avatars

List Item Separators

By default, horizontal separators are displayed between all list items. Alternatively, you can remove all separators, only show separators between items (inner separators).

List item separation types

List with Group Headers

Use this variant if you want to group items in the list.

List with group headers

Single Selection Mode

Allows users to select only one item at a time.

Single selection mode – live example

Multiple Selection Mode

Allows users select more than one item at once using the checkboxes on the left.

Multiple selection mode – live example

Delete Mode

Use this variant to show an icon for deleting or removing an item.

Delete mode with ‘X’ icon – live example

Busy List

Use this variant to indicate that the list is fetching data.

Busy list – live example

List with No Data

Use this variant to show a text when the list is empty.

List with no data

Behavior and Interaction

See the examples for the following variants:

Responsive Behavior

Wrapping and Truncation

By default, texts in a list item are truncated if there isn’t enough space.


List item with long title, description, and additional text

List item with truncated text

Related Links

Implementation

  • List
    (UI5 Web Components documentation)

Link

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

Visualization of different link types – live example

When to Use

Do

Use the link:

  • To navigate to another page.
  • To trigger an event.
Don't

Don’t use the link:

  • To trigger an action. Use a button instead.
  • If there is no link target.

Anatomy

A link is an interactive element in text that is indicated by colored text or an underline.

  1. Text
  2. Underline
Anatomy of a link
Anatomy of a link

Variants

There are three different link variants:

  • Default: To display a simple link.
  • Emphasized: For very important links that need to attract the user’s attention quickly.
  • Subtle: To distinguish between more important (default) and less important (subtle) links when the app page contains a large number of links (10+). Subtle links allow you to improve the visual hierarchy in large lists and tables.
Link variants – live examples

Behavior and Interaction

To trigger the event or navigation, the user clicks the link.
If a link target has a specified URL, it can also be triggered via the context menu.

If the link can’t be triggered, display it in the disabled state. For example, if a content area is disabled, also show the links in this area as disabled.

A default link and a disabled link – live examples

Related Links

Components

Implementation

Link
(UI5 Web Components documentation)

Label

A label is the name assigned to a component or a group of related components. Alternatively, a label can describe the purpose of a component or group of related components.

   
Labels with input fields – live example

When to Use

Do

Use the label:

  • If you need a label for a component or group of components.
  • In forms.
Don't

Don’t use the label:

  • For the column header of a table. Use the title instead.

Anatomy

  1. Text: Describes the data displayed or expected in the corresponding component or group of components.
  2. Colon: The colon (:) follows the label text.
  3. Asterisk (optional): The asterisk (*) indicates that user input is required.
Anatomy of the label
Anatomy of the label

Variants

Label: The default label comes without the optional “Required” indicator. The user can continue without providing input in the corresponding component or components.

Label for Required Entry (optional): The label shows the “Required” indicator (*) after the colon. To continue, the user must provide input in the corresponding component or components.

Default label, label for a required entry

Responsive Behavior

Wrapping and Truncation

Labels can be wrapped and truncated, depending on the use case.
For labels within forms, use wrapping instead of 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.

Labels in a form – live example

Related Links

Components

Implementation

  • Label
    (UI5 Web Components documentation)

Input

An input allows users to enter and edit text or numeric values in one line.

Input – live examples

When to Use

Do

Use the input component:

  • To enter a short, single-line text or number.
  • To enter a password, URL, phone number, or email address.
  • To select a single item from a large amount of data (for example, more than 200 items).
  • To find an object by searching for more than one attribute, such as an ID, city, and customer name.
Don't

Don’t use the input component:

  • To enter dates and times. Instead, use the date picker, date range selection, or date/time picker.
  • To enter long texts. Use the text area component instead.
  • To select multiple values. In this case, use the multi combobox (for fewer than 200 items) or the multi input component (for more than 200 items).

Anatomy

An input usually consists of a field that contains a text.

1. Field: Field container

2. Text: Placeholder or typed text

3. Icon (optional): For example, you can enable a Clear icon to remove the text that has been typed into the field.

Dropdown Areas

The input component provides two types of dropdown area:

  • An area for suggestions, which is triggered by typing.
  • An area for value help, which is triggered by the respective icon button.
Anatomy of an input
Anatomy of an input

Variants

Value Help

To help the user find the correct value, you can add a value help option. A small value help icon ( ) is then displayed in the input on the right. To give a better indication of the type of data that can be selected, you can exchange the value help icon.

Input with value help

Input with a Label

Always provide a meaningful label for any input. Labels are necessary to indicate the meaning of the input when the placeholders are no longer visible.

To indicate that a particular field is mandatory, set the “Required” indicator for the label. This displays an asterisk (*) next to the label associated with the field.

Input with a label

Input as a Search

An input component can be used as a search field (free text search). You can also use the search field to filter a set of data.

Input as a search field

Behavior and Interaction

Enabled, Read-Only, and Disabled States

An input can have three states:

Enabled

The input is currently active and allows user interaction. It can be empty, contain a placeholder text, or contain a value entered or selected by the user.

Input – enabled

Read Only

The input contains valid values and is visualized differently to indicate that editing isn’t possible. The read-only state is similar to the disabled state in that interactive functions are removed. However, a read-only input can still be focused on and recognized by screen readers. It also complies with visual contrast standards for readability.

Input – read only

Disabled

All interactive functions have been removed and the user is unable to interact with the input. The field can’t be focused on or recognized by screen readers, and doesn’t need to meet visual contrast requirements.

Input – disabled

Suggestions and Autocomplete

Using suggestions and autocomplete is the quickest way for users to discover and select relevant input terms and values.

  • The current typed term is always highlighted with bold text.
  • Only the characters entered in the input are highlighted, not the whole word.
  • All relevant instances are highlighted, even if they occur in one line item.
Input with suggestions

Clear

You can enable a Clear icon ( ) in the input. It appears as soon as the input has a value. Clicking the Clear icon removes the value from the field. If you use this option, make sure that the input is wide enough to show the Clear icon in addition to the value.

Input with ‘Clear’ icon – live example

Responsive Behavior

If the user clicks the input on a mobile device in cozy mode, a new full screen dialog opens.

Globalization and Localization

The input component supports left-to-right (LTR) and right-to-left (RTL) reading directions.

Input with right-to-left text display

Related Links

Implementation

  • Input
    (UI5 Web Components documentation)

Dynamic Side Content

The dynamic side content is a layout component that allows you to display additional content in a way that adapts flexibly to different screen sizes. The side content appears in a container next to or directly below the main content. The width or height of the main content area adapts accordingly.

Dynamic side content

When to Use

Do

Use the dynamic side content to display information that:

  • Enriches the main content and helps users perform their tasks
  • Only makes sense when displayed next to the main content (side by side)
  • Influences the main content (such as a filter for list, settings for chart, or details for map)

Important: Ensure that users have access to all of the key functions and critical information even if they don’t see the side content. It might not be easy for users to access the side content on smaller screens.

Don't

Don’t use dynamic side content:

  • If you want to display navigation or critical information that prevents users from completing a task when they have no access to the side content.
  • If the content doesn’t relate to the main content.

Anatomy

Dynamic side content is a layout container that can contain any type of component, such as lists, tables, form fields, and more.

  1. Dynamic side content
  2. Main content*

* The main content is not part of the dynamic side content component. It is included here to illustrate how the side content appears in relation to the rest of the page.

Layout with dynamic side content
Layout with dynamic side content

Variants

The size and position of the dynamic side content depend on the configuration and the available screen width. The following variants are available:

Size

Default split – 25% or 30% of the total screen width, depending on the resolution.

Equal split – 50% of the total screen width.

Default split
Default split

Equal split
Equal split

Position

You can specify whether the side content is shown on the right or on the left. At certain breakpoints, the side content slides below the main content (see Responsive Behavior).

Left

Dynamic side content on the left
Dynamic side content on the left

Right 

Dynamic side content on the right
Dynamic side content on the right

Below main content

Dynamic side content below the main content
Dynamic side content below the main content

Behavior and Interaction

Whether the side content is displayed or hidden depends on the current visibility setting and the screen size (see Responsive Behavior). To enable users to display the supplementary content as needed, it is important to provide options for opening and closing the side content.

Default State

By default, the side content is initially visible, but you can opt to hide it.

Opening the Dynamic Side Content

Add a trigger for opening the side content. This is typically a button in the main content area with a meaningful label. We recommend that you always place the trigger for the side content in the same location.

Closing the Dynamic Side Content

Enable users to close the side panel from the side panel header. Since the dynamic side panel doesn’t have a built-in header, we strongly recommend adding a toolbar with a title, a transparent Close button, and a spacer in between.

Responsive Behavior

Screen width > 1440 px

  • The ratio of the main content to side content is 3:1 (with a minimum of 320 px each).
  • If you define a trigger, the side content can be hidden.

Screen width <= 1440 px and > 1024 px

  • The ratio of the main content to side content is 2:1 (with a minimum of 320 px each). If the width of the side content falls below 320 px, it automatically slides under the main content, unless you specify that it should disappear.

Screen width <= 1024 px and > 720 px

  • The side content ratio is fixed at 340 px and the remaining width is used for the main content.
  • If you opt to move the component below the main content, and screen width is <= 960 px and >720 px, the side content drops below the main content.

Screen width <= 720 px (for example, on a mobile device)

  • The side content automatically disappears from the screen, unless you specify that it should stay below the main content. The side content is opened by the trigger you offer in the main content. When the side content is triggered, it replaces the main content. For the triggering action, use a label that indicates the type of content shown in the side panel.

Special case: comparison mode

If you opt to split the screen equally for comparisons (50% each for the main and side content), the responsive behaviour is the same as for the standard view. If the screen width falls below 720 px, the side content disappears and can only be viewed if it’s actively triggered.

Dynamic side content on a mobile device – live example

Related Links

Demo Systems

Dialog

The dialog component is a modal window that appears temporarily on top of the main screen. It interrupts the current app process to prompt the user for a response. While the dialog is open, the main screen is dimmed and blocked. A user action or confirmation is required to return to the main window.

Standard dialog – live example

When to Use

Do

Use the dialog:

  • To display information temporarily.
  • To prompt the user for an action or a confirmation.
  • To display an additional step or process that needs to be confirmed by a user action.
Don't

Don’t use the dialog:

  • If you don’t want to interrupt the user.
  • In another dialog. Avoid nesting dialogs within each other.

Anatomy

  1. Header: Contains the title of the dialog.
  2. Content: Can contain any component.
  3. Footer: The footer can contain actions.
    By default, the dialog can have one or two actions. The action buttons on a desktop device are right-aligned.
  4. Resize handle (optional): If enabled, the resize handle lets users stretch and shrink the dialog. The resize handle is only available on desktop devices.
Anatomy of a dialog
Anatomy of a dialog

Behavior and Interaction

The dialog opens in a modal window at the center of the screen. Completing an action or closing the dialog returns the user to the main screen.

Additional Options

Resizable Dialog (desktop only)

You can let desktop users change the size of the dialog. If this feature is switched on, a resize handle appears in the bottom-right corner.

Resizable dialog

Draggable Dialog (desktop only)

If you switch on the “draggable” feature, users can move the dialog around by clicking and holding on the header.

Draggable dialog

Responsive Behavior

By default, dialogs appear as modal windows. On mobile devices, you can use the stretch property to show a dialog in full screen mode.

  • On small devices, you can use the regular dialog or the full screen dialog.
  • On smartphones, we recommend using the full screen dialog.
Full screen dialog on smartphone
Full screen dialog on smartphone
Regular dialog on smartphone
Regular dialog on smartphone

Related Links

Components

Implementation

  • Dialog
    (UI5 Web Components documentation)

Checkbox

A checkbox allows users to set a binary value to “true” or “false”, indicating whether or not an item has been chosen. If a checkbox acts as a parent for a group of checkboxes (for example, Select All), it can also display an indeterminate state to indicate that not all subitems have been checked.

Different checkbox states – live examples

When to Use

Do

Use the checkbox to:

  • Select or deselect. Use it only if the meaning is obvious.
  • Offer a list of options that can be selected independently of each other.
  • Group multiple suboptions under a parent option that requires an indeterminate selection state.
Don't

Don’t use the checkbox:

  • To offer multiple selection for a large list of options that don’t need to be displayed permanently on the UI. Consider using a multi combobox instead.
  • To choose only one option from a list. For a small list, use a radio button group instead. For a large list, use the select component.
  • To perform an instantaneous action that doesn’t need reviewing or confirming. Consider using the switch instead.
  • If there is not enough space available on the screen. Use a combobox instead.

Anatomy

The checkbox component has two parts:

  1. Box: Checkbox with 3 possible settings: checked, unchecked, or indeterminate.
  2. Text: Describes the purpose of checkbox.
    If the purpose of the checkbox is already described by other elements, the checkbox text is optional.
Anatomy of a checkbox
Anatomy of a checkbox

Behavior and Interaction

Clicking a checkbox toggles the state of the checkbox between checked and unchecked. Checked means that the state described by the checkbox text applies, or that the item has been chosen. Unchecked means that it doesn’t apply.

Clicking a checkbox triggers a visual indication of focus: a solid line surrounds the entire component.

A parent checkbox can also display an indeterminate, partially selected state, indicating that some but not all of the dependent input fields are selected. This state is commonly used for a group of checkboxes and is only a visual, non-interactive state. If all dependent checkboxes are checked, the parent checkbox is also checked automatically, and vice versa.

Checkbox group – live example

Related Links

Implementation

  • Checkbox
    (UI5 Web Components documentation)

Carousel

The carousel allows users to browse through a set of items by swiping right or left. The component is mostly used for showing a gallery of images, but can hold any other HTML element. It can display a single content element or show several content elements at once. Users can cycle through the content using navigation buttons and the paginator.

Carousel – live example

When to Use

Do

Use the carousel:

  • To let users browse through a set of items by paging back and forth.
  • To display items sequentially.
  • To display items side by side.
Don't

Don’t use the carousel:

  • If the items you want to display need to be visible at the same time.
  • If the items you want to display are very similar.

Anatomy

1. Container: Holds the content, navigation buttons, and page indicator.

2. Navigation buttons: Allow users to page backward and forward between items. You can place the navigation buttons either in the content area or on each side of the page indicator.

3. Page indicator: Indicates the current page in the sequence. If there are fewer than 9 pages, the page indicator is visualized as a series of dots by default. For more information, see Show/Hide Page Indicator and Page Indicator Style.

4. Content: Can contain any component.

Anatomy of a carousel
Anatomy of a carousel

Variants

You can adapt the following carousel parameters:

  • Position and visibility of the navigation buttons
  • Visibility of the page indicator
  • Style of the page indicator
  • Looping behavior
  • Number of items per page

Navigation Buttons

You can configure the navigation buttons in three ways:

  • Show in the content area
  • Show with the page indicator
  • Hide completely

By default, navigation buttons are never shown on touch devices.

In the Content Area

If you place the navigation buttons in the content area, they are initially hidden. They only become visible when the user hovers over the carousel content.

Navigation buttons on top of the content – live example

With the Page Indicator

The navigation buttons appear on each side of the indicator.

Navigation buttons with the page indicator

Hidden

You can opt to hide the navigation buttons on all types of device. In this case, desktop users navigate through the pages using the keyboard.

Hidden navigation buttons

Show/Hide Page Indicator

By default, the page indicator is located below the content. You can also hide it.

Page indicator below the content

Hidden page indicator

Page Indicator Style

You can display the page indicator as a series of dots or numerically.

Dot Style

The page indicator shows a horizontal series of dots, each of which represents a page in the carousel. The dot for the current page is highlighted.

By default, the page indicator uses the dot style if there are fewer than 9 pages.

Page indicator – dot style

Numeric Style

The numeric page indicator shows the current page and the total number of pages (for example, “2 of 4”).

By default, the page indicator switches to the numeric style if there are 9 pages or more.

Page indicator – numeric style

Cyclic

You can set the carousel to loop. Navigating forward on the last page then returns the user to the first page, and vice versa.

Non-cyclic carousel
Cyclic carousel

Multiple Items Per Page

You can display multiple items at once. The page navigation buttons then have the following effect:

  • Previous Page: The previous item slides into view on the left. The right-most item slides out of view on the right.
  • Next Page: The next item slides into view on the right. The left-most item slides out of view on the left.

Carousel with multiple items per page – live example

Behavior and Interaction

Click

The user can click the arrow buttons to go to the previous or next page.
Carousel – live example

Hover

If navigation arrows are placed in the content area: When the user hovers over the page, the navigation buttons appear.

Navigation in the content area – navigation buttons appear on hover – live example

Touch Enablement

On touch devices, the carousel component makes use of the swipe gesture to page through the items. The navigation buttons are not displayed on touch devices.

Responsive Behavior

Responsive Behaviour

  • If the width and height of the carousel is set to 100% (default), the component content area is adjusted automatically, depending on the amount of space available.
  • On touch devices, users can navigate through the pages by swiping or by tapping the arrow buttons, which are always visible. The tap interaction is required as an alternative to swiping to comply with accessibility standards.
  • The paging indicator wraps if it is too long to fit onto one line.

Content Density

The content inside the carousel can appear in two different sizes:

  • The cozy size uses component dimensions large enough to enable fingertip interaction. This factor is ideal for devices operated by touch.
  • The compact size reduces the component dimensions, allowing more information to be displayed on the UI. This factor is ideal for devices operated by mouse and keyboard.

The page indicator (when activated) shows on all form factors.

Carousel in compact mode
Carousel in cozy mode

Globalization and Localization

When using the carousel, bear in mind that it may be used with languages that read and write from right to left.

The arrow navigation and looping behavior (if activated) adapt accordingly.

Carousel in left-to-right mode
Carousel in right-to-left mode

Related Links

Components

Implementation

  • Carousel
    (UI5 Web Components documentation)

Avatar Group

The avatar group displays several avatars together, indicating that more than one person or business entity is associated with an item.

Avatar group (group view) – live example

Avatar group (individual view) – live example

When to Use

Do

Use the avatar group:

  • To display a group of at least two people or items.
  • To display several people or items that have something in common (such as people in the same team or project).
Don't

Don’t use the avatar group:


  • To display a gallery for simple images. Use the carousel instead.
  • To display a single avatar.
  • To show visual content other than avatars.

Anatomy

  1. Avatar group (type: individual or group)
  2. Avatar
  3. Overflow button
Anatomy of an avatar group (type: individual)
Anatomy of an avatar group (type: individual)
Anatomy of an avatar group (type: group)
Anatomy of an avatar group (type: group)

Variants

There are two types of avatar group:

  • Group: Combined focus for all avatars in the group (default)
  • Individual: Focus on each avatar

Both types are always displayed horizontally.

You can adjust the order of the avatars. For example, the sequence can be alphabetical, history-based, or random.

Note: The avatar group reuses the avatar component and its logic. If a person’s image isn’t available, the avatar displays the person’s initials. If there are more than 3 initials or the language system doesn’t support initials, the avatar displays a gender-neutral person icon.

Avatar group (type: group) – live example with slider

Avatar group (type: individual) – live example with slider

Behavior and Interaction

The avatar and avatar group support click events.

Individual type (focus on one avatar):

  • Clicking an avatar displays a popover with the details for that avatar.
  • Clicking the overflow icon displays a popover showing the avatars hidden in the overflow.

Details for an individual avatar / avatars in the overflow – live example

Group type (focus on the entire avatar group):

  • Clicking the group displays a popover showing all the individual avatars.
Details for a group of avatars (“group” type) – live example

Responsive Behavior

Content Density

The avatar group supports the different sizes of the avatar component.

Avatar group sizes (XS, S, M, L, XL)

Overflow Button

If there is not enough space to display all the avatars in a group, an overflow button appears and one or more avatars move into the overflow popover.

The overflow displays as a shape containing a count. The count indicates how many avatars can’t be displayed on the screen. If the number is too large to fit into the shape, the shape grows to accommodate the number.

It is possible to have a custom overflow.

Avatar group overflow – live example

Globalization and Localization

The avatar group supports left-to-right (LTR) and right-to-left (RTL) reading directions.

Avatar group – left-to-right
Avatar group – right-to-left

Related Links

Components

Implementation

Card

Cards are containers for different types of app content. They provide an entry-level view of the most pertinent app data for a given topic or issue.

Cards allow users to get direct insights without leaving the current screen. A card can also offer further navigation options or actions.

Card with interactive header – live example
Card with icon and button in header – live example

There are some predefined elements for the card header like an image (avatar component), a counter or a button, whereas the card content area can be filled with any component(s). It is also possible to show the card header only, or no header at all.

Card example with list items – live example
Card example with table – live example
Card example with image – live example
Card examples with header only – live example

When to Use

Do

Use cards:

  • As an entry point to an app.
  • If you want the user to focus on a single object or topic, or on a group of objects.
Don't

Don’t use cards:

  • For decoration only.

Anatomy

A card comprises two components: a header area and a content area. Both areas are optional.

1. Card Header

The card header consists of the following elements:

  1. Avatar (optional): An image.
  2. Title: Describes the card content.
  3. Subtitle (optional): You can use the subtitle to qualify the title, offer an explanation, or show a status. The use of the subtitle can differ, depending on the card type.
  4. Counter (optional): Displays how many items are on the card in relation to the total number of relevant items.
    Format: [Items on Card] of [Total Items]
    Example: 5 of 40
  5. Button (optional): An action.

2. Card Content

You can use other web components inside the content area, such as a list, table, timeline, or the components of a form. The structure of the card depends on the type of information it contains.

Anatomy of a card
Anatomy of a card

Behavior and Interaction

You can opt to make the header interactive and specify a click event.

Within the card content area, all the interactions depend on the components used.

Card with a static header and header action button – live example
Card with an interactive header – live example

Globalization and Localization

When designing an application, bear in mind that cards can also be used with right-to-left languages, such as Arabic or Hebrew. In this case, the UI of the card header is mirrored in both display and edit modes.

The globalization and localization behavior for the component within the card content area is defined by the guideline of corresponding component itself.

RTL view for card  with list items – live example

Related Links

Components

Implementation

  • Card
    (UI5 Web Components documentation)

Calendar

The calendar shows time-related data at a glance. It allows the user to select a single day, multiple days, or date ranges and to navigate through different months and years.

Calendar – live example

When to Use

Do

Use the calendar:

  • To select a single date, multiple days, or a date range.
  • To enable date selection independently of the specific date format.
  • To enable context-based selection (such as a specific day of the week).
  • If you need to keep the calendar visible and prominent.
Don't

Don’t use the calendar:

  • Тo enter a lot of data quickly or primarily using the keyboard. Use the date picker instead.
  • To primarily select date ranges. Use the date range picker instead.
  • If the available screen space is limited.
  • To select a combination of date and time values. Use the date/time picker instead.

Anatomy

  1. Previous button: Navigates back to previous month.
  2. Month view button: Opens the view for month selection.
  3. Year view button: Opens the view for year selection.
  4. Next button: Navigates to next month.
  5. Days of the week
  6. Calendar weeks: Gregorian calendar type only. Can be hidden.
  7. Working day
  8. Selected day
  9. Today
  10. Non-working day
  11. Days from next month
Calendar anatomy
Calendar anatomy

Variants

You can show one calendar type or two:

  • Single calendar type: Gregorian, Japanese, Buddhist, Islamic, or Persian
  • Two calendar types: A primary and a secondary calendar
Islamic calendar – live example
Calendar with a secondary calendar type – live example


You can hide the calendar weeks. They are hidden by default for all calendar types except the Gregorian calendar.

Calendar with hidden calendar weeks

Behavior and Interaction

Selection

The calendar supports different types of selection:

  • Single day: The user can select a single day at a time.
  • Multiple days: The user can select multiple days, which do not have to be next to each other. Navigating to other months doesn’t cancel the selection.
  • Range: The user can select multiple days from a start date to an end date.

Selection of a single day – live example
Selection of multiple days – live example
Range selection – live example


Navigation

To change the month, the user can either use the previous/next arrows or select a specific month in the month view.

To change the year, the user can either scroll through the months with the previous/next arrows or select a specific year in the year view.

Calendar – month view
Calendar – year view


Minimum and Maximum Dates

You can define the earliest and latest valid dates for the calendar (minimum and maximum dates). Selection and navigation are then disabled for dates outside this range.

Calendar with minimum and maximum dates

Responsive Behavior

Use the calendar within a responsive layout container. The calendar itself is not responsive.

Related Links

Components

Implementation

  • Calendar
    (UI5 Web Components documentation)

Button

Buttons allow users to trigger an action and come in a variety of shapes and colors.

Buttons – live examples
Buttons with semantics – live examples
Disabled buttons

When to Use

Do

Use the button:

  • To offer a single action, such as:
    Create, Edit, Save, Delete, Approve, Reject, Add, Remove, Cancel
Don't

Don’t use the button:

Anatomy

  1. Background: Different background colors visualize the state of the button.
  2. Text / Icon: Describes or visualizes the action that is triggered by the button.
Anatomy of a button
Anatomy of a button

Variants

Three button variants are available to indicate the action:

  • Text only
  • Icon only
  • Text and icon

Button variants to visualize actions – live examples
(from top to bottom: text only, icon only, text and icon)



The button also visualizes the priority of the action. Three variants are available:

  • Primary
  • Secondary (= standard)
  • Tertiary
Button variants for prioritization – live examples
(from top to bottom: primary, secondary, tertiary)

Related Links

Implementation

Button
(UI5 Web Components documentation)

Busy Indicator

The busy indicator informs the user about an ongoing operation.

Large busy indicator

When to Use

Do

Use the busy indicator:

  • To indicate an unspecified amount of wait time that is longer than 1 second.
  • If progress isn’t detectable, or it’s not necessary to indicate how long an activity will take.
  • If only part of the application or a particular component is affected.
Don't

Don’t use the busy indicator:

  • If the operation takes less than 1 second.
  • If the progress can be measured. In this case, use the progress indicator instead.
  • To indicate that a larger part of the screen is loading (for example on page load). Use a placeholder loading animation instead.

Anatomy

The busy indicator component consists of two parts:

  1. Busy icon: Animated dots that indicate the ongoing operation.
  2. Text (optional): Provides additional information about the ongoing operation.

Note:

If the space where the busy indicator is to be placed is limited, avoid using a busy icon text. For example, don’t show a text if the busy indicator appears near a button in a small area. This can result in the busy indicator text appearing on top of the button text.

If you opt to display a text, place the busy indicator within a container, such as a toast or dialog, and allow it to wrap. This ensures that the text is always readable.

Anatomy of the busy indicator
Anatomy of the busy indicator

Size Variants

The busy indicator comes with three predefined sizes:

  • Small: Use inside areas smaller than 3×3 rem (for example, when reloading images or inside small components like compact table rows).
  • Medium: Use inside areas larger than 3×3 rem (for example, inside a list item, tile, dialog, or a block overlay within a component).
  • Large: Use inside a full screen block overlay.

Small, medium, and large busy indicators

Related Links

Components

Implementation

Avatar

The avatar is a component for displaying images. Typically, it represents a person in a user profile, a product on a product page, or items/people in a list.

In addition to images, avatars can also display placeholders, such as icons or user initials.

Avatar variants for a user – live examples
Avatar variants for a product – live examples

When to Use

Do

Use the avatar:

  • To display an image, initials, or placeholder icon for a user.
  • To display an image or placeholder icon for business-related content, such as products, parts, or a company logo.
Don't

Don’t use the avatar:

  • For decorative images or images that support the page content, but don’t represent a specific person, product, or other business entity. Use an image instead.
  • To display a series of images. Use the carousel instead.
  • To show an interactive icon. Use a button with an icon instead.

Anatomy

  1. Avatar: Main avatar component with different display options. See Variants.
  2. Badge (optional): Visualizes the action triggered by clicking the avatar.
  3. Border (optional): An avatar can have a very subtle border.
Anatomy of an avatar
Anatomy of an avatar

Variants

Avatar Type

An avatar can be visualized in three ways:

  • Image: Specific image of a person or business object/entity.
  • Icon: Placeholder image for a person or business object/entity.
  • Initials: Up to 3 alphabetical characters that usually stand for a person’s first and last name(s). Also see Responsive Behavior – Globalization and Localization.

Avatar Shape

An avatar can be circular or square.

Use a circle for people and a square for product or business-related images.

Background Color

You can specify the background color for avatars with initials or placeholder icons.

User avatars – circular

Business avatars – square

Avatar Size

The avatar component has five predefined sizes. These are the same for both compact and cozy form factors:

  • XS – mainly used in table list items, card list items
  • Small – mainly used in card headers, card list items
  • Medium – mainly used in app headers for small screen sizes
  • Large – mainly used in app headers for normal screen sizes
  • XL – mainly used in app headers for large screen sizes
  • Custom (if required by the use case)

If a display shape is applied, the avatar component acts adaptively based on the defined display sizes. The app developer can set a certain avatar size for particular breakpoints.


Predefined avatar sizes: XS, S, M, L, XL

Badge

If the avatar is clickable, you can show a badge with an icon.

  • The badge indicates that the avatar is interactive.
  • The icon indicates the action that is triggered by clicking the avatar (for example, edit images, take a picture, zoom in).

Business avatars with badges – live examples

Scale Type

You can specify how the original image fits into the avatar:

  • Cover (default): The size of the image is scaled up to completely cover the avatar area. As a result, parts of the image may be outside the avatar shape. Use the “cover” fit type if the focal point is in the center of the image.
  • Contain – The image is scaled down to fit into the component area. The entire image is displayed, but might not fully fill the shape. In this case, the avatar displays a default background color. The image itself is always centered inside the shape. Use the “contain” fit type for images that need to be displayed in full.
Scale type – cover
Scale type – contain

Behavior and Interaction

Clicking an avatar or selecting it via the keyboard activates its focus state, visualized with a solid line surrounding the avatar.

Interactive avatars – live examples

Globalization and Localization

Initials

By default, initials are restricted to 3 letters. If more than 3 letters are required for longer names (such as Anna María Agustí Suárez), the gender-neutral placeholder icon is displayed instead. The placeholder is also used if the three letters don’t fit into the circle (for example, WWW).

Some languages are not built on an alphabet or simply don’t use initials at all. In this case, the gender-neutral placeholder icon is used by default.

Avatar with initials – 2 initials / 3 initials / placeholder if initials don’t fit

Related Links

Components

Implementation

  • Avatar
    (UI5 Web Components documentation)

SAP Web Components

Intro

Welcome to the design guidelines for SAP Web Components!

In this section you’ll find the first set of design guidelines for SAP Web Components. SAP Web Components are framework-agnostic and can be easily integrated into different web development environments.

The articles for each component provide a basic design overview with interactive examples. You can also navigate to the developer documentation.

Approach

Why separate guidelines for SAP Web Components?

Although the basic design of SAP Web Components is aligned with the design for SAPUI5 controls, they can still differ in scope. As of today, SAPUI5 controls typically offer a richer set of features out of the box.

These guidelines are intended as a dedicated resource for all teams who use SAP Web Components in their products or frameworks.

Focus on “common components”

The design guidelines currently focus only on SAP Web Components that have been identified as common components. These are components that we expect to be used broadly across all SAP products.

Beta version

This is a first beta version of the web component design guidelines. Feel free to share your feedback to help us meet your expectations.

Related Links

Introducing SAP Web Components (SAP Community)
In this blog, Oliver Graeff (Director of Product Management for SAPUI5) explains SAP’s strategy for web components.

Exploring the Guidelines

You can access the web component guidelines and foundation topics:

  • Via the navigation menu under UI Elements – SAP Web Components
  • Via the search. All SAP Web Components appear in a separate section in the search suggestions and results.
  • Via the component overview on this page.
Guideline search - separate results for SAP Web Components
Guideline search - separate results for SAP Web Components

Versioning

The version you see in the web component guideline is the interaction design version. It is shown in the guideline subtitle. Version 1.0 (v1.0) is the initial design version.

Subtitle with technical name and interaction design version
Subtitle with technical name and interaction design version

Interactive examples

The live examples in the SAP web component guidelines reflect the implementation status on:

August 2, 2024 (UI5 Web Components Release Version 1.24.8)


Component Overview

The list below provides an overview of all the web component guidelines currently available with this beta version.




Share Your Feedback

Do you have questions or feedback on the SAP Web Component guidelines? Feel free to contact us via the SAP Fiori Community.

Contact Us

P13n Dialog

The P13n dialog control tabs allow users to personalize table and smart chart attributes.

Table Personalization Tabs

  • Columns: Visibility and order of columns
  • Sort: Sort criteria for table items
  • Filter: Filter criteria for table items
  • Group: Grouping table items by specific attributes

The tabs can be shown in any combination, as required by the use case.

The P13n dialog is intended for complex tables that have a large number of columns and require complex queries for sorting, grouping, and filtering.
For simple tables, see the view settings dialog and table personalization dialog.

Smart Chart Personalization Tabs

In addition to the Sort and Filter tabs, the P13n dialog for smart charts can include the Chart tab to allow users to set the visibility of chart dimensions and measures.

The P13n dialog is opened using the corresponding buttons on the right-hand side of the table or chart toolbar, as shown below.

Usage

Use the P13n dialog if:

  • Users can personalize more than ~20 columns.
  • You need multiple personalization functions (columns, sorting, filtering, grouping, …)
  • You are using the analytical table.
  • Complex queries have to be built for the table.

Do not use the P13n dialog if:

  • Users can personalize fewer than ~20 columns.
  • You only need a simple feature to show/hide columns.

Responsiveness

The P13n dialog is available for all display sizes. For sizes L/XL (desktop) and M (tablet), it shows as a centered dialog. For size S (smartphones), it displays as a full screen dialog.

Size S – Columns
Size S – Columns
Size M
Size M
Size L
Size L

Components

The P13n dialog can include the following tabs, separately or combined, as required by the use case:

  • Sort
  • Filter
  • Columns (available only for tables)
  • Group (available only for tables)
  • Chart (available only for the Smart Chart)

App developers can add more tabs manually.

Behavior and Interaction

Sort

On the Sort tab, the user can specify the sort criteria and sort order (ascending or descending).

Each entry has two input fields:

  • One for choosing the sort column in a table or the sort dimension or measure in a smart chart
  • The second for choosing the sort order.

Users can enter multiple sort criteria. Once a sort criterion is entered, a new line appears for entering another one.

The order of the sort criteria reflects the order in which they are applied to the table or smart chart.

Information

  • The new P13n panels from the SmartTable (ColumnsSortGroup) are now available for freestyle application development.
  • Using the sort feature for column headers replaces ALL sort options in the dialog!

Sort settings in the P13n dialog
Sort settings in the P13n dialog

Filter

The Filter tab allows users to filter the table or chart information according to specific criteria.

Once a filter criterion is entered, a new line appears for entering another one. Users can remove filters by clicking the   (Remove Filter) icon at the end of each filter item.

Filter Criterion

In the first input field, the user selects the column (for tables) or the dimension/measure (for charts) to be filtered. Any column or dimension/measure can be selected, including columns and dimensions/measures that are not currently visible.

Define Conditions

The second field is an input field which calls a Value Help Dialog when the user clicks the selection icon (value help icon) in the input field.

The first input field in the value help dialog contains the operator that is applied to the filter value (such as greater than or not before).

To include or exclude filter criteria, the user selects the relevant operator from the Include or Exclude section of the dropdown list. For example, equal to to include a value, or not equal to to exclude it.

If individual filter criteria have Boolean values, the operator is always “equal to” and the operator dropdown is disabled.

Available operators:

String (Text)

  • between
  • contains
  • equal to
  • begins with
  • ends with
  • greater than
  • greater than or equal to
  • less than
  • less than or equal to

Number

  • between
  • equal to
  • greater than
  • greater than or equal to
  • less than
  • less than or equal to

Date

  • between
  • equal to
  • after
  • on or after
  • before
  • before or on

Boolean (true/false)

  • equal to

Value

The second field in the value help dialog contains the value by which the selected column is filtered. The kind of input field that is provided depends on the data type of the selected column and the selected operator. For example, the value field for fixed or Boolean values could be a dropdown list, an input field with suggestions, or a date picker. You can also offer two or even more fields if the use case requires it.

The above mentioned guidance for filtering is applied to both the table and chart personalization.

Information
If there is a filter bar, use the filter bar functionality and deactivate the filter feature of the P13n dialog.

Columns

The Columns tab allows users to change the visible table columns and the order in which they are displayed.

The available columns are shown as list items with checkboxes. The checkboxes for the columns that are currently being displayed are selected.

The Show Selected / Show All button toggles the display between all columns and only those that are currently selected.

Show/Hide

To show or hide a column, users select or deselect the column checkbox.

Reorder

To change the order of the columns, users focus on a list item and use the buttons on the right-hand side of the table toolbar to move it up or down. The order of the columns from top to bottom corresponds to the order on the table from left to right.

Search

The search field in the table toolbar enables users to find a specific column more quickly. Matching columns are displayed as soon as the user starts to type.

Information
The new P13n panels from the SmartTable (ColumnsSortGroup) are now available for freestyle application development.
Column settings in the P13n dialog
Column settings in the P13n dialog

Group

The Group tab allows users to group the table data.

In the select control, they can select a grouping criterion from a list of all available columns.

For analytical tables, users can define more complex grouping scenarios. Once a grouping criterion is entered, a new line appears for entering another one. In addition, the Show Field As Column checkbox allows users to decide whether or not to display the corresponding column.

The grouped table shows the individual values for the selected field as the group headers. Expanding the group shows all the corresponding table items.

If you have defined multiple groups, the grouped table shows the individual values for the first selected field. Expanding the groups shows the subgroups and items in an expandable hierarchy.

Information
The new P13n panels from the SmartTable (ColumnsSortGroup) are now available for freestyle application development.
Warning
Only columns marked as visible on the Columns tab can be used for grouping!
Group tab in the P13n dialog
Group tab in the P13n dialog

Chart

The Chart tab allows users to set the visibility of chart dimensions and measures and to change the order in which they are displayed.

Users can add dimensions and measures with the select control or remove them by clicking the  (Remove dimension/measure) icon at the end of each chart item.

They can enter multiple dimensions and measures. Once a dimension or measure is entered, a new line appears for entering another one.

The order of the entered dimensions and measures reflects the order in which they are applied to the chart.

Dimensions

Each entry has two select controls: one for choosing the dimension, and one for choosing the layout option. The dialog is adapted to the currently selected chart type and shows layout options that work on the selected chart type.

Measures

In the select control, the user can select a needed measure from a list of all available measures.

Reorder

To change the order of the dimensions and measures, users focus on the list item and use the buttons on the right-hand side of the table toolbar to move it up or down or by dragging the dimension/measure to the desired location.

Warning
Users can select or change a chart type via the Smart Charts toolbar!
Chart settings in the P13n dialog
Chart settings in the P13n dialog

Resources

Elements and Controls

Implementation

Typography – Horizon

SAP applications use SAP’s proprietary typeface 72, with a fallback to a sans-serif system font if 72 can’t be loaded.

Designing 72 from the ground up made it possible to meet SAP Fiori’s typographic requirements, including:

  • Legibility enhancements: Optimize for screen use.
  • Font styles: Support a robust typographic hierarchy.
  • Brand voice: Be credible and humane.
  • Character set: Accommodate complex content.
  • Language support: Support Windows Glyph List.
  • Accessibility: Improve character recognition.

Typography with 72

72” replaces the default system fonts to improve the typographic system for SAP applications. The design has been meticulously crafted to portray a look and feel that is more trustworthy, friendly and modern, communicating the visual language of SAP. The metrics of the system fonts have been kept, to ensure compatibility within all controls. Improvements of the individual characters have been made, which also means that less screen width is required, resulting in reduced truncation issues. With all these enhancements, along with the humanist influences within the fine details, 72 greatly improves the legibility of SAP applications.

72, a bespoke typeface created for SAP
72, a bespoke typeface created for SAP

Language Support and Fallback to System Font

Language coverage is one of the most important requirements of a typeface, depending on the number of countries in which your applications need to be available. Beyond the languages the font supports, fallback solutions need to be considered. If the defined fonts cannot be displayed when an application initially loads, a fallback font is defined in the style sheet. Defining a fallback to a sans-serif system font that is readily available on every user’s device is a simple solution to load applications in any language. The font stack that is used within the CSS includes 72 with a fallback to system fonts such as Arial and Helvetica in combination, or Roboto for Android.

Here is an example of how theme parameters are used to specify a font stack. Notice that there are two versions of the 72 font; the first is a smaller subset to help improve performance and the second is the full version:

sapFontFamily: “72”, “72full”, Arial, Helvetica, sans-serif;

The fallback system fonts also have the advantage of zero loading time, ensuring that there is always a consistent font available that works with the fresh, clean, and minimalist SAP visual style. The font stack used comes with a full Unicode solution when special characters are needed. For all the languages that SAP products will need to support, system fonts are available. 72 is integrated into the control set, making customization easy. The font stack can also be modified to achieve an individual result.

Accessibility

Optimized for screen consumption, 72’s design enhancements increase legibility, readability and ultimately, accessibility. A wider apex and open counters help with character recognition at smaller sizes. Differentiation of character details, such as the number “1” and the lower case “l” versus the capital “I”, makes the characters easier to distinguish and improves the overall reading experience.

Example of improved accessibility features
Example of improved accessibility features

Headlines and Font Styles for UI Controls

  • Headlines 1 to 6: Titles are defined in several sizes and styles that help to visually identify the context of application pages or grouped content within the user interface. Examples of headlines include the page title, object header title, list, form, table, chart, timeline, and feed titles. Headlines generally use the 72 Bold font weight by default and 72 Black for the main titles in the Horizon theme, but this is flexible depending on the control component or product application context.
  • Small text: Used for exceptional use cases within controls, such as time stamps or a unit of measurement. We do not recommend using small text size as the main UI text size within controls.
  • Medium text: Default text size used in controls, such as buttons, inputs, tables, or a tree.
  • Large text: Stand-out text controls, such as the author name in a feed, or the file name for a collection of uploaded files.
  • Key performance indicators or custom display sizes: KPI numbers or custom display text sizes may have individually-specified sizes and font weights depending on the control component or application context. Consider visual accessibility and the typographic hierarchy before choosing any custom size or font weight. Light font weights are recommended only for large sizes that are clearly visible and should never be used for small textual information or labeling. If a UI is specially designed to be visible on very large displays from far away, consider emphasizing key information using a bold font weight.

These recommended sizes and weights are offered by default, however, SAP product lines have the flexibility to define their own type scale.

Header Scale

UI Control Text Sizes

72 Font Styles

Additional Styles

SAP can now benefit from the additional font styles that have been added to 72, such as 72 Semibold. These font styles help to expand the possibilities of how to best visualize the information hierarchy within products and websites.

New font styles
New font styles

72 Semibold Duplex

72 Semibold Duplex also enables additional accessibility improvements by providing a visual weight distinction to the regular font weight without any visual jump in the width of the letters. This helps bring more interactive affordance to the text used for general actions and also helps bring a more consistent weight when paired with the new stronger weight of the icon style for the Horizon theme.

72 Semibold Duplex
72 Semibold Duplex

Line Heights

In general, no line height is applied to text, since the line height affects the padding and leads to misaligned content.
If a more generous line height is required for long continuous text, a consistent line height of 1.5 is recommended:

  • Normal line height: This is the default auto line height used in bread and butter controls (such as buttons, inputs, lists, and tables with no wrapping text).
  • 1.5 line-height: Line height recommended by WCAG accessibility guidelines for long continuous or wrapped text (for example, text area or feed list item).

Related Links

Download Fonts

72 is now available to download as part of the UI kit.

SAP Theming Base Content

GitHub repository of SAP themes, including downloadable font files.

Using Figma UI Kits with Other Design Tools

You can transfer design components from the Figma UI kit to other design tools. This article outlines how to do this for Sketch, Axure RP, and Adobe XD.

Information
You can copy assets between the design tools without a Figma license.

Step 1: Open the UI Kit in Figma

  1. Go to www.figma.com, and sign up for a starter account (free).
  2. Import the UI kit file using the button in the top right corner.
  3. Select the design component you need (see the design components within the layers panel on the left side).

Step 2: Export/Copy to Your Tool

Sketch

  1. Select the design component.
  2. Set up the export:
    1. In design panel on the right, go to the Export section and click the “+” icon.
    2. Choose SVG as the export file.
    3. In the overflow menu (), deselect “Outline Text”.
       If you don’t deselect “Outline Text”, you won’t be able to change text afterwards in your design tool.
  3. Click Export to export the selection.
  4. In Sketch, open the exported SVG file via File / Open Local Document… .

Axure RP

  1. Install the Axure RP Plugin.
  2. Select the design component on the canvas.
  3. Under the main menu on the top left go to Plugins / Axure / Copy Selection for RP.
  4. Open Axure RP and paste the design component to your canvas.

Adobe XD

  1. Right click on the design component and use the Copy as SVG option.
  2. Open Adobe XD and paste the SVG directly to your canvas.

Related Links

SAP Fiori Launchpad “My Home”

Intro

The “My Home” space of the SAP Fiori launchpad leads to a personalized page for the user. It serves as an entry point to a personalized set of SAP Fiori apps on mobile and desktop devices. This article provides an overview of the SAP Fiori launchpad “My Home” page.

If activated, “My Home” is the first listed space on the SAP Fiori launchpad navigation bar.

The page contains tiles, which are used to launch apps and can also show additional application information. As for other spaces on the SAP Fiori launchpad, users can personalize the home page by adding, removing, and grouping app tiles. Since the launchpad is role-based, only apps that are relevant for the user’s role profile are shown.

SAP Fiori launchpad -
SAP Fiori launchpad - "My Home"

Adding Apps to “My Home”

If “My Home” is activated, the page is initially empty. The user can either import personalized app groups from other spaces, or add apps to the “My Home” page manually.

Importing Personalized Content

A message at the top of the empty “My Home” page indicates that apps can be imported from the classic home page.

The Start importing now link opens the Import Personalization Content dialog, which offers a list of previously personalized groups within different spaces. Here, the user selects the desired groups and clicks Import to initialize the import.

"My Home" - Import feature

Adding Apps Manually

Alternatively, users can add applications to “My Home” manually. They can either use the App Finder or click the Edit Page button that is initially offered at the center of the empty “My Home” page.

“My Home” Settings

Users can decide whether to show or hide the “My Home” menu. This is defined in the user settings (user action menu: Settings) under Spaces and Pages.

"My Home" settings

Related Links

Elements and Controls

Implementation

  • No links.

Empty States

Empty states are moments in the user experience when there is no content to display. They can appear anywhere within an application and occur most commonly when a user:

  • Interacts with an application or feature for the first time
  • Performs a search or filters data
  • Encounters an error due to permissions, systems, or configuration issues

Empty states should never feel empty or negative, especially when things aren’t working as expected. It is important to tell the user what the empty state is for, why the user is seeing it, and what the user can do next. When designed appropriately through relatable, encouraging content, empty states can enhance the user experience, add value, and be a quick UX win.

This article provides an overview of empty states and their design recommendations.

Empty state in a dialog
Empty state in a dialog

Handling Empty States

Empty states occur for a variety of reasons and can require different treatments. The design should focus on the information you want to convey to the user. It’s a simple way to keep users informed and supported within an application. If possible, communicate what’s happening, while providing constructive guidance for the next steps.

An empty state can occur anywhere in the UI. The design layout for the empty state depends on the context of the situation and what is most suitable for the page layout.

Empty states can be handled by the illustrated message control.

Types

The list below suggests different approaches for common types of empty states to address the needs of the user in different situations.  

Type When to use  Example Recommendation
No data       There is no data for the user to see or the system has nothing to display.

First-time use of an app or feature.

The “no data” state can be initiated by a user, system, or another user:

– Before beginning a search

– No activities

– No mail

– Application account setup

Let users know what will be available when data has been added.

If possible, provide information on how users can add data themselves or what to do next.

If the user is using a feature or app for the first time, guide them through the initial actions.

User action          Provide feedback to the user based on some user action or interaction.

User has completed an action.

A user action empty state is created by the user:

– No search results

– No filter results

– Completion of a process or task

Help users understand the situation and let them know if a next step is needed.

For success states: Indicate that the user has successfully completed a process or task.

Errors The system or application is unable to display information due to an error.  An error state is caused by missing permissions, incorrect configuration, or a system issue:

– Unable to load

– Unable to upload

– Account isn’t available

Help users understand the problem and, if possible, what corrective actions to take.

Provide a sufficient level of detail to help users resolve the issue.

Best Practices 

Message Writing 

Provide a primary message (headline) and a description.

  • Primary message: Explain the reason for the empty state, preferably in a single line. Keep the text short to make it quick to read and understand.
  • Description: Provide context and tell the user what to do next, in three lines or less.

Note: Consider how translations to other languages may increase the amount of text.

More Information:

 

Call to Action 

Give the user direct access to a relevant action, where appropriate. It can turn an empty state into a situation that is helpful to the user.

  • If there is a clear next step, include an action, ideally in the form of a secondary button or text link. Be sure that the user has permission for the next step.
  • Do not use the primary action button for empty states.

More information:

Illustration Choice

When appropriate, support the message with an illustration. It’s a great way to convey the meaning of the message more immediately and show personality through the distinctive visual language used for SAP Fiori UX illustrations.

Before adding an illustration, ask yourself these questions:

  • Does the illustration enhance the communication of the message you want to deliver to the user?
  • Is the illustration relevant and appropriate in other cultures or geographic locations?
  • Do the illustration, message, and call to action work as one clarify the situation?

Only add an illustration if the empty state has enough space for it. Otherwise, use text messages only.

Do not use a UX illustration for UI elements that are smaller than a medium size card, such as tiles, message toasts, message strips, or other smaller UI elements. Use a headline and supporting message only.

More information:

Do
When space is limited, use text only.
When space is limited, use text only.
Don't
Don't use UX illustrations for small UI elements, such as tiles or message toasts.
Don't use UX illustrations for small UI elements, such as tiles or message toasts.

Multiple Empty States

When designing for a screen, consider how multiple empty states may impact the user experience. Attempt to mitigate scenarios where multiple empty state illustrations occur simultaneously on a screen. Think about which messages to prioritize first.

Top Tips

  • An empty state should never feel empty or negative, especially when things aren’t working as expected.
  • Keep the user informed, supported, and on a productive path through relatable messaging that communicates what the user would see if they had data.
  • If possible, provide the user with guidance for a next step – either in the message or through a button or text link. In a situation without solutions, explain what is going on so the user can attempt to troubleshoot.
  • Empty states must have a message (headline with supporting description). An illustration and call-to-action are optional.
  • Carefully consider the context and layout when using illustrations and calls to action.
  • Check out the Illustrated Message guidelines.

Reference Examples

Here are some examples of how empty states occur in different containers.

Related Links

Implementation

UI Elements (SAPUI5)

This article provides an overview of the UI elements used in SAP Fiori. UI elements range from simple controls to complex controls, and include reuse components, smart controls, and controls designed specifically for assistive technologies.
  • Simple controls are the very basic UI elements, such as buttons or links.
  • Complex controls themselves use other controls. For example, a toolbar contains buttons and a smart table contains a title, a toolbar, and items.
  • Reuse components were originally built for a specific use case and line of business. If you have a similar scenario, you may also be able to use them for your app.
  • Smart controls offer additional features to the standard SAPUI5 features, such as OData metadata support. That’s why they are typically used with SAP Fiori elements. However, smart controls can also be used for regular freestyle apps.
  • Controls to support assistive technologies are needed to make the interface accessible to everyone, including people with disabilities.

Quick Access

The list below provides an overview of our UI element categories and the UI elements you can expect to find in each one. For tips on when and how to use specific elements, also check the When to Use section under UI Elements in the navigation structure. To get a visual overview of all UI elements, check out the Explore page.











SAP S/4HANA Web UI Kit

Intro

The SAP S/4HANA Web UI Kit enables you to create high-fidelity SAP Fiori for Web designs using Figma. Intended for designers, this kit is tailored specifically to the Morning Horizon theme and helps you rapidly prototype and design SAP Fiori for Web applications with ease.

The kit includes a set of elements for conceptual design purposes. These elements may not fully represent the exact visual design specifications or implementation details. For implementation guidelines, explore the SAP UI5 Demo Kit.

What’s in the Kit?

The kit offers both compact (non-touch screen) and cozy (touch screen) form factors to suit various device interfaces. It includes a comprehensive collection of web components, icons, layouts, and floorplans. The kit is regularly updated and published to ensure you have access to the latest SAP Fiori for Web design elements and standards.

Getting Started

1. Install the SAP 72 Font Family

Begin by installing the SAP 72 Font Family on your computer. This font is meticulously designed to align with SAP’s visual identity and readability standards, ensuring consistency across SAP interfaces.

2. Install Icon Fonts

Install both the SAP Icon Font and the SAP Business Suite Icon Font on your computer.

3. Enable the UI Kit

Visit the SAP Community in Figma to access the SAP S/4HANA Web UI Kit. Open the kit and start dragging components directly into your design.

Reach Out & Support

Need Help or Have Questions?

The SAP S/4HANA Web UI Kit team is here to assist you with any questions or concerns you may have. Whether you’re experiencing technical difficulties, seeking design advice, or simply want to provide feedback, we’re ready to support.

Contact Us

Email: s4hana_webuikit@sap.com

Community Forum

Get Involved

We value your feedback and input! Share your ideas and suggestions for improvement with us. Your input helps us continuously enhance our products.

Related Links

Related Guidelines

  • Download Fonts
    Download files for font 72, SAP icon font, and SAP Business Suite font.

Updated Navigation Structure for Guideline Version 1.88

The following changes were made to the guideline navigation structure with guideline version 1.88.

Topic Assignment

Enhanced “Get Started” Section

The Get Started section now includes best practices.

“Foundation” and “General Concepts” Replaced

The former Foundation and General Concepts sections have been replaced by more specific sections:

  • SAP Fiori Design System: Overarching SAP Fiori topics, such as design principles and UX consistency.
  • Look, Feel, and Wording: Topics relating to the visual design and UI text conventions.
  • SAP Fiori Launchpad: Now a top-level navigation entry.
  • General Patterns: UX patterns that apply across SAP Fiori, such as action placement or navigation.
  • UI Elements / When to Use: Best practices relating to UI elements (see below).

Separate Entry Points for Frameworks

Frameworks are now shown separately from layouts and floorplans.

  • Layouts and Floorplans: All layouts and floorplans.
  • SAP Fiori Elements Framework: Supplementary information for floorplans implemented as SAP Fiori elements.
  • Analytical Frameworks: Analytical frameworks used with SAP Fiori, such as SAP Smart Business.

UI Elements Reorganized

The UI Elements section has been enhanced and restructured:

  • New When to Use section at the top now contains all the best practice topics for using controls, such choosing the right selection control or applying semantic colors. These topics formerly appeared under General Concepts.
  • Similar topics have been grouped to reduce the number of top-level entries. For example, there’s now one List / Table / Tree section.
  • Topics that logically belong in different groups can appear more than once (for example, “Table Select Dialog” comes under both List / Table / Tree and Dialog.
  • New section for Smart Controls.
  • Separate section for Reuse Components.

One Stop for Tool Development

All topics relating to tool development are now under Tool Development, regardless of the component type.

Stencils & Co.

The former Services & Resources section has been renamed to Designer Toolkit.

Other Changes

Section Overviews

All main sections now have an overview topic that explains the content of that section and how the information is organized. This content now shows as soon as you click on the corresponding navigation node.

Topic Names

You’ll notice that some topic names have changed slightly. But we’ve avoided major changes and search terms and links should still work fine.

When to Use Which Floorplan

Choosing the right floorplan is not always easy. Roughly speaking, SAP Fiori offers floorplans that:

  • Provide an overview of information and tasks: overview page
  • List several objects: list report, analytical list report, worklist
  • Manage an object: object page, wizard
  • Allow navigation to work on one object: initial page

For a quick check of which floorplan to use, see below. For more information, go to the respective floorplan article. 

Information
Except for the wizard and initial page, all floorplans are available as SAP Fiori elements.

Overview Page


Floorplan

Use Case

Key Features

Thumbnail


  • Get an overview of the key tasks and information needed for a specific user role
  • React to information
  • Filter bar, including a search field
  • Content from different apps is shown on one page
  • Content can be displayed in different formats (such as charts, lists, or tables)

List Floorplans


Floorplan

Use Case

Key Features

Thumbnail


  • Find objects from a large data set
  • Act on the relevant objects
  • Filter bar, including a search field
  • Objects can be shown in a table or in a chart. Switching between the table and chart is possible.
  • Predefined views on the objects are possible, for example All, Open, Assigned. Switching between the views is possible.

  • Extract knowledge or insights from objects by using business intelligence features (drilldown for root cause analysis, slice and dice)
  • Act on the relevant objects
  • Visual filter bar, where filters are represented as charts
  • Switch to the non-visual filter bar without search field is possible
  • Data is represented in a chart and a table on one page
  • Users can see the impact of their action on  a global key performance indicator (KPI)

  • Process a predefined set of objects
  • Filter bar not needed
  • Predefined views on the items are possible, for example All, To Be Assigned, To Be Ordered

Object Floorplans


Floorplan

Use Case

Key Features

Thumbnail


  • Display, create, or edit an object
  • Get an overview of an object and interact with different parts of the object
  • Flexible header
  • Anchor or tab navigation to access the content
  • Flexible layout for the content

  • Create or edit an object
  • Guide the user through a series of steps
  • Task is rather long or unfamiliar for users
  • Minimum of 3 steps, maximum of 8 steps
  • Summary that shows the data for all steps

  • Navigate to one object and work on this object
  • Single input field with value help

General Patterns

General patterns are basic interaction patterns that are to be used consistently in all SAP Fiori web apps. They vary from small, such as Export to Spreadsheet, to more extensive patterns, such as Object Handling.

Make yourself familiar with these patterns. We recommend starting with the patterns below.

Pattern Description
Action Placement  Where to place actions and their order in toolbars.
Draft Handling  About implicit saving in SAP Fiori.
Message Handling /

Form Field Validation 

The use of different message types and controls, and how to handle messages for values entered in form fields.
Navigation  How to navigate within an app and between apps, either using the shell bar options or using UI elements on the pages, such as smart links or quick views.
Object Handling  Interaction flows for creating, editing and deleting simple or complex objects.

Look, Feel, and Wording

The look, feel, and wording of a product are part of its branding. Their consistent use ensures the recognition effect we are all striving for. It is therefore important to adhere to the guidelines laid out in the following section and articles:

Design Tokens

SAP provides design tokens for color, typography, shadow, and metrics in a central repository.

The design token styles are linked directly to the SAP themes that are used across all SAP technologies and platforms. Tokens replace hard-coded values with self-explanatory names that are easy to map to UI components.

For more information, see Design Tokens.

Theming

The latest theme for SAP applications is called Morning Horizon. In addition, SAP provides alternative themes: Evening Horizon as an optional dark theme and the accessibility themes High-Contrast Black (HCB) and High-Contrast White (HCW).

For more information, see Theming.

Colors

Color communicates importance and association, and provides direction to users. By applying the color palette of the themes, user interfaces guarantee a clean and lightweight design that is consistent and coherent across all SAP Fiori applications.

Familiarize yourself with the concepts of color balance and color usage, especially the interplay between primary colors, accent colors, grayscale areas, and semantic colors.

For more information, see the colors for each theme:

Iconography

Learn about the icon styles for each theme family. In addition to the general icon semantics and grid system, each article covers the line thickness and corner radius values defined for the respective theme. These styling differences explain why the same icons can look slightly different, depending on the theme you’re using.

If you need an app icon that you can use for your web app in a marketplace, check out the guidelines for creating service icons.

Motion Design

Motion design is a design method that applies animation and visual effects to user interface design.

Typography

SAP Fiori uses SAP’s proprietary typeface 72, with a fallback to a sans-serif system font if 72 can’t be loaded.

For more information, see:

UX Illustrations

UX Illustrations are always paired with written messages. Their aim is to help explain complex ideas visually and add more personality to the product.

UI Texts and In-App Help

This section contains guidelines for UI texts and in-app help.

  • The UI Text Guidelines for SAP Fiori cover UX writing for the SAP Fiori UI, including word choice, punctuation, formatting, and more.
  • Specific UI text guidelines for the overview page are also located here.
  • SAP Companion provides context-specific in-app help on UI elements and process flows.

List Report – Header

The SAP Fiori elements list report template supports the features and settings for the list report header detailed below.

For design information, see the List Report Floorplan guidelines and the links below.

Warning
Put all controls for searching and filtering data in the list report filter bar.

Do not include the search or filter options that are available in the table header.

Feature Availability

 

Features

 

Availability

Page-Level View Management Default, you can turn it off.
Share Menu Default
Manual Update Mode Default
Live Update Mode Available
Search Available
Filter Bar Default
Initial State of Header Default:

  • Expanded on large screens
  • Collapsed on medium and small screens when the application is configured to load the list report data on app launch
Pin Button With SAP Fiori elements for OData V4, turned on when the list report contains at least one responsive table.
Editing Status Filter Default for draft-enabled applications.

You can hide it.

Input Controls for Filters Default
Adapt Filters UI Element
  • Default: dialog with SAP Fiori elements for OData V2
  • Default: popover with SAP Fiori elements for OData V4

Feature Details


Page-Level View Management

By default, page-level view management is enabled and the header displays a page title.

You can disable it.

Guidelines
If you disable page-level view management, you must display a header title.

For more information, see Header Title.


Share Menu

By default, the header contains the generic Share menu with the global actions Send Email and Save as Tile. It can also include the:

  • Share in SAP Jam menu item when SAP Jam integration is configured.
  • Microsoft Teams > As Chat and As Card options when the required settings have been made by the system administrators of SAP S/4HANA or SAP S/4HANA Cloud.

This feature is part of collaborative ERP (enterprise resource planning), which integrates the best of SAP S/4HANA or SAP S/4HANA Cloud with Microsoft Teams. It’s not available for all users.

When available, the menu item opens a separate window where users can directly share a link to a business application in the SAP S/4HANA or SAP S/4HANA Cloud system with co-workers.

With SAP Fiori elements for OData V4, you can control the visibility in the Share menu of the Send E-mail and Share: Microsoft Teams options at both application level and page level.

Save as Tile

The tile created opens the list report with the same results shown at the time the tile was saved.

Users can also save a dynamic tile for results shown after the users have filtered for a relative date value, such as today or this year.

    For more information, see:

    Developer Hint
    For more information, refer application developers to:


    Update Mode

    By default, the update mode is manual.

    You can enable live update mode instead.

    For more information, see Live Update / Manual Update.


    Search

    By default, the search is disabled.

    You can enable it.

    The limit for search strings is 1000 characters.

    Guidelines
    Work with the development team to define the searchable properties in the data.

    For more information, see Search.


    Filter Bar

    SAP Fiori elements for OData V2 uses the smart filter bar.

    SAP Fiori elements for OData V4 uses the filter bar.

    With SAP Fiori elements for OData V4, you can also show a Clear button on the filter bar to let users:

    • Remove all filter values

    • Reset the value in the Editing Status filter to All

    Warning
    Put all controls for searching and filtering data in the list report filter bar.

    Do not include the search or filter options that are available in the table header.

    Initial State of Header

    The default behavior is shown below:

    Screen Size

    Application Starts with Data

    Application Starts without Data

    S Collapsed Expanded
    M Collapsed Expanded
    L Expanded Expanded
    XL Expanded Expanded

    Pin Button

    With SAP Fiori elements for OData V4, the Pin  /Unpin   buttons are displayed under the header when a list report contains at least one responsive table,

    The pin option keeps the header collapsed or expanded when the user scrolls.

    The grid table and the analytical tables are not scrollable so the Pin  /Unpin  buttons are not displayed when the list report contains only these types of table.

    For more information see, Pinning the Header Content.


    Editing Status Filter

    By default, the filter is enabled for draft-enabled applications. You can disable it.

    The filter values and corresponding results are as follows:

    • All (Default value):
      • All saved (or active) versions of the documents for which the current user has no drafts
      • All the users own drafts of unsaved changes to existing documents. The version last saved before the user began editing the draft is not shown in the results.
    • All (Hiding Drafts): Only the saved objects.
    • Own DraftDrafts that the current user can display or edit.
    • Locked by Another User: Saved versions that are locked by other users. The current user cannot edit these versions.
    • Unsaved Changes by Another User: Saved versions that were edited by another user but are no longer locked. The current user can edit and overwrite these versions, and the previous draft will be overwritten.
    • No Changes: Saved versions with no corresponding draft.

    For more information, see Draft handling.


    Input Controls for Filters

    You can decide which filter/input controls to use and set the following for them:

    • The properties available as a filter criterion
    • The labels for the filter fields
    • The default filter values
    • Mandatory filters: Marked by an asterisk (*), they always show in the filter bar.
    • Type-ahead for values entered
    • Value help lists
      By default, a dialog conditions tab is displayed for the value help. Remind application developers to define the right value help options.
    Developer Hint
    For information on defining the value help, refer application developers to Field Help.

    You can also:

    • Decide on the selection controls for the filters
    • Restrict the values accepted in the field. By default, the field accepts multiple values.
    Guidelines
    Date Picker and Date / Time Picker

    By default, filter fields for the date picker (sap.m.DatePicker)and date/time picker (sap.m.DateTimePicker) result in a control that opens a dialog for adding multiple dates.

    When your use case requires a date/time picker for a single value, specify this to the the application developers because it requires explicit configuration.

    For more information refer them to: Configuring Filter Fields.

    For more information, see:


    Adapt Filters

    By default, SAP Fiori elements for OData V2 uses the Adapt Filters dialog and SAP Fiori elements for OData V4 uses the Adapt Filters popover.

    You can configure the following:

    • Filters that are initially visible in the expanded filter bar. When you set filters to be visible by default, they are displayed under the Basic group in the dialog.
    • Additional groups for the filters
    • Show input fields: Visible by default. You can hide the Hide value/Show value button.

    Users can add additional fields through views.

    The OK and Cancel buttons are displayed when the application team or the user has chosen manual update mode for the filter bar.

    By default, the Reset button is displayed, you cannot change this.

    For more information, see: Adapt Filters.

    Related Links

    Elements and Controls

    SAP Fiori Launchpad Spaces

    With SAPUI5 1.75, we introduced SAP Fiori launchpad spaces in parallel to the SAP Fiori launchpad home page. Users can switch between the two with the user actions menu.

    A space and its pages structure the most relevant apps for users with a certain business role. The content of a space is visualized by tiles which allow users to quickly launch apps to access the business content they need to complete their business related tasks.

    Users can easily personalize their pages directly by rearranging or adding tiles. Users have access to advanced personalization options via the edit mode. Users may have a personalized space “My Home”.

    Video: Introducing SAP Fiori launchpad spaces


    When to Use

    SAP Fiori launchpad spaces must be used to give access to SAP Fiori apps.

    Components

    The following overview explains the concept of spaces and its pages.

    SAP Fiori launchpad spaces - Components - Overview
    SAP Fiori launchpad spaces - Components - Overview

    (1) Top-level navigation where the space is visually represented as an navigation item
    (2) One page or multiple pages per space
    (3) Sections on a page
    (4) Tiles in a section
    (5) Links in a section

    Top-Level Navigation

    The top-level navigation is part of a space. It gives users access to all spaces and pages that they are assigned to, and enables users to navigate between those. An entry in the top-level navigation indicates a space. Multiple spaces are visualized by multiple entries. By selecting a space, users can access one or more pages belonging to the space.

    Top-level navigation
    Top-level navigation

    Spaces

    A space serves as an entry point for a business role and shows information and functions that are assigned to this business role. A space is represented as a navigation item in the top level navigation. A user may have multiple spaces assigned, which results in multiple entries in the top-level navigation. A space consists of one or multiple pages that are used to further structure the content of a space.

    A space title is mandatory. Do not use the business role name as a space title, use the name of the work area of a business role instead.

    Spaces
    Spaces

    Pages

    A page is part of a space, and a space may have one or multiple pages. Multiple pages allow users to structure the space into multiple self-contained work-contexts. Business roles with fewer apps may use one page per space, whereas business roles with more apps may use multiple pages per space. A page consists of sections that are used to further structure the content.

    Do not use function or product-oriented page titles, and do not repeat the space title. Use task-oriented page titles that summarize the tasks that can be performed on the page.

    Pages
    Pages

    Sections

    A section structures the content of a page semantically. To ensure consistency across pages within a space and across spaces, we highly recommend using a section “Quick Access” to summarize the most important apps and/or a section “Insights” to summarize the most important analytical apps. To aim for lean pages, we recommend using between 2 and 5 sections per page. A section consists of tiles that visualize the content of a space.

    A section title is optional. Use a term summarizing the tasks that can be performed in the section.

    Recently Added Apps

    When the user adds an app to a page using the app finder, a dedicated Recently Added Apps section appears at the top of the page that contains the added app. Once the user moves the app to another section, the Recently Added Apps section disappears.

    Sections
    Sections

    Tiles

    The content of a space is visualized by tiles. Tiles allow users to quickly access business applications to complete their tasks. Different tile types and tile sizes are available. To aim for lean pages, we recommend using between 3-7 apps per section and 25 apps at most per page.

    Tiles
    Tiles

    Links

    The content of a space is visualized also by links. Links allow users to quickly access business applications to complete their tasks.

    Tiles
    Tiles

    Behavior and Interaction

    Users can switch between the launchpad home page and launchpad spaces. To personalize the pages, users may either directly rearrange tiles on a page or open the edit mode to have access to advanced personalization options.

    Switching between Spaces and Home Page

    Users can switch between the launchpad home page and launchpad spaces with the user actions menu. Navigate to Settings, then Spaces, and activate Use Spaces to switch to launchpad spaces. Deactivate Use Spaces to switch back to the launchpad home page. In both cases the launchpad reloads.

    Switch to Spaces
    Switch to Spaces

    Personalization

    To directly personalize the page, users can rearrange or add apps.

    (1) Move: Users can rearrange tiles and links by dragging them to a new location in the same section or to another section.

    (1) Add: Users can add apps by selecting App Finder in the user actions menu.

    Open and Close Edit Mode

    To open the edit mode, users need to open the user actions menu and select Edit Current Page. To close the edit mode, users need to select Exit Edit Mode or select Close in the footer toolbar.

    User actions menu
    User actions menu
    Launchpad in edit mode
    Launchpad in edit mode

    Edit Mode

    Users may use the Edit Mode to access advanced personalization options, such as tile actions or section actions to personalize a page.

    Tile Actions

    (1) Remove: Users can remove tiles with the Remove icon  .

    (2) Add: Users can add apps by clicking the Add Tile button.

    (3) Move: Users can rearrange tiles and links by dragging them to a new location in the same section or to another section.

    (4) Action Menu: Users can open the tile action menu to access further tile actions by clicking on the overflow icon  .

    • (4a) Convert: Users can convert the size of a tile based on the current tile size into a link, a tile, a flat tile or a flat wide tile by clicking on the respective Convert action in the action menu.
    • (4b) Move: Users can also select Move in the action menu to rearrange tiles.

    Section Actions

    (1) Rename Sections: Users can rename sections by typing the new name in the input field for the section title.

    (2) Add Sections: Users can add a new section by clicking the Add Section button. The user is prompted to enter a new section name. If no name is entered, the placeholder text Enter section tile appears by default. Once the section is created, it appears below Add Section in the launchpad space.

    (3) Move Sections: Users can rearrange a section by dragging individual section panels to a new location.

    (4) Reset Sections: By clicking Reset Section, a user can reset a predefined section to its initial state, as defined by an administrator.

    (5) Hide/Show Sections: Users can temporarily hide one or more sections on a page within a space by clicking the toggle button Hide Section. The Show Section button displays the section again.

    (5) Delete Sections: Users can delete an empty section by clicking the Delete Section button.

    Responsiveness

    The SAP Fiori launchpad spaces is fully responsive. For smaller screens, the tiles are smaller so that at least two tiles can be shown side by side.

    Launchpad spaces - Size S
    Launchpad spaces - Size S
    Launchpad spaces - Size L
    Launchpad spaces - Size L

    Top Tips

    How to Design a SAP Fiori Launchpad Space

    There are several means available to semantically structure and visualize the content of a space. Use multiple pages and sections to semantically structure the content of a space. Page and section titles may help identify the tasks that  the content relates to. Use tiles to visualize the content of a space. Beside tiles, more options to visualize the content will be available in later releases.

    Spaces
    A space comes with a predefined set of apps related to the user’s business role. Show only the most important and most used apps per space that users need to complete their daily tasks. To identify those apps, we recommend following the “Day in a life of…” approach: What are the most important apps for the users? How often do they use them? What do they need first, what do they need next? Are there any dependencies in the workflow? What are the insights they need on a regular basis? Which apps can be semantically bundled? Are there self-contained work-contexts? Structure the space according to these patterns.
    To further structure a space you might use one or multiple pages depended on the number of assigned apps associated with the users’ business role.

    Note: Don´t worry about the apps you leave out. Users still can access all apps in the app finder which they might use to add apps to their pages or to directly launch apps that they rarely use.

    Sections
    Use sections to semantically structure the content of a page. To ensure consistency across pages within a space and across spaces, we recommend using a section called “Quick Access” to summarize the most important apps, and/or a section called “Insights” to summarize the most important analytical apps.

    Pages
    Use multiple pages if you identify during the “Day in a life of…” approach several self-contained work-contexts. This might be the case for business roles which have many apps assigned. Each page should then reflect one self-contained work-context. Aim for lean pages and show only the most important and used apps on each page. Therefore, a page serves as a “favorites” page.

    “Overview” Page – If you would like to provide a page which summarizes the most important and most used apps across the multiple work-context pages use a term which summarizes the most important tasks of the whole space or use “Overview” as page title. The Overview page may contain additional overall apps or generic apps such as “My Inbox”. To ensure consistency position this page as the first page on a multiple-pages space.

    Tiles
    To aim for lean pages do not overwhelm sections with apps, go for lean pages instead. Check the chapter tiles to choose appropriate tile types.

    Guideline

    In General

    • Aim for lean spaces and pages:
      • Try to use between 2 and 5 sections per page.
      • Try to show between 2 and 7 apps per section, but 25 apps at most per page.
    • Go for consistency for all titles within a space and across SAP Fiori.

     

    Space Titles

    • A space title is mandatory.
    • Do not use business role names as space titles, use the name of the work area of the business role instead.
    • Use specific terms for the application area such as “Internal Sales”, rather than “Sales”, or “Accounts Receivables” rather than “Accounting”.
    • Try to avoid the term “Management” for non-managerial roles.
    • In rare cases, you may need to use specifications or a space title to differentiate spaces for similar but not identical roles. In this exceptional case, a dash “-” can be used. Example: Project Controller – Finance.
    • Examples for space titles are:
      • “Internal Sales” for the business role Internal Sales Representative
      • “Accounts Receivable” for the business role Accounts Receivable Accountant
      • “Convergent Invoicing” for the business role Invoicing Specialist
      • “In-House Repair” for the business role Service Representative – In-House Repair

    Page Titles

    • Do not use function or product-oriented page titles. Use work-context related terms that summarize the tasks that can be performed on the page. Example: “Long-Term Planning” instead of “Predictive Material and Resource Planning”.
    • Do not repeat the space title.
    • If a work-context specific term can’t be found for the page that summarizes the content of the pages across the space, use “Overview” as a page title.

     

     Section Titles

    • A section title is optional.
    • In case you summarize the most important apps in a section to provide quick access, do not use “Quick Start” as a section title, but “Quick Access”.
    • In case you summarize the most important analytical apps in a section, do not use section titles such as “Analytics”, “Analysis”, “Reporting”; use “Insights” instead.
    • For all other section titles, use task-oriented titles to summarize the tasks that can be performed. Example: “Sales Order Creation” instead of “Create Sales Order”.

    Related Topics

    Elements and Controls

    Implementation

    • No links.

    Terminology for Common Actions

    SAP has defined naming conventions for the most common core actions that are used across all applications and lines of business. By standardizing the main action names, we avoid ambiguity and ensure a consistent user experience.

    When to Use

    Use the standard action labels listed below for the specified generic and business actions across all products.

    For more information about the different types of action, see Action Placement.

    List of Standard Action Labels

    General Information

    • Typically, action buttons in SAP Fiori use a verb in the imperative (with the exception of universal labels, such as Settings).
    • The action labels listed below define the common actions (for example, Create ). In many cases, this will be sufficient in the context. However, if your use case requires it, you may also add a qualifier (for example, Create Product ).

    Standard Action Labels

    Action Definition Opposite Action
    Accept Accept invitations, contracts. Decline
    Add Add an existing object or item to a list. Remove
    Approve Grant permission (for example, for budget or vacation). Reject
    Back Go back to the previous screen.
    Cancel Abort an action without saving any changes.
    Close Close the dialog or window.
    Copy Create a new object or item based on an existing one. In this case, the user adapts the core data copied from an existing object.Note: The finalizing action is still Create.
    Create Create a new object or item. Delete
    Create and New Finalizing action: Create an object from scratch and return to the create screen to add another new object.
    Decline Refuse an invitation. Accept
    Delete Delete the object or item itself. Use Delete if the object or item has already been actively saved. Create
    Discard Discard a draft for a new object, or a draft version containing changes to an existing object, without saving. Use Discard if the object or item has not yet been actively saved by the user.
    Edit Make changes to an existing object.
    Filter Set a filter.
    Note: Typically a tooltip label for a filter icon.
    Finish Trigger the completion of a workflow or process. Other labels may be used when finishing a workflow or process kicks off a subsequent workflow.
    Forward Forward a request to a manager or decision-maker.
    Next Continue to the next screen (in a workflow with a sequence of activities).
    OK Confirm settings that may or may not have been changed (for example, filter settings for a table).Note: In most cases, a specific action verb is preferable.
    Reject Refuse permission. Approve
    Remove Remove the reference to an item (for example, remove a person from a distribution list). Add
    Save Save changes to existing objects.
    Note: If the action triggers a workflow, use Submit instead.
    Save and Next Finalizing action for editing a series of existing objects: Save the current object and open the next object in the series in edit mode.
    Save As Save a copy of an existing object or setting within the app, using the current state. Example: Save changes to a filter variant under another name.

    By contrast, the Copy action involves an intermediate editing step.

    Note: The finalizing action for Save As is Save.

    Share Tooltip text for the share icon  . Opens a menu with sharing actions.
    Show Less
    Also: Show [n] less
    Collapse a list or screen area within the current page or dialog.
    Show More
    Also: Show [n] more
    Expand a list or screen area within the current page or dialog.
    Sign In Log on to SAP Fiori.
    Sign Out Log off SAP Fiori.
    Submit Submit to a worfklow (for example, for manager approval).

    Top Tips

    For other actions not covered above, apply the following:

    • Use a verb in the imperative for action buttons.
      Exception: If there is a standard, industry-wide convention for an action label, follow the standard convention (examples: Settings , Full Screen ).
      Note: The grammatical form for actions can differ for other languages. For example, German action labels use the infinitive (Speichern, Abbrechen, Bearbeiten).
    • Use the same action consistently throughout the interaction. Typically, triggering and finalizing actions are the same (for example, an Export button in a table toolbar, and the Export action in the follow-on dialog).
    • Keep action labels as short as possible. Consider the limited space on smaller screens. Also keep in mind that other languages often require more space than English.

    Related Topics

    Action Placement

    Situation Handling Framework – UI Text Guidelines

    Intro

    This guideline applies to the texts that you can define for Situation Handling. The guidelines apply to the standard framework and the extended framework. The goal of this guideline is to provide you with formulation patterns and best practices to support you when creating text.

    In general, there are two categories:

    Configuration texts:

    Configuration texts describe technical objects defined by extensibility specialists and key users. Meaningful names and proper descriptions support the user in modeling situations using these apps:

    • Manage Situation Types
    • Manage Situation Types – Extended
    • Manage Situation Scenarios
    • Manage Situation Objects

    End user texts:

    End user texts describe the business situation displayed to the users who are responsible for solving a situation. A precise description and recommendations on how to solve a situation support the user and ultimately optimize the business process. The user texts are displayed through various channels:

    • My Situations
    • My Situations – Extended
    • SAP Fiori launchpad notifications
    • Email notifications
    • Related business apps

    Configuration Texts

    You configure Situation Handling in a layered approach:

    • Standard framework: situation templates and situation types
    • Extended framework: situation objects, situation scenarios, situation templates, and situation types

    Configuration texts describe these objects and their elements. The items and elements are visible throughout the various layers. Therefore, they should be meaningful and consistent to help extensibility specialists and key users choosing the relevant elements.

    There are three types of configuration text:

    These elements are often used in combination. Make sure that they complement each other.

    Don’t use the terms “object”, “scenario”, “situation”, “situation handling”, or “notification” (or abbreviations or variants thereof, such as “sit” ). The use is already implicit from the context of the object.

    Example of configuration texts:<br />
(1) ID<br />
(2) Name<br />
(3) Description
    Example of configuration texts:
    (1) ID
    (2) Name
    (3) Description

    ID

    Use

    IDs are non-translatable unique object IDs in the system (such as situation object or situation scenario) and their elements (such as structures or events).

    Guidelines

    • Use a combination of a prefix and a descriptive name.
    • Ensure that the prefixes are meaningful and used consistently.
    • Avoid abbreviations in descriptive names unless needed because of length limitations.

    IDs for Situation Objects, Situation Scenarios, Situation Templates, and Situation Types

    • Use a prefix that is commonly known to SAP experts and represents the business area or industry it’s used for. For example, you want to clearly distinguish between Sales Order, Purchase Order, and Service Order.
    • If required, you can also combine prefixes to express subareas, such as FIN_APM for Advanced Payment Management in Finance.

    Example

    Prefixes for business areas Prefixes for industries
    CA_ for Cross Applications
    ENG_ for R&D / Engineering
    FIN_ for Finance
    MAN_ for Manufacturing
    PROC_ for Procurement
    SD_ for Sales…
    ISA_ for Automotive
    ISAD_ for Defense
    ISPRS_ for Professional Services
    PSM_ for Public Sector…


    • After the prefix, use a descriptive name.


    • Situation object: SD_SALES_QUOTATION
    • Situation scenario: SD_QUOTATION_VALIDITY
    • Situation template: SD_OBSOLETE_SALES_QUOTATION


    IDs for Elements in Situation Objects

    • The elements you define in situation objects are used in all other Situation Handling configuration apps. Therefore, use the naming pattern of prefix and meaningful name as described above.
    • The IDs used in situation objects are local IDs, which means they’re not unique. We recommend that you use the following prefixes:


    Element Prefix Example
    Value Help Service ID VH_ VH_SALES
    Structure ID CDS_ for CDS views
    MEM_ for in memory structures
    CDS_SALESORDERITEM
    MEM_SYSTEMMESSAGES
    Event ID EV_ EV_CHANGED
    Navigation ID NAV_ NAV_MANAGE_SALESORDER
    Callback ID CB_ CB_DELETE_SALESORDERITEM
    Action ID ACT_ ACT_MANAGE_SALESORDER

    Name

    Use

    In most cases, names describe the object IDs in the system and their elements in a short and human-readable way. Like IDs, they are visible in all Situation Handling configuration apps. Names are not unique.


    Guidelines

    • Use nouns.
    • Use title case.
    • Explain the object referring to the ID. You can use the same structure you used in the ID without the business area or industry prefix: Example ID: WLF_FCADOC, corresponding name: Freight Cost Allocation Document.
    • Remember not to mention the terms “object”, “scenario”, “situation”, “situation handling”, or “notification” (or abbreviations or variants thereof, such as “sit”).
    • Use a meaningful text that will help the user find the right object in the subsequent configuration steps. Don’t just copy the ID.
    • Be as concise as possible to save space. Leave out unnecessary articles or verbs.
    • Don’t end with a period.

    Examples

    • Situation object: Sales Quotation
    • Situation scenario: Sales Quotation Validity

    Name for Template and Trigger

    Template and trigger name are special cases. Sometimes, they show the result of a process, a changing status, or an action that has already been performed or will be performed. This means you can add the participle of a verb. Additionally, the trigger refers to the object on which the action has been performed.


    • Template and event-based trigger name
      • Use a noun to name the corresponding template or trigger object, for example, Contract
      • Use a participle to describe the action that has happened in the past or will happen, for example, Created, Approaching
      • Use the pattern: Object – Participle

    Examples

    • Contract Created
    • Project Budget Threshold Exceeded
    • Cancellation Deadline Approaching



    • Batch-based trigger name
      • Because batches are periodically performed checks, use the pattern: Periodical – Object – Check

    Example

    • Periodical Contract Check

    Description

    Use

    The description provides additional details about objects in the system and their elements, mostly to enhance an ID and name. Descriptions are visible in the various Situation Handling configuration apps.


    Guidelines

    For guidelines about the Button Description and Situation Text Description fields, refer to End User Texts > Buttons or End User Texts > Situation Display.

    • Don’t just copy the name.
    • Start with a verb.
    • If there are similar objects, make sure you provide a description that clearly distinguishes them and emphasize the differences.
    • End with a period.

    Examples

    • Situation object: Describe how this object is used in Situation Handling and which of its features are relevant. Example name: Collector, corresponding description: Contains all system messages that are relevant for Financial Accounting.
    • Situation scenario: Describe the business scope, which is covered by the scenario: Covers all application jobs in Financial Accounting and its associated system messages that can be used to monitor occurring messages.
    • Situation template: Describe the specific use case: Inform the financial accounting specialist if there are issues in payment dunning runs.

    End User Texts

    There are three types of text that you can create and that are displayed to end users:

    • Situation Display: information about the situation displayed in apps, such as notifications, or in public channels, such as email.
    • Buttons: texts in buttons that help end users solve a situation.
    • Labels: texts for columns and sections that help end users to better understand the context of a situation.

    Situation Display

    In the Situation Display section of the Manage Situation Types or Manage Situation Types – Extended app, you can specify the texts with which users are informed about situations. This includes the following texts:

    • Situation texts displayed in the My Situations app (when defined in the Manage Situation Types app) and My Situations – Extended app (when defined in the Manage Situation Types – Extended app)
    • Situation texts displayed directly in the corresponding business app
    • Notification texts shown on SAP Fiori launchpad
    • Notification texts shown in public channels, such as email

    The texts, except public notification channels, can embed variables that contain information from the anchor object, the trigger object, or from the event.

    Title


    Use

    The title summarizes the situation. It helps end users to see, at a glance, what the situation is about. Text fields have different labels in the configuration apps of the standard framework and the extended framework of Situation Handling.

    In the Manage Situation Types app, the same title is used for both in-app messages and notification texts on SAP Fiori launchpad.

    In the Manage Situation Types – Extended app, the same title is used for the situation and the notification, but it can also be changed.

    In the template, you can see a preview as it appears in an app or notification.

    Extended Framework: Title, Notification Title
    Extended Framework: Title, Notification Title
    Standard Framework: Short Description
    Standard Framework: Short Description

    Guidelines

    • Phrase the text with the end user in mind. This may differ from the template name you defined.
    • Use title case.
    • Don’t end with a period, even if your text is a (short) sentence.
      Reason: The short descriptions can also appear in a list (table), so a consistent format is required. Most short description texts will not be a complete sentence.

    Examples

    • Staffing Request Updated Soon
    • Digital License Nearly Used Up
    • Blocked Invoice Overdue Soon
    • Ticket Sales Low
    • Overbooked Flight

    Details Text

    Use

    The details text describes the situation with additional details to help business users respond to the situation.

    The text fields have different labels in the configuration apps of the standard framework and the extended framework for Situation Handling.

    In the template, you can see a preview as it appears in an app or notification.

    Extended Framework: Description, Notification Text, Public Text
    Extended Framework: Description, Notification Text, Public Text
    Standard Framework: Message Details, Secure Notification Details, Public Notification Details
    Standard Framework: Message Details, Secure Notification Details, Public Notification Details

    Guidelines

    • Don’t just repeat the short description or title.
    • Start with describing the condition or facts that have happened.
      • Present: Delivery date of item <item> of purchase requisition <requisition> is about to expire.; The flight <airline> <connection> on <date> has a critical eco index of <index>%.
      • Past: An error occurred while requesting market data.
      • Future: The purchase contract <contract> will expire soon.
    • Continue with a call to action: Check the inconsistencies. Only use “please” if it’s absolutely necessary.
    • Write full sentences in sentence case.
    • End with a period.
    • You can use a maximum of 15 variables. If you include variables, ensure that their meaning is clear in your context.

    Texts for public notification channels do not allow variables because they appear outside the SAP Fiori launchpad (for example, email notifications). They are not allowed to contain sensitive information.


    Examples

    • The project manager has updated the staffing requirements in the resource request. Check the staffed resources in the Resource Management app.
    • You have used 80% of your digital access entitlement. Please renew the license if you want to continue using this service.
    • A staffing request was updated. Check the staffed resources in the Resource Management app.
    • You have nearly used up your digital access entitlement. Please renew the license if you want to continue using this service.

    Buttons

    Use

    You can configure the buttons for the My Situations – Extended app that are displays on the situation page for solution proposals and navigation to related business apps. The configuration takes part in the Manage Situation Objects app. A button consists of a name and a description.

    You can see a preview of the button in the Manage Situation Objects app.

    Definition of buttons in the Manage Situation Objects app
    Definition of buttons in the Manage Situation Objects app

    Callback Actions

    Use

    Callback actions are transactions that close situations. The buttons for callback actions are displayed in the My Situations – Extended app under “Solution Proposals”.

    Buttons under
    Buttons under "Solution Proposals"

    Callback Action: Button Name

    Guidelines

    • Use title case.
    • Start with a verb describing which action is triggered followed by a noun.
    • Don’t end with a period.

    Examples

    • Cancel Bookings
    • Release Collective Settlement Document

    Callback Action: Button Description

    Guidelines

    • Don’t just repeat the button name.
    • Describe in detail which action is performed.
    • Don’t end with a period.

    Examples

    • Set flight status to unscheduled
    • Change bookings to the next flight with the same airline and connection ID
    • Upgrade economy passengers to business class

    Navigation Targets

    Use

    Navigation targets lead to business apps that help end users resolve a situation. The buttons for navigation targets are displayed in the My Situations – Extended app under “Related Apps”.

    Navigation targets under
    Navigation targets under "Related apps"

    Navigation Targets: Button Name

    Guidelines

    • Use the app name in title case.

    Example

    • Manage Purchase Contracts

    Navigation Targets: Button Description

    Guidelines

    • Don’t just repeat the button name.
    • Provide additional information such as the specific page that opens in the target app or which specific item is displayed.
    • Use sentence style.
    • Don’t end with a period.

    Examples

    • Maintain flight booking details
    • Check the key fields of the freight cost allocation document

    Labels

    Use

    In the Manage Situation Scenarios app, you customize the layout for the My Situations – Extended app. This includes the labels for columns and sections. They help end users to better understand the context of a situation. You can find more information about where the labels are displayed in the documentation on SAP Help Portal.

    Guidelines

    • Use title case.
    • Use nouns.
    • Don’t end with a period.

    Columns and sections that refer to anchor object data should be labeled with the same name as the object, for example: Sales Order, Material, Supplier.

    Columns and sections that refer to the trigger object should have a generic label if the scenario configuration includes more than one situation trigger, for example: Additional Information.

    Resources

    Elements and Controls

    Implementation

    Generic Tag

    The generic tag control displays complementary information that relates to the current page, such as key performance indicators (KPI) and situations.

    Usage

    Use the generic tag:

    Do not use the generic tag:

    • For decorative purposes.
    • For navigation.

    Structure

    A – Status Indicator / Criticality Indicator – Mandatory

    The indicator displays the status/criticality of the tag. Only use it with the available semantic colors.

     

    B – Message Icon – Optional

    The message icon can help visualize the status/criticality of the tag. The color of the icon is always the same as the color of the status indicator. Always use the correct message icon for the respective status/criticality.

     

    C – Title – Mandatory

    Always use a meaningful title. Keep it simple and try to use no more than 3 words.

     

    D – Value and Unit of Measure – Optional

    The value represents the numeric (key) attribute and its unit. The value has a semantic color, and the unit inherits the color from the value. The color of the value must be the same as the color of the status indicator. For more information, see Object Number.

    Generic Tag for KPIs

    Structure of generic tag
    Structure of generic tag

    To display KPIs, use the following structure:

    • A – Status indicator / criticality indicator
    • C – Title
    • D – Value and unit of measure
    KPI as a generic tag
    KPI as a generic tag

    The generic tag for KPIs also contains an error state. It is shown when the KPI cannot be properly displayed.

    KPI error
    KPI error

    Responsiveness

    The generic tag itself is not responsive. To enable responsiveness, use the overflow toolbar.

    Generic tag overflow on object page
    Generic tag overflow on object page

    Behavior and Interaction

    The generic tag has a press event. Use this event only to open a popover or analytical card containing relevant information, using the progressive disclosure technique.

    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

    Group Feed Component

    You can use the group feed component to offer a social timeline that is integrated with SAP Jam. The group feed enables SAP Jam users to post comments and reply to posts created by other users. You can use it just for collaboration, or offer collaboration alongside application-generated content.

    Like the timeline, the group feed component shows a series of entries in chronological order, such as changes to an object, events related to an object, or user-driven updates and comments. The latest entry is always on top.

    Information
    Although both the group feed component and the timeline control offer similar features, the group feed component was created explicitly for integration with SAP Jam. The timeline control is more flexible, fully responsive, and not restricted to a specific source, but doesn’t offer any integration with social collaboration platforms out of the box.

    Usage

     Use the group feed component if:

    • You need SAP Jam integration.
    • You want users to be able to create their own posts.
    • You need social interaction, such as replies.
    • You expect a long list of posts triggered by the system, the users, or both.
    • You want users to be able to create their own posts.

     Do not use the group feed component if:

    • You don’t need the social features offered by SAP Jam. In this case, use the timeline control.
    • You need social collaboration, but without using SAP Jam. In this case, use the timeline control.
    • You expect only a few entries. Instead, use a simple feed.
    • You want to provide a way to upload files. Use the upload set control instead. You can still use the group feed component to show automated updates about the user’s uploads.
    • You require fully responsive behavior and are not dependent on SAP Jam integration. In this case, use the timeline control.

    Placement

    The group feed does not have a fixed location on the UI. Where you place it depends on your use case:

    • If users need to check the content of the group feed on a regular basis, you can display the group feed component as part of the page content (however, because the responsiveness of the group feed is limited, we advise against placing it in an object page section).
    • If the posts and updates are closely related to the content and need to be seen in parallel, you can use the dynamic side content floorplan. Alternatively, you can create a separate page with the feed as the central element and show it next to your main content using the flexible column layout.
    • If the group feed component contains only secondary information, or only needs to be accessed occasionally, you can embed it in a tab or trigger it dynamically using the dynamic side content.
    Group feed component
    Group feed component

    Responsiveness

    The group feed lacks responsive and adaptive behavior. However, it works well in small spaces, such as the dynamic side panel or on a smartphone. If you require fully responsive behavior and are not dependent on SAP Jam integration, please use the fully responsive timeline instead.

    Layout

    The group feed component consists of:

    • A header (optional, but highly recommended)
    • A chronological axis
    • Posts/entries

    The following optional features can be added:

    • Filter
    • Group
    • Add entries

    Header

    The title describes the content displayed along the group feed axis. 

    Axis

    Along the axis, the entries are arranged chronologically. The distance does not correspond to the time between each occurrence.

    The group feed component always uses a single-sided vertical axis. It can be scrolled along its axis.

    By default, the latest entries appear on top. Replies are sorted the other way round.

    Vertical feed, single-sided (right)
    Vertical feed, single-sided (right)
    Vertical feed, single-sided (left)
    Vertical feed, single-sided (left)

    Post (Entry/Feed Update)

    Posts can be entered manually or generated by the system (for example, “Object ABC was changed by Mr. X.”). The entry should include information about who changed what, and when (depending on the use case). Typically, posts in the group feed consist of four sections:

    1. A node
      Using icons on a node is optional. Use icons for either all or none of the posts.
    1. A header section, which can contain:
    1. An (expandable) content section, which can contain:
    • Text(s) and/or link(s)
    • Structured or unstructured information
    • Images
    1. An optional action section containing some or all of the actions offered by SAP Jam (such as Reply, Like, Bookmark, or Share). You can also offer application-specific actions (see custom actions).

    Note: If a section is not used, it should not take up any space within the bubble.

    Group feed – Layout
    Group feed – Layout

    Here are just a few examples of different visualizations. Because the group feed is very flexible, there are also numerous other possibilities.

    Group feed – Layout examples
    Group feed – Layout examples

    Posts can originate from three sources:

    • Manual post: A person actively posts to the group feed (or to another place that supplies updates to the group feed).

    Example:
    Julie Armstrong: Can someone please have a look at these numbers?

    • Post triggered by user action: The post is triggered by something a person does (such as creating an object, adding a note, or uploading an attachment).

    Examples:

    Julie Armstrong created sales order 4815162342.
    (Followed by an optional preview of the header data)

    John Miller uploaded the document Sales-Revenue_Q4.xls
    (Followed by an optional preview of the document, if available)

    Donna Moore added a note:
    (Followed by an optional preview of the note)

    Julie Armstrong added the picture our_team.jpg
    (Followed by an optional preview of the image)

    • Post triggered by a technical source: Posts can also originate from a purely technical source (for example, if a threshold has been exceeded, or a deadline has been reached).

    Examples:

    Boiler BB-258/80 has exceeded its maximum temperature.

    Server DS209 is running out of space.

    Order #052690 is overdue.

    Information
    Notes vs. Posts: 

    Notes are not the same as group feed posts. They must be kept separate and visualized differently. Like attachments, users create notes in the context of a business object, typically within a Notes tab.

    In the context of a business object, notes have the same character as attachments.

    The difference is even more apparent if you compare posts to complex notes created with a rich text editor. These notes are fundamentally different from posts on the group feed.

    To show notes on the group feed, trigger a feed post with a teaser text. For example, “Julie Armstrong added a new note: Lorem ipsum…”.

    Behavior and Interaction

    Search

    Because a group feed can contain a vast number of entries, always offer a search. A search helps users to find what they are looking for without having to scroll through all the posts and updates.

    Initially, the search field is closed and only visualized with a search icon. Clicking the icon opens the search field with the focus in the field so the user can start typing.

    Expand and Collapse

    Some updates might be too lengthy to show in full. For these cases, applications can decide to show only a preview and let users expand the post if they want to read it. You can set a limit for the number of lines to be shown (recommended), or for the number of characters.

    This example shows a post that previews 3 lines before truncating and showing a More button in the next line. Clicking this button expands the post to its full length and changes the button text to Less. Clicking this button again collapses the post to its previous height.

    Group feed interaction – Expand/collapse
    Group feed interaction – Expand/collapse

    Filter (Optional)

    For group feeds with several entries or entry types, it makes sense to enable filtering. You can let users filter by entry type and by other useful attributes (such as bookmarked). Users can even filter by time range to find posts between two specific dates, months, quarters, or years.

    The filter is triggered with the filter icon  icon in the toolbar.

    Depending on the complexity of the group feed, you can offer different kinds of filter dialog:

    • Single selection
    Group feed interaction – Filter with single selection
    Group feed interaction – Filter with single selection
    • Multi-selection
    Group feed interaction – Filter with multi-selection
    Group feed interaction – Filter with multi-selection
    • Multi-faceted filter
      To implement this combination of feed source and filter, use the view settings dialog.
    Group feed interaction – Filter with view settings dialog
    Group feed interaction – Filter with view settings dialog

    If a filter is set, inform the user in the infobar.

    Group feed interaction – Set filter
    Group feed interaction – Set filter

    Refresh

    Instead of showing new posts as soon as they arrive (which would interrupt users while they are reading), the group feed offers a very subtle way of notifying users about new posts.

    You can place a message strip directly below the toolbar to show how many new posts are waiting to be retrieved from the back end.

    Group feed – Refresh
    Group feed – Refresh

    If a filter is active, the message strip shows alongside the filter infobar.

    Group feed – Refresh and filter
    Group feed – Refresh and filter

    Social Actions

    Adding a Post

    In the group feed, users can add new posts by clicking the plus ( ) icon on top of the control. This opens a popover with the focus set inside the text area so the user can start typing right away.

    Post sends the user’s text, which then appears in the group feed. To prevent empty posts, the button stays inactive until the user has typed something.

    Users can also add @mentions (references) to other users or business objects.

    Interaction – Post
    Interaction – Post

    Replying to a Post

    Alongside the Post function, Reply is probably the most basic and essential social feature. Unlike feed controls (
    sap.m.FeedInput and sap.m.FeedListItem), the group feed control enables communication at item level. Feed controls always add entries to the top of the list; there are no inline replies within the feed. By contrast, the group feed lets users reply directly to a specific entry. The number of replies is shown next to the Reply action, for example, Reply (5).

    Clicking the reply link triggers a popover that shows all previous replies, as well as a text area for posting a reply.

    Interaction – Reply
    Interaction – Reply

    @Mention

    This feature is well known from multiple social networks, and allows users to add a reference to another person or a business object. A “mentioned” person usually receives a notification about the respective post.

    The @mention feature is available in all areas that allow the user to post something:

    Due to technical restrictions, this feature cannot be used on smartphones.

    Interaction – @Mention
    Interaction – @Mention

    Custom Actions

    Applications can provide custom actions by using an overflow menu (action sheet).

    Interaction – Custom actions
    Interaction – Custom actions

    Styles

    Icons vs. Bullets

    When you design your application, you can chose between two visualizations for listing posts on the group feed: icons or bullet points.

    You can use icons if all entry types that will appear in the group feed can be represented by an icon.

    If you cannot find icons for all post types, use bullet points instead.

    Group feed with icons
    Group feed with icons
    Group feed without icons
    Group feed without icons

    Colors

    You can use colors to highlight entries in the group feed and to convey semantic information (for example, to indicate the status or urgency of an entry).
    Group feed with icons and semantic colors
    Group feed with icons and semantic colors

    Guidelines

    • Only use the speech bubble icon for posts entered manually by users:  
      CSS name: icon-post
      HTML Unicode: & # xe 0 a b ; (remove the spaces)
    • Do not use colors for decoration. Only use colors to convey semantic information (for example, warnings or errors).

    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

    Situation Handling

    Situation Handling helps businesses run smoothly by automatically informing the right users about the issues that require their attention, for example, consumed contracts, pending confirmations and approvals, deviating deliveries, and upcoming deadlines.

    Users can see situations displayed in business apps and in an app dedicated to situations. They can also be informed by notifications on SAP Fiori launchpad or by email.

    Situation Handling notifies the right users of issues that require their attention
    Situation Handling notifies the right users of issues that require their attention

    Situation Handling is available for SAP S/4HANA and SAP S/4HANA Cloud. In addition to informing users about issues, Situation Handling also monitors how the situations are addressed. The collected context data can be exported to Intelligent Situation Automation on SAP BTP, which has advanced analytics capabilities and enables the automatic resolution of situations.

    Situation Handling consists of the following:

    • The standard framework that provides situation cases that you can use out of the box.
    • The extended framework that enables you to both create your own situation cases and benefit from predefined situation cases.

    When to Use

    Do

    Use Situation Handling if:

    • You want to bring exceptional circumstances to the attention of the right user.
    • The business issue is not part of an application.
    • The business issue is not part of a standard business process.
    • You want to support users with contextual information and solution proposals.
    Don't

    Don’t use Situation Handling if:

    • You just want to send notifications.
    • Your issue is compliance relevant.
    • Something is, or should be, a standard feature of your application.
    • The issue is based on a standard business process and is unexceptional.

    Components for Progressive Disclosure

    Situation Handling comes with multiple components for the UX pattern of progressive disclosure. It improves usability by delivering users information and capabilities, gradually: Initially, users see the appropriate situation component displayed according to where they are on the interface. They can seek additional levels of detail about the situation according to their needs and goals.

    Situation Indicator

    The minimum display is the situation indicator (XS).

    Situation indicator
    Situation indicator

    Description of a Situation

    The short description of a situation (S) is used, for instance, for list items or for the situation message strip embedded in business apps.

    It must include:

    • Situation title
    • Date of occurrence
    • Situation description

    Examples

    • Situation message strip
    • Situation notification

    Situation Preview

    The situtation preview (M) is used, for example, when selecting a situation indicator.

    It includes:

    • Description of a situation
    • Navigation to detail view

    Examples

    • Situation card
    • Situation preview

    Situation Detail View

    The situation detail view (L) is displayed on the situation page in the Situations app or on an object page of a business app.

    This view contains a brief description and contextual information that helps the user make an educated decision. It also includes either actions to resolve the situation or navigation options to related applications, or both actions and navigation options.

    Examples

    • Situation page
    • Object page section

    Texts for the User

    Describe the situation to the users in a way that supports them in understanding and resolving the issue. For guidance, see: Situation Handling Framework – UI Text Guidelines.

    Situation Proposals

    Where possible, offer concrete actions that can close a situation, such as Assign Contract and Reschedule Purchase. If the solution is more complex, offer navigation options to related business apps.

    Situation detail view
    Situation detail view
    Information
    For more information about the components and their use, see:

    For best practices for informing users, see: Situation Handling Framework – UI Text Guidelines.

    Behavior and Interaction

    Situations are displayed in various locations in the SAP Fiori environment. The navigation adheres to the principle of progressive disclosure in a well-defined way.

    Navigation paths
    Navigation paths

    The navigation paths take various use scenarios into consideration. Here are some examples:

    A. Navigation from a situation card or a notification

    Users select a situation card on the My Home page or a notification on SAP Fiori launchpad (1) and navigate to the situation detail view. Depending on the configuration, this is the situation page in the My Situations – Extended app (4) or an object page in a business app (5).

    B. Navigation from the Situations app

    Users open the Situations app (2) and it displays the list of situations (2.1) in their area of responsibility. They select a situation to navigate to the situation detail view, (4) or (5) depending on the configuration.

    C. Navigation from the situation indicator displayed with a list item in a business app

    In a business app (3), users choose the interactive situation indicator next to a list item and a popover displays the situation preview (3.1). They select Show Details to navigate to the situation detail view, (4) or (5) depending on the configuration.

    D. Navigation from the situation indicator in the header of a business app

    In a business app, on an object page, users select the interactive situation indicator (3.2) after the object page title and a popover displays the situation preview (3.3). They select Show Details to navigate to the situation detail view, (4) or (5) depending on the configuration.

    Top Tips

    • Situation granularity: Situation Handling is designed to support users in exceptional circumstances. Limit the number of situations per user so that users can focus on their daily business.
    • Texts for the user: Describe the situation to the users in a way that supports them in understanding and resolving the issue. Get guidance with the Fiori UI Text Guidelines. (for more information, see)
    • Use of notifications: Use notifications with care and avoid overwhelming users. Restrict notifications to urgent and important issues. Also consider aggregating notifications where possible.
    • Solution proposals: Where possible, offer concrete actions that can close a situation (such as Assign Contract and Reschedule Purchase). If the solution is more complex, offer navigation options to related business apps.

    Related Links

    UI Text Guidelines for SAP Fiori Apps

    This page contains product-specific UI text guidelines for SAP Fiori. It is split into two parts:

    About this guideline

    The SAP Fiori UI text guidelines are not exhaustive. They build on the other writing guidelines at SAP, and cover only specific conventions for SAP Fiori applications. The guidelines have evolved on an as-needed basis to clarify questions that have arisen during SAP Fiori app development, or to reiterate points that recur in SAP Fiori app design reviews.

    The guidelines are based on US English, the primary source language at SAP. There are no specific SAP Fiori text guidelines for other languages.

    Finding your way

    See the content overview at the beginning of each section to navigate. You can also return to the start of each section at any time using the anchors in the header area.

    General Guidelines

    Content Overview

    Abbreviations

    Using abbreviations

    Limit the use of abbreviations as much as possible to avoid unnecessary abbreviations appearing on the desktop, where space is often sufficient.

    Test your screens on all three device types (smartphone, tablet, and desktop) to ensure that you see the labels live in each case. Optimize as required and as far as space allows.

    Abbreviating “Quantity”

    Do not use the abbreviated form Qty. Abbreviations in other languages do not work. If there is enough space on the screen, spell out the full word.

    Application names

    General rules

    Ensure that the title of the app (initial screen) matches the title on the tile.

    Do not use the tile subtitle for explanations. Use the subtitle only for differentiating information.
    Background: Explanations are often redundant, and will typically be truncated in some target languages.

    Don't
    Don't use the tile subtitles for hints or explanations
    Don't use the tile subtitles for hints or explanations
    Do
    You can use tile subtitles to differentiate between similar apps
    You can use tile subtitles to differentiate between similar apps

    Transactional or hybrid apps

    If the user can make changes to the data on the database, start the app name with a verb.

    Exceptions:
    For employee self-service apps, start the name with My.
    If the key focus of the app is to process items assigned to the user, start the name with My.

    Choose a verb that best fits the main purpose of the app:

    • For approval apps, start the name with Approve.
    • If the app is used primarily for CRUD actions (create, update, delete), start the name with Manage.
    • If the main focus of the app is on processing documents, start the name with Process.

    Use the plural for the business object, as the user can generally process more than one object within the app.

    Examples:
      Create Billing Documents
      My Timesheet
      My Open Worklists
      Approve Supplier Invoices
      Manage Purchase Orders
      Process Sales Orders

    Analytical apps

    Use a noun-based name and avoid the word “analysis” (to avoid unnecessary repetition across all analytical apps).
    Exception: If your app offers analytical data that is specific to the current user, you may start the name with My.

    Use the plural for the business object where it makes sense.

    Examples:
      Journal Entries
      Liquidity Forecast
      Cash Flow
      Cash Flow Analysis

    If your app also allows users to take action after analyzing the data (hybrid app), use the naming guidelines for transactional/hybrid apps.

    Overview page

    Use a noun-based name.

    Do not use the term “Overview Page”. This is just the name of the floorplan. However, it’s fine to use “Overview” on its own.

    Examples:
      Quality Engineer Overview
      My Sales Overview
      Quality Technician Overview Page

    Formatting

    Currencies

    Use the three-letter currency code instead of the currency symbol. This prevents ambiguity when multiple currencies share the same symbol.

    Example:
      EUR
      USD
     
      $

    Case

    Unless otherwise specified for individual UI elements, use title case for all SAP Fiori user interface short texts (labels, headings, value help texts, and so on), and sentence case for all messages and explanations.

    Exceptions:

    Use sentence case for:

    • Relative times
    • Values and statuses that start with a number

    Examples:
      4 days ago
      4 items left

    Consider using sentence case if a text is very long, making it difficult to read in title case.

    For example, you might have a long status text, or long subtitles in the cards on an overview page.

    Examples:
      Material damaged in transit   (status)
      Sorted by turnover and region  
    (card subtitle)

    Status texts in a table column
    Status texts in a table column

     If you opt to use sentence case for a certain text type, use it consistently in your context (for example, all subtitles for the cards on an overview page, or all the labels for a set of radio buttons or checkboxes).

    Hyphenation

    Email

    Do not use a hyphen for email.

    OData service

    Hyphenate OData service in German.

    Example:
      DE: OData-Service

    Text wrap

    Do not add manual hyphens to wrap texts (for example, on tiles or in column headings).

    Information
    The point at which a text wraps is determined automatically.

    Punctuation

    Colon

    Warning
    Colons must always be exposed as translatable strings. Other languages may use a different symbol (for example, Chinese), or require different spacing (such as French, which requires a space before the colon).

    Where possible, include the colon at the end of the corresponding natural language string.

    Colons after field labels

    Place a colon after the field label if the field label and value are visually separate and do not form a running phrase or sentence.

    Examples:
      Description:   Laser Jet Printer
      Valid From:    09/13/2013
      Forwarded by Joe Bloggs

    For form fields, the colon is added automatically by the UI control. For other field labels, the colon must be added manually by the app development team.

    Do not add a colon after titles (for example, in an object page header).

    Colon as a separator

    Use a colon to separate concatenated texts that would otherwise be hard to translate.
    Note: If possible, avoid concatenated texts in the first place.

    Example:
      Search In: Sales Orders

    Here, this format ensures that the verb comes at the beginning in all languages, and is never truncated.

    Ellipsis (…)

    Use the ellipsis (…) if a menu item leads to a set of further menu options.

    Do not use the ellipsis:

    • In placeholders (input prompts) in entry fields.
      These are texts that show for empty field values, but disappear as soon as the user starts typing or selects a value.
    • In menu buttons.
      Here, the dropdown arrow already indicates that there are multiple selection options.
    • In labels for actions that open a follow-on dialog or screen.
      Exception: Consider using an ellipsis if it’s standard practice to do so (for example, Browse… to select files).
    • To indicate a busy state. SAP Fiori normally uses a graphical busy state rather than a text. If a text is used, check with your UX designer.
      Exception: If a text is required, add an ellipsis at the end to indicate that the user has to wait (for example, Loading…).
    Don't
    Don't use the ellipsis in placeholder texts
    Don't use the ellipsis in placeholder texts
    Don't
    Don't use the ellipsis for menu buttons
    Don't use the ellipsis for menu buttons

    Period

    Many SAP Fiori apps use texts from back-end systems that were written without an ending period, based on the ABAP guidelines. To avoid changing (and retranslating) a large number of legacy texts, we have adopted the following approach for SAP Fiori:

    Use periods at the end of complete sentences:

    • If your sentence is written out in full with all its grammatical components, use a period.
      Rule of thumb: Add a period if your text is obviously incorrect without one.

      Examples
      :
        You don’t have authorization to view this page.
        To start, enter your filter settings.
    • If your sentence is incomplete, written in short form (implicit sentence), or very short, leave out the period.
      Rule of thumb: The text does not look “wrong” without a period.

      Examples
      :
        Leave request created
        No matching items found

    Exceptions

    • Placeholders: Do not use a period for placeholders (input prompt texts).
      Reason: This avoids a mixture of prompt texts with and without periods on one page.

    Examples:

      Enter an alphanumeric key
      Enter a 3-digit code.

    • Illustrated messages: Never use an ending period in the headline for an illustrated message, even if it’s a complete sentence.
      For more information, see Illustrated Message – Headline.
    Do
    Illustrated message headline without a period
    Illustrated message headline without a period
    Don't
    Don't use an ending period in the illustrated message headline
    Don't use an ending period in the illustrated message headline

    Punctuation in buttons and labels

    Avoid using hyphens, colons, or parentheses in button texts. Use a preposition instead.

    Examples:

      Material Number for Receipt
      Material Number – Receipt

    Quotation marks

    If you need to set off a text in quotes, use double quotation marks.

    Developer Hint
    In the system, always use straight quotes (""). Typographical (smart) quotes can lead to errors.

    Messages / Descriptions

    Use quotation marks if:

    • Your message or description refers to a text on the screen.

    Example:
      To start, set the relevant filters and choose “Go”.

    • The string contains a dynamic text variable for a customer text, such as a product name.
      Without quotes, text variables can result in incorrect grammar and make the text difficult to read.

    Examples:
      Material “Soft copper pipe 10 mm” is out of stock.
      Staffing requirements have changed for project “Quartz”.

    • The string cites a value selected or entered by the user. This can be a text string, date, or number.
      Quotes help to highlight the user’s entry.

    Examples:
      “December 25, 2020” is not a working day.
      “2026” is not in the current planning cycle.

    • Your string contains any other variable that may cause grammatical or legibility issues without quotes.

    Do not use quotation marks if:

    • The string contains a variable for a system-generated object ID.
      IDs are typically numeric or alphanumeric and do not affect the grammar of the text.

    Example:
      Purchase order 12345678 was deleted.

    • The string contains a variable for an absolute date that is provided by the system.

    Example:
      Your license is due to expire on May 2, 2021.

    • Your string contains a variable that can be inserted without compromising the grammar or legibility of the text in any language.

    Other considerations:

    • If your string contains multiple variables that all need to be set off with quotes, texts can become difficult to read. Consider alternative formats, such as listing the variables in parentheses or below the main text.
    • Do not use text variables at all for system parameters, such as object types or categories. Use a generic term or write separate messages for each case.

    Titles

    Avoid using quotation marks for concatenated title texts with text variables. Use a colon instead. If in doubt, check with your translation team.
    Note: If possible, avoid concatenated texts in the first place.

    Example:
      Select: Products
      Select “Products”

    Slash

    If you are using a slash to separate distinct concepts, include a space before and after the slash. In this case, all the text before the slash belongs to one concept, and all the text after the slash belongs to another.

    Example:

      Insurance Type / Tax Rate
      Amount in Local Currency / Due Date
      Amount in Local Currency/Due Date

    This is typically the case in SAP Fiori if:

    • You have two adjacent field labels in a form.
    Adjacent field labels in a form ('Postal Code' and 'City')
    Adjacent field labels in a form ('Postal Code' and 'City')
    • You have two labels in a table column header.
    Two values in one column ('Division' and 'Plant')
    Two values in one column ('Division' and 'Plant')
    • You are using the slash to separate items shown on one line.
      Note: This is an exception. Normally, SAP Fiori uses commas to separate listed items.
    Items in a breadcrumb
    Items in a breadcrumb

    If all the texts separated by a slash (or slashes) qualify a term that precedes or follows, do not include a space before and after the slash

    Example:

      Plan/Actual Costs      (both Plan and Actual relate to costs)
      Configure Rules and Approved List of Suppliers/Manufacturers      (list contains both suppliers and manufacturers)
      Configure Rules and Approved List of Suppliers / Manufacturers     (Manufacturers is not a standalone concept here)

    Note: Even if you can use a slash to avoid redundancy (as in First/Last Name), we still recommend writing out both labels in full in forms and column headers (First Name / Last Name) – space permitting.

    Exception: Tile Subtitles

    In tile subtitles, space is very limited. You may need to leave out spaces before and after a slash even if the concepts are distinct.

    However, you should be sure that the text can’t be misunderstood, especially if you are using compound terms.

    Also bear in mind that if space is already tight in English, there may still not be space for the translated text.

    Symbols

    Do not use ampersands (&) in SAP Fiori apps or app names.
    You can use other common symbols, such as %, but avoid more technical or mathematical symbols, such as ∑, <, >, =.
    Exception: The use of an ampersand or other symbol is a widely-accepted standard in your business domain. For example, the short form S&OP is commonly used for sales and operations planning.

    Avoid using symbols that can have multiple meanings (for example # can be a number, a metadata tag, or a phone extension number).

    Bear in mind that symbols can be difficult to translate.

    Examples:

      % Confirmed
      Due in less than 5 days
      SWIFT Code: DEUTDE8L875

      Due in < 5 days
      SWIFT # DEUTDE8L875

    Singular and Plural

    Messages, descriptions

    If messages or descriptions contain a number variable, differentiate between singular and plural cases, depending on the value.

    Don’t use parentheses “(s)” to express the plural. This won’t work in all languages.

    Examples:

      Your subscription is due to expire in 1 day.
      Your subscription is due to expire in 3 days.
      Your subscription is due to expire in 1 day(s).

    Labels for number values (count)

    If a label describes a number value (count), write the label as follows:

    Where appropriate, indicate the type of value in the label text.

    Examples:

      Number of Purchase Orders
      Order Quantity

    If space is limited, and the label contains only the name of the object or item, use the plural to cover all possible values (0, 1, or more).

    Examples:

    Do
    Table title with count / column heading for count
    Table title with count / column heading for count
    Do
    Tab labels with count
    Tab labels with count

    Word Choice

    Actions for requests

    Action Description
    Approve Grant permission (for example, for budget or vacation).
    Reject Refuse permission.
    Accept Accept invitations.
    Decline Decline invitations.
    Forward Forward a request to a manager or decision-maker.

    Completing an action

    (Finalizing action on the footer toolbar)

    Action Description
    Create Save a new object to the database. It doesn’t matter how the object was created (from scratch, or by adapting a copy of an existing object). Create is used in both cases.
    OK Confirm settings that may or may not have been changed (for example, filter settings for a table).
    Save Standard action for saving changes to existing objects when no workflow is being triggered.
    Save and Next <Qualifier> Continue to the next screen or object (for example, in a workflow with sequence of activities).

    Include a qualifier. While “Next” works as a standalone label in English, this is not the case for many other languages.

    Examples:
      Save and Next Page
      Save and Next Item
      Save and Next Customer
      Forward

    Submit Submit to a workflow (for example, for manager approval).
    Send Send a request to another person, especially in employee apps (for example, a vacation request).
    Next <Qualifier> Continue to the next screen or object (for example, in a workflow with sequence of activities).

    Include a qualifier. While “Next” works as a standalone label in English, this is not the case for many other languages.

    Examples:
      Next Page
      Next Item
      Next Customer
      Forward

    Finish Trigger the completion of a workflow or process.

    Examples:
      Finish
      Done

    Terminating an action

    Action Description
    Cancel Standard term for terminating an action without saving any changes.

    Cancel as a business action

    Action Description
    Cancel <Object> If Cancel is a standard business term, include the object type.

    Examples:
      Cancel Job
      Cancel Purchase Order
     Abort

    Don’t Cancel In confirmation dialogs, for terminating “Cancel <Object>”.
    Do
    'Don't Cancel' action in 'Cancel Job' confirmation dialog
    'Don't Cancel' action in 'Cancel Job' confirmation dialog

    Navigation actions

    Action Description
    Back Go back to the previous screen.
    Next <Qualifier> Continue to the next screen or object (for example, in a workflow with a sequence of activities, or when navigating to the next image in a carousel).

    Include a qualifier. While “Next” works as a standalone label in English, this is not the case for many other languages.

    Examples:
      Next Page
      Next Item
      Next Customer
      Forward

    Previous <Qualifier> Navigate back to the last object or image (for example, the previous image in a carousel).

    Include a qualifier. While “Previous” works as a standalone label in English, this is not the case for many other languages.

    Examples:
      Previous Image
      Previous Product
      Previous Item

    Contact details

    Label Description
    Phone Landline phone
    Mobile Cell phone
    Email Email address

    Creating an object or item

    (also see the naming guidelines on the Object Handling page)

    Action Description
    Add Add an existing item to a list.

    Example:
      Add Contact  (for example, add a contact from the global address book to a list of my contacts)

    Create Create a new object (either from scratch, or by adapting a copy of an existing object).

    Example:
      Create Purchase Order
      Create New Purchase Order

    Create and New Create an object from scratch and return to the create screen to add another new object.
    New <Object> Title of an object until the name has been defined (for example, on an object page or “create” dialog).

    Example:
      New Purchase Order

    Copy
    Create a new object or item based on an existing one. In this case, the user adapts the core data copied from an existing object.

    Do not use Duplicate.

    Copy of <Object> Title of new object until the name has been defined.

    Example:
      Copy of Purchase Order 12345678

    Country

    Do not use the label Country for politically controversial territories or special regions. This affects all values or selection lists that may contain such territories. An alternative label might be Country/Region, depending on your context.

    Exporting content

    Use the following standard labels for download icons in a toolbar:

    • Export to PDF
    • Export to Spreadsheet

    Do not refer to specific products.

    Example:
      Export to Excel

    Global actions

    Use the following standard labels for the global actions toolbar:

    Action Description
    Copy Copy the current object to create a new object.
    Edit Make changes to an existing object.
    Delete Delete the current object.
    Share Tooltip text for the  share icon.

    Local actions – Table toolbar

    Use the following  labels for standard actions in the table toolbar:

    Action Description
    Add  Add an existing object or item to a list.
    Copy Copy the selected object to create a new object.
    Create Create a new object or item.
    Edit Make changes to the selected object.
    Delete Delete the selected object.
    Sort Tooltip text for the   icon.
    Filter Tooltip text for the   icon.
    Group Tooltip text for the   icon.

    Navigation

    Action Description
    Back Go back to the previous screen.
    Open [app] Open an SAP Fiori app.
    Note: In the SAP Fiori environment, use the term “open” rather than “launch”.
    Open in <App Name> Open the current item in another app.
    Open In… Show a list of apps in which the current item can be opened.

    “No data” texts

    When no data is available for the selection or filter criteria entered by the user, SAPUI5 displays a “No data” text by default. Replace the “No data” text with a more specific text:

    • Where appropriate, refer to the business object handled by your app.
    • If the user needs to change a setting to see data, offer a hint.

    There are no rigid standard texts, since the the exact formulation you use will depend on where the “No data” text appears, and the logic of your application.

    Examples:
      No matching products found (for example, in the list of a list-detail app)
      No products found. Try adjusting your search and filter settings. (for example, when no items are found for the selected filter criteria in a list report table)

    Object administration

    For object admin data, use the following standard labels:

    • Created By
    • Created On
    • Changed By
    • Changed On

    Exceptions:

    • If your app family has consistently used different labels (such as Last Changed By or Last Changed On), consider using the existing labels for new apps to avoid inconsistencies.
    • If you are showing a relative date (such as Today or Yesterday), or a mixture of relative and absolute dates, use the labels Created and Changed instead of Created On and Changed On.

    Translation

    To ensure translatability, the label and value placeholder must be in one text string.

    Example:
      “Created By: <variable for name>”

    What about combined date/time fields?  

    • In many apps, the date is the main reference point, even if both the date and time are shown. In this case, use the field labels Created On and Changed On.
    • If the time is an important reference point for users, include both elements in the label:
      Created On / Created At (or shorten to Created On/At)
      Changed On / Changed At (or shorten to Changed On/At)
    • Do not use Created At and Changed At as labels for joint fields where the date comes first.
    • If users need to scan the exact times, consider using a separate field for the time to make scanning easier:
      Created At
      Changed At
      Do not use separate fields for the date and time in SAP S/4HANA apps. Always use the combined date/time time stamp for the relevant time zone (for example, Operation Start: 06.02.2022, 19:47:25 America/Chicago).

    “Please”

    Use “please” judiciously:

    • Do not use “please” unless you would also use it naturally in a spoken conversation.
    • Consider using “please” if you are inconveniencing the user.
    • Base your decision on your target group and language.

    Removing and deleting items

    Action Description
    Delete Delete the object or item itself. Use “Delete” if the object or item has already been actively saved.

    Example:
    Delete an order from the database.

    Discard Discard a draft for a new object, or a draft version containing changes to an existing object. Use “Discard” if the object or item has not yet been actively saved by the user.

    Example:
    Discard the changes you started making to the measurements for product A.

    Remove Remove the reference to an item.

    Example:
    Remove selected contacts from a distribution list.

    Setting favorites

    The tooltip label for the Favorite icon ( ) depends on how the app handles favorites:

    Action Description
    Mark as Favorite Flag an item as a favorite without adding it to a list of favorites.
    Add to Favorites Flag an item as a favorite and add it to a list of favorites that the user can call up independently.

    For more information, see Flag and Favorite and Object Marker.

    Showing more information

    Action Description
    Show Details Show more information within the same page or dialog (for example, a message long text within a message dialog).
    View Details (Charts) Display additional information about a chart.
    Show More Expand a list or screen area.
    Show Less Collapse a list or screen area.
    Show All Show all the items in a list.

    Signing in and out

    With SAP Fiori 2.0 (SAPUI5 version 1.40), Log On and Log Out were replaced by Sign In and Sign Out on the SAP Fiori launchpad.

    Validity period

    For a validity period, use the labels Valid From and Valid To.

    If you have only one label for both values, use the label Valid From/To.

    Writing for AI

    The AI Design Team are developing standard UI texts for use with AI features.

    For more information, see AI UI Text.

    Guidelines for Specific Floorplans or UI Elements

    Action

    Button

    Formulate button texts as actions, starting with a verb, and keep them as short as possible.

    Examples:
      Approve Order
      Simulate Payment Run     
        
      Payment Run     

    Display Elements

    Tooltip

    Information
    Tooltips only appear on desktop devices, and not on mobile/touchscreen devices.

    Use tooltips only to show the labels for elements that have no text, such as icons.

    Use title case.

    Icon Buttons

    If the icon represents an action, formulate the tooltip as an action, starting with a verb.
    Exception: Standard labels used across the IT industry, such as Settings.

    Describe the action that will be triggered by pressing the button. For example,  Expand Header,  Collapse Header.

    If the icon button is a toggle button that merely changes its state (same icon button, “on” or “off” state), always use the positive action for the label. For example,   Pin Header for both pinned and unpinned states.

    Do not use tooltips if:

    • A text label already exists. Do not create (redundant) tooltips for field labels that are written out in full and visible on the desktop.
    • You want to abbreviate a text label. Instead, write the label out in full and ask development/UX to allow enough space for texts in all languages to avoid truncation. Always aim for a responsive solution that will allow users to view the full text on all devices.
    • You want to provide an explanation. For embedded help, use the SAP Companion instead.

    Examples:
        Share
        Export to Spreadsheet
        Maximize
        Minimize   

      Displays the orders you have already processed   (Additional tooltip for “Completed” label) 

    For more information, see Using Tooltips.

    Messages

    SAP Fiori uses a variety of messaging elements for different purposes. This section covers general guidelines for SAP Fiori messages, as well as text guidelines for specific message types.

    General message guidelines

    Topic Guideline
     “Please” Avoid overusing “please” in message texts. For example, it’s often not necessary when asking users to correct their entries.

    Examples:
      The system is currently unavailable. Please try again later.
      Include at least one symbol in your password.

    Singular/plural Use separate strings for singular and plural cases. Do not use “(s)”.
    Semicolons Do not use semicolons to separate phrases in a message text. Instead, use two separate sentences ending with periods.

    Although semicolons are not incorrect, you are unlikely to see semicolons in modern mobile app interfaces.

    Variables Use a single string for messages, including variables. This is necessary to enable translators to change the word order for other languages.

    If you need to set off text variables in messages, use double quotation marks. Do not use text variables. This can lead to grammatical errors in other languages.

    Examples:
      “<processed items> of <total items> items were processed.”
      “This item was closed on <date> by <name>.”
      “The item was deleted by” + “<name>” (two concatenated strings)
      “The <business object> <business object number> was deleted.”     (the article for an unknown business object name cannot be translated correctly)

    Before using variables, consider using distinct error messages for each use case. This often allows you to write a friendlier text that is easier to read and translate than a text designed for reuse.

    Form field validation

    Instruct the user what to do to correct the error. Avoid generic error messages.

    Examples:
      Select a supplier
      Invalid entry
      Enter a valid value

    If a value for a required field is missing, use the standard formulation:

    <Field Label> is a required field (*).

    Example:
      Email is a required field (*).

    For more information, see Form Field Validation.

    Message box

    (message/confirmation prompt)

    Topic Guideline
    Heading For message dialogs, use only the standard headings: Error, Warning, Information, Success

    For confirmation dialogs, use the imperative of the action being confirmed.
    If the context is clear, only use the verb.

    Example

      Delete
      Approve

    If the verb alone would be ambiguous, add a qualifier.

    Example

      Delete History

    Special Case: Confirming Deletion
    Delete confirmations use a warning message box with Delete as the heading and button. See Delete Message.

    Message text Avoid showing system or configuration details in a message short text. Move technical information to the long text.

    Do not repeat the short text in the long text. Otherwise, the text shows twice when the long text is expanded.

    Confirmation prompts: If your target user is likely to see the message frequently, use a short form that’s easy to scan.

    Examples:
      Approve order 12345?
      Do you really want to approve order 12345?

    Confirmation prompts: If the confirmation dialog allows the user to enter a note, use sentence style for the input prompt.

    Success messages: Do not use “successfully.”

    Buttons Use action verbs for buttons in all dialogs that involve a decision with a specific action.

    Exception: If naming the action takes up too much space, formulate the message as a statement, and use the OK/Cancel buttons. Also consider translation. If the mobile use case is critical for your application, always test on a mobile device.

    Error messages: Use Close instead of OK as the button text for closing an error message.Use OK if the user is just acknowledging a piece of information or a group of settings.

    Do not combine questions with OK/Cancel buttons. Avoid Yes/No buttons.
    Reason: Like OK/Cancel buttons,Yes/No buttons force the user to read the whole message text.

    For more information, see Message Box.

    Object Page

    Headings

    Use title case for the headings in anchors or tabs.

    Avoid repeating the section/anchor heading in a subsection heading.

    Exception: If you need explicit subsection headers, and the only meaningful term for a subsection is the same as the overall section name, use the same term. Do not use different terms for exactly the same concept. Instead, think about framing your content differently so that the concept for an overall section doesn’t overlap too much with the concept for an individual subsection.

    If different apps in your app family group data in similar ways, consider aligning the section headings.

    Tables

    Column headings

    Topic Guideline
    Column headings with multiple labels If a table column contains multiple values, use a slash to separate the labels in the column heading. Include a space before and after the slash.

    Examples:
      Price / Local Currency
      Price/Local Currency

    Singular vs. plural Use the singular in the column heading if there is only one entry per table row.

    Examples:
      Product (each row contains one product)
      Contacts (each row can contain more than one contact)

    Table content

    Topic Guideline
    Blank/empty fields Leave fields without a value blank.

    Examples:
      ” “ (blank)
      (hyphen)
       N/A

    Table fields with “null” values If the back end returns a “null” value for a table field, also leave the field blank. In most use cases, it will not be critical for end users to know exactly why a field is not filled (“null” value that is never supplied by the back-end system, or “empty” value that might be filled later).

    In exceptional cases only: If it is critical for your use case to distinguish between “null” and “empty” values, you can consider showing a text for either “null” values or “empty” values.

    Examples:

    • If you have one or two fields where a value is not available yet, but expected or possible later, a text such as “Pending”  or “Not yet available” could give the user a hint.
    • If you have just one or two fields with “null” values, a standard text “Unknown” could serve as a differentiator. In this case, however, you should ensure that “Unknown” is not a possible value in your dataset.

    If you are likely to have several “empty” and “null” value fields in your table, we strongly recommend leaving all the fields blank. This makes the table much easier to scan and helps users recognize fields that are actually populated.

    User Input

    Input field

    Topic Guideline
    Placeholder  

    Only offer placeholder text (input prompt) if you need to provide an additional hint. Do not repeat the label in the placeholder text.

    Never use placeholders instead of labels.

    Use sentence case.
    Exception: The input prompt describes a format with specific capitalization (for example, lower case for a URL).

    Do not use a period or ellipsis at the end of the text.
    Exception: The input prompt describes a format containing a period.

    Use a consistent style for all input prompts on one page (the style may vary, depending on your use case).

    For URL or email address placeholders, use the domain example.com.

    Examples:
      Select a building by location
      www.example.com
      username@example.com

      Select a product category (when the label is Product Category)

    Showing a previous value If you need to indicate the previous value for a field, add the following text after the field value:

    Previously: <Old Value>

    Note: This is not a standard feature for forms, but may be required for some use cases.

    Example:
      Supplier: DelBont Industries     Previously: Company ABC

    Selection list options

    Topic Guideline
    No options selected Relevant for: Select, Select Dialog, Table Select Dialog, Radio Button

    If you need to indicate that none of the options in a list are selected, provide a corresponding text. Show the text at the beginning of the list and place it in parentheses to distinguish it from the other values. Do not leave the entry blank.

    Use a text that best fits your use case and the content of your list, such as (Not Selected), (Not Assigned), or an app-specific text such as (No Supplier Selected).

    Do not use (None). Although “None” works in English, it is difficult to translate correctly into languages with gendered nouns.

    Examples:
      (Not Selected)   
      (Not Assigned)
      (No Product Selected)
      (None)        

    All options selected If a list is used for filtering, and you need to indicate that all values are included, offer an All option it at the beginning of the list.

    Example:
    All
    France

    Germany
    Italy
    Spain

    Here, All indicates that no filters have been set. France, Germany, Italy, and Spain are all included.

    Relevant for: SelectSelect Dialog, Table Select Dialog, Radio Button

    Wizard Floorplan

    Wizard steps

    If you are using the wizard floorplan, formulate the texts for each step as follows:

    Use a noun for the name of the step (for example, Customer). This text appears in 3 places:

    • The header of the walkthrough screen (showing all steps)
    • The heading for each step on the walkthrough screen
    • The heading for each section on the summary screen

    Offer an explanatory text for each step in the walkthrough screen (sap.m.text). Phrase this text as an instruction (for example, Enter the payment details.)
    Note: This explanatory text does not show in the wizard summary.

    Line Micro Chart

    A line chart is a basic type of chart used in many fields. It displays information as a series of data points connected by a line. The chart is often used to visualize a trend over time.

    The line micro chart supports up to three lines, but we recommend using only one. You can modify the color of each line using the qualitative color palette or semantic patterns for charts.

    Line micro chart - Single line
    Line micro chart - Single line
    Line micro chart - Multiple lines using semantic chart patterns
    Line micro chart - Multiple lines using semantic chart patterns
    Line micro chart with semantic colors
    Line micro chart with semantic colors

    Usage

    Use the line micro chart if:

    The line micro chart can be embedded into a tablelisttileor header.

    • You want to visualize the shape.

    Use this option to show a trend or sparkline. By default, the chart is rendered in blue, but application developers can set any color for the chart using the names for semantic palette or names from the qualitative palette.

    Line micro chart - Sparkline
    Line micro chart - Sparkline
    • You want to show data points that are above or below a certain threshold.

    In addition to data points, you can use two different colors for the lines. When the micro chart displays only one line, we recommend that you use only semantic colors, such as green for values above the threshold, and red for values below the threshold. When two or three lines are displayed, on the other hand, we recommended that you use one color per line to ensure clarity and avoid visual clutter. Note that the threshold can also be set to zero.

    Line micro chart - Data points above and below a threshold
    Line micro chart - Data points above and below a threshold
    • You want to show focus points.

    Use this option to display a trend or sparkline to focus on several special values, such as the first and/or last value of the chart. By default, the chart is rendered in blue, but application developers can choose another color for the chart line and data points from the qualitative palette. Note that the threshold can also be set to zero.

    Line micro chart - 2 focus points
    Line micro chart - 2 focus points
    • You want to show focus points with semantic colours.

    Use this option to display a trend or sparkline to focus on several special values with a semantic meaning, such as the first and/or last value above or below a certain threshold. Note that the threshold can also be set to zero.

    Line micro chart - 2 focus points with semantic colors
    Line micro chart - 2 focus points with semantic colors

    Do not use the line micro chart if:

    • You have scenarios that do not depict time periods.
    • You need to show more than three lines.

    Responsiveness

    The Line micro chart is fully responsive. The size adjusts dynamically based on the dimensions of the parent container. In addition, there are also four fixed sizes – L, M, S and XS. Each fixed size is a snapshot of the fully responsive micro chart for specific dimensions.

    Line micro chart - Size L
    Line micro chart - Size L
    Line micro chart - Size M
    Line micro chart - Size M
    Line micro chart - Size S
    Line micro chart - Size S
    Line micro chart - Size XS
    Line micro chart - Size XS

    You can use the smallest XS size to embed the line micro chart in table cells of the grid tableanalytical table, or tree table (also in condensed mode). When displayed in a table cell, the line micro chart should be left-aligned.

    Line micro chart in XS size in the grid table
    Line micro chart in XS size in the grid table

    Maximum and Minimum Sizes

    The line micro chart can have the following dimensions:

    Width Height
    Maximum 320 px 94 px
    Minimum 64 px 18 px

    If the height of the chart is less than 56 px, the labels are hidden.

    Layout

    Line Micro Chart in a Tile or Facet

    You can embed the line microchart with all its features in a tile or header facet. The chart uses the full height and width of the control.

    Note: If the threshold is not zero, the title of the tile or header facet should clearly express the value of the threshold (for example, “Values above/below 50”).

    Line micro chart in a tile with data points above and below the zero threshold
    Line micro chart in a tile with data points above and below the zero threshold
    Line micro chart (sparkline) in a tile with no semantic meaning
    Line micro chart (sparkline) in a tile with no semantic meaning
    Line micro chart in a tile with focus on first and last data points
    Line micro chart in a tile with focus on first and last data points
    Line micro chart in a tile with a semantic focus point and KPI value
    Line micro chart in a tile with a semantic focus point and KPI value

    Line Micro Chart in a Table or List

    You can embed a line micro chart with all its features in a table or list.

    Note: If you intend to synchronize the chart visualization, use the manual scale.

    Line micro chart in a table with values above and below a threshold
    Line micro chart in a table with values above and below a threshold
    Line micro chart in a table - Smaller size
    Line micro chart in a table - Smaller size
    Line micro chart in a table with 4 focus points - First/last and min/max value
    Line micro chart in a table with 4 focus points - First/last and min/max value
    Line micro chart in a table with data points hidden
    Line micro chart in a table with data points hidden

    Components

    To present the line micro chart in the most useful way, application developers can set several properties.

    Data points

    The line micro chart can display or hide data points. To display data points, we recommend that you use 4 (for quarters) to 12 (for months) data points per chart. The responsive behaviour of the chart hides data points if there is not enough space to display them (for XS size and smaller).

    Data points with a semantic meaning can use colors defined by the semantic color palette (green, orange, or red).

    If data points do not have a semantic meaning, the line is colored blue by default, but application developers can assign any color from the qualitative palette.

    Alternatively, you can show a line-only chart, with all the data points hidden. In this case, you can use up to two colorper line in the chart. If the values relate to a threshold, we recommend using semantic colors for the line to highlight values above or below the threshold.

    Line micro chart - Data points
    Line micro chart - Data points

    Focus points

    Unlike data points, focus points highlight specific values, such as the first and/or last value of a time series. Neutral focus points are coloured blue. Focus points with a semantic meaning can be colored using the semantic colors (green, orange, or red). The responsive behaviour of the chart hides focus points if there is not enough space to display them (for XS size and smaller).

    Line micro chart - Focus points
    Line micro chart - Focus points

    Threshold

    You can set a threshold line. If the threshold isn’t zero, include its value in the title of the tile, header facet, or column in lists and tables to ensure that the chart is not misleading for the user.

    There is also an optional threshold value label. The threshold value is hidden if it takes more than 50% of the chart’s parent container. The threshold value is shown only when the threshold line is displayed.

    Line micro chart with threshold line and threshold label
    Line micro chart with threshold line and threshold label

    Labels

    The labels for the line micro chart are optional. Use the bottom labels to indicate the beginning and the end of the time period. Use the top labels to show the corresponding values for the beginning and the end of the chart. When the chart includes more lines, the smallest values appear in the beginning and the largest values at the end of the chart (across lines). The responsive behaviour of the chart hides labels if there is not enough space to display them (for XS size and smaller or if If the chart height is less than 56 px). Ensure that the labels for the values are not truncated.

    Line micro chart with labels
    Line micro chart with 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

    Motion Design

    Motion design is a design method that applies animation and visual effects to user interface design. It expands the conventional design space with a time dimension that makes it an ideal medium for storytelling. In the context of SAP Fiori, motion design and microinteractions work together to provide our users with a coherent user experience.

    Starting with the big picture, and extending into the smaller details, motion design modernizes the SAP Fiori design language. It helps to make apps simpler, more effective, and more delightful to use, contributing to one look and feel across all SAP Fiori applications.

    Motion Design Principles

    We’ve established handy motion design principles to follow when designing animations in SAP Fiori:

    We’ll look at each of these principles in turn in the sections below.

    Duration

    Based on research from previous studies and our findings from testing with prototypes, we have defined four duration classes for SAP Fiori animations:

    Different animations are grouped in these classes to define the correct duration for each use case.

    How do we define animation duration?

    The average eye movement takes 230 ms (based on research ranging from 70-700 ms). We classify our generic animations on a scale from 0 ms to 500 ms. If the duration exceeds 500 ms, we speak of “continuous animation”.

    Motion design animation durations for SAP Fiori
    Motion design animation durations for SAP Fiori

    Immediate response (< 150 ms)

    This duration applies when the user directly manipulates the content. If animation of this type is needed (for example, to show a hover effect, down state, or drag & drop), the device must react instantaneously and the animation should last no longer than 150 ms.

    According to the Nielsen Norman Group, 0.1 s is the response time limit for users to feel like they are directly causing something to happen on the screen. For example, to give users the impression that they are manipulating the table directly, the time it takes between the user clicking a table column and the column being highlighted should be no more than 0.1s. Ideally, this would also be the response time for sorting the column. Users then feel that they are sorting the table, rather than ordering the computer to do the sorting for them.

    Example: Drag and Drop on list
    Example: Drag and Drop on list

    Small Moves (150 ms – 250 ms)

    In some cases, the application responds to an interaction so fast that users can lose track of what’s happening on the screen. To present the feedback in a more natural way, we show short animations when elements move between positions or states.

    It is important to keep these animations simple and short, because:

    • They reflect a small change on the screen.
    • The user should not have to wait.
    • It is very likely that the user will see these animations frequently.
    • The main purpose of the animation is to enable the user to track a change.
    Example: Action sheet - Animations should not make users wait
    Example: Action sheet - Animations should not make users wait

    Large Moves (250 ms – 500 ms)

    If you need to depict a large movement on the screen, use a longer animation duration to avoid fast flashing movements.

    Continuous Animations (500 ms – ∞)

    The duration of these animations is unpredictable. Anything that takes less than a second should be reflected on the screen as fast as possible. However, some interactions have unknown response times. Placeholder animation is a typical example of a continuous animation.

    Example: Placeholder for loading content
    Example: Placeholder for loading content

    Easing

    To enable natural movement for screen elements, most coding languages and animation tools offer functions for easing. To understand the term “easing”, we need to break down the main components of motion.

    Motion or movement is described by the position and time. For a given initial position at time “0”, movement is the the change in the position value over time.

    • Position value: The position value is expressed numerically for a certain time, and can be one of the following properties:
      • Position (space)
      • Scaling
      • Rotation
      • Alpha
    • Time: To standardize motion for practical purposes, the time is generally measured in positive numbers. At any moment in time, there is a position value.

    Curves and Transition Timing

    The property for the transition timing function specifies the speed curve of the transition effect. This property allows a transition effect to change speed over its duration.

    The duration defines the total duration of a transition from state A to state B, whether the transition involves scaling, distorting, rotating or modifying the style of an element. The transition timing function defines the rate at which the transition is carried out, which can involve speeding up and slowing down.

    The transition timing function uses Bézier curves to describe how the animation will proceed over time. You can either use predefined easing settings for the common functions, or specify the control points for a cubic Bézier function to have full control over the transition function. CSS transitions and animations support easing, formally called a “timing function”. The common easing types are:

    • Ease-in
    • Ease-out
    • Ease-in-out
    • Linear

    Ease-In

    Easing Type Description Protocol
    Ease-in The animation starts slowly and finishes at full speed. cubic-bezier (0.65, 0, 1, 1)

     

    Ease-Out

    Easing Type Description Protocol
    Ease-out The animation starts at full speed and finishes slowly. cubic-bezier (0, 0, 0.35, 1)

     

    Ease-In-Out

    Easing Type Description Protocol
    Ease-in-out The animation starts slowly, reaches its maximum speed in the middle of the animation, then finishes slowly. cubic-bezier (0.5, 0, 0.5, 1)

    Linear

    Easing Type Description Protocol
    No easing No acceleration is used. Use this type only for changes in opacity. cubic-bezier(0, 0, 1, 1)

    Direction and Orientation

    The direction and orientation determine how elements behave within SAP Fiori.

    • Direction gives users the ultimate sense of where an object is coming from, and where it is going to.
    • Digital elements use 3-axis directions (x,y,z) to emulate real-life movement.
    • Spatial cases without direction, such as popups, use other animiation methods when rendered on the screen (for example, fading).

    The examples below illustrate the principle of direction.

    Move Elements

    In this case, objects are repositioned. Elements enter, exit, or remain on the screen. The direction defines the spatial placement of the element according to its purpose.

    • Used for: Swipe, slide, switch, page/gallery indicators, saving elements.
    • Logical movement: Elements that come in and out of the screen should follow a consistent pattern.
      • If an element moves out, and then back in, it must come in from the place it initially moved out to.
      • If an element moves in, and then back out, it must return to the place it initially moved in from.

    Stack Elements

    When elements are stacked, one action is placed over another. Here, direction is used to help users follow the way elements are spread on the screen (spatial placement).

    • Used for: Elements that expand/spread or collapse/pile up, open/closed elements with a point of interest.
    • Logical movement: If elements come into the group of elements in a certain order from a certain place, they should leave the group in the same way.

    Rotate Elements

    Elements can rotate as long as this serves a meaningful purpose, and is not just a normal transition for showing content.

    • Used for: Rearranging elements on the screen, device rotation.
    • Elements that have a radial design can take advantage of this property, which uses direction to express values or states.
    • Logical movement:
      • For 2D rotation, use radial values appropriately (clockwise, anticlockwise).
      • Avoid 3D rotations (for example, flip or page turn).

    Choreography

    By combining easing, duration, and direction, you can design precise movement sequences. This is known as choreography.

    Choreography relates to the sequential movements, steps, and patterns composed for a single element or set of elements on the screen. Elements on the screen appear, disappear, and behave in certain way, depending on their depth on the screen, their importance, and the message they convey. The word choreography literally means “dance-writing”. In the context of motion design, this refers to a series of planned situations that are linked to create consistency and harmony.

    Entry and Exit Animations

    Often, the entry behavior of a certain element will vary from the exit behavior of the same element. This is because entering the screen has one flow and purpose, and exiting may have another. For example, when a dialog is opened, the animation should last 150 ms, since the purpose of the animation is to reflect the change on the screen. However, closing the dialog should last only 50 ms to avoid waiting situations.

    Example: Dialog container
    Example: Dialog container

    Choreography Behaviors

    The choreography behaviors below allow you to optimize your motion design.

    Offset

    Example: Dialog
    Example: Dialog

    Combining spatial offset and direction allows you to connect an element to the part of the screen it belongs to.

    Objects can use animated offset to demonstrate their parent group or hierarchy, and to show where they are coming from and where they are going to.

    Delay

    Example: Notification cards with a delay of 50 ms
    Example: Notification cards with a delay of 50 ms

    Delays support usability by visually separating one element (or set of elements) from another.

    You can delay the duration of each single element in a group of elements by specifying a delay for the start of an animation. Animating each element with a slight of delay creates depth and a visual understanding that these elements, while still acting as a group, are independent of one another.

    Conditional Delay

    Example: Navigation container, slide in-out and fade animations
    Example: Navigation container, slide in-out and fade animations

    With a conditional delay, the system waits for a certain action or animation to complete (onComplete) before playing the next one.

    Message View

    Intro

    You can use the message view to display messages that are not related to form or table fields. These messages are triggered in response to a user action.

    Although the message view can be embedded within various controls, we recommend that you use it only within a dialog.

    Message view
    Message view

    Usage

    Use the message view if:

    • You want to display multiple messages triggered by an action within a disruptive dialog.

    Do not use the message view if:

    • You want to display messages for form field validation. Instead, use the message popover.
    • You want to display a single message that interrupts the user. Instead, use the message box.

    Responsiveness

    Size S (Smartphone)

    The responsiveness of the message view is determined by the dialog container in which it is embedded.

    Layout

    Filtering

    Multiple Message types – Filtering by Message Severity

    If different types of message are available, users can filter messages by type (error, warning, success, and information) using the segmented buttons at the top of the message view.

    Messages of different types can be filtered using the segmented buttons.
    Messages of different types can be filtered using the segmented buttons.

    One Message Type Only – Filtering Hidden

    The filter bar is hidden if there is only one type of message (for example, only errors).

    The filter bar is hidden if all messages are of the same type.
    The filter bar is hidden if all messages are of the same type.

    List

    Short Description (1)

    A simple and helpful short message text.

    Subtitle (2)

    You can use the subtitle to give your message a description that helps users to identify the object they are looking for.

    Navigation to Message Details (3)

    If message details are provided, the message view automatically provides a chevron on the right-hand side for navigating to the message details.

    If the view contains only one message that also has message details, the message details page is displayed by default.

    Aggregating Messages (4)

    You can aggregate messages by filling out the counter property of each list item.

    The message view only provides the counter property. The aggregation itself must be implemented by the app team.

    Short Description (1)

    A simple and helpful short message text.

    Subtitle (2)

    You can use the subtitle to give your message a description that helps users to identify the object they are looking for.

    Navigation to Message Details (3)

    If message details are provided, the message view automatically provides a chevron on the right-hand side for navigating to the message details.

    If the view contains only one message that also has message details, the message details page is displayed by default.

    Aggregating Messages (4)

    You can aggregate messages by filling out the counter property of each list item.

    The message view only provides the counter property. The aggregation itself must be implemented by the app team.

    Message view list items
    Message view list items

    Message Details

    The detail view has the following parts:

    1. Back-end short text

    2. Back-end long text

    3. Optional link

    Message view - Details page
    Message view - Details page

    Behavior and Interaction

    Navigation to Message Details

    If the backend contains a long text, the user can click the arrow/chevron on the right-hand side to view the full text in the message details.

    Navigation to message details
    Navigation to message details

    Life Cycle

    We recommend that messages no longer be displayed after the user closes the dialog (sap.m.MessageBox/sap.m.Dialog).

    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

    Why Design Guidelines?

    Why do I need the design guidelines?

    Great question! The SAP Fiori design is built into the SAPUI5 front-end library – a framework that offers over 170 UI controls and numerous layout types. This framework ensures that the layout, control behavior, and visual design are consistent in all SAP Fiori apps. However, this in itself doesn’t guarantee a delightful user experience.

    Apps need to be designed with the user in mind. And they need to follow consistent, established interaction patterns that factor in the requirements of each use case. In a large software enterprise such as SAP, these principles and patterns need to be applied by numerous application development teams worldwide. Also, as SAP Fiori gains traction, more and more SAP customers are extending SAP Fiori apps or building their own. These users too are looking to SAP for design guidance.

    In a nutshell, the SAP Fiori Design Guidelines offer a single point of reference to anyone involved in designing SAP Fiori apps.

    The guidelines extend far beyond general principles and paradigms. They offer concrete guidance so you can execute on a user-centered approach, and they explain how to apply the different layouts, patterns, and controls in detail. The guidelines give you the bigger picture and put technical features into context. They help UX designers and developers make the connection between design considerations and the corresponding SAPUI5 controls.

    What are the advantages?

    Have a look at some of the benefits of using the design guidelines:

    A harmonized look and feel throughout the SAP Fiori app suite

    You will have an easy-to-maintain and consistent design, ensuring a cohesive look and feel for your users across all apps.

    Faster build times

    Rather than having to develop everything from scratch, you can make use of a proven system with ready-made building blocks. This guarantees faster build times for new applications!

    Easier testing

    You will have a tool to do quick quality assurance checks. Neither the guidelines nor the control library are identical to an app. However, both point out issues you may have in your app. By tackling these early on, you’ll avoid them later!

    One language for communication

    You will have a shared vocabulary to use as a reference when discussing changes and iterations. Designing apps becomes more efficient when everyone involved speaks the same language.

    A great onboarding platform

    You will have a great platform for onboarding anyone joining the team! This will also help build awareness and appreciation of the design system.

    What’s New and Versioning

    The guidelines are updated with every even SAPUI5 release. Check out the What’s New page to see what’s been added or revised in each guideline version.

    You can browse through the different versions of individual articles using the menu on the top right-hand corner of the screen.

    SAP Fiori

    SAP Fiori is a design system that provides a consistent user experience for SAP software across platforms and devices. It is at the core of SAP’s product experience and design strategy.

    With SAP Fiori we offer design solutions that are usable, robust, scalable, and of enterprise-grade quality – implemented in several reference technologies.

    The SAP Fiori design system:

    • Accelerates and scales the design and development of enterprise software.
    • Follows a modular design approach based on business roles, moving away from traditional monolithic transactions.
    • Redefines the enterprise user experience by focusing on user tasks and workflows.

    Components of the SAP Fiori Design System

    The SAP Fiori design system provides three different platform-specific design languages
    The SAP Fiori design system provides three different platform-specific design languages

    The SAP Fiori design system operates on two levels:

    • Universal values, principles, and practices apply across all technology platforms.
    • SAP Fiori design languages provide standardized design guidance across multiple platforms.

    Universal Values, Principles, and Practices

    The following fundamental values, principles, and practices inform the SAP Fiori Design:

    Values Consistency Offer design solutions that can be adopted by all UI technologies and scenarios across the entire range of the SAP portfolio, leveraging the expertise of the entire SAP design community.
    Integration Provide solutions to integrate different independent products and technologies into an environment that is coherent and easy to use.
    Intelligence Establish machine learning and artificial intelligence as an integral part of the user experience, with a focus on enabling the user rather than taking away control.
    See also: Designing Intelligent Systems
    Principles Role-based Provide the right information at the right time.
    Adaptive Enable users to work where they want, on the device of their choice.
    Simple Help users focus on what is important.
    Coherent Provide the same intuitive and consistent experience across the enterprise.
    Delightful Enrich the user’s work experience.
    Practices Design-led development Put user experience at the heart of the product lifecycle.

    See also: Design-Led Development Process


    SAP Fiori Design Languages

    The SAP Fiori design system supports multiple technology platforms – web, native mobile, and conversational UX. We refer to the variants for each platform as SAP Fiori design languages.

    While the fundamental design approach is standardized across all platforms, the design languages cater for the specifics of the respective technology platforms. Each design language details out the look and feel, the available controls and floorplans/pages, and common functions like navigation and search.

    The SAP Fiori design languages are already implemented in key reference technologies, including SAPUI5 for browser-based applications and SAP Cloud Platform Software Development Kits (SDK) for native Apple iOS and Android. This is complemented by comprehensive design guidelines and UI kits for app designers.

    With this parallel approach, designing interactions for enterprise business scenarios can be simplified, accelerated, and unified across multiple platforms.

    Using the SAP Fiori Design System

    The SAP Fiori design system has been developed primarily to support internal development of SAP business applications.

    However, we also make it available to our customers and partners to share the experience we have gained in more than 40 years as the leader in enterprise software.

    We provide public access to the following resources:

    SAP Fiori Evolution

    SAP Fiori has evolved out of a small initiative into an industry-scale design system for all SAP products. The latest evolution is the new Horizon theme, which introduces an enhanced visual experience across all platforms, with improved accessibility, focus, and branding options. It’s designed to help users get even more out of the consistency, integration and intelligence features that came with Fiori 3. Read on to find out more about the key milestones.


    SAP Fiori 1.0

    SAP Fiori started in 2013 as an initiative to re-imagine business software by applying a “mobile first” design approach to the most frequently used use cases. Based on the principles of role-based, simple, responsive, coherent and delightful apps, this laid the foundation for a new design system.

    With the first version of SAP Fiori we started breaking down large and monolithic business transactions into focused, task-based apps. Starting with a core feature set suitable for smartphones, the design process was geared towards offering more comprehensive functionality when moving up to larger devices, such as tablets or desktop computers. All aspects of the new Fiori for Web design language had to be carefully designed to adjust to any device, regardless of whether it was operated with a mouse and keyboard or by touch. This first version of SAP Fiori was implemented and evolved in our reference technology for browser-based applications SAPUI5 (versions 1.26 – 1.38), which is also available open source under the name OpenUI5. 

    Key features of SAP Fiori 1.0

    • Break down monolithic transactions into role-based and task-focused apps. 
    • Enable a responsive experience across all devices. 
    • Make use of modern and mobile-inspired interaction patterns.  

    SAP Fiori 2.0

    Following the success of the initial version of SAP Fiori, we needed to introduce new capabilities to ready SAP Fiori as a design system for all the scenarios SAP software addresses. With SAP Fiori 2.0, the design grew into a system that would not only be able to address simple use cases, but that would offer intuitive solutions for even the most complex business scenarios. As the new face for SAP’s flagship product SAP S/4HANA, SAP Fiori 2.0 introduced new floorplans that could accommodate large amounts of information and complex functionality in an intuitive and responsive way. Moreover, SAP Fiori 2.0 came with a new integrated and powerful user environment, based in the SAP Fiori launchpad, which introduced productivity features like notifications and improved navigation. With its second iteration, SAP Fiori introduced a new productivity tool, which evolved over time into the conversational digital assistant SAP CoPilot. 

    Awarded with the prestigious Red Dot Award, SAP Fiori 2.0 was launched in October 2016. Soon after that, an additional award honored the innovative approach for integrating transactional and analytical features to leverage the possibilities of SAP’s in-memory technologiesAgain, SAP Fiori 2.0 was implemented in SAPUI5 as the primary reference technology (version 1.42 – 1.70). In addition to this, SAP Fiori 2.0 was applied to a redesign of classic UI technologies like SAP GUI for Web, WebDynpro and CRM WebClient to offer a more coherent experience across technologies. Other product areas started adopting aspects of SAP Fiori 2.0, such as the new Belize theme to better integrate with SAP S/4HANA. With SAP Fiori for iOS, the first version of the SAP Fiori design system for native mobile platforms was released in partnership with Apple. Two years later, SAP Fiori for Android was announced as a result of a partnership with Google. 

    Key features of SAP Fiori 2.0

    • Scale the role-based and task-focused design approach to complex enterprise scenarios and native mobile platforms. 
    • Offer a powerful productivity environment for business users with new scalable floorplans and patterns, including embedded analytics, notifications, search, and improved navigation. 
    • Introduce conversational interaction and machine intelligence. 

    SAP Fiori 3

    The third iteration of SAP Fiori was announced in 2018. The continued success and its proven ability to scale and integrate latest trends and requirements already had established SAP Fiori as the design system for the intelligent enterprise. All product areas committed to work towards the adoption of SAP Fiori 3 as the design system that would integrate the experience of all SAP products. This decision was operationalized in a newly established product standard for UX consistency. 

    As well as a new Quartz theme, SAP Fiori 3 introduced a number of new features that facilitate the integration of all SAP products to provide one coherent and consistent user experience. Some of the most important aspects are: 

    • The top-most screen area, referred to as shell bar, has been redesigned to support all navigation and functional requirements found in the different products, and will include the possibility to switch between independent products. 
    • Home pages are being redesigned to offer greater flexibility in terms of the level of detail offered. Simple navigation links complement the tiles provided in earlier versions, and we are working on detail cards to offer more information at a glance.
    • A user can have multiple home pages, known as spaces. These can be provided by the organization to offer access to various domains and contexts, integrating the powerful possibilities of overview pages into the same lifecycle as the home pages. 

    SAP Fiori 3 also takes a huge stride forward in integrating machine intelligence into the business environment by offering a more integrated experience for conversational interaction, machine-generated ratings and recommendations, and a whole set of design principles that ensure a human-centric approach to the interaction design for intelligent systems. With the concept of business situations, the system now can detect critical business contexts independently of predefined processes and workflows and recommend possible solutions to resolve them. 

    The number of technologies supporting the Fiori 3 design system has been extended beyond the established reference technology SAPUI5 and the classic UI technologies to include the latest web technologies based on frameworks like Angular, React or Vue, and Web Components 

    Key features of SAP Fiori 3

    • Establishes basic rules for consistency across all SAP products
    • New Quartz theme
    • New aligned shell bar for all SAP products
    • Greater flexibility for home pages
    • Integration of machine intelligence, focusing on a human-centric approach
    • Adoption across a broader range of technologies 

    SAP Fiori with Horizon

    The new Horizon theme is an evolution of the SAP Fiori design system. The theme offers a modern and fresh look with a new vibrant color palette, rounded corners, and softer shapes. The Horizon theme also comes with a new Horizon icon font and optimized typography.

    All elements have been designed with accessibility in mind, and the Horizon theme follows the recommendations for the W3C Web Content Accessibility Guidelines WCAG 2.2. (“Perceivable” principle). Stronger contrasts, improved spacing, and a clearer visual hierarchy make it easier for everyone to work intuitively.

    Four Horizon themes are available:

    • Morning Horizon (light version)
    • Evening Horizon (dark version)
    • High Contrast White (accessibility version)
    • High Contrast Black (accessibility version)

    Horizon is generally available for productive use by customer and partner development teams using SAP’s UI technologies for developing web-apps as well as native mobile apps. For web apps developed with SAP Business Technology Platform, Horizon was made generally available for productive use with SAPUI5 version 1.102.

    SAP Fiori with Morning Horizon theme
    SAP Fiori with Morning Horizon theme

    Key features of SAP Fiori with the Horizon theme

    • New vibrant color palette that meets WCAG AA accessibility standards
    • Enhanced customer branding options
    • New icon set across all platforms
    • Enhanced focus with more contrast, space, and visual hierarchy
    • Two flavors (light and dark), plus two high-contrast accessibility themes

    Related Links

    SAP Companion

    SAP Companion provides context-sensitive in-app help and is an essential part of the user experience in SAP cloud applications. It displays as an overlay on top of the current application.

    You can use SAP Companion to provide two forms of in-app help in SAP Fiori apps:

    • Context help: Context-sensitive help for specific UI elements
    • Guided tours: Step-by-step assistance to lead users through a process

    SAP Companion was formerly known as the Web Assistant.

    When to Use

    Use SAP Companion if:

    You want to give users access to additional context-specific information as they work, such as:

    • The meaning of a field in the current context
    • The implications of making certain settings
    • How a field value is calculated
    • The steps in a process
    • Best practices

    Do not use SAP Companion if:

    • The UI element is self-explanatory in the context.
    • You could reduce the need for in-app help by improving the design of the app. Do not use SAP Companion as a “crutch” for documenting the shortcomings of an app. Before documenting complexity, always check if there is a way to simplify the user experience. 

    Responsiveness

    In-app help is available for browsers on desktop devices and tablets (Apple iOS, Microsoft Windows, Google Android). SAP Companion is not supported on smartphones.

    Layout

    The SAP Companion overlay has the following elements:

    SAP Companion Layout
    SAP Companion Layout
    • Help button: Allows users to open or close SAP Companion.
    • Hotspot: A highlighted area on the screen indicating that context help is available for a UI element.
    • Bubble: A container for displaying the in-app help for a UI element for both guided tour and context help.
    • Laser: Visualizes the connection between a tile and a hotspot.
    • Carousel: An interactive menu displaying available help content for the current screen, guided tours, and the content search:
      • Search: Allows users to search within the available help content.
      • What´s New tile: Switches the carousel to the What´s New mode.
      • Guided Tours tile: Shows available guided tours for the current screen.
      • Learning tile: Shows recommended learning materials for the current screen. Alternatively, it provides access to more learning content in the learning center.
      • Tile: Allows users to open the associated help content.
      • Minimize: Allows users to minimize the SAP Companion overlay. Hotspots and bubbles remain visible on the screen

    SAP Companion supports the high-contrast black theme. The SAP Companion theme adapts automatically if high-contrast black is selected in the SAP Fiori launchpad settings.

    SAP Companion Gallery

    Content Types

    Context Help

    The context help provides context-specific help information for UI elements directly within the application. Only help information that is appropriate for the current screen is shown. The intention of the context help is to show process-independent information that clarifies the current screen. Hotspots emphasize the UI elements for which help is available.

    Guided Tours

    Guided tours take the user through a process step-by-step. You can use them to help users understand and complete end-to-end processes more quickly, and to share best practices. Guided tours can be used across one or several applications.

    Each process step is represented by a bubble that contains appropriate instructions and information for the user. Bubbles can either point to a UI element or show in the center of the screen (for example, to display general information).

    Behavior and Interaction

    Opening SAP Companion

    If SAP Companion content is available, a Help option appears in the user actions menu of the SAP Fiori launchpad. Clicking the icon opens the SAP Companion overlay with the carousel.

    Using Context Help

    Hotspots emphasize the UI elements for which help is available. Clicking on a hotspot shows a bubble with the help content for that field or screen area. All help content is shown in a carousel that is shown at the right side of the screen. A laser highlights the connection between the help content and the selected hotspot.

    Using Guided Tours

    To start a guided tour, the user selects a dedicated “Guided Tour” tile in the carousel. You can also let guided tours start automatically when the user first works with an app. In this case, the SAP Companion overlay opens automatically.

    Radial Micro Chart

    The goal of the radial chart is to display a single percentage value. The chart consists of a colored radial bar with a percentage value inside.

    The radial micro chart can be embedded into a table, list, tile, or header.

    Different radial charts
    Different radial charts

    Usage

    Use the radial micro chart if:

    • You want to display a single value in a table.
    • You want to show a percentage value; the proportion of the total is always calculated and displayed as a percentage.
    • You want to emphasize the visualization; the circular shape is more prominent.
    • You want to use colors from the chart color palettes.

    Do not use the radial micro chart if:

    • You want to display a single value in the form of a fillable shape or group of shapes that describe their context. Use the status indicator instead.
    • You want to make it easier to compare better two or more values visually. Use the progress indicator instead.
    • You want to display custom values and not only percentages. Use the progress indicator instead.

    Responsiveness

    The radial micro chart is fully responsive. The size adjusts dynamically based on the dimensions of the parent container. In addition, there are four fixed sizes: L, M, S and XS. Each fixed size is a snapshot of the fully responsive micro chart for specific dimensions.

    Radial micro chart - Size L
    Radial micro chart - Size L
    Radial micro chart - Size M
    Radial micro chart - Size M
    Radial micro chart - Size S
    Radial micro chart - Size S
    Radial micro chart - Size XS
    Radial micro chart - Size XS

    You can use size XS to embed the radial micro chart in the cells of a grid tableanalytical table, or tree table (also in condensed mode). Left-align the radial micro chart in the table cell.

    Radial micro chart in size XS in a grid table
    Radial micro chart in size XS in a grid table

    Maximum and Minimum Sizes

    The radial micro chart can have the following dimensions:

    Width Height
    Maximum 320 px 94 px
    Minimum 64 px 18 px

    If the chart height is less than 56 px, only the slice label is visible.

    Components

    Labels

    If the micro chart is smaller than size S, the label moves to the right (outside the radial chart). If there is no space to the right of the chart, no label is displayed.

    Radial micro chart - components
    Radial micro chart - components

    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

    Radial Micro Chart (SAPUI5 samples)

    Harvey Ball Micro Chart

    You can use a Harvey Ball chart to visualize a value compared to its total. This is not a pie chart with multiple values or sections, but rather just one value from a total. If you configure thresholds, the semantic color of the value shows a positive, critical, or negative value. You can also use regular chart colors from the qualitative palette without a semantic meaning.

    Different Harvey Ball charts
    Different Harvey Ball charts

    Usage

    The Harvey Ball micro chart can be embedded into a table, list, tile,or header.

    Responsiveness

    The Harvey Ball micro chart is fully responsive. The size adjusts dynamically based on the dimensions of the parent container. In addition, there are four fixed sizes: L, M, S and XS. Each fixed size is a snapshot of the fully responsive micro chart for specific dimensions.

    Harvey Ball micro chart - Size L
    Harvey Ball micro chart - Size L
    Harvey Ball micro chart - Size M
    Harvey Ball micro chart - Size M
    Harvey Ball micro chart - Size S
    Harvey Ball micro chart - Size S
    Harvey Ball micro chart - Size XS
    Harvey Ball micro chart - Size XS

    You can use size XS to embed the Harvey Ball micro chart in the cells of a grid tableanalytical table, or tree table (also in condensed mode). Left-align the Harvey Ball micro chart in the table cell.

    Harvey Ball micro chart in size XS in a grid table
    Harvey Ball micro chart in size XS in a grid table

    Maximum and Minimum Sizes

    The Harvey Ball micro chart can have the following dimensions:

    Width Height
    Maximum 320 px 94 px
    Minimum 64 px 18 px

    If the chart height is less than 56 px, only the slice label is visible.

    Components

    Labels

    If the container scales in height, the size of the micro chart adapts to the available vertical space.

    • If the container height increases, the size of the micro chart increases (assuming the available width is suffcient).
    • If the container height decreases, the size of the micro chart is reduced again.

    If the micro chart is smaller than size S, only the chart slice and slice label are visible. If there is not enough space for the label, it is not shown.

    Harvey Ball micro chart - components
    Harvey Ball micro chart - components

    Resources

    Elements and Controls

    Implementation

    Delta Micro Chart

    The delta micro chart helps to visualize a delta value (difference) between two main key figures. The delta can be a positive or negative value. Configured thresholds define the semantic coloring of the delta bar. The left-aligned labels can be omitted, whereas the right-aligned labels with the values are always shown.

    Different delta charts
    Different delta charts

    Usage

    The delta micro chart can be embedded into a table, list, tile, or header.

    Responsiveness

    The delta micro chart is fully responsive. The size adjusts dynamically based on the dimensions of the parent container. In addition, there are four fixed sizes: L, M, S and XS. Each fixed size is a snapshot of the fully responsive micro chart for specific dimensions.

    Delta micro chart - Size L
    Delta micro chart - Size L
    Delta micro chart - Size M
    Delta micro chart - Size M
    Delta micro chart - Size S
    Delta micro chart - Size S
    Delta micro chart - Size XS
    Delta micro chart - Size XS

    You can use size XS to embed the delta micro chart in the cells of a grid tableanalytical table, or tree table (also in condensed mode). Left-align the delta micro chart in the table cell.

    Delta micro chart in size XS in a grid table
    Delta micro chart in size XS in a grid table

    Maximum and Minimum Sizes

    The delta micro chart can have the following dimensions:

    Width Height
    Maximum 320 px 94 px
    Minimum 64 px 18 px

    If the chart height is less than 56 px, all labels are hidden but the delta value is still visible.

    With the minimum chart height, the labels are not shown.

    Components

    Labels

    The delta micro chart has two main labels, which refer to two data points:

    • The main key value labels indicate the actual data points that are used to calculate the delta.
    • The delta value is the difference between these two data points and is displayed in a semantic color.

    In the wide mode, the labels are placed before and after the chart. If the width is not sufficient to show all labels, the values are hidden first, followed by the date labels.

    Delta micro chart - components
    Delta micro chart - components

    Resources

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

    Elements and Controls

    Implementation

    Comparison Micro Chart

    The comparison micro chart is a bar chart. It compares entries in a top N list. Depending on the width of the parent container, it can have two different layouts: normal view and wide view. You can use either the semantic chart palette or the qualitative chart palette.

    Comparison micro charts in normal view
    Comparison micro charts in normal view
    Comparison micro charts in wide view
    Comparison micro charts in wide view

    Usage

    The comparison micro chart can be embedded into a table, list, tile, or header.

    Responsiveness

    The comparison micro chart is fully responsive. The size adjusts dynamically based on the dimensions of the parent container. In addition, there are also four fixed sizes – L, M, S and XS. Each fixed size is a snapshot of the fully responsive micro chart for specific dimensions.

    Comparison micro chart with 3 bars - Size L
    Comparison micro chart with 3 bars - Size L
    Comparison micro chart with 3 bars - Size M
    Comparison micro chart with 3 bars - Size M
    Comparison micro chart with 3 bars - Size S
    Comparison micro chart with 3 bars - Size S
    Comparison micro chart with 3 bars - Size XS
    Comparison micro chart with 3 bars - Size XS

    You can use the smallest XS size to embed the comparison micro chart in the table cells of the grid tableanalytical table, or tree table (also in condensed mode). Left-align the comparison micro chart in the table cell.

    Comparison micro chart with 3 bars in XS size in the grid table
    Comparison micro chart with 3 bars in XS size in the grid table

    Maximum and Minimum Sizes

    The column micro chart can have the following dimensions:

    Width Height
    Maximum 320 px 94 px
    Minimum 64 px 18 px

    In normal view, the labels for the bars are positioned on top of each bar.

    If the chart width exceeds 192 px, the chart goes into wide view and the labels for the bars are positioned on both sides of the bar.

    If the chart width is 96 px or less, the labels are hidden.

    Comparison micro chart with 3 bars and labels on both sides
    Comparison micro chart with 3 bars and labels on both sides
    Comparison micro chart with 3 bars and labels above
    Comparison micro chart with 3 bars and labels above
    Comparison micro chart with 3 bars without labels
    Comparison micro chart with 3 bars without labels

    Guidelines

    • Use a maximum of 12 bars in a single comparison micro chart.
    • We strongly recommended using at least 2 bars in a single chart to visualize a comparison.
    • When embedding comparison charts in tables, use the same number of bars for all the charts in a given table column. This makes the data comparable and avoids misleading the user. Use a suitable column header to describe the embedded charts.
    Do
    Use comparison charts with the same number of bars in a table column
    Use comparison charts with the same number of bars in a table column
    Don't
    Do not use comparison charts with different numbers of bars in the same table column
    Do not use comparison charts with different numbers of bars in the same table column

    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 Micro Chart

    A column chart uses vertical bars to compare multiple values over time or across categories. One axis of the chart shows the categories being compared, the other axis represents a value. The bars of the column micro chart can represent both positive and negative values.

    There are three main ways to visualize a column micro chart:

    • View with top labels for start and end values, and bottom labels for start and end dates
    • Detail view with labels for each vertical bar. This view can be used only if there is enough space for enough bars width in the container.
    • No labels. In all cases, the label can be switched off.

    You can use either the semantic chart palette or the qualitative chart palette.

    Column micro chart with top labels for start and end values, and bottom labels for start and end dates
    Column micro chart with top labels for start and end values, and bottom labels for start and end dates
    Column micro chart without labels, using semantic colors
    Column micro chart without labels, using semantic colors
    Column micro chart without labels, using qualitative colors
    Column micro chart without labels, using qualitative colors

    Usage

    The column micro chart can be embedded into a tablelisttile, or header.

    Use the column micro chart if:

    • You want to visualize a trend.
    • You want to compare multiple values over time or across categories.

    Do not use the column micro chart if:

    • You have a scenario that does not require a comparison over time.

    Responsiveness

    The column micro chart is fully responsive. The size adjusts dynamically based on the dimensions of the parent container. In addition, there are four fixed sizes: L, M, S and XS. Each fixed size is a snapshot of the fully responsive micro chart for specific dimensions.

    Column micro chart - Size L
    Column micro chart - Size L
    Column micro chart - Size M
    Column micro chart - Size M
    Column micro chart - Size S
    Column micro chart - Size S
    Column micro chart - Size XS
    Column micro chart - Size XS

    You can use size XS to embed the column micro chart in the cells of a grid tableanalytical table, or tree table (also in condensed mode). Left-align the column micro chart in the table cell.

    Column micro chart in size XS in a grid table
    Column micro chart in size XS in a grid table

    Maximum and Minimum Sizes

    The column micro chart can have the following dimensions:

    Width Height
    Maximum 320 px 94 px
    Minimum 64 px 18 px

    If the chart height is less than 72 px, the column labels are hidden. Instead, the chart switches to the standard view, and shows the start and end values per chart, as well as start and end dates.

    If the chart height is less than 56 px, all labels are hidden.

    Components

    Bars

    The bars of the column micro chart can represent both positive and negative values.

    We strongly recommend using only colours from the semantic palette for the bars (good, critical, bad, neutral). If your use case requires colours from the qualitative palette, use only one colour per chart.

    Top and Bottom Labels

    The labels for the column micro chart are optional. Use the bottom labels to indicate the beginning and the end of the time period. Use the top labels to show the corresponding values for the beginning and the end of the chart. The responsive behaviour of the chart hides labels if there is not enough space to display them (for XS size and smaller or if If the chart height is less than 56 px). Ensure that the labels for the values are not truncated.

    Bar Labels

    For a more detailed view of the chart, you can use bar labels. The bar labels are displayed only if the container is wide enough to accommodate a minimum number of bars. The bars must be at least as wide as the label. Otherwise, the responsive behavior of the chart automatically switches to the mode with only top and bottom labels displayed. Ensure that the labels for the values are not truncated.

    Column micro chart - Components
    Column micro chart - Components

    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

    Bullet Micro Chart

    A bullet chart is a variation of a bar graph originally developed by Stephen Few and adapted by SAP Fiori in order to fulfill additional requirements. Much like the traditional thermometer charts and progress bars found in many dashboards, the bullet chart serves as a replacement for dashboard gauges and meters.

    The bullet chart features a single, primary measure (for example, current year-to-date revenue). It compares that measure to one or more other measures to enrich its meaning (for example, compared to a target), and displays it in the context of qualitative ranges of performance, such as poor, satisfactory, and good.

    Bullet micro chart without forecast
    Bullet micro chart without forecast
    Bullet micro chart with forecast
    Bullet micro chart with forecast
    Bullet micro chart with only delta value shown
    Bullet micro chart with only delta value shown

    The actual value is shown as a colored horizontal bar, the target value as a vertical line (marker), and the thresholds as indicators above and below the bar. The actual and target values can have a label.

    Only semantic colors (good, critical, bad, neutral) can be used for the actual value.

    The forecast is shown as a bar with a lighter tint of the same color as the actual value in the background.

    Based on the data points you want to show, choose one of the following visualizations:

    • Actual value vs. target value
    • Actual value vs. target value with forecast
    • The delta between the actual value and the target value. For this option, the delta is shown as a bar starting or ending at the target marker.

    Usage

    The bullet micro chart can be embedded into a tablelist, tile, and header.

    Responsiveness

    The bullet micro chart is fully responsive. The size adjusts dynamically based on the dimensions of the parent container. In addition, there are also four fixed sizes – L, M, S and XS. Each fixed size is a snapshot of the fully responsive micro chart for specific dimensions.

    Bullet micro chart - Size L
    Bullet micro chart - Size L
    Bullet micro chart - Size M
    Bullet micro chart - Size M
    Bullet micro chart - Size S
    Bullet micro chart - Size S
    Bullet micro chart - Size XS
    Bullet micro chart - Size XS

    You can use the smallest XS size to embed the bullet micro chart in the table cells of the grid table, analytical table, or tree table (also in condensed mode). Left-align the bullet micro chart in the table cell.

    Bullet micro chart in size XS in a grid table
    Bullet micro chart in size XS in a grid table

    Maximum and Minimum Sizes

    The bullet micro chart can have the following dimensions:

    Width Height
    Maximum 320 px 94 px
    Minimum 64 px 18 px

    If the chart height is less than 56 px, the labels are hidden.

    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

    Area Micro Chart

    An area micro chart is a trend chart. It provides information for actual and target values for a specific time range. These values are visualized as segmented lines and can be compared to threshold areas shown in the background.

    The area micro chart can be visualized in normal or wide mode. If no thresholds are defined, the area micro chart shows only the lines on a transparent background. You can also use colored lines from the qualitative color palette or apply semantic colors.

    Area micro chart
    Area micro chart

    Usage

    The area micro chart can be embedded into a table, list, tile, or header.

    Use the area micro chart if:

    • You want to visualize a trend with information about actual and target values for a specific time range.
    • You want to visualize and compare actual and target values with threshold values.

    Do not use the area micro chart if:

    • You have a scenario that does not require a comparison over time.

    Responsiveness

    The area micro chart is fully responsive. The size adjusts dynamically based on the dimensions of the parent container. In addition, there are four fixed sizes: L, M, S, and XS. Each fixed size is a snapshot of the fully responsive micro chart for specific dimensions.

    Area micro chart - Size L
    Area micro chart - Size L
    Area micro chart - Size M
    Area micro chart - Size M
    Area micro chart - Size S
    Area micro chart - Size S
    Area micro chart - Size XS
    Area micro chart - Size XS

    You can use size XS to embed the area micro chart in the cells of a grid tableanalytical table, or tree table (also in condensed mode). Left-align the area micro chart in the table cell.

     Area micro chart in size XS in a grid table
    Area micro chart in size XS in a grid table

    Maximum and Minimum Sizes

    The area micro chart can have the following dimensions:

    Width Height
    Maximum 320 px 94 px
    Minimum 64 px 18 px

    If the chart height is less than 56 px, the labels are hidden in the normal mode.
    If the chart height is less than 36 px, the labels are hidden in the wide mode.

    Layout

    The area micro chart can be visualized in normal or wide mode. When no thresholds are defined, the area micro chart shows only the lines on a transparent background.

    Area micro chart - Normal mode
    Area micro chart - Normal mode
    Area micro chart - Wide mode
    Area micro chart - Wide mode
    Area micro chart without thresholds
    Area micro chart without thresholds

    Components

    Actual and target values

    The actual values are displayed as a solid line, the target values as a dotted line.

    Thresholds

    The thresholds are displayed as colored areas in the background.

    Labels

    You can show labels for the start and end values, the maximum and minimum values, and the beginning and end of the time range.

    If the chart contains only start and end value labels and start and end date labels, each takes up half of the chart width. The responsive behavior of the chart hides the labels if there is not enough space to display them (for XS size and smaller or if If the chart height is less than 56 px for normal mode or less than 36 px for wide mode). Ensure that the labels for the values are not truncated. Bear in mind that if one of the paired labels (start or end) is too long, both labels are hidden.

    If the chart also has minimum or maximum value labels, each label takes up a third of the chart width. The minimum or maximum value labels are optional. If the minimum or maximum value label gets truncated, both the minimum and maximum value labels are hidden.

    In the wide mode, the labels are placed before and after the chart. The same rules apply to hiding the labels: if one of the paired labels does not fit in, they are both hidden.

    Area micro chart - Components
    Area micro chart - Components

    Guidelines

    For the wide mode, we strongly recommend that the chart width is greater than or equal to the chart height. Otherwise, use the normal mode.

    Do
    Chart width is greater than or equal to the chart height
    Chart width is greater than or equal to the chart height
    Don't
    Chart width is less than the chart height
    Chart width is less than the chart height

    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

    Stacked Bar Micro Chart

    The stacked bar micro chart is designed to be embedded into a list, table, or object page header as a way to represent related values atop one another in order to visualize the single values as part of a whole. These values can be displayed in two different ways:

    • Percentage compared to 100%

      Use percentage values if your goal is to see each value in the composition as a percentage of the whole. In this case, the sum of the bars is always 100%.

    Percentage values (without labels)
    Percentage values (without labels)
    • Values compared to a maximum value

      Use this option in a list or table if your goal is to compare the sum of the values to a maximum value (for example, the maximum of all data shown in the list or table), whilst still displaying the relative value of each to its local maximum.

    Absolute values (without labels)
    Absolute values (without labels)

    Please note: The stacked bar micro chart does not support negative values.

    Usage

    Use the stacked bar micro chart if:

    • You want to visualize a part-to-whole relationship embedded in a list or table, with all the features described above.
    Chart embedded in a table - Percentage values (without labels)
    Chart embedded in a table - Percentage values (without labels)
    Chart embedded in a table - Absolute values (without labels)
    Chart embedded in a table - Absolute values (without labels)
    • You want to visualize a part-to-whole relationship in an object page header, with all the features described above.

    Also consider using a Harvey Ball micro chart as an alternative visualization for a part-to-whole relationship.

    Chart embedded in an object header - Percentage values (with labels)
    Chart embedded in an object header - Percentage values (with labels)
    Chart embedded in an object header - Absolute values (with labels)
    Chart embedded in an object header - Absolute values (with labels)

    Do not use the stacked bar micro chart if:

    • You want to visualize a part-to-whole relationship on a SAP Fiori tile. The stacked bar micro chart is not designed to be embedded into an SAP Fiori tile and is therefore not supported. Consider using a Harvey Ball micro chart instead.


    Responsiveness

    The stacked bar micro chart is fully responsive. The size adjusts dynamically based on the dimensions of the parent container. In addition, there are also four fixed sizes – L, M, S and XS. Each fixed size is a snapshot of the fully responsive micro chart for specific dimensions.

    Stacked bar micro chart - Size L
    Stacked bar micro chart - Size L
    Stacked bar micro chart - Size M
    Stacked bar micro chart - Size M
    Stacked bar micro chart - Size S
    Stacked bar micro chart - Size S
    Stacked bar micro chart - Size XS
    Stacked bar micro chart - Size XS

    You can use the smallest XS size to embed the stacked bar micro chart in the table cells of the grid tableanalytical table, or tree table (also in condensed mode). Left-align the stacked bar micro chart in the table cell.

    Stacked bar micro chart in XS size in the grid table
    Stacked bar micro chart in XS size in the grid table

    Maximum and Minimum Sizes

    The stacked bar micro chart can have the following dimensions:

    Width Height
    Maximum 320 px 94 px
    Minimum 64 px 18 px

    If the label is too long to fit inside the bar, it is hidden. With the minimum chart height, the labels are not shown.

    Components

    Maximum Value

    The chart is scaled relative to the maximum value. This means if a maximum value (maxValue) is set, then the width of the stacked chart represents the maximum value and each value within the chart is scaled relative to this maximum.

    If the maximum value is not set, then the width of the chart represents 100% and each value is displayed as a relative percentage.

    Precision

    By setting a specific value for the precision, an application developer can influence rounding calculations by defining how many digits are displayed. By default this value is 1.

    Display Value

    By default, the control displays percentage values on the bars. However, application developers can also set a display property to show absolute values, or to show only bars (by entering a blank space).

    Color

    An application developer can set any color for the chart either by using names of semantic colors, or by using names from the qualitative palette (sapUiChartPaletteQualitativeHue1…11).

    Please note: A legend is currently not available for the stacked bar micro chart. Since the use of multiple colors is not self-explanatory, we highly recommend using semantic colors and an explanatory title for the 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

    What’s New in Guideline Version 1.128

    This article provides an overview of the updates to the SAP Fiori web design guidelines with guideline version 1.128.

    UI Elements – SAPUI5

    Topic Update Topic Link
    Carousel Responsive behavior:

    • The arrow buttons for navigating between pages are always visible on mobile devices.
    • The tap interaction is required as an alternative to swiping to comply with accessibility standards.
    Carousel – Responsiveness
    Illustrated Message Illustrations don’t require an alternative text. Illustrated Message

    UI Elements – Web Components

    Components

    Topic Update Topic Link
    Carousel Responsive behavior:

    • The arrow buttons for navigating between pages are always visible on mobile devices.
    • The tap interaction is required as an alternative to swiping to comply with accessibility standards.
    Carousel – Responsive Behavior
    Color Palette Popover

    Under More Colors…, the color picker defaults to the last color used. If no color has been selected, it defaults to white.

    Color Palette Popover – Selecting a Color
    Form  NEW Guideline for the web component implementation of the form. Form

    SAP Fiori Elements Framework

    Topic Update Topic Link
    List Report Header With SAP Fiori elements for OData V4:

    • The limit for a search string is 1000 characters.
    • You can hide the Editing Status filter from the list report filter bar. This feature was already available with SAP Fiori elements for OData V2.
    List Report Header (SAP Fiori Elements) – Editing Status Filter
    Table Features With SAP Fiori elements for OData V4:

    • The generic context menu is now available for tree tables and can contain Move Up and Move Down actions for tree table nodes.
    • By default, a newly created tree table node is always displayed first in the table or as the first child below its parent node, even when a sort or a filter is applied to the table.

    Instead, you can enable an option to display the nodes in the order that they were created in the table or parent node. This feature allows users to act directly on the table hierarchy when they create new table elements or reorder the table nodes.

    Table Features (SAP Fiori Elements)
    Table Rows With both versions of SAP Fiori elements, in draft-enabled applications, you can enable or disable the empty row for data entry feature for:

    • An application, so the setting applies to all grid tables and responsive tables in all object pages
    • A table, so it applies only to the table

    When settings are made at both application and table levels, the table setting takes priority.

    Additionally, with SAP Fiori elements for OData V2, you can enable or disable the feature at the object page level.

    When the settings are made at application, object page, and table levels, the setting at the most granular level takes priority, as follows: table, object page, application.

    Table Rows (SAP Fiori Elements) – Empty Row for Data Entry in Create and Edit Modes
    Table Toolbar With SAP Fiori elements for OData V4:

    • The limit for a search string is 1000 characters.
    • The export action excludes table columns that contain a multi-input field (1:N).
    • You can enable the mass edit for a grid table or responsive table in the object page. When the object page is in display mode, users can apply the mass edit to the subobjects in a table.
    • You can define the fields that display in the Edit dialog for mass edit. This feature was already available with SAP Fiori elements for OData V2.

    By default, the Edit dialog contains all the table columns that are currently visible and editable.

    Now, the application team can define the fields that display in the dialog, by both:

      • Including fields in the dialog that are not displayed in the table
      • Excluding fields from the dialog fields that are displayed in the table
    Table Toolbar (SAP Fiori Elements)

    Designer Toolkit

    Topic Update Topic Link
    Download Fonts SAP icon font: Download files were updated to version 5.10 (Horizon theme) and 4.22 (Quartz theme).

    SAP Business Suite icon font: Download files were updated to version 2.086 (Horizon theme) and 1.086 (Quartz theme).

    Download Fonts
    SAP Fiori for Web UI Kit The SAP Fiori for Web UI Kit is available in the Figma Community. SAP Fiori for Web UI Kit
    SAP S/4HANNA Web UI Kit The SAP S/4HANA Web UI Kit is available in the Figma Community. The kit includes both cozy and compact form factors. SAP S/4HANA Web UI Kit
    User Research  NEW Extended set of resources for conducting user research, including:

    • SAP User Research Panel: An opportunity for SAP end-users to have a direct impact on the development and enhancement of our products.
    • User Research Method Cards: Effective user research methods.
    • Inclusive Research Handbook: Advice, tools, and templates for conducting research in an inclusive way.
    • Scenes Toolkit: Predefined illustrations that can be used to create storyboards.

    This article replaces the former User Research Method Cards article.

    User Research Resources

    About Guideline Updates

    With each new guideline version, we deliver two types of update:

    • Updates to reflect new or changed UI controls available with SAPUI5 or SAP Web Components.
    • Ongoing updates on how to best apply the SAP Fiori design (such as patterns, floorplans, and additional decision support). These updates are introduced with a given guideline version, but are not necessarily dependent on a specific SAPUI5 version.

    Note: Our policy is to update only the latest guideline version. If you are working with an earlier SAPUI5 release, also consider checking out the most recent guideline version to get the latest general guidance.

    Header Toolbar

    The header toolbar always appears in the header of the page. One main advantage of the header bar is that this bar is always visible and will not scroll away. It contains actions that are relevant for the entire page.

    Our general guideline is to use only icon buttons or text buttons. Icon and text should not be combined into one button. Buttons are always right-aligned.

    Buttons are sorted from frequently-used to seldom-used. This ensures that the most important buttons go into the overflow last.

    Usage

    Use the header toolbar if:

    • Your page contains several controls, and the actions are valid for the entire page.

    Do not use the header toolbar if:

    • You have closing or finalizing actions for the whole page. Place them in the footer toolbar instead.
    • You have actions that belong to a specific UI element. Place them as close as possible to the corresponding object (for example, in a table or chart toolbar).

    Responsiveness

    To enable responsiveness, use the OverflowToolbar control. For more information, see the corresponding section in the Toolbar Overview article.

    The height of the toolbar changes on desktops (compact mode), tablets, and smartphones (cozy mode). For more information about cozy and compact modes, see Content Density.

    Header toolbar – Size S
    Header toolbar – Size S
    Header toolbar – Size M
    Header toolbar – Size M
    Header toolbar – Size XL
    Header toolbar – Size XL

    Components

    The header toolbar can contain the following components:

    • App-specific business actions
    • Generic actions

     

    The following actions count as generic:

    • Flag and Favorite
    • Share menu
    • Overflow
    • Paging

    Behavior and Interaction

    Business Actions

    If needed, the app team can define their own actions for the app. In this case, the text buttons should contain a short, unambiguous text that explains what action the button performs. A button text is usually a single-word verb (for example, Synchronize). Note that translated UIs may increase the length of the text string.

    Text vs. Icon Buttons

    Use text-only buttons for all business actions (such as Edit and Create).
    Use icon buttons only for generic actions (such as  for Share). For icons, always provide a suitable text label as a tooltip.

    Business action with icon button in header toolbar
    Business action with icon button in header toolbar
    Actions in the header toolbar
    Actions in the header toolbar

    Edit and Delete (1)

    If you want to perform a global edit action, use the Edit button.

    If you want to perform a global delete action, use the Delete button.

    Add / Create (2)

    Place the Add or Create (item or row) action as close to the content as possible.

    If the Add or Create action is a main function, don’t move the action into the overflow.

    For more information on when to use add or create, see UI Text Guidelines

    Favorite and Flag (Generic) (3)

    Users can mark objects as a favorite or flag objects for quick subsequent retrieval. The user does this by clicking the relevant generic Favorite or Flag button in the header toolbar. For more information, see Flag and Favorite.

    Share (Generic) (4)

    The Share menu allows users to work with content outside the app they are currently using. It can include a variety of actions. All the buttons contain either text only or a combination of an icon and text. The following actions can be used and complemented by each app:

    • Send Email (icon: email  )
    • Discuss in SAP Jam (icon: discussion-2  )
    • Share in SAP Jam (icon: share-2  )
    • Send Message (icon: post  )
    • Save as Tile (icon: add favorite  )
    • Print (icon: print  )
    • Export as Excel (icon: Excel attachment  )
    • Export as PDF (icon: pdf attachment  )
    • Export As…
    • Open In…

    If you expect the user to use the Open In… functionality frequently, place it directly in the header toolbar.

    The Share action can appear on the full screen or the details screen, and is never moved into the overflow menu. It is always right-aligned. The overflow starts to the right side of the Share icon.

    Possible actions in the 'Share' menu
    Possible actions in the 'Share' menu
    Open share popover in header toolbar
    Open share popover in header toolbar

    Overflow (Generic) (5)

    If apps use the overflow toolbar, the overflow is generated automatically. The overflow is activated if there is not enough space for all the actions on the toolbar, or if some actions are considered less important than others. In this case, the app team decides that only certain actions appear in the overflow.

    The app team also decides whether some actions are so important that they should never move into the overflow.

    The  “” (overflow) button can be used to toggle the overflow menu on and off.

    The user clicks the overflow button to open a popover. In this action sheet, all icon buttons are labeled with text and the user can overflow the following controls:

    • sap.m.SegmentedButton – when in the overflow, the segmented button is in select mode and looks like a select button, although it is technically still a segmented button
    • sap.m.Select – when in the overflow, it is always in default mode to take advantage of the extra space, even if it was set to icon-only mode in the toolbar
    • sap.m.ToggleButton
    • sap.m.Checkbox
    • sap.m.Input
    • sap.m.SearchField
    • sap.m.ComboBox
    • sap.m.DateTimeInput

    Split-screen layouts have their own overflow menus.

    All buttons go into the overflow from right to left. This ensures that the most important buttons are the last to be moved into the overflow menu.

    Header toolbar with open overflow
    Header toolbar with open overflow

    Paging (Layout)

    Use the paging buttons if you want to navigate to the previous or next object.

    Use the following tooltip labels:

    • Icon: Up arrow
      Tooltip label: Previous [Object]
      Example: Previous Purchase Order Item
    • Icon: Down arrow
      Tooltip label: Next [Object]
      Example: Next Purchase Order Item

    To avoid translation issues, never use “Next” and “Previous” as standalone labels. Always state the object you are navigating to.

    If you are using the Share button, place paging buttons to the right of the Share button.

    Paging buttons in header toolbar
    Paging buttons in header toolbar

    Styles

    • Use button styles only if they help the user, and not for decoration.
    • Use them for primary actions, such as Edit and Create.
    • Use a positive/negative style (property: type = accept or rejector an emphasized style (property: type emphasized).
    • Use only one emphasized button per toolbar and never mix emphasized and semantic buttons.
      Exception 1: Messaging button appears
      Exception 2: Object has been flagged or marked as a favorite

    For more information, see Button.

    Guidelines

    For more information, see the Guidelines section in the toolbar overview article.

    Resources

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

    Elements and Controls

    Implementation

    App Finder

    The app finder allows you to browse all SAP Fiori, SAP GUI, and Web Dynpro ABAP apps in one place. It is available in the edit mode of the SAP Fiori launchpad or in the SAP Fiori user actions menu.

    The app finder serves two purposes:

    • Discover apps and add them to the home page
    • Launch less frequently-used apps directly

    Depending on the launchpad implementation, the app finder may be divided into three content areas: Catalog, User Menu, and SAP Menu:

    • The Catalog area contains all the SAP Fiori apps. 
    • The User Menu and SAP Menu areas give users access to the SAP GUI and Web Dynpro ABAP applications that appear in the corresponding menus in the back end. Together, the two back-end menus are also known as the “SAP Easy Access menu”.
    App finder
    App finder

    The app finder is provided by the SAP Fiori launchpadApps use this app finder and do not have their own individual designs.

    Responsiveness

    The app finder is fully responsive and adaptive.

    On size S, the width of the app box adapts to fit the screen size.

    The SAP Easy Access menu (User Menu and SAP Menu) is not available on smartphones and tablets.

    App finder - Smartphone
    App finder - Smartphone
    App finder - Tablet
    App finder - Tablet
    App finder - Desktop
    App finder - Desktop

    On smaller screens, the left panel disappears and a menu icon appears instead. Clicking the menu icon brings back the panel and provides access to the catalogs and menu folders.

    App finder - Responsiveness
    App finder - Responsiveness

    Components

    Catalog

    The content is organized into catalog groups.

    User Menu / SAP Menu

    The content is organized into hierarchical menu folders.

    Side Panel

    The side panel helps the user to see all the apps for a given catalog or menu folder.

    App Boxes

    The app finder contains all the apps the user is allowed to see. These are shown as app boxes. In addition, the SAP Menu provides access to all the functions offered by an SAP system. The content of the SAP Menu is independent of the user role, and is therefore the same for all users.

    The interaction for adding apps from the app finder to the home page or page depends on the source of the app (Catalog, User Menu, or SAP Menu).

    Behavior and Interaction

    Each tile offers two actions:

    1) Clicking the tile takes the user to the app or page connected to this tile, as on the home page.

    2) The pin icon button (  ) allows the user to add a tile to a group on the home page. In the catalog, users can also remove tiles from the home page via the pin icon button.

    Adding Apps to the Home Page

    Information
    The info in this section applies only if you use the SAP Fiori launchpad home page. If you use SAP Fiori launchpad spaces, see Adding Apps to a Page below.

    Each app box offers two actions:

    1) Clicking the tile takes the user to the app or page connected to this tile, as on the home page.

    2) The pin icon button ( ) allows the user to add an app to one or several groups on the home page. In the catalog, users can also remove apps from the home page using the pin icon button.

    Catalog

    Clicking the pin icon button opens the Add to Groups popover, where the user can select one or more home page groups. The user can also remove the app from the home page by unchecking it in the popover, or add the app to a new group.

    When the user selects or deselects a checkbox, the app is added to or removed from the respective group. When the user clicks Close or anywhere outside the popover, a toast message summarizes the changes. The pin behaves like a toggle: if the app is assigned to the home page, the pin is emphasized.

    User Menu / SAP Menu

    Clicking the pin icon button (  ) opens the Add to Groups popover, where the user can select one home page group and add the app. The user can repeat this process several times. However, for technical reasons, the app finder cannot be used to remove apps from the home page. Apps can only be removed by switching the home page itself to edit mode.

    Adding Apps to a Page

    Information
    The info in this section applies only if you use SAP Fiori launchpad spaces. If you use the SAP Fiori launchpad home page, see Adding Apps to the Home Page above.

    Each app box offers two actions:

    1) Clicking the tile takes the user to the app or page connected to this tile, as on a page.

    2) The plus icon button ( ) allows the user to add an app to one or several pages. In the catalog, users can also remove apps from a page using the checkmark icon button ( ).

    From the Catalog

    Clicking the plus icon button opens the Add to… popover, where the user can select one or more pages. An app can be removed from a page again by unchecking it in the popover.

    When the user selects a checkbox, the app is added to that page and appears at the top of the page in a dedicated Recently Added Apps section. When the user deselects a checkbox, the app is removed from the respective page. When the user clicks OK, a toast message summarizes the changes. The icon button behaves like a toggle: if the app is assigned to a page, the plus turns into a checkmark.

    From the User Menu / SAP Menu

    Clicking the plus icon button opens the Add to… popover, where the user can select a page and add the app. The user can repeat this process several times. However, for technical reasons, the app finder cannot be used to remove apps from a page. Apps can only be removed by switching the page itself to edit mode.

    Related Links

    Elements and Controls

    Implementation

    • No links.

    Chart Color Palettes

    SAP Fiori uses qualitative, sequential, and semantic color palettes for chart visualization.

    This article explains what the three color palettes are designed to do and how you can leverage their unique properties.

    Palette Overview

    For color names and HEX values, see Chart Color Palettes – Values and Names.

    Qualitative Color Palette

    Designed to provide visual differentiation between data points using a specific order of colors.

    Qualitative colors
    Qualitative colors

    Sequential Color Palette

    There are 12 colors with 9 tints and shades for each, which are designed to visualize high to low values.

    Guidelines
    It is not recommended to use more than six sequential tints and shades for different measures.
    Sequential chart colors
    Sequential chart colors

    Semantic Color Palette

    Designed to communicate good (positive), bad (negative), critical and neutral values. The naming of the semantic values is generic and application teams determine the contextual usage of semantics within the charts.

    Semantic colors
    Semantic colors

    Rules

    1. Only use colors contained in the SAP chart palettes.
      To ensure that we maintain visual design consistency across all charts used in all SAP applications, you should only use colors from the SAP color palettes.
    2. Only use one palette per chart.
      Don’t combine colors from different palettes in the same chart. Each palette has been carefully designed to serve a distinct purpose.
    3. Ensure chart color token names are referenced in the code – not HEX values!
      To support consistent color implementation across SAP UI technologies, as well as our theming capabilities, colors are defined by token names. This means that the HEX values of the colors may not be exactly the same in past, present, and future SAP visual design themes. This flexibility is made possible by the fact that the color token names will stay the same across all past, present and future SAP themes. You can get the color names and corresponding HEX values from the article on color palette values and names.
    4. Don’t use color to distinguish between forecast, actual, and target values.
      Use semantic patterns instead.

    Default Colors

    By default, every chart type comes with built-in colors that are applied automatically, based on your dataset. Here are three examples:

    1. When only one series is displayed, the first color from the qualitative palette is automatically applied to each item.

    Column chart: One series
    Column chart: One series

    2. When multiple series are displayed, more colors from the qualitative palette are automatically applied to each item in the predetermined sequence.

    Column chart: Three series
    Column chart: Three series

    3. Colors from the sequential palette are automatically applied to the heatmap.

    Default colors in a heatmap
    Default colors in a heatmap

    Changing the Colors

    There are three ways to change the colors in charts:

    By Category Item

    In the example below, one category has been highlighted using the second color from the qualitative palette.

    Column chart with a highlighted category
    Column chart with a highlighted category

    By Series

    In the example below, the series use different shade of the same color because one series must be more visible than the other.

    Column chart: Two series
    Column chart: Two series

    Based on Value

    In the semantic color example below, the data points are red if their value is below a certain threshold, green if their value is above another threshold, and orange if their value is between the two.

    Column chart with encoded values
    Column chart with encoded values
    Developer Hint

    • You can customize chart colors using the property: plotArea.dataPointStyle.
    • When you customize the colors, you must define colors for all your data points.
    • If no color has been assigned to a particular data point, the chart component automatically assigns the color black to indicate that no color has been assigned.
    • If for some reason multiple colors are assigned to the same data point, the last assigned color is applied.
    • You must manually define the labels that are associated with the colors in the legend. The chart components can’t do this automatically.

    Qualitative Palette

    The colors in the qualitative palette don’t carry semantic meaning. The palette has been designed to provide visual differentiation between data points by virtue of the fact that each color is visually distinct.

    Guidelines

    • We recommend using the colors in the sequence illustrated, as opposed to using any colors simply because you prefer them.
    • It is not recommended to overload charts with additional colors. Nevertheless, for edge cases, you can apply darker shades of the same colors using the sequence palette, as shown in this example.

    Qualitative palette
    Qualitative palette
    Qualitative palette - additional colors
    Qualitative palette - additional colors

    For color names and HEX values, see Chart Color Palettes – Values and Names. Darker shades shown are taken from the sequence palette. Example: sapChart_Sequence_1_Minus2, sapChart_Sequence_2_Minus2,  sapChart_Sequence_3_Minus2, etc.

    Highlight Category Items

    By default, all the categories use the first color from the qualitative palette. However, you can use other colors from the qualitative palette if you want to highlight category items.

    Using the qualitative palette to focus on a category item
    Using the qualitative palette to focus on a category item

    Group Items by Color

    You can use the qualitative palette to group items into categories. In this example, we use green for Europe, blue for America, and orange for Asia.

    Using the qualitative palette to show a hierarchy
    Using the qualitative palette to show a hierarchy

    Semantic Palette

    The semantic palette is designed to communicate bad (negative), critical, good (positive), and neutral values.

    To maximize flexibility for chart design application teams, the semantic palette contains a selection of 9 tints and shades in each of the 4 main semantic colors.

    Guidelines
    We recommend reducing the number of colors to five or six shades to visualize each semantic level.
    Semantic palette
    Semantic palette

    For the full set of color options, including color names and HEX values, see Chart Color Palettes – Values and Names.

    Using the Semantic Palette

    Here are some ways you can use the semantic palette:

    Illustrate the Top Three Values

    This column chart uses the semantic palette to display the sales revenue per month. The color green is used to highlight the top three months with the highest revenue.

    Column chart: Top three values
    Column chart: Top three values

    Show Positive and Negative Series

    These stacked bars represent the availability of materials. The available series is green, the inspection series is orange, and the blocked series is red.

    Stacked bars: Good and bad values
    Stacked bars: Good and bad values

    Denote Good or Bad Values

    Each data point has a color based on its value. Data points are red if their value is below a certain threshold, green if their value is above another threshold, and orange if their value is between the two.

    Column chart: Good and bad values
    Column chart: Good and bad values

    Visualize Different Levels

    In this geomap, green is used to indicate states with good performance, and red for states with bad performance. The different shades express different levels of good and bad performance.

    Geomap: Levels of performance
    Geomap: Levels of performance

    Default Color Shade Names

    The default color shade names in the semantic palette are:

    • sapChart_Sequence_Bad
    • sapChart_Sequence_Critical
    • sapChart_Sequence_Good
    • sapChart_Sequence_Neutral
    Column chart: Level 1 of the semantic palette
    Column chart: Level 1 of the semantic palette

    Selecting the Correct Combination of Shades (Semantic Palette)

    There are 4 semantic colors with 9 tints and shades for each that are used to maximize flexibility for chart design application teams. For the full set of color options, see Chart Color Palettes – Values and Names.

    The table below gives an example of how to combine shades for bad (negative) values. You can apply the same principle to critical, neutral, and good (positive) values.

    No. of Levels

    Shades to Use

    Color Token Names

    1 level

    sapChart_Sequence_Bad

    2 levels

    sapChart_Sequence_Bad_Plus2
    sapChart_Sequence_Bad

    3 levels

    sapChart_Sequence_Bad_Plus2
    sapChart_Sequence_Bad
    sapChart_Sequence_Bad_Minus2

    4 levels

    sapChart_Sequence_Bad_Plus2
    sapChart_Sequence_Bad_Plus1
    sapChart_Sequence_Bad
    sapChart_Sequence_Bad_Minus1

    5 levels

    sapChart_Sequence_Bad_Plus2
    sapChart_Sequence_Bad_Plus1
    sapChart_Sequence_Bad
    sapChart_Sequence_Bad_Minus1
    sapChart_Sequence_Bad_Minus2

    6 levels

    sapChart_Sequence_Bad_Plus3
    sapChart_Sequence_Bad_Plus2
    sapChart_Sequence_Bad_Plus1
    sapChart_Sequence_Bad
    sapChart_Sequence_Bad_Minus1
    sapChart_Sequence_Bad_Minus2

    Guidelines

    • We recommend reducing the number of colors to five or six shades to visualize each semantic level.
    • It’s important to select the correct combination of shades according to the number of levels you want to express, as in the best-practice example above.

    Sequential Palette

    The sequential color palette is designed to visualize high to low values for different measures.

    Generally speaking, the lighter the shade, the lower the value. The darker the shade, the higher the value.

    Sequential palette
    Sequential palette

    For color names and HEX values, see Chart Color Palettes – Values and Names.

    Using the Sequential Palette

    Here are some ways you can use the sequential palette:

    Distinguish between Past and Present

    These two series use different shades of the same color to distinguish between last year and the current year.

    Column chart: Two series
    Column chart: Two series

    Show Time Gradation

    These stacked bars represent payable aging by country. The different gradations of brightness are used to represent different time periods.

    Stacked bars: Time gradation
    Stacked bars: Time gradation

    Visualize Different Levels

    This bullet chart shows direct costs in a dark shade and indirect costs in a light shade.

    Bullet chart: Different levels
    Bullet chart: Different levels

    This geomap contains two measures. Shades of blue are used to visualize high and low values for one measure while shades of orange are used to visualize high and low values for the other measure.

    Geomap: Multiple levels in two groups
    Geomap: Multiple levels in two groups

    Ranked Values

    In this bubble chart, the size of the bubbles represents future sales deals. The probability of converting these deals is expressed using different shades of blue.

    Bubble chart: Ranked values
    Bubble chart: Ranked values

    Selecting the Correct Combination of Shades (Sequential Palette)

    There are 12 colors with 9 tints and shades for each that are used to maximize flexibility for chart design application teams.

    The table below gives an example of how to combine shades for the default category item color (sapChart_Sequence_1). You can apply the same principle to the other colors in the palette.

    No. of Values

    Shades to Use

    Color Token Names

    1 level

    sapChart_Sequence_1

    2 levels

    sapChart_Sequence_1_Plus2
    sapChart_Sequence_1

    3 levels

    sapChart_Sequence_1_Plus2
    sapChart_Sequence_1
    sapChart_Sequence_1_Minus2

    4 levels

    sapChart_Sequence_1_Plus2
    sapChart_Sequence_1_Plus1
    sapChart_Sequence_1
    sapChart_Sequence_1_Minus1

    5 levels

    sapChart_Sequence_1_Plus2
    sapChart_Sequence_1_Plus1
    sapChart_Sequence_1
    sapChart_Sequence_1_Minus1
    sapChart_Sequence_1_Minus2

    6 levels

    sapChart_Sequence_1_Plus3
    sapChart_Sequence_1_Plus2
    sapChart_Sequence_1_Plus1
    sapChart_Sequence_1
    sapChart_Sequence_1_Minus1
    sapChart_Sequence_1_Minus2

    Guidelines

    • We recommend reducing the number of colors to five or six shades to visualize each semantic level.
    • It’s important to select the correct combination of shades according to the number of levels you want to express, as in the best-practice example above.

    Resources

    Elements and Controls

    Implementation

    SAP Theming Base Content
    Chart tokens and technology-specific variables are provided as part of the GitHub repository of SAP themes.

    SAP Fiori Launchpad

    The SAP Fiori launchpad is a shell that hosts SAP Fiori apps, and provides the apps with services such as navigation, personalization, embedded support, and application configuration.

    The launchpad is the entry point to SAP Fiori apps on mobile and desktop devices. The launchpad displays a home page with tiles. Each tile represents a business application that the user can launch. Tiles can also display live status indicators, such as the number of open tasks. The launchpad is role-based. In other words, the user’s role determines which app tiles are shown.

    This article provides an overview of the main elements of the SAP Fiori launchpad.

    Information
    With SAP UI5 1.75, we introduced SAP Fiori launchpad spaces in parallel to the SAP Fiori launchpad home page. Users can switch between the two with the user actions menu.

    Home Page

    The home page is the heart of the launchpad and the central access point for SAP Fiori apps.

    The page contains tiles, which are used to launch apps and can also show additional application information. Users can personalize the home page by adding, removing, and grouping app tiles. Because the launchpad is role-based, only apps that are relevant for the user’s role profile are shown.

    SAP Fiori launchpad - home page
    SAP Fiori launchpad - home page

    Spaces

    A space and its pages structure the most relevant apps for users with a certain business role. We recommend including only information and apps that users need to begin their daily business.

    Launchpad spaces display tiles that allow users to launch apps. They may also show additional application information. Users can personalize the home page by adding and removing apps, or bundling them in groups. As the launchpad is role-based, only apps that are relevant for the user’s role profile are shown.

    SAP Fiori launchpad - spaces
    SAP Fiori launchpad - spaces

    User Actions Menu

    The user actions menu offers a range of user-specific services. It is accessed by clicking the icon or photo on the right-hand side of the shell bar. The user actions menu is available in all SAP Fiori screens.

    The following options are always available, regardless of the current context:

    • General settings and preferences
    • A catalog of available apps (the app finder)
    • Objects and apps recently visited by the user
    • An About dialog, with details about the SAP Fiori launchpad or app version.
    • A Sign Out option for logging off the SAP Fiori launchpad.

    The following options depend on the current context:

    • On the launchpad home page, the user actions menu contains an Edit Home Page feature for personalizing the content of the home page.
    • For some apps, the user actions menu might also offer app-specific settings.

    In addition, customers can activate additional options for contacting the support team or giving feedback.

    SAP Fiori launchpad - User actions menu
    SAP Fiori launchpad - User actions menu

    Notifications

    Users can access notifications by clicking the Notifications button on the right of the shell bar.

    The notification list displays system-generated notifications from various sources, such as the workflow inbox or chat notifications. Notifications can be prioritized and organized into groups of similar items. From the notification message, users can navigate to the underlying app. Depending on the configuration, notifications can also offer buttons for taking immediate action.

    SAP Fiori launchpad - Notifications
    SAP Fiori launchpad - Notifications

    Components

    Tile

    A tile is a container that represents an app on the SAP Fiori launchpad home page. Tiles are used for launching apps and presenting them on the launchpad.

    For more information, see Tile.

    App Finder

    The app finder is  an “app store”-like interface that lists all the apps that a user might potentially use. The app finder replaces the tile catalog.

    For more information, see App Finder.

    Shell Bar

    The launchpad shell bar is always visible at the top of the screen. It offers access to cross-application functions, such as the enterprise search, SAP CoPilot, the user actions menu, and notifications. It also contains the page title with further app navigation options, as well as a branding area. Once the user opens an app, a Back button appears on the left of the shell bar.

    For more information, see Shell Bar.

    Enterprise Search

    The SAP Fiori launchpad offers an enterprise search function that searches across all apps and business objects.

    For more information, see Enterprise Search.

    Services

    The SAP Fiori launchpad provides a range of central services that can be used by application development teams. For example, the launchpad handles all navigation between apps, and offers controls for gathering user feedback and contacting the support team.

    For more information, see Services.

    System Information Bar

    With SAP S/4HANA Cloud, customers and partners receive a three-system landscape: a development system, a test system, and a production system.

    The system information bar in the development and test systems allows users to quickly recognize the system they are using. The system information bar is located above the shellbar. By default, the system information bar is turned on in all non-production systems.

    For more information, see System Information Bar.

    Overview Page – UI Text Guidelines

    Texts for the overview page include:

    The sections below describe the guidelines for each of these texts.

    Note: These guidelines do not cover the texts for imported elements shown on the card body, such as tables or graphics.

    Basics

    • Ensure that the card texts on the overview page are easy to read. Users need to grasp the information on each card at a glance.
    • Be clear. If necessary, provide context for the information you are showing, such as an explanation or filter criteria.
    • Be consistent. When you work on an overview page, always consider the texts for each card in the context of the overview page as a whole.
    • Bear in mind that other languages may need more space.

    Guidelines by Text Type

    Page Title

    The page title appears on the launchpad tile and in the application header for the overview page itself. Where possible, use the same text for both.

    Guidelines

    • Use a noun-based name (for example, “Procurement Center”).
    • Use title case.
    • Choose a name that best fits your use case and the conventions in your business.
      For example, do your users think in terms of the role, or the business area? What terms are they most familiar with? Look for a name that fits for all the cards you are including. Also consider the terms already used in your application area.
    • Do not use the term “Overview Page”. This is just the name of the floorplan. However, it’s OK to use “Overview” on its own.
    Launchpad tile an overview page
    Launchpad tile an overview page
    Overview page title in the launchpad shell bar
    Overview page title in the launchpad shell bar

    Card Title

    The title is the top element on all cards and is always required. The title for a stack of cards is also used as the heading for the detail view.

    Guidelines

    • Use title case.
    • Be concise. Aim for one-line texts, which are easier to scan. If you need more space, try not to exceed 2 lines.
    Concise title (eyecatcher)
    Concise title (eyecatcher)
    • Don’t overload the title with too much information.
      If the title is short, consider including qualifying information in the title.
      If the title is longer, or the qualifying information is more complex, use a subtitle for the qualifier.
    • Recommended: Use a consistent pattern across all the cards on your overview page.
    Titles can also include qualifiers - if they are not too long
    Titles can also include qualifiers - if they are not too long

    Card Subtitle

    The subtitle is optional. You can use it to qualify the title, offer an explanation, or show a status. The use of the subtitle can differ, depending on the card type.

    Guidelines

    • Use title case.
      Exception: Use sentence style for longer explanations, or statuses involving time periods or numbers.
    • If you have a mixture of subtitles in sentence style and title case, consider changing them all to sentence style.
    Subtitle with simple qualifier
    Subtitle with simple qualifier
    Explantory subtitle (sentence style)
    Explantory subtitle (sentence style)
    Subtitle with relative time period (sentence style)
    Subtitle with relative time period (sentence style)
    • If your subtitle contains multiple qualifiers, separate them with commas.
    Multiple qualifiers
    Multiple qualifiers
    • If you need to qualify amounts (unit, currency), use the following format:
      (<Unit> <Currency>)
    • If the subtitle contains multiple qualifiers, place the currency at the end. Use | to separate the preceding qualifier from the currency. Do not write “in <Currency” (for example, “in EUR”), as this doesn’t translate well in all languages.
    • If you are using both a title and subtitle, ensure that both texts can be translated independently.
    Subtitle with scaling factor and currency
    Subtitle with scaling factor and currency

    Actions

    Actions can appear at the bottom of the quick view card.

    Guidelines

    The action buttons on cards follow the same text conventions as all other action buttons:

    • Use title case.
    • Start with a verb.
    • Keep the text as short as possible.

    Resources

    Want to dive deeper? Follow the links below to find out more about related resources.

    Elements and Controls

    Implementation

    No links

    Map Container

    The map container is a predefined feature set for maps. It fits most use cases and makes it easier for app developers to work with maps.

    If you wish to display a geomap or an analytic map without using the map container features, the app developer can also opt to use the analytic map or geomap control.

    Responsiveness

    The width and height of the map container are defined by the surrounding application layout.

    The map container uses the overflow toolbar control. This control is based on the sap.m.Toolbar and provides overflow when the contents do not fit in the visible area.

    Note: Map container on smartphone displayed menu button instead of list panel icon because of the small screen size.

    Components

    Overview of map container components
    Overview of map container components

    The map container includes the following components:

    • A map (geomap or analytic map)
    • Transparent toolbar containing the following buttons:
      • View switch (optional), such as between geomaps and analytic maps
      • Selection menu (optional)
      • Personalization/settings (optional)
      • Full-screen mode
      • Overflow toolbar (generic)
    • A list panel stack, which can be used for a legend or other application-specific content
    • Navigation tools such as:
      • Measure
      • Scale
      • Zoom in/zoom out, including rectangular zoom
      • Home button

    View Switch (Optional)

    View switches are optional control. This control allows the user to switch between different map types, charts, and table layouts. You should consider using a view switch for accessibility reasons. For example, users with visual impairments might have a hard time working with subtle color differences or specific color gradients, and might prefer switching to a table view instead.

    We recommend using no more than three types of alternate visualization. The segmented button control is used to display the types of visualization available in the view switch, and highlights the type of visualization that is being currently displayed.

    The button control gives the user the option to switch between the geomap, analytic map and image view.
    The button control gives the user the option to switch between the geomap, analytic map and image view.

    Menu for Selection Modes (Optional)

    The menu for selection modes enables the user to switch between the available selection modes: single, rectangular, and lasso. These buttons are optional.

    Selection menu
    Selection menu

    Personalization (Optional)

    A personalization button is provided and can be enabled/disabled by the app developer. The corresponding popover and details need to be implemented by the app developer.

    The personalization/settings button can be used to show or hide a legend and labels, for example.

    Personalization/settings button
    Personalization/settings button

    Full-Screen Mode

    The map container can be viewed on full-screen mode (property: fullScreen). For desktop and tablet, the Full Screen button is always placed at the top right of the transparent toolbar.

    The user can toggle between embedded and full-screen mode via the Maximize Full Screen toggle button. In full-screen mode, the map container occupies the entire width and height. The toolbar replaces the page header bar, and the Minimize icon appears.

    For smartphones, the Full Screen button is disabled as the map container is used in full-screen mode by default.

    Initiate full-screen button
    Initiate full-screen button
    Minimize full-screen button
    Minimize full-screen button

    Overflow (Generic)

    The overflow is activated if there is not enough space on the screen for all the chart bar actions. It is generated automatically.

    When the user clicks the overflow button, a popover appears. In this action sheet, all icon buttons are labelled with text.

    All buttons go into the overflow from right to left.

    Overflow button
    Overflow button

    Prioritization

    You can also prioritize the actions in the toolbar by applying one of five different statuses to them:

    • Always overflow: The action will always move into the overflow.
    • Disappear: This applies to actions that are not very relevant for the user, and which can disappear if space is limited.
    • Low: This applies to actions that the user seldom needs; these actions then move first into the overflow.
    • High: These actions remain visible until all actions that are tagged ‘disappear’, ‘low’, or that are untagged, have moved into the overflow.
    • Never overflow: These actions will always visible in the toolbar.

    All items have equal priority by default. If two items have the same priority, the one on the right overflows first.

    Grouping

    Items can overflow together, even if they are in different positions. Elements that belong to a group should not have ‘always overflow’ or ‘never overflow’ statuses as these priorities force the items to remain either in the toolbar or in the overflow area. When group elements have different statuses, the priority of the group is defined by the highest priority of its elements.

    List Panel Stack (Optional)

    The list panel stack is aligned to the left in the toolbar. It can be used for a legend and other application-specific content. The list panel stack can be collapsed in a way that only the icons of the different list panels will be seen. We recommend using icons that are easy to understand for each panel, as these icons will be the only visible element when the panels are collapsed. The collapsed list panels serve as quick access to the clicked panel icon.

    If you are not using icons for the panels, do not allow the panels to collapse.

    The default width of the list panel stack is auto. We recommend defining a precise width to avoid having the width permanently change according to the content. The list panel stack will remain visible on the map, whereas the toolbar buttons will be hidden.

    As a general rule, avoid using too many panels as too much scrolling will increase the complexity of the application.

    The list panel provides the same features as the standard list item:

    • Grouping
    • Select items
    • Include Icons/color markers or pictures
    • Show counter
    Collapsed list panel stack (desktop)
    Collapsed list panel stack (desktop)
    Expanded list panel stack (desktop)
    Expanded list panel stack (desktop)

    Legend

    We recommend to include the map legend in the list panel. All necessary features for a legend are provided through the list panel stack (see above).

    If your specific use case does not allow you to include the legend in the list panel, you can also use the map legend.

    Navigation Tools

    Home Button

    The map container provides a Home button. Clicking on the Home button leads to the initial zoom position.

    Home button
    Home button

    Rectangular Zoom

    The Rectangular Zoom button can be used to zoom to a specific position. The rectangular zoom is enabled for the compact form factor by default, and disabled for the cozy form factor. For more information on cozy and compact form factors, see content density.

    Rectangular Zoom button
    Rectangular Zoom button

    Zoom In/ Zoom Out

    The map container provides Zoom In ( ) and Zoom Out ( ) icon buttons, which are positioned on the bottom right corner of the map. When the user clicks these buttons, the chart automatically zooms in or out to the most appropriate scale.

    By default, these buttons are enabled.

    Zoom In/Zoom Out button
    Zoom In/Zoom Out button

    Behavior and Interaction

    The buttons have a set priority for the overflow by default. The application developer can change this priority. High-prioritized buttons will overflow last.

    On desktop and tablet devices, the list panel stack is always visible, whereas the transparent toolbar overflows. The navigation control is hidden behind the panel list stack.

    On a smartphone devices, the list panel stack is minimized to a menu button on the top left. The menu icon always remains on the screen, whereas the transparent toolbar buttons overflow. Clicking on the menu button, the list panel stack opens in full-screen mode.

    We generally recommend using either icon buttons or text buttons within the transparent toolbar, but not both. Icons and text should not be combined into one button. Buttons with icon and text only appear in the overflow menu. Buttons are always aligned to the right.

    Guidelines

    • Think carefully about what actions you really need in the transparent map toolbar – do not overload the map toolbar with actions.
    • Think carefully about what content you really need in the panel list stack – do not overload the panel with content.
    • Think carefully about which features make sense on the map if the map is not used in full screen. For example, it wouldn’t make sense for a map to have a list panel stack if it is being featured on a card of an overview page.
    • Use tooltips for switchable content. For example, label icon buttons as “geomap” or “analytic map” in the toolbar.

    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

    Implementation

    No links.

    Choosing the Correct Chart Type

    Charts are used to visually represent how numeric values relate to each other. Therefore, it’s crucial to define the type of relationship you want to illustrate when choosing the correct chart type.

    Ranking

    Rank items from highest to lowest, or vice versa.
    For example: Rank countries by market share.
    Use: Bar chart or column chart

    For more information, see Chart – Ranking.

    Comparison

    Compare values of items in a list that has no particular order.
    For example: Compare revenues in a list of products, or transaction volumes in a list of banks.
    Use: Bar chart, stacked bar chart, bullet chart, heatmap.

    For more information, see Chart – Comparison.

    Variation Over Time

    Show the variation of values over time.
    For example: Show the stock level over time, or expenses by month compared to budget.
    Use: Line chart, column chart, stacked column chart, bullet chart.

    For more information, see Chart – Variation Over Time.

    Part to Whole

    Display the contribution of individual values to the whole.
    For example: Show the percentage of sales attributed to various regions.
    Use: Pie chart, bar chart, line chart, stacked bar chart.

    For more information, see Chart – Part to Whole.

    Deviation

    Show the deviation, difference, or gap between two sets of values.
    For example: Show the deviation between actual revenue and target revenue by product.
    Use: Bar chart, bullet chart, column chart, line chart.

    For more information, see Chart – Deviation.

    Distribution

    Show the distribution within a set of values.
    For example: Show how exam scores are spread or grouped around the median score.
    Use: Bar chart, column chart, stacked column chart, line chart.

    For more information, see Chart – Distribution.

    Correlation

    Show the correlation between two or three sets of values.
    For example: Show how sales revenues are impacted by customer age.
    Use: Scatter chart, bubble chart, bar chart.

    For more information, see Chart – Correlation.

    Cumulation

    Show the accumulation of successive values.
    For example: Show cumulation of stock day by day, or cumulation of revenues and cost for profit and loss.
    Use: Waterfall chart

    For more information, see Cumulation (Waterfall Chart).

    Geographical Values

    Use a map to show the values associated with geographical areas.
    For example: Show revenues by country or region on a map.

    For more information, see maps.

    Recources

    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.

    Smart Link

    Intro

    Like the quick view, the smart link triggers a popover from a text link. This popover shows additional information, such as simple object details, and offers links to related apps for the user to take action. The user can choose which links are shown in the popover by selecting them in a separate dialog.
    The smart link is a smart control that uses metadata annotations to offer user-specific navigation. It analyzes the user’s assigned apps and offers only relevant navigation targets.

    When to Use

    Use the smart link if:

    You want to offer direct navigation to a related app. For example:

    • Navigate from a product list to the app for changing the pricing
    • Navigate from a sales order list to the app that shows a customer’s balance

    You want to show a popover with contextual information or navigation. For example:

    • Offer navigation to multiple related apps
    • Display simple object details

    Do not use the smart link if:

    • You want to display more or complex information about an object. Use the object page or charts instead.
    • Access to metadata is not possible, and only a direct link to a website, document or application is needed. Use the standard link instead.
    • You need to structure information in a deeper hierarchy. Use the quick view or a list drilldown instead.

    Components

    The smart link popover contains the following areas:

    1. The header bar of the smart link popover is only visible on mobile devices (see example image for responsiveness, size S).
    2. The title area contains a title and a subtitle. You can also show the title as a link, which can be used to navigate to the corresponding object or fact sheet. You can use the subtitle to show an object ID, for example.
    3. The content area shows object-related information, such as details about a product or contact information. You can use any UI control, based on what best fits your use case.
    4. The link area offers links to all other apps that are relevant for a user role. The link list includes all semantic objects defined for the app, and can also include additional links defined manually by the application development team. The link area can have two states:

    Link area is empty:
    If no links have been selected for the app, or if there are more than 10 links, the link area is initially empty. Instead, the user sees a Define Links button, which opens a dialog for selecting the links to be shown.

    Links are shown:
    As soon as the link area contains links, the button text changes to More Links. This opens the same selection dialog.

    Only the header bar is mandatory (for mobile devices). All the other sections are optional. For example, you might choose to show only a content area or a only a link area, depending on your use case.

    The areas of the smart link (header bar not shown)
    The areas of the smart link (header bar not shown)

    Behavior and Interaction

    The smart link and its popover are always triggered by clicking a text element that appears as a link. You can place this text element in any list, table, or other container. You can also set the link label individually. Clicking outside the popover closes it. If only one link is offered, and there is no additional information, the smart link control navigates directly to the target without opening the popover.

    If the semantic object annotation is not set, the smart link is rendered as sap.m.Text by default. However, you can also opt to render any other control.

    Link Selection Dialog

    Clicking the More Links or Define Links button opens the Define Link List dialog. There, the user can select the app links to be displayed in the link area. The links offered in the selection list are modifiable semantic objects suggested by the smart link control. The app team can remove links from the selection list, change the link texts, or manually add links to any website or app.

    Exception: Within SAP Fiori elements, the links offered in the Define Link List dialog are generated automatically. App teams cannot adapt the list.

    You can switch off the More Links / Define Links option by setting the property enableAvailableActionsPersonalization to “false”. By default, it is set to “true”.

    Smart Links in a Smart Table

    Within a smart table, the link label of the smart link is set automatically using the semantic object annotation. In other words, you can’t change the description. If there are no navigation targets, the smart link is rendered as sap.m.Text.

    Define link list dialog with a list of application links
    Define link list dialog with a list of application links

    Responsiveness

    The responsiveness of the smart link is based on the responsiveness of the popover that overlays the content.

    On desktop devices, clicking anywhere outside the popover closes it.

    On mobile devices, the smart link opens a full screen dialog with a Close icon ( ) on the top right.

    Size S – On smartphones, the smart link overlays the content
    Size S – On smartphones, the smart link overlays the content
    Sizes M/L/XL - Smart link shown in a table on a desktop device
    Sizes M/L/XL - Smart link shown in a table on a desktop device

    Top Tips

    • Check the related apps you offer carefully. Only display those that are relevant for the user.
    • Use meaningful link names in the link area. Do not use the same link name more than once. If necessary, rename the links to suit your context (for example, “Add Product” instead of “Manage Products”).

    Related Links

    Elements and Controls

    Implementation

    Design-Led Development Process

    SAP is committed to designing role-based applications that address the needs of our end users across all lines of business, tasks, and devices. We believe this is the key to a great user experience (UX). But how do we guarantee a solid and consistent design for our customers and end users? The answer is SAP’s design-led development process.

    Design-led development takes advantage of proven design thinking methods to achieve an optimal user experience. The process spans the entire development lifecycle, is simple and easy to follow, and provides a solid basis for scaling design as a whole. It fosters unity between designers and developers, while ensuring that the needs of the end user are addressed at every step along the way. Learn more about design-led development below. 

    The Phases

    Developing software is much more than just coding. It’s about building the right innovative solutions and putting the user first. That’s why exploring business challenges and innovation opportunities is your starting point. In the discover phase, you seek to understand your end users, their working methods, and their needs in more depth.

    Only then do you move on to the design phase and create the initial prototypes for development. In the delivery phase, the app is implemented and tested. After that, it is ready to run at the customer site.

    Of course, iterations are part of the approach and strongly recommended.

    The design-led development process
    The design-led development process

    It is essential to implement quality checkpoints to ensure that the product comes with the best possible UX. We recommend installing quality checkpoints for each phase. Depending on your setup, you might also consider reviewing related apps together to optimize the overall user experience.

    Find out more about each process phase in the detail sections below:

    Explore
    Discover
    Design
    Deliver
    Run & Scale

    Explore

    In the explore phase, you identify business challenges and innovation opportunities together with your customers and end users. The prioritized innovations then become part of the product roadmap.

    Discover

    Perhaps you already have a good idea of what your customers want and need, and what your end user’s tasks and challenges are. But what you really need is a holistic view of the business roles affected by your apps.

    To get the relevant insights, you will need to visit your customers onsite, speak to everyone involved, and observe users doing their daily work. You should gain a clear understanding of all the business roles involved, their typical tasks and pain points, and the sequence of activities. By the end of the discover phase, you should know which apps need to be developed.

    Take a look at our user research method cards to find the best method for your user research activities.

    Design

    Equipped with the findings from the discover phase, you’re now ready to start the design phase. Ideally, you can brainstorm in a multidisciplinary team, and come up with an initial prototype that you can validate with your end users.

    Applying the SAP Fiori design guidelines during the design process will ensure that you build a consistent SAP Fiori user experience.

    By the end of the design phase you will have a design that is ready to be implemented.

    Deliver

    Development can start once you’ve finished your initial design. During the deliver phase, you may still need to change some aspects of your design to incorporate ongoing user feedback, to optimize the app, or to allow for technical constraints.

    Before you deploy your app, verify that the final implementation and design deliver the intended user experience to the targeted end users. For usability and consistency, also check that the final design and the implementation reflect the SAP Fiori design guidelines.

    By the end of the deliver phase, you will be ready to run at the customer site.

    Run & Scale

    Now the app can be adopted: The system administrator makes the app available to the end users. During the run & deliver phase, you should find out how end users work with the app: Does the app make their work easier? Do they like using it? Do they find all the information they need? Are there any functions missing?

    What you learn from the real-life user experience feeds back into the design-led development process and informs the next iteration of the solution.

    It’s a Team Effort

    Many different people contribute to the development process. Typically, these include:

    • The product owner, an area expert who is usually responsible for the whole family of apps in that area.
    • The user researcher, who drives the end user research and artifact consolidation.
    • The user experience designer, who creates mockups, prototypes, and design specifications.
    • The software developer, who implements the design.
    • The user assistance developer, who works on UI texts, terminology, and user assistance topics.
    • The quality expert, who sets up test activities and consolidates the results.

    These are just the main roles. Depending on how you drive the process, you may need to extend this list.

    Complex Objects – Local Flow (Create, Edit)

    This article describes the local flow for creating and editing items using standard message handling and draft handling.

    If you need the flow for deleting items, see Delete Objects.

    Information

    • If you are not using standard draft handling, show a data loss message whenever the user leaves a changed subpage without saving the data. Also display the data loss message if the user changes data on the main page without saving.
    • If you implement your own draft behavior, use the keep draft dialog.
    • If the items contain only a few fields, you can also use a dialog instead of a subpage. We recommend using the same pattern for creating and editing items.

    Global vs. Local Flow

    Complex objects manage items on subpages. In the local flow, each subpage needs to be saved separately. This differs from the global flow, where only the main page needs to be saved. For more information on when to use each flow, see the flow descriptions with examples.

    The table below summarizes the main differences between the global and local flows on the UI.

    Global Flow

    Local Flow

    Main object Main object must be in edit mode. Main object can be in display or in edit mode.
    Actions in the footer toolbar of the subpage Create item: Add and Cancel
    Edit item: Apply and Cancel
    Create item: Create and Cancel
    Edit item: Save and Cancel
    Message toasts No message toasts are displayed after choosing Add and Apply.
    Instead, an indicator appears in the items table.
    Message toasts are displayed after choosing Create and Save.

    Create Items

    The steps below describe the local flow for creating items on a subpage with the main page in display mode. The flow is the same when the main page is in edit mode.

    Full Screen Layout

    Complex objects - Create items using the local flow
    Complex objects - Create items using the local flow
    1. On the main object page, the user chooses Create in the toolbar for the items table.
      An empty subpage appears with the title New <item> (for example, New Sales Order Item). The footer toolbar contains the finalizing Create action and Cancel.
    2. After entering all the data, the user chooses Create.
      The standard flow navigates back to the main object page and shows a message toast.
      Depending on your use case, you have the following alternatives:

      • You can show the subpage in display mode.
      • You can keep the subpage in edit mode.
      • If the user needs to create several items in succession, you can offer the action Create and Next in the footer toolbar of the subpage. This opens a new, empty subpage.
    3. Choosing Cancel opens a confirmation popover, and the user can opt to discard the draft. In this case, the system navigates back to the main object page.
    Guidelines
    If you offer Create and Next on the subpage, use the following order: Create and Next, Create, Cancel. Only emphasize Create and Next.
    Developer Hint
    If you offer an Create and Next option, add a comment for translators to indicate what “Next” refers to in your app.

    Flexible Column Layout

    In the flexible column layout, the standard flow is as follows:

    • Choosing Create on the subpage closes the subpage column. A message toast is displayed on the main page.
    • Confirming Cancel closes the subpage column.
    • Choosing Create and Next on the subpage opens a new, empty subpage in the subpage column, with a message toast.

    Edit Items

    The steps below describe the local flow for editing items on a subpage with the main page in display mode. The flow is the same when the main page is in edit mode.

    Full Screen Layout

    Complex objects - Edit items using the local flow
    Complex objects - Edit items using the local flow
    1. From the main object page, the user navigates to the details of an item.
      The subpage features a header toolbar with an Edit buttonThe title of the subpage reflects the current item, for example Sales Order Item (10).
      If users need to open the item directly in edit mode, you can offer Edit in the table toolbar or as an inline action.
    2. On the subpage, the user chooses Edit. The subpage changes to edit mode, and the footer toolbar offers the finalizing Save action and Cancel. The title does not change.
    3. After updating all the data, the user chooses Save.
      The standard flow shows the updated item in display mode with a message toast.
      Depending on your use case, you have the following alternatives:

      • You can keep the subpage in edit mode.
      • If the user needs to edit several items in succession, you can offer the action Save and Next in the footer toolbar of the subpage. This opens the subpage for the next item in edit mode.
      • You can show up and down arrows for navigating to the previous or next item in edit mode.
    4. Choosing Cancel opens a confirmation popover and the user can opt to discard the draft. In this case, the system displays the item subpage.
    Guidelines

    • If you offer Save and Next, use the following order: Save and Next, Save, Cancel. Only emphasize Save and Next.
    • Use either Save and Next or the up and down arrows, never both.
    • Choose Save and Next if users need to change one item after the other. Offer the up and down arrows if the user just needs to change a few items and needs to page through the items quickly to reach those that are relevant.

    Developer Hint
    If you offer a Save and Next option, add a comment for translators to indicate what “Next” refers to in your app.

    Flexible Column Layout

    In the flexible column layout, the standard flow is as follows:

    • Choosing Save on the subpage switches the subpage column to display mode. A message toast is displayed on the subpage.
    • Confirming Cancel on the subpage switches the subpage to display mode.
    • Choosing Save and Next on the subpage opens the next item in edit mode in the subpage column.

    Related Links

    Elements and Controls

    Implementation

    Complex Objects – Global Flow (Create, Edit)

    This article describes the global flow for creating and editing items using standard message handling and draft handling.

    If you need the flow for deleting items, see Delete Objects.

    Information

    • If you are not using standard draft handling, show a data loss message whenever the user leaves the entire create/edit flow or the main page without saving the data. This applies to both backward and forward navigation, for example:
      • Back navigation using a breadcrumb, the shell bar, or browser back
      • Forward navigation from the main page to another app

    It does not apply to forward navigation from the main page to a subpage.

    • If you implement your own draft behavior, use the decision dialog.
    • If the items contain only a few fields, you can also use a dialog instead of a subpage. We recommend using the same pattern for creating and editing items.

    Global vs. Local Flow

    Complex objects manage items on subpages. In the global flow, only the main page needs to be saved. This differs from the local flow, where each subpage has to be saved separately. For more information on when to use each flow, see the flow descriptions with examples.

    The table below summarizes the main differences between the global and local flows on the UI.

    Global Flow

    Local Flow

    Main object Main object must be in edit mode. Main object can be in display or in edit mode.
    Actions in the footer toolbar of the subpage Create item: Add and Cancel
    Edit item: Apply and Cancel
    Create item: Create and Cancel
    Edit item: Save and Cancel
    Message toasts No message toasts are displayed after choosing Add and Apply.
    Instead, an indicator appears in the items table.
    Message toasts are displayed after choosing Create and Save.

    Create Items

    The steps below describe the global flow for creating items on a subpage. The main page must be in edit mode.

    Full Screen Layout

    Complex objects - Create items using the global flow
    Complex objects - Create items using the global flow
    1. On the main object page, the user chooses Create in the toolbar for the items table.
      An empty subpage appears with the title New <item> (for example, New Sales Order Item). The footer toolbar contains an Add action and Cancel.
    2. After entering all the data, the user chooses Add.
      The standard flow navigates back to the main object page. The new item is highlighted in the items table.
      Depending on your use case, you have the following alternatives:

      • You can keep the subpage in edit mode. In this case, the title changes to reflect the specific item. For example, Sales Order Item (10).
      • If the user needs to create several items in succession, you can offer the action Add and Next in the footer toolbar of the subpage. This opens a new, empty subpage.
    1. Choosing Cancel opens a confirmation popover and the user can opt to discard the item. In this case, the system navigates back to the main object page.

    The item is only saved to the database when the user chooses Save on the main object page.

    Guidelines
    If you offer Add and Next on the subpage, use the following order: Add and Next, Add, Cancel. Only emphasize Add and Next.
    Developer Hint
    If you offer an Add and Next option, add a comment for translators to indicate what “Next” refers to in your app.

    Flexible Column Layout

    In the flexible column layoutthe standard flow is as follows:

    • Choosing Add on the subpage closes the subpage column. The new item is highlighted in the items table.
    • Confirming Cancel closes the subpage column.
    • Choosing Add and Next on the subpage opens a new, empty subpage in the subpage column.

    Edit Items

    The steps below describe the global flow for editing items on a subpage. The main page must be in edit mode.

    Full Screen Layout

    Complex objects - Edit Items using the global flow
    Complex objects - Edit Items using the global flow
    1. From the main object page, the user navigates to the details of an item.
      The subpage opens in edit mode. The title of the subpage reflects the current item, for example, Sales Order Item (10). The subpage shows a footer toolbar containing the Apply action and Cancel.
    2. After updating all the data, the user chooses Apply.
      The modified item is highlighted in the items table.
      Depending on your use case, you have the following alternatives:

      • You can keep the subpage in edit mode.
      • If the user needs to edit several items in succession, you can offer the action Apply and Next in the footer toolbar of the subpage. This opens the subpage for the next item in edit mode.
      • You can show up and down arrows for navigating to the previous or next item in edit mode.
    3. Choosing Cancel opens a confirmation popover and the user can opt to discard the changes to the item. In this case, the system navigates back to the main object page.

    The item is only updated on the database when the user chooses Save on the main object page.

    Guidelines

    • If you offer Apply and Next, use the following order: Apply and Next, Apply, Cancel. Only emphasize Apply and Next.
    • Use either Apply and Next or the up and down arrows, never both.
    • Offer Apply and Next if users need to change one item after the other. Offer the up and down arrows if the user just needs to change a few items and needs to page through the items quickly to reach those that are relevant.

    Developer Hint
    If you offer an Apply and Next option, add a comment for translators to indicate what “Next” refers to in your app.

    Flexible Column Layout

    In the flexible column layoutthe standard flow is as follows:

    • Choosing Apply on the subpage closes the subpage column. The modified item is highlighted in the items table.
    • Confirming Cancel closes the column subpage.
    • Choosing Apply and Next on the subpage opens the next item in edit mode in the subpage column.

    Message Handling

    On the main page, validation is triggered on focus out and when the user selects Save. On a subpage, validation is triggered on focus out and when the user selects Add or Apply.

    If errors occur, a message popover appears:

    • On the main page, the message popover displays errors coming from the main page and error summaries coming from all related subpages. To help the user find the item and solve the issue, an indicator in the line item of the table shows which subpage contains errors. In addition, the errors in the message popover are grouped by page, tab, and section. For more information about how error messages are grouped, see message popover components.
    • On a subpage, validation only applies for the current subpage. The message popover lists only errors related to this subpage.
    Global flow - Message handling
    Global flow - Message handling

    For more information about messaging, see message handling.

    Related Links

    Elements and Controls

    Implementation

    Object Handling (Create, Edit, Delete)

    In addition to the basic display option, the following actions are available for objects:

    • Create 
      Objects can be created as follows:

      • From scratch
        Most of the examples in this article show how to create objects from scratch.
      • Copy an existing object
        The source object and copy are of the same object type but are not related.
      • With reference to an existing object
        The object can be of another object type, and both objects are related. For example, the user creates a delivery with a reference to the corresponding sales order.
    • Edit
      Objects can be edited at different levels: You can make the complete object editable, or only parts, such as single sections or items.
    • Delete

    The interaction flows for the “create”, “edit”, and “delete” cases depend on the structure of the object.

    Information
    The standard floorplan for managing objects is the object page. The wizard supports create and edit actions, but has no display option. If only a few fields (<=8) need to be managed, you can use a dialog. The content available in display mode can differ from the content in edit mode (for example, the facets in an object page header). 

    Simple vs. Complex Objects

    An object can consist of only one page or several nested pages:

    • Simple object with one page: All information is on just one page (for example, a leave request). Object pages with navigation bars and wizards are also simple objects. In these cases, the content is still managed in one page but is structured using anchors or tabs (object page) or with a progress bar (wizard).
    Simple object with one page in edit mode
    Simple object with one page in edit mode
    • Complex object with nested pages: Information is split between a main page and several subpages (for example, a sales order that lists all sales order items on the main page, and a selected item is managed on a subpage). You can display the object and its pages in either a full screen layout or a flexible column layout 
    Complex object with nested pages in edit mode
    Complex object with nested pages in edit mode

    Simple Objects (1 Page)

    Create

    For the create flow, see Simple Objects (Create, Edit).

    Edit

    For 1-page objects, you can set the entire page to edit mode. If only a few sections are editable, set only these sections to edit mode, or open a dialog for editing. For more information, see Partial Edit.

    TipIf your page contains a table and you need to edit specific fields for many items at once, use the mass edit pattern.   

    Delete

    For the delete flow, see Delete Objects.

    Complex Objects (Nested Pages)

    You can choose between 3 interaction flows for handling objects with nested pages:

    • Partial flow
    • Local flow (only the page a user is working on is locked)
    • Global flow (entire object including subpages is locked)

    You can only use one of these flows for any given object. Do not mix them.

    Use the following criteria to choose the right flow:

    Type The User… When to Use Example

    Partial flow

    • Saves the data for each page section.
      A footer toolbar is not necessary.
    • If only a few values can be edited.  
    An employee profile is managed using an object page floorplan. Many sections are display only, such as company information, salary, and employment contract details.

    An employee can only change personal information, such as their phone number and office location.

    Local flow 

    • Saves data on each page separately (main page and subpages), using the footer toolbar.
    • Without draft handling:
      Gets a message when navigating between pages without saving first.
    • If several users, possibly from different teams, work together on the object.
    • If a user is only responsible for specific parts of the object.
    • If the object contains heterogeneous information (for example, for different object types).
    • If the object is deeply nested.
    • If you don’t want the entire object to be locked when one user is editing.
    A project is managed using an object page floorplan. Subprojects, tasks, vacant positions, and settlement services are managed on subpages.

    The project lead is responsible for managing the overall project. Different subject matter experts are responsible for the specific tasks (filling vacant positions, settlement for business partner services, and so on).

    Global flow 

    • Saves all data with one click in the footer toolbar on the main page (saves changes to the main page and all subpages at once).
    • Can navigate freely between the pages.
    • If a user is responsible for the complete object.
    • If the object contains homogeneous information: the data on the main page and subpages usually refers to the same object.
    A sales rep manages a sales order using an object page floorplan. The sales order items are listed on the main page, and the details of each item are managed on subpages.  

    You can use the mass edit pattern in all flows

    For more information, see Partial EditComplex Objects – Local Flow and Complex Objects – Global Flow.

    Naming Guidelines

    Apply the following naming conventions for the triggering button, finalizing action, title in the shell bar, and the placeholder for newly created objects.

    Action Label of Triggering Button Label of Finalizing Action Title in Shell Bar (example) App Header (example)
    Display Navigation link Purchase Order
    Create 1) Create Create Purchase Order New Purchase Order
    Add 2) Add Add
    Edit Edit Save Purchase Order
    Copy Copy  Create Purchase Order Copy of 123456789
    [ID of copied purchase order]

    For subitems, apply the following naming conventions.

    Action Label of Triggering Button Label of Finalizing Action Title in Shell Bar (example) App Header (example)
    Display Subitems Navigation link Purchase Order Items (1 of 10)
    Create Subitem 1) Create Create Purchase Order Item New Purchase Order Item
    Add Subitem 2) Add Add
    Edit Subitems Edit Save Purchase Order Items (1 of 10)
    Copy Subitem Copy  Create* Purchase Order Item Copy of HT-0189
    [ID of copied purchase order item]

    1) Create: Brand new object that has not yet been created on the database.
    2) Add: Existing object that is being added/assigned.

    For naming examples, see Creating an object or item in the UI text guidelines.

    Dynamic page with header title
    Dynamic page with header title

    Resources

    Elements and Controls

    Implementation

    Cumulation (Waterfall Chart)

    Waterfall charts are used to analyze a cumulative value. They show how the cumulative value changes from an initial state to a final state by representing the accumulation of successive values.

    Examples

    Profit and Loss

    The margin is a cumulative value equal to the sum of all revenues (positive) and all costs (negative).

    Waterfall chart - Profit and loss
    Waterfall chart - Profit and loss

    Inventory over Time

    The stock level is equal to the sum of all incoming stocks (positive) and outgoing stocks (negative).

    Waterfall chart - Stock level over time
    Waterfall chart - Stock level over time

    Chart Types

    The orientation of the waterfall chart (horizontal or vertical) should follow best practices of the business area from which the application is designed.

    Waterfall Chart Without Time Dimension

    If the chart does not represent changes over time, use a horizontal waterfall chart with horizontal bars. This way, you will avoid unnecessarily truncating the category labels.

    Horizontal waterfall chart
    Horizontal waterfall chart

    Waterfall Chart with Time Dimension

    If the chart represents the change of a cumulative value over time, use a vertical waterfall chart with vertical bars, with the horizontal axis representing the temporal dimension.

    For the horizontal axis, you can choose between a categorical axis or a time axis:

    • Choose a categorical axis if you need to display the total and subtotal. But be aware that the dates might be displayed at a 45° angle in the categorical axis, and that you must manage the localization of the date and time by yourself.
    Horizontal waterfall chart with categorical time axis
    Horizontal waterfall chart with categorical time axis
    • Choose the time axis if you do not need to display the total and subtotal. With the time axis, the dates will be correctly displayed in the horizontal axis and correctly localized. Also, with the time axis, the physical spacing between your data points accurately respects the time scale being displayed, as opposed to just rendering all your data points equidistantly.
    Waterfall chart with time axis
    Waterfall chart with time axis
    • With the time axis, you can also display multiple measures in the so-called “periodic waterfall chart”. In the periodic waterfall chart, all measures are cumulated for each period.
    Periodic waterfall chart
    Periodic waterfall chart

    Total and Subtotal

    Warning
    Total and subtotal are not supported when using a time axis.

    The initial and the final values are usually represented by an entire column starting from the zero axis. An intermediate total can be added.

    Waterfall chart with an intermediate total
    Waterfall chart with an intermediate total

    You can also add intermediate subtotals that are the sum of previous values.

    Waterfall chart with an intermediate subtotal
    Waterfall chart with an intermediate subtotal

    Colors

    Default Colors

    By default, the chart use three colors based on the following semantic:
    • Positive values use a color defined by the property: plotArea.dataPoint.color.positive.
    • Negative values use a color defined by the property: plotArea.dataPoint.color.negative
    • Totals use a color defined by the property: plotArea.dataPoint.color.total
    By default, these three colors are:
    • Blue (@sapUiChartPaletteSequentialHue1Light1)
    • Orange (@sapUiChartPaletteSequentialHue2Light1)
    • Gray (@sapUiChartPaletteSequentialNeutral)

    These colors are defined by the sequential palette, but can be customized.

    Waterfall chart with default colors
    Waterfall chart with default colors

    Custom Colors

    You can customize the colors in two ways:
    • Change the colors, or
    • Use your own rules.

    Changing Colors

    The colors color.positive, color.negative and color.total can be changed to any color from the chart palette. The chart will use these three colors based on the rules defined above.

    Example: Positive and negative are blue, and total by gray.

    Waterfall chart with custom colors
    Waterfall chart with custom colors
    Example: Positive are green and negative are red. Total is gray.
    Waterfall chart with semantic colors
    Waterfall chart with semantic colors

    Using your Own Rules

    You can set any color to any bar based on your own rules. To define the rules, use the property dataPointStyle:rules.

    Use dataPointStyle:others to define the colors for all data points that are not covered by the rules. If the color of a data point is not defined, the data point will be displayed with a black color to indicate that no color has been defined.

    Example: Direct costs and indirect costs use different shades of orange from the sequential palette.
    Waterfall chart with colors based on business rules
    Waterfall chart with colors based on business rules

    Resources

    Want to dive deeper? Follow the links below to find out the SAPUI5 implementation.

    Elements and Controls

    Implementation

    Planning Calendar

    The planning calendar allows users to see different appointments at the same time and to create new appointments. It allows the user to display appointments for several objects, such as a team calendar, and compare them to each other.

    Usage

    Use the planning calendar if:

    • You want to compare objects of the same type with each other over a period of time.
    • You require responsive behavior.
    • You have less than 100 lines in the calendar.

    Do not use the planning calendar if:

    • You want to show a calendar for one object and a detailed overview of appointments over a long time interval.
    • You want to show a complex or graphical representation. In this case, please use the Gantt chart.
    • You have more than 100 lines in the calendar. In this case, please use the Gantt chart.

    Responsiveness

    In size S, the control provides pop-in behavior, which allows the user to see as many appointments as possible and to connect them with the corresponding object. If the toolbar contains too many actions for the space available, the overflow icon appears.

    The interval section displaying the hours, days, and months is responsive and shows 12 values in size L, 8 values in size M, and 6 values in size S. You can override this behavior, but you should then check that the responsiveness is still working.

    Planning calendar - Size L
    Planning calendar - Size L
    Planning calendar - Size M
    Planning calendar - Size M
    Planning calendar - Size S
    Planning calendar - Size S

    Types

    You can define what size of interval the calendar should show, and whether multi selection should be possible. Additionally, the row header and the interval appointments are optional.

    The control allows multi-select mode to be shown for the list items. This can be used, for example, to delete multiple objects from the view.

    An app development team must decide whether to show the planning calendar with or without multi-select mode, or whether users should be able to switch between the two modes. Hiding the interval appointments of every object is optional.

    The planning calendar can also be used without a row header. In this case, the row header disappears and only the appointments are visible. It can be used to show the calendar of one object. Note that the control was built mainly to compare time slots of different objects. For this reason, the time axis is shown horizontally and, depending on the interval, the appointments might shrink to smaller size. In this case, the text is cut off rather than truncated.

    Components

    This section describes the various components of the planning calendar.

    Parts of the planning calendar
    Parts of the planning calendar

    The control consists of different parts:

    1. Header
    2. Toolbar
    3. View switch
    4. Navigation
    5. Time strip for hours/days/months
    6. Row header
    7. Row
    8. List item
    9. Interval appointment
    10. Appointment

    1. Header

    The header contains the toolbar and the navigation.

    2. Toolbar

    The toolbar consists of the calendar title (optional) and the toolbar actions, including a default view switch. You can add generic and app-specific actions that are relevant for your use case (such as creating an appointment, search, settings, showing the calendar legend, and so on). Always place actions that affect the entire calendar in the toolbar.

    For more information, check out the toolbar guideline article.

    The generic actions are as follows:

    Search
    Create Appointment
    Add New Contact (icon: add-contact)
    Multi-Select Mode (icon: multi-select)
    Legend (icon: legend)
    Settings (icon: action-settings)
    Full Screen (icon: full-screen/exit-full-screen)

    3. View switch

    The view switch allows the user to switch between different time intervals (calendar views). Depending on the number of available calendar views, the view switch can be a segmented button (four views or less) or a select control (five views or more).

    The 1 Month view shows an entire month. On desktop devices, the 1 Month view always displays an interval of 31 days. When the displayed month is shorter (28, 29, 30 days), days from the following month are displayed. They have a different visual state and serve as navigation to the following month.

    The 1 Month view has an additional style for half-column appointment distribution, which is mainly used to avoid overlapping. The property appointmentRoundWidth can be set to “HalfColumn” or “None” (default). Currently, the width of the appointment is always rounded to 12 hours.
    Note: This property is also applied when the calendar interval type is Days and the view shows more than 20 days.

    On size M and Size S, the 1 Month view is adaptive. It consists of a calendar and a list of appointments for the selected day.

    If you offer the 1 Week view, we strongly recommend displaying a different number of days in the Days view (more or less than seven). Otherwise, the user might be confused, as navigation for the two views differs.

    The default calendar views are Hours, Days, Months, 1 Week, and 1 Month. The app developer can choose which views to include, depending on the use case, and how many values are shown for each view. App developers can change the default number of values shown, but they should then ensure that the app is still responsive. The app developer can also create custom views.

    Relative views

    When you need to display a period that is not connected to a certain time/date, you can map the calendar to relative dates (in contrast to absolute dates, such as, “Week 1”, “Week 2”). For example, when you would like to divide the year into quarters.

    The application developer specifies the names of the intervals in the time strip and the index picker, as well as the size of the interval. The index picker then configures how many days are in one interval. All this happens in the PlanningCalendarView, once the newly created relative property is set to “true”.

    In addition, the application developer sets a minDate in the planning calendar, determining the start date of the relative views.

    4. Navigation

    The navigation area contains back and forward arrows, the Today button, a date interval link, and the time strip. Clicking the Today button takes the user to the period containing the current day. Clicking the date opens a date picker for direct navigation.

    5. Time strip for hours/days/months

    The time strip reflects the selected view, and shows the hours, days or months that are currently visible. The first day of the week can be defined. If not defined, the default is taken from the current user locale.

    In all views that show days (Days, 1 Week, 1 Month), you can display calendar weeks in an extra line below the time strip (property: showWeekNumbers).

    6. Row header

    The row header identifies the object for which the appointments are shown. It pops in if there is not enough space. The row header can contain a picture or icon, a title, and a subtitle.

    You can also add an action on the row header (event: rowHeaderClick).

    7. Row

    The row contains all appointments for an object. You can turn the alternating row coloring on or off. By default, the alternating rows option is turned on.

    8. List item

    The list item contains the row header, row, appointments, and interval appointments. Each row can show different working and non-working days.

    If the users have a specific working schedule, the non-working days can be different on each row. This can be applied not only for weekends, but also for non-working days based on specific schedule differences.

    9. Interval appointment

    Each row can also have interval appointments, which differ from half-sized appointments visually and in that they are always at the top of the row. Interval appointments can be used to show appointments that last for a longer period of time, such as vacations or workshops.

    You can opt to hide the space reserved for interval appointments if no such appointments exist for that time period.

    10. Appointment

    Appointments consist of an icon or picture, a title, and a subtitle. Concurrent appointments are shown one above the other.

    There are four types of appointments:

    • Regular: Displayed in two rows. One-row display is also possible if the appointmentsReducedHeight property is set to “true”.
    • Half-size: Always displayed in one row, shows the title.
    • Large: Always displayed in three rows, also shows the description for each appointment (if available).
    • Automatic: The number of rows is determined automatically.
      Appointment Info Rows
      Title only 1 row
      Title + text
      or:
      Title + description
      2 rows
      Title + text + description 3 rows

    You can define the colors for different appointment types. Appointments can also be set to tentative.

    The control can register a click event on the appointment, but the app development team must define what happens next.

    In the Months view, appointments within the same calendar week are combined to save space. The combined appointment shows the number of appointments in the same week. If an appointment takes place between two calendar weeks (for example, from Sunday to Monday), it is not included in the combined appointments for either calendar week.

    A list of the appointments in a combined appointment can be shown in a popover. However, this must be implemented by the app team. The control only provides the click event.

    If necessary, you can disable combined appointments (property: GroupAppointmentsMode, value: “Expanded”).

    Users can copy and paste appointments to a new position in the planning calendar using keyboard combinations (Ctrl/Cmd + drag and drop to the new position).

    Planning Calendar Legend

    To show the types for days and appointments, the planning calendar uses a specific legend control
    (sap.m.PlanningCalendarLegend).

    Users open the planning calendar legend using a standard legend button in the toolbar ( ). Like all other actions in the toolbar, the app developer must add the legend button explicitly.

    The app team also needs to decide which container to use for the planning calendar legend. We recommend placing the legend in a popover to keep the context. You can also use a dialog, or, if there is sufficient screen real estate, show the legend as dynamic side content.

    The planning calendar legend has two non-collapsible sections containing legend elements. By default, these are called Calendar and Appointments. The app developer can configure the section names using the itemsHeader and appointmentItemsHeader properties. If no elements are available for a section, it is not displayed.

    The Calendar section contains standard legend items: Today, Working Day, Non-Working Day, and Selected (only in the 1-month view on mobile). The app team must ensure that the Selected element is added to the planning calendar legend when the planning calendar is viewed in 1-month mode in a smartphone size. This is not provided by the control. If any of the standard legend items are not needed, you can switch them off (property: standardItems).

    You can also apply colors for special days in the Calendar section. The planning calendar legend does not automatically use the colors defined for special days in the planning calendar – this must be done by the app team.

    Guidelines
    Ensure that colors are used consistently within your product area.

    The Appointments section contains the color values for the available appointment types. The app developer has to define explicitly which color represents which type. The planning calendar legend does not take the color automatically from the planning calendar.

    If combined appointments in the calendar are of the same type (in Months view), they take the color of that type. Combined appointments of different types are marked gray. We also recommend adding the gray color for mixed combined appointments to the Appointments section in the legend.

    Planning calendar legend
    Planning calendar legend
    Developer Hint
    To prevent waiting time, app developers should load the sap.ui.unified library.

    Behavior and Interaction

    To create an appointment, the user must trigger an action by clicking the Create button in the toolbar. You can also configure the control to create a new appointment when the user clicks directly on a row.

    The user can click the appointment to see further details. The app development team must define what kind of information is then shown. For example, clicking an appointment can trigger a popover with detailed information.

    Users can select more than one appointment at a time via Ctrl/Cmd + click. If the multipleAppointmentsSelection property is set to “true”, every appointment that the users click is selected.

    A multi-select toggle can also be provided in the toolbar. This can be used, for example, to select multiple people in order to delete them from the planning calendar.

    Various tooltips can be shown, but you should not use them to show additional information because users cannot access this functionality on touch devices.

    Depending on the current visible interval, appointments might be smaller and the text cut off. The user can click the appointment to see the details.

    View switch

    The user can change the calendar view with the select control (dropdown). For example, to get an overview of a whole year, the user selects the Months view. Which view is most useful depends on the average length of appointments and the use case.

    Today

    The user can trigger this action to go back to the current date/moment.

    Back and forward navigation

    The arrows allow the user to navigate to the next or previous interval.

    Date picker

    The user can open a date picker to select the start time for the visible interval. What is shown initially in the picker differs depending on the view. The current day is marked.

    Snapping Header

    The header area of the planning calendar can remain fixed on top of the screen (property: stickyHeader), which allows users to view calendars with a lot of rows without losing the context.

    Header snaps to top when scrolling down
    Header snaps to top when scrolling down

    Drag and Drop

    Drag and drop can be used to move appointments (to enable Drag and Drop use property: enableAppointmentDragAndDrop). Moving an appointment automatically changes its start and end times (for example, if an appointment is scheduled from 1:00-2:00 PM, the user can drag it and change the time from 2:00-3:00 PM) . When dragged, the appointment is shown as a ghost element on the mouse cursor. Drop target areas are indicated to the user with a placeholder.

    In the “Hours” view, the appointments can be moved to a specific new time, with the placeholder snapping at every 30 minutes. In the “Days” view, the appointment can be moved to a different day. The placeholder indicates the target day. On drop the appointment is moved to that day but keeps its previous start and end hour. The interaction is the same for the “Months” view. The placeholder indicates the target month and, when dropped, the appointment is moved to that month. The start and end hour and start and end day remain the same.

    Appointments can be moved between rows. Note that additional coding may be needed to determine whether all calendar users will be able to perform this action.

    Users can create new appointments by clicking, dragging and releasing on an empty space in the content area. The control also allows users to change the duration of an appointment by clicking and dragging one side of the appointment container. These two options are only available for desktop devices.

    Combined appointments and interval appointments are not draggable.

    Drag and drop is only available on supporting browsers.

    Warning
    To comply with the new WCAG 2.2 accessibility standard, the control must offer an alternative to the drag and drop feature. Provide direct access via keyboard shortcuts, which enables single pointer users to make use of virtual on-screen keyboards. Alternatively, use a popover for appointment information and a dialog for creating appointments. For an example, see Planning Calendar – With Appointments Modification.
    Drag and drop
    Drag and drop

    Guidelines

    Switching the Row Header

    To enable end users to rearrange the planning calendar by switching the row header, you can implement a flexible row header. This is not done by the control and must be implemented by the app development team.

    The list items in the row header can be a value of any attribute of an appointment. The appointment attributes are part of app-specific content, so they should be specified by the app development team. The control does not provide default attributes.

    Our guideline is to use the select control in the place of the calendar title. The select control will contain all the attributes that can serve as the row header. When a different attribute is selected, the calendar is rearranged accordingly. You can also add a counter after the list items to indicate how many appointments fall into a specific group.

    It is also possible to have both the calendar title and select control, in which case you should have first the title and then the select.

    On small screen sizes, use select instead of the calendar title. If you want to keep the calendar title, place select in the overflow menu.

    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