Toolbar Overview

A toolbar enables the user to change the UI or trigger an action.

The table and chart toolbar always appears above the relevant table or chart and has a transparent background. The control is used for key actions that impact entirewhole table or chart. Note that this toolbar scrolls away. In contrast, the footer toolbar has a dark background, appears at the bottom of the page, and remains visible when the user scrolls.

Actions and Layout

Actions can be used as follows:

  • They can be independent of the current selection and not related to a specific item or object.
  • They can be specific to the current object (user selects one item).
  • They can apply to a set of items (user selects two or more items).
  • They can control the settings of the UI, which affects all items.
Types of actions (from left to right): Not related to a specific item/object; actions are specific to the current object; actions apply to a set of (selected) items; actions that control the settings of the UI
Types of actions (from left to right): Not related to a specific item/object; actions are specific to the current object; actions apply to a set of (selected) items; actions that control the settings of the UI

Sort your buttons according to their importance for the user, with the most frequently used action first and the most seldom-used action last. All buttons go into the overflow from right to left, thus ensuring that the most important buttons are the last to be moved into the overflow menu.

The toolbar is mostly used for buttons (with an icon or text) and should be right-aligned.

Responsiveness

To enable responsiveness, use the OverflowToolbar control. Based on the sap.m.Toolbar control, the OverflowToolbar control is a container that provides overflow when its content does not fit in the visible area. Controls that can overflow include the segmented button, select, toggle button, checkbox, input, search field, combo box, and date/time input.

Only allow important actions to shrink and stay outside the overflow. The app team itself must decide which actions it considers to be sufficiently important.

The height of the toolbar changes on desktops (compact mode), tablets, and smartphones (cozy mode). For more information, see the article on content density.

Responsive table toolbar – Size S
Responsive table toolbar – Size S
Responsive table toolbar – Size L
Responsive table toolbar – Size L

Behavior and Interaction

App teams should implement overflow behavior to ensure that all actions can be accessed at any time. Buttons are sorted by usage, with the most frequently used action first (on the left) and the most seldom-used action last (on the right). This ensures that the most important buttons are the last to be moved into the overflow menu. Our general guideline is to use only icon buttons or text buttons. Do not combine an icon and text into one button. Buttons are always right-aligned.

Overflow (Generic)

The overflow should be activated either when there is not enough space for all actions, or if some actions are less important than others. In this case, the app team might decide to have certain actions only appear in the overflow. Furthermore, the app team can also decide that some (important) actions should never be moved into the overflow.

When you implement the overflow toolbar, the overflow behavior is generated automatically. Since release 1.30, new features have been added to the overflow toolbar. The  “” (overflow) button is now a toggle button and can be used to switch the overflow menu on and off.

The user clicks or taps 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, 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

All buttons go into the overflow from right to the left. This ensures that the most important buttons are the last to be moved into the overflow menu.

Prioritization

You can also prioritize the actions in the toolbar by applying one of five statuses:

  • Always overflow: The action always goes into the overflow.
  • Disappear: An action that is not so relevant for the user can disappear if the space is limited (for example, a title).
  • Low: Assign the priority “Low” to an action if the user seldom needs it; this action will overflow first.
  • High: Actions set to “High” remain visible in the toolbar until all lower-priority actions have moved to the overflow. Lower-priority actions are those with the priorities “Disappear” or “Low”, and all unprioritized actions.
  • Never overflow: These actions are always visible in the toolbar.

The priority of each item is high by default. If two items have equal priority, the item on the right side overflows first.

Grouping

Items can overflow together even if they are in different positions. Elements that belong to a group are not allowed to have “always overflow” or “never overflow” as priorities because these priorities force the items to remain either in the toolbar or in the overflow area. When group elements have different priorities, the priority of the group is defined by the maximum priority of its elements.

Table toolbar on smartphone with overflow
Table toolbar on smartphone with overflow
Table toolbar on smartphone with open overflow
Table toolbar on smartphone with open overflow

Table toolbar on desktop without overflow
Table toolbar on desktop without overflow

Styles

The footer toolbar has a dark background, while content toolbars have a transparent style. Buttons are always transparent, and the styles accept, reject, and emphasized are reserved for key actions in the footer toolbar.

For more information, see buttons.

Types

A variety of toolbars exist for different use cases (see examples below). The following types are used:

  • Footer toolbar: Contains only closing and finalizing actions
  • Table toolbar: Toolbar that is positioned above a table and contains table-specific actions
  • Chart toolbar: Toolbar that is positioned above a chart and contains chart-specific actions
  • Infobar: Blue toolbar that indicates what filters have been set, and how many items have been selected
Footer toolbar with emphasized, favorite, flag, and share buttons
Footer toolbar with emphasized, favorite, flag, and share buttons
Table toolbar with title, search, add, sort, and group
Table toolbar with title, search, add, sort, and group
Chart toolbar with perspective switch, view switch, legend, personalize, and full screen
Chart toolbar with perspective switch, view switch, legend, personalize, and full screen
Infobar in filtered master list
Infobar in filtered master list

Guidelines

Order of Buttons

To provide a consistent user experience in each app, we highly recommend using the following alignment for generic actions:

  • All buttons are right-aligned.
  • Text buttons should be grouped together, as should icon buttons.
  • App-specific text-only buttons and generic text-only buttons can be combined and arranged in a sequence defined by the app team. Remember to place the most frequently used actions furthest to the left of the group of buttons. This ensures that these actions are the last to be moved into the overflow menu or are visible at all times.

General Guidelines

  • Do not overload the toolbar with actions.
  • Place actions as close to the corresponding content as possible.
  • Place commands in the same location throughout the app. Each page should contain only the commands that are relevant to that page. If commands are shared between pages, they should be placed as close to the same location as possible on each page so that users can predict where the commands can be found when navigating.
  • Separate navigation and commands. Put commands as close to their corresponding items as possible.
  • Do not put Settings, Logout, or other account management commands in the footer toolbar. All these actions are shown in the shell bar.
  • On pages with tables: Do not put actions in the footer toolbar if the table does not extend very far down. Otherwise, the user may overlook the footer toolbar. Instead, place the action in the table toolbar.
  • Use only icon buttons or text buttons. Do not combine an icon and text into one button. Buttons are always right-aligned.
  • If you want to group buttons us a menu button

UI Text Guidelines

Use tooltips such as Sort, Filter, and Group to label the icons in the footer toolbar. In the case of Sort, Group, and Filter, use the following text for the no selection made option:

  • (Not sorted)

Note: In most cases, (Not sorted) is not necessary. Simply show the default sort settings instead:

  • (Not filtered)
  • (Not grouped)

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

Toolbar Overview

A toolbar enables the user to change the UI or trigger an action.

The table and chart toolbar always appears above the relevant table or chart and has a transparent background. The control is used for key actions that impact the entire table or chart. Note that this toolbar scrolls away. In contrast, the footer toolbar has a dark background, appears at the bottom of the page, and remains visible when the user scrolls.

Information
With SAPUI5 version 1.40, the floating footer toolbar was introduced to improve the legibility and general clarity of the page. It is slightly transparent, showing underlying content. The floating footer property is activated at page level and not at the floating footer itself.

Actions and Layout

Actions can be used as follows:

  • They can be independent of the current selection and not related to a specific item or object.
  • They can be specific to the current object (user selects one item).
  • They can apply to a set of items (user selects two or more items).
  • They can control the settings of the UI, which affects all items.
Types of actions (from left to right): Not related to a specific item/object; actions are specific to the current object; actions apply to a set of (selected) items; actions that control the settings of the UI
Types of actions (from left to right): Not related to a specific item/object; actions are specific to the current object; actions apply to a set of (selected) items; actions that control the settings of the UI

Sort your buttons according to their importance for the user, with the most frequently used action first and the most seldom-used action last. All buttons go into the overflow from right to left, thus ensuring that the most important buttons are the last to be moved into the overflow menu.

The toolbar is mostly used for buttons (with an icon or text) and should be right-aligned.

Responsiveness

To enable responsiveness, use the OverflowToolbar control. Based on the sap.m.Toolbar control, the OverflowToolbar control is a container that provides overflow when its content does not fit in the visible area. Controls that can overflow include the segmented button, select, toggle button, checkbox, input, search field, combo box, and date/time input.

Only allow important actions to shrink and stay outside the overflow. The app team itself must decide which actions it considers to be sufficiently important.

The height of the toolbar changes on desktops (compact mode), tablets, and smartphones (cozy mode). For more information, see the article on content density.

Responsive table toolbar – Size S
Responsive table toolbar – Size S
Responsive table toolbar – SIze L
Responsive table toolbar – SIze L

Behavior and Interaction

App teams should implement overflow behavior to ensure that all actions can be accessed at any time. Buttons are sorted by usage, with the most frequently used action first (on the left) and the most seldom-used action last (on the right). This ensures that the most important buttons are the last to be moved into the overflow menu. Our general guideline is to use only icon buttons or text buttons. Do not combine an icon and text into one button. Buttons are always right-aligned.

Overflow (Generic)

The overflow should be activated either when there is not enough space for all actions, or if some actions are less important than others. In this case, the app team might decide to have certain actions only appear in the overflow. Furthermore, the app team can also decide that some (important) actions should never be moved into the overflow.

When you implement the overflow toolbar, the overflow behavior is generated automatically. Since release 1.30, new features have been added to the overflow toolbar. The  “” (overflow) button is now a toggle button and can be used to switch the overflow menu on and off.

The user clicks or taps 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, 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
  • sap.ui.comp.smartfield.SmartField

All buttons go into the overflow from right to the left. This ensures that the most important buttons are the last to be moved into the overflow menu.

Prioritization

You can also prioritize the actions in the toolbar by applying one of five statuses:

  • Always overflow: The action always goes into the overflow.
  • Disappear: An action that is not so relevant for the user can disappear if the space is limited (for example, a title).
  • Low: Assign the priority “Low” to an action if the user seldom needs it; this action will overflow first.
  • High: Actions set to “High” remain visible in the toolbar until all lower-priority actions have moved to the overflow. Lower-priority actions are those with the priorities “Disappear” or “Low”, and all unprioritized actions.
  • Never overflow: These actions are always visible in the toolbar.

The priority of each item is high by default. If two items have equal priority, the item on the right side overflows first.

Grouping

Items can overflow together even if they are in different positions. Elements that belong to a group are not allowed to have “always overflow” or “never overflow” as priorities because these priorities force the items to remain either in the toolbar or in the overflow area. When group elements have different priorities, the priority of the group is defined by the maximum priority of its elements.

Table toolbar on desktop without overflow
Table toolbar on desktop without overflow
Table toolbar on smartphone with overflow
Table toolbar on smartphone with overflow
Table toolbar on smartphone with open overflow
Table toolbar on smartphone with open overflow

Styles

The footer toolbar has a dark background, while content toolbars have a transparent style. Buttons are always transparent, and the styles accept, reject, and emphasized are reserved for key actions in the footer toolbar.

For more information, see buttons.

Types

A variety of toolbars exist for different use cases (see examples below). The following types are used:

  • Header toolbar: Contains global actions that are important for the whole page
  • Footer toolbar: Contains only closing and finalizing actions
  • Table toolbar: Toolbar that is positioned above a table and contains table-specific actions
  • Chart toolbar: Toolbar that is positioned above a chart and contains chart-specific actions
  • Info bar: Blue toolbar that indicates what filters have been set, and how many items have been selected
Footer toolbar with transparent standard buttons and emphasized
Footer toolbar with transparent standard buttons and emphasized
Table toolbar with title, show items, sort, group and settings
Table toolbar with title, show items, sort, group and settings
Chart toolbar with perspective switch, legend, zoom, full screen, view switch
Chart toolbar with perspective switch, legend, zoom, full screen, view switch
Info bar in filtered master list
Info bar in filtered master list

Guidelines

Order of Buttons

To provide a consistent user experience for each app, we highly recommend using the following alignment for generic actions:

  • All buttons are right-aligned.
  • Text buttons should be grouped together, as should icon buttons.
  • App-specific text-only buttons and generic text-only buttons can be combined and arranged in a sequence defined by the app team. Remember to place the most frequently-used actions furthest to the left of the group of buttons. This ensures that these actions are the last to be moved into the overflow menu or are visible at all times.

General Guidelines

  • Do not overload the toolbar with actions.
  • Place actions as close to the corresponding content as possible.
  • Place commands in the same location throughout the app. Each page should contain only the commands that are relevant to that page. If commands are shared between pages, they should be placed as close to the same location as possible on each page so that users can predict where the commands can be found when navigating.
  • Separate navigation and commands. Place commands as close to their corresponding items as possible.
  • Do not place Settings, Logout, or other account management commands in the footer toolbar. All these actions are shown in the Me Area.
  • Use only icon buttons or text buttons. Do not combine an icon and text into one button. Buttons are always right-aligned.
  • If you want to group buttons, use a menu button.
  • Actions that impact the entire page are placed in the header area.
  • Only closing or finalizing actions are placed in the footer toolbar (for example, Submit or Post).

UI Text Guidelines

Use tooltips such as Sort, Filter, and Group to label the icons in the footer toolbar. In the case of Sort, Group, and Filter, use the following text for the no selection made option:

  • (Not sorted)

Note: In most cases, (Not sorted) is not necessary. Simply show the default sort settings instead:

  • (Not filtered)
  • (Not grouped)

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

Toolbar Overview

A toolbar enables the user to change the UI or trigger an action.

The table and chart toolbar always appears above the relevant table or chart and has a transparent background. The control is used for key actions that impact entirewhole table or chart. Note that this toolbar scrolls away. In contrast, the footer toolbar has a dark background, appears at the bottom of the page, and remains visible when the user scrolls.

Actions and Layout

Actions can be used as follows:

  • They can be independent of the current selection and not related to a specific item or object.
  • They can be specific to the current object (user selects one item).
  • They can apply to a set of items (user selects two or more items).
  • They can control the settings of the UI, which affects all items.
Types of actions (from left to right): Not related to a specific item/object; actions are specific to the current object; actions apply to a set of (selected) items; actions that control the settings of the UI
Types of actions (from left to right): Not related to a specific item/object; actions are specific to the current object; actions apply to a set of (selected) items; actions that control the settings of the UI

Sort your buttons according to their importance for the user, with the most frequently used action first and the most seldom-used action last. All buttons go into the overflow from right to left, thus ensuring that the most important buttons are the last to be moved into the overflow menu.

The toolbar is mostly used for buttons (with an icon or text) and should be right-aligned.

Responsiveness

In order to enable responsiveness, use the OverflowToolbar control. It is a container based on sap.m.Toolbar that provides overflow when its content does not fit in the visible area. At the moment only buttons can move into the overflow; all other controls can shrink.

Only allow important actions to shrink and stay outside of the overflow, since truncated text on infrequently used actions is not helpful for the user. This has to be done by the app itself.

The height of the toolbar changes on desktop (compact mode), tablet, and smartphone (cozy mode).

Responsive table toolbar (Tablet)
Responsive table toolbar (Tablet)
Responsive table toolbar (Phone)
Responsive table toolbar (Phone)

Behavior and Interaction

App teams should implement overflow behavior to ensure that all actions can be accessed at any time. Buttons are sorted by usage, with the most frequently used action first (on the left) and the most seldom-used action last (on the right). This ensures that the most important buttons are the last to be moved into the overflow menu. Our general guideline is to use only icon buttons or text buttons. Do not combine an icon and text into one button. Buttons are always right-aligned.

Overflow (Generic)

The overflow should be activated either when there is not enough space for all actions, or if some actions are less important than others. In this case, the app team might decide to have certain actions only appear in the overflow. Furthermore, the app team can also decide that some (important) actions should never be moved into the overflow.

  • By implementing the overflow toolbar, the overflow behavior is generated automatically.
  • Only buttons can move into the overflow.
  • An action sheet opens by clicking on the overflow button. In this action sheet, all text buttons are displayed without an icon, and all icon buttons are labeled with text.
  • All buttons go from right to the left into the overflow. This ensures that the most important buttons go last into the overflow.
Table toolbar on desktop without overflow
Table toolbar on desktop without overflow
Table toolbar on desktop or tablet with overflow
Table toolbar on desktop or tablet with overflow
Table toolbar on smartphone with overflow
Table toolbar on smartphone with overflow

Styles

The footer toolbar has a dark background, while content toolbars have a transparent style. Buttons are always transparent, and the styles accept, reject, and emphasized are reserved for key actions in the footer toolbar.

For more information, see buttons.

Types

A variety of toolbars exist for different use cases (see examples below). The following types are used:

  • Footer toolbar: Contains only closing and finalizing actions
  • Table toolbar: Toolbar that is positioned above a table and contains table-specific actions
  • Chart toolbar: Toolbar that is positioned above a chart and contains chart-specific actions
  • Infobar: Blue toolbar that indicates what filters have been set, and how many items have been selected
Footer toolbar with emphasized, favorite, flag, and share buttons
Footer toolbar with emphasized, favorite, flag, and share buttons
Table toolbar with title, search, add, sort, and group
Table toolbar with title, search, add, sort, and group
Chart toolbar with perspective switch, view switch, legend, personalize, and full screen
Chart toolbar with perspective switch, view switch, legend, personalize, and full screen
Infobar in filtered master list
Infobar in filtered master list

Guidelines

Order of Buttons

To provide a consistent user experience in each app, we highly recommend using the following alignment for generic actions:

  • All buttons are right-aligned.
  • Text buttons should be grouped together, as should icon buttons.
  • App-specific text-only buttons and generic text-only buttons can be combined and arranged in a sequence defined by the app team. Remember to place the most frequently used actions furthest to the left of the group of buttons. This ensures that these actions are the last to be moved into the overflow menu or are visible at all times.

General Guidelines

  • Do not overload the toolbar with actions.
  • Place actions as close to the corresponding content as possible.
  • Place commands in the same location throughout the app. Each page should contain only the commands that are relevant to that page. If commands are shared between pages, they should be placed as close to the same location as possible on each page so that users can predict where the commands can be found when navigating.
  • Separate navigation and commands. Put commands as close to their corresponding items as possible.
  • Do not put Settings, Logout, or other account management commands in the footer toolbar. All these actions are shown in the shell bar.
  • On pages with tables: Do not put actions in the footer toolbar if the table does not extend very far down. Otherwise, the user may overlook the footer toolbar. Instead, place the action in the table toolbar.
  • Use only icon buttons or text buttons. Do not combine an icon and text into one button. Buttons are always right-aligned.
  • If you want to group buttons us a menu button

UI Text Guidelines

Use tooltips such as Sort, Filter, and Group to label the icons in the footer toolbar. In the case of Sort, Group, and Filter, use the following text for the no selection made option:

  • (Not sorted)

Note: In most cases, (Not sorted) is not necessary. Simply show the default sort settings instead:

  • (Not filtered)
  • (Not grouped)

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

Toolbar Overview

A toolbar enables the user to change the UI or trigger an action.

The table and chart toolbar always appears above the relevant table or chart and has a transparent background. The control is used for key actions that impact entirewhole table or chart. Note that this toolbar scrolls away. In contrast, the footer toolbar has a dark background, appears at the bottom of the page, and remains visible when the user scrolls.

Actions and Layout

Actions can be used as follows:

  • They can be independent of the current selection and not related to a specific item or object.
  • They can be specific to the current object (user selects one item).
  • They can apply to a set of items (user selects two or more items).
  • They can control the settings of the UI, which affects all items.
Types of actions (from left to right): Not related to a specific item/object; actions are specific to the current object; actions apply to a set of (selected) items; actions that control the settings of the UI
Types of actions (from left to right): Not related to a specific item/object; actions are specific to the current object; actions apply to a set of (selected) items; actions that control the settings of the UI

Sort your buttons according to their importance for the user, with the most frequently used action first and the most seldom-used action last. All buttons go into the overflow from right to left, thus ensuring that the most important buttons are the last to be moved into the overflow menu.

The toolbar is mostly used for buttons (with an icon or text) and should be right-aligned.

Responsiveness

To enable responsiveness, use the OverflowToolbar control. Based on the sap.m.Toolbar control, the OverflowToolbar control is a container that provides overflow when its content does not fit in the visible area. Controls that can overflow include the segmented button, select, toggle button, checkbox, input, search field, combo box, and date/time input.

Only allow important actions to shrink and stay outside the overflow. The app team itself must decide which actions it considers to be sufficiently important.

The height of the toolbar changes on desktops (compact mode), tablets, and smartphones (cozy mode). For more information, see the article on content density.

Responsive table toolbar – Size S
Responsive table toolbar – Size S
Responsive table toolbar – Size L
Responsive table toolbar – Size L

Behavior and Interaction

App teams should implement overflow behavior to ensure that all actions can be accessed at any time. Buttons are sorted by usage, with the most frequently used action first (on the left) and the most seldom-used action last (on the right). This ensures that the most important buttons are the last to be moved into the overflow menu. Our general guideline is to use only icon buttons or text buttons. Do not combine an icon and text into one button. Buttons are always right-aligned.

Overflow (Generic)

The overflow should be activated either when there is not enough space for all actions, or if some actions are less important than others. In this case, the app team might decide to have certain actions only appear in the overflow. Furthermore, the app team can also decide that some (important) actions should never be moved into the overflow.

When you implement the overflow toolbar, the overflow behavior is generated automatically. Since release 1.30, new features have been added to the overflow toolbar. The  “” (overflow) button is now a toggle button and can be used to switch the overflow menu on and off.

The user clicks or taps 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, 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

All buttons go into the overflow from right to the left. This ensures that the most important buttons are the last to be moved into the overflow menu.

Prioritization

You can also prioritize the actions in the toolbar by applying one of five statuses:

  • Always overflow: The action always goes into the overflow.
  • Disappear: An action that is not so relevant for the user can disappear if the space is limited (for example, a title).
  • Low: Assign the priority “Low” to an action if the user seldom needs it; this action will overflow first.
  • High: Actions set to “High” remain visible in the toolbar until all lower-priority actions have moved to the overflow. Lower-priority actions are those with the priorities “Disappear” or “Low”, and all unprioritized actions.
  • Never overflow: These actions are always visible in the toolbar.

The priority of each item is high by default. If two items have equal priority, the item on the right side overflows first.

Grouping

Items can overflow together even if they are in different positions. Elements that belong to a group are not allowed to have “always overflow” or “never overflow” as priorities because these priorities force the items to remain either in the toolbar or in the overflow area. When group elements have different priorities, the priority of the group is defined by the maximum priority of its elements.

Table toolbar on smartphone with overflow
Table toolbar on smartphone with overflow
Table toolbar on smartphone with open overflow
Table toolbar on smartphone with open overflow

Table toolbar on desktop without overflow
Table toolbar on desktop without overflow

Styles

The footer toolbar has a dark background, while content toolbars have a transparent style. Buttons are always transparent, and the styles accept, reject, and emphasized are reserved for key actions in the footer toolbar.

For more information, see buttons.

Types

A variety of toolbars exist for different use cases (see examples below). The following types are used:

  • Footer toolbar: Contains only closing and finalizing actions
  • Table toolbar: Toolbar that is positioned above a table and contains table-specific actions
  • Chart toolbar: Toolbar that is positioned above a chart and contains chart-specific actions
  • Infobar: Blue toolbar that indicates what filters have been set, and how many items have been selected
Footer toolbar with emphasized, favorite, flag, and share buttons
Footer toolbar with emphasized, favorite, flag, and share buttons
Table toolbar with title, search, add, sort, and group
Table toolbar with title, search, add, sort, and group
Chart toolbar with perspective switch, view switch, legend, personalize, and full screen
Chart toolbar with perspective switch, view switch, legend, personalize, and full screen
Infobar in filtered master list
Infobar in filtered master list

Guidelines

Order of Buttons

To provide a consistent user experience in each app, we highly recommend using the following alignment for generic actions:

  • All buttons are right-aligned.
  • Text buttons should be grouped together, as should icon buttons.
  • App-specific text-only buttons and generic text-only buttons can be combined and arranged in a sequence defined by the app team. Remember to place the most frequently used actions furthest to the left of the group of buttons. This ensures that these actions are the last to be moved into the overflow menu or are visible at all times.

General Guidelines

  • Do not overload the toolbar with actions.
  • Place actions as close to the corresponding content as possible.
  • Place commands in the same location throughout the app. Each page should contain only the commands that are relevant to that page. If commands are shared between pages, they should be placed as close to the same location as possible on each page so that users can predict where the commands can be found when navigating.
  • Separate navigation and commands. Put commands as close to their corresponding items as possible.
  • Do not put Settings, Logout, or other account management commands in the footer toolbar. All these actions are shown in the shell bar.
  • On pages with tables: Do not put actions in the footer toolbar if the table does not extend very far down. Otherwise, the user may overlook the footer toolbar. Instead, place the action in the table toolbar.
  • Use only icon buttons or text buttons. Do not combine an icon and text into one button. Buttons are always right-aligned.
  • If you want to group buttons us a menu button

UI Text Guidelines

Use tooltips such as Sort, Filter, and Group to label the icons in the footer toolbar. In the case of Sort, Group, and Filter, use the following text for the no selection made option:

  • (Not sorted)

Note: In most cases, (Not sorted) is not necessary. Simply show the default sort settings instead:

  • (Not filtered)
  • (Not grouped)

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

Responsive Table

The responsive table is the default table in SAP Fiori. It contains a set of line items and is fully responsive. Depending on the scenario, users can also navigate from the line items to further details.

A line item contains several data points sorted into columns. A data point refers to a unit of information, such as a number, a text, a unit of measurement, and so on, which can be used to form the content of a tableform or other control. One data point is usually displayed by a control, such as a text, object status, or input field. A control can display more than one data point, for example, by concatenating text.

In contrast to traditional tables, a “cell” of the responsive table is not limited to displaying only one control, and therefore a single cell can present far more than one data point.

Usage

Use the responsive table if:

  • You need a table. The responsive table is the default table in SAP Fiori.
  • You need to use various controls inside a line item, such as micro charts, for example. In contrast, the analytical table supports only a very limited set of controls.
  • The focus lies on working on line items, not on cells. The responsive table is optimized for viewing complete items on all devices.
  • Selecting one or more items is a main use case and details are needed to choose the correct item.
  • Line items are independent of each other and no operation across columns is needed.
  • You want to have only one implementation for all devices. As the name suggests, the responsive table is responsive.

Do not use the responsive table if:

  • The main use case is to select one item from a very small number of items, without viewing additional details. In this case, a select or combo box might be more appropriate.
  • The main use case is to select one item from several items, with the possibility of viewing only a few details per item. In this case, a list might be more appropriate. Pay attention to the layout of the list item to ensure that it has a pleasant appearance. The master list is a good example of a list use case.
  • The cell level and the spatial relationship between cells is more important than the line item. In this case, use the analytical table or grid table. Examples include spreadsheet analyses and waterfall charts. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • You are working on more than 1,000 rows. In this case, the analytical table and the grid table are easier to handle and provide better performance. In contrast to the responsive table, the architecture of the analytical table and of the grid table is optimized for handling large numbers of items. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • Comparing items is a major use case. In this case, the analytical table or grid table might or might not be more appropriate. Each cell contains only one data point. In contrast, the responsive table has more flexibility in terms of line items, including the ability to add more data points per cell and also the pop-in function. Both make comparisons more difficult. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • Data needs to be structured in a hierarchical manner. In this case, a tree table might be more appropriate. Although the analytical table can have several grouping levels, it is not as flexible when nodes at several levels contain children. Note that neither the tree table nor the analytical table are fully responsive. You will need to take an adaptive approach by offering an additional UI for tablets.
  • You need an overview of a large amount of data. In this case, use a chart.
  • You just need it for layout reasons. In this case, use a layout container such as a horizontal layout or a vertical layout instead.
  • You need read-only or editable field-value pairs. In this case, use a form instead. The responsive table is not optimized for form-like input navigation.
Don't
Don't: Do not use a responsive table as a form
Don't: Do not use a responsive table as a form

See the table overview to decide which SAP Fiori table is most suitable for your needs.

Responsiveness

The responsiveness of a responsive table is optimized for viewing one line item at a time with no or only vertical scrolling, irrespective of the display width.

On smartphones, only the most important data remains in the one-column or two-column table, while all other data is moved to the space between two item rows, known as the “pop-in area”. In this area, data of the corresponding cell is provided as a label, or value pair, which is defined by the column header. The pop-in area itself is responsive, so labels can be shown next to or above the corresponding data.

The responsive table displayed on a smartphone
The responsive table displayed on a smartphone
The responsive table displayed on a tablet
The responsive table displayed on a tablet
The responsive table displayed in compact mode on a desktop computer
The responsive table displayed in compact mode on a desktop computer

To ensure responsiveness, you must configure each column. Depending on the screen width (in pixels), the column needs to know which of the following responses is required:

  • Stay in the table layout.
  • Move to the pop-in (sap.m.Column, with the properties: demandPopin, minScreenWidth, popinHAlign, popinDisplay).
  • Hide.

Since you have to define this for each column, you can also handle more than one column at a single breakpoint, such as moving three columns to the pop-in area at once.

Each of the three device types has a predefined value for the screen width. However, you will get better results if you offer more breakpoints by using pixel values instead of the predefined values.

For the smallest screen width, keep the following information in the table layout:

  • The identifier of the line item
  • The key attribute

The examples in the following tables help to illustrate this:

A typical responsive table.

A typical responsive table
A typical responsive table

Hide the information column for a screen width smaller than 570 px:

Hiding the information column
Hiding the information column

Move the column “vendor” to the pop-in area for a screen width smaller than 460 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the vendor column to the pop-in area
Moving the vendor column to the pop-in area

Move the column “limit” to the pop-in for a screen width smaller than 350 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the limit column to the pop-in area
Moving the limit column to the pop-in area

Move the column “price” to the pop-in area for a screen width smaller than 270 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the price column to the pop-in area
Moving the price column to the pop-in area

If you still need to support smaller screens, values can be moved below the corresponding labels inside the pop-in area. In this examples this happens for a screen width smaller than 220 px (sap.m.Column, property: popinDisplay):

Pop-in area: moving the data below the labels
Pop-in area: moving the data below the labels

Layout

The optional title bar contains the title of the responsive table, an item counter, the variant management, and the toolbar.

The filter info bar appears when the responsive table is filtered, and it shows information on the filter settings.

The column header shows the label for each column.

The collection of items, or rows, occupies the main part of the responsive table.

You can add aggregation information (such as totals) to the footer.

A More button can be shown if you do not want all items to be loaded at the start (known as “lazy loading”). Ideally, you should use scrolling to load more items instead of choosing the More button.

Schematic visualization of the responsive table
Schematic visualization of the responsive table

Components

The title bar consists of a toolbar.
The toolbar can contain entry points for the view settings dialog and the table personalization dialog, as well as view switches in the form of a segmented button, and buttons for AddEdit, and other actions.
Beneath the toolbar, display a filter info bar (which itself is a special toolbar) if the responsive table is filtered.
To format data as part of items, apply the guidelines for formatting data. Controls commonly used inside items are the object identifier and the object number. For more information about these, please see object display components.

Behavior and Interaction

The responsive table is quite flexible in regards to its content.

Table Level

Scroll

The height of the table is defined by the numbers of items it contains. It does not have a scroll container on its own, but is scrolled together with the app.

Same table, different number of items
Same table, different number of items

Merge Duplicates

To simulate the behavior of row spanning, you can merge cells of consecutive rows inside a column automatically if they contain the same value (sap.m.Column, properties: mergeDuplicates, mergeFunctionName).

Use the merge feature if you expect the column to contain duplicate entries, and it makes sense to group them. In the example screenshot, the Supplier, Product, and Dimensions columns reflect a hierarchical structure: Suppliers have products, which in turn have dimensions. Because suppliers typically have multiple products, merging duplicate entries for the supplier column makes the table easier to read. Note, however, that when the user sorts the table by another field, the hierarchy changes and the merged items are regrouped accordingly.

Do not use the merge feature if duplicate entries are not part of the design. If consecutive table rows happen to have the same values at runtime, this alone isn’t a valid reason to group them.

Supplier column merges duplicates in consecutive rows
Supplier column merges duplicates in consecutive rows

Select

A responsive table can have one of the following selection types (sap.m.Table/ sap.m.ListBase, property: mode):

  • None: Items cannot be selected (sap.m.ListMode.None).
    Beware: Line items can, nevertheless, use the sap.m.ListType “navigation” which allows click handling on specific line items. This should only be used when the click triggers a navigation to a corresponding line item details page.
  • Single select master: One item of the responsive table can be selected. To select an item, the whole row can be clicked. Single select master does not add any visual indication and can therefore not be differentiated from none-selection tables. For single selection, this it the preferred mode. (sap.m.ListMode.SingleSelectMaster)
  • Single select left: One item of the responsive table can be selected. For this, the responsive table provides radio buttons on the left side of each line item. Use this selection mode only if clicking on the row shoud trigger something else, such as navigation. Ideally, always keep one item selected, even in initial state (sap.m.ListMode.SingleSelectLeft).
  • Multi-select: Allows the selection of one or more items. For this, the responsive table provides checkboxes on the left side of each line item. Select All works via a checkbox on the left of the column header. Select All (de-)selects all items which the user can reach via scrolling (sap.m.ListMode.MultiSelect). With multiselection, responsive tables avoid having checkboxes in the first column.
Responsive table without selectable items
Responsive table without selectable items
Single-selection
Single-selection
SIngle-selection with radio buttons. Use only if row clicks are used for something else, such as for navigation.
SIngle-selection with radio buttons. Use only if row clicks are used for something else, such as for navigation.
Multiselection
Multiselection

Group

For grouping items, a group header is displayed (sap.m.GroupHeaderLisItem). The group header is not interactive.

Group headers
Group headers

Show Aggregations

For showing aggregations (such astotals), use the table footer (sap.m.Column, aggregation: footer).

Do not show aggregations in “growing” mode. It is not clear, if an aggregation will only aggregate the items loaded into the front end, or all items.

Table footer displays aggregated total
Table footer displays aggregated total

Load Items

To show more than 200 items, use the “growing” mode (sap.m.Table/ sap.m.ListBase, properties: growing, growingThreshold, growingScrollToLoad, growingTriggerText). The growing mode allows the user to load only the first few items. Additional items are only loaded (and rendered) on request, which improves performance. The “request” can either be done via scrolling (preferred), or by clicking the More button.

If using the More button, show the number of already loaded items and the total number items below the text More, if possible.

Do not show more than 1,000 items overall, even in growing mode.

Do not show aggregations if the growing mode is used. Also, do not display an item count on the table toolbar if growing mode is used. Use the count on the More button instead.

OK: more button; nevertheless, scrolling is preferred
OK: more button; nevertheless, scrolling is preferred

Line Item Level

Delete Single Item Rows

To delete single item rows, use the table in the mode “delete” (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.Delete). This adds Delete buttons to each line item. Clicking this button triggers the deletion of the corresponding line item.

Do not use this mode if deleting multiple lines at once is the preferred use case.

Delete is a mode of the responsive table and can therefore not be used together with single selection or multiselection.

Responsive table in
Responsive table in "delete" mode

Navigate

Because the controls inside line items are handled by the corresponding control behaviors, clicking on an interactive control within a line item does not trigger the navigation event.

To allow navigation from a line item, set sap.m.ListType to “navigation” within the corresponding item (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Navigation). This will create indicator at the end of the line (“>”) and the entire line item will become clickable. Clicking on the line triggers the navigation event. Use this to navigate to a new page containing line item details. In rare cases, you can also use the navigation mode for category navigation without navigating to another page.

If no navigation is possible, set sap.m.ListType to “inactive”.

Navigation is a list item type and can therefore not be used together with “edit”, or in combination with click events for the entire item (“active”).

Navigation indicator
Navigation indicator

Edit Line Items

To allow editing a line item details page, set sap.m.ListType to “detail” within the corresponding item (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Detail or sap.m.ListType.DetailAndActive). This will create an Edit button at the end of the line. Clicking the button triggers the edit event. Use this event to switch the corresponding line item to edit mode.

Edit is a list item type and can therefore not be used together with “navigation” or in combination with click events for the entire item (“active”).

Edit button
Edit button

Click an Item

Items as a whole can be clickable. An event is fired by clicking on the item (anywhere where there is no interactive control inside the item). Apps can react on the event, such as by opening a dialog(sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Active or sap.m.ListType.DetailAndActive).

Active elements do not have a visual indication and can therefore not be differentiated from non-active elements.

Active is a list item type and can therefore not be used together with “navigation” or “edit”. In addition, “active” uses the whole item as a clickable area and therefore cannot be used together with a single-selection table.

Active element
Active element

Cell Level

Showing Information

In contrast to traditional tables (such as the analytical table or the tree table), a cell can contain more than just one line of text.

Several lines of text within one cell
Several lines of text within one cell

Add controls

Aside from textual elements, you can also add any control to a table cell.

Controls inside cells
Controls inside cells
Any control can be placed inside cells
Any control can be placed inside cells

A cell can contain more than one control and more than one data point.

Due to the View Settings dialog, you can sort, filter, and group by each of these data points.

Several controls per cell
Several controls per cell

Guidelines

Table Title

Implement the table title by using a toolbar control.

Use a table title if the title of a responsive table is not indicated in the surrounding area. Do not use a table title if it would just repeat text that is already above the responsive table.

Use a table title if you need the table toolbar. To avoid repeating text, feel free to use generic text as a table title, such as Items.

If you use a table title, be sure to include one of the following:

Table title
Table title
  • Or an item count using the following format: Items (Number of Items). For example, Items (2). You can combine an item count with variant management.
  • Do not use an item count together with “growing mode”.
Table title with item count
Table title with item count

Loading Data

To indicate that the table is currently loading items, use the busy state. (sap.m.Table, property: busy). Do not show any items or text. As soon as the data is loaded, remove the busy state and show all items.

Table in busy state while loading data
Table in busy state while loading data

Columns – Best Practices

Minimize the number of columns:

  • On a smartphone, use only one or two columns, depending on the content.
  • On a tablet or desktop, use up to three columns if the responsive table is shown in the details area of a split-screen layout. Use up to four columns if using the full screen width, depending on the content.

If the responsive table does not fit on the screen width:

  • Hide columns to reduce the width of the table.
  • Use pop-in areas to show the whole content by increasing the height of the line items (sap.m.Column, properties: demandPopin, minScreenWidth).

At the smallest size, keep the following information in the table layout:

  • The column that identifies the line item
  • The column that contains the key attribute

If both of these do not fit on the respective screen width, keep just the column with the line item identifier in the tabular layout.

The responsive table assigns the same width to each column by default. It is recommended that you overwrite this default to provide optimal space for your content (sap.m.Column, property: width).

Optimize column width for its initial content (sap.m.Column, property: width). If the content is dynamic, optimize column width for typical content.

If you need more columns than those that fit on a tablet screen, which is usually five, to fulfill 80% of your main use cases, offer an option to add, remove, and rearrange columns via the table personalization dialog. Before doing so, try to reduce the number of columns, for example, by using several lines per column or by utilizing the pop-in function. See the cheat sheet for an example.

Column Headers – Best Practices

Within the column header, provide a label for each column (sap.m.Column, aggregation: header). The column header label is reused as a label in the pop-in area.

Exception: If the column does not pop in, you can leave out the column header label as long as at least one column still has a column header label.

Use controls that wrap, for example, text (with wrapping enabled). Do not use controls that truncate, such as labels.

Do
Do: wrap column headers
Do: wrap column headers
Don't
Do not: truncate column headers
Do not: truncate column headers

Column headers (sap.m.Column, aggregation: header) usually contain links or text-based controls.

Column headers can also contain other kinds of SAP Fiori controls. However, the column header cannot be aligned vertically, making it difficult to use many controls in the column header. Using other kinds of controls also creates problems with pop-in behavior and could thus lead to accessibility issues. Therefore, exercise caution when using them in a column header.

Accepted: Link as column header text (used rarely)
Accepted: Link as column header text (used rarely)
Accepted if responsiveness is taken into account: Text plus search field
Accepted if responsiveness is taken into account: Text plus search field

Content Alignment

For alignment of cell content, follow the guidelines below (sap.m.Column, properties: halgin, valign, sap.m.ColumnListItem, property: VAlign). Align the column header horizontally according to the cells’ content.

Left-align: text, IDs, phone numbers, URLs, passwords, and email addresses.

Left-alignment of text
Left-alignment of text

Right-align: numbers and amounts, except IDs, to ensure comparability of such figures.

Right-alignment of numbers
Right-alignment of numbers

Right-align: dates and times (to ensure comparability for most formats and locales).

Right-alignment of dates
Right-alignment of dates

In general, center one-word status information and icons:

If there is an icon and text, or if the status contains more than two words in the English language, left-align the entire status column.

Center-alignment of one-word texts
Center-alignment of one-word texts

Vertical alignment:

Top-align where possible to facilitate reading the content on one line.

Do not use top-alignment if it results in a peculiar layout. This usually happens when controls that need more vertical space are combined with text-only controls, such as input fields. In this case, try center-alignment instead and fine tune it until the layout fits.

Do
Do: use top-alignment where possible
Do: use top-alignment where possible
Don't
Do not: rigidly use top alignment if it does not make sense
Do not: rigidly use top alignment if it does not make sense

Content Formatting

The responsive table provides flexibility, including multiline cells, by enabling every control to be put into a cell.

As a key identifier of an item, use an object identifier. Show the key identifier in the first column. For more information, see object display components.

If the screen width is small, do not hide this column or move it to the pop-in area.

Object identifier
Object identifier

Strings with IDs: If the responsive table contains more single-line data, show the ID in brackets after the corresponding string.

This minimizes the line height.

For items with a small line height, place the ID in brackets after the corresponding string
For items with a small line height, place the ID in brackets after the corresponding string

Strings with IDs: If line height is already large, show the ID below the corresponding string. Use the object identifier to do so.

For items with a large line height, place the ID below the corresponding string
For items with a large line height, place the ID below the corresponding string

For status information, use semantic colors on the foreground elements.

For status information on text: If the status is actionable, add a transparent icon button next to the text.

Semantic colors on text
Semantic colors on text

Avoid truncation. Use controls that wrap the text.

For example, use text instead of a label.

Do
Do: wrap text
Do: wrap text
Don't
Do not: truncate text
Do not: truncate text

For editable content, use input fields and other interactive controls within the table cells. If you need edit mode, change your text controls, such as labels, text, and links, to input fields or other appropriate controls as soon as you switch to edit mode, but not before.

You can do this by changing the control or, in more complex cases, by exchanging the whole responsive table.

Interactive controls – In line
Interactive controls – In line

If there is no value for a cell, leave it blank. Do not display text as N/A.

Leave empty fields blank
Leave empty fields blank

Numbering items:

  • If the item number has four digits/letters or less and is equally important as the corresponding description, concatenate the item number with the description and show it in one column.
  • If the item number has five digits/letters or more, or if it is more important than the corresponding description, for example, when no description is available, use a separate column for the item number.
  • If the item number is more like an ID in regards to its description, use ID formatting, like Description (ID).
For short numbers, add the item number to the description
For short numbers, add the item number to the description

Try not to display an empty responsive table. If there is no way around this, provide instructions on how to fill the table with data (sap.m.Table/ sap.m.ListBase, properties: showNoData, noDataText).

Provide meaningful instructions
Provide meaningful instructions

Item States

To show that an item is unread, use the corresponding flag (sap.m.Table, property: showUnread, sap.m.ColumnListItem/ sap.m.ListItemBase, property: unread). This shows most of the content in bold font.

An unread item
An unread item

To show that an item has been modified, for example, within the global edit flow, add the string (Modified) at the bottom of the column that identifies the line item.

A modified item
A modified item

To show that a modified item has an error, for example, within the global edit flow, add the string (Contains errors) at the bottom of the column that identifies the line item. Use an object status control with the error state for it (sap.m.ObjectStatus, property: state, value: sap.ui.core.ValueState.Error).

A modified item with an error
A modified item with an error

To show that an item is locked, use a transparent-style button with the corresponding icon and the text Locked by [name] at the bottom of the identifying column. The user can click or tap the button to open a quick view of the person.

A locked item
A locked item

To show that an item is in a draft state, use a transparent-style button with the text Draft at the bottom of the identifying column. The user can click or tap the button to open a popover showing the timestamp of the last change.

Item in draft state
Item in draft state

Show only one state at any one time.

Numbers and Units

Show the unit of measurement together with the number within the item rows.

Do not put the unit in the column header. Do not use an additional column to show the unit of measurement. This is also valid for prices.

Unit of mesaurement – In line
Unit of mesaurement – In line

For numbers with units, show the correct formatting by using the object number control.

Object number
Object number

For the most important number with its unit, show the correct formatting by using the object number control and the emphasized flag.
Exception: If all numbers are of equal importance, emphasize none of them.

If the screen width is small, do not hide this column or move it to the pop-in area.
Exception: If the column containing the object identifier and the column containing the key attribute do not fit together on the screen, move the column containing the key attribute to the pop-in area.

Object number (emphasized)
Object number (emphasized)

Actions

To trigger actions on multiple items, use a multiselection table (sap.m.Table, property: mode, value: sap.m.ListMode.MultiSelect):

  • Offer the corresponding actions in the footer toolbar if the responsive table is the only area on the screen where actions can be applied. This has the advantage that the actions on the footer toolbar are fixed on the screen and you cannot scroll them away.
  • In all other cases, show the actions on the table toolbar.

Do not offer action triggering on multiple items if the table is expected to have fewer than 10 items in most cases.

To trigger actions on a single item only (sap.m.Table, property: mode, value: sap.m.ListMode.SingleSelectMaster):

  • Offer the corresponding actions in the footer toolbar if the responsive table is the only area on the screen to which actions can be applied. This has the advantage that the actions on the footer toolbar are fixed on the screen and cannot be scrolled away.
  • In other cases, show the actions on the table toolbar.
  • In rare cases, show the actions within the line item. Since these actions are repeated in every line and thus use a lot of screen real estate, only do this for one or two actions at most. In this case, show the action trigger near the content to which it belongs. Do not add a specific column for actions, but instead use transparent-style buttons. An exception to this is if the action trigger belongs to a link.
OK: Place actions near to the objects to which they belong
OK: Place actions near to the objects to which they belong

The following actions on single items must always be in-line:

Delete: Use “Delete” table mode (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.Delete). This places a Delete button at the end of each row.

Delete button
Delete button

Navigation: Use the “Navigation” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Navigation). This places a Navigation indicator at the end of each row.

Use this to navigate to a new page containing line item details. In rare cases, you can also use this for navigation within the table without navigating to another page.

Navigation indicator
Navigation indicator

Edit: Use the “Detail” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Detail). This places an Edit icon at the end of each row.

Edit button
Edit button

From these three actions (delete, navigation, and edit), you can combine delete and edit, or delete and navigation.

Edit and navigation cannot be combined.

To trigger actions that are independent of the selection, show the actions on the table toolbar. Examples of such actions are add, edit (in the sense of changing the whole table to edit mode), sort, filter, group (or view settings), and table personalization.

To trigger a default action on the whole line item, use the “Active” or “DetailAndActive” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Active).

Active items trigger an event when clicked, which can be handled by apps, for example, to open a dialog. Clicks on interactive controls within the item do not trigger the event, but are handled by the interactive control.

Do not use this for navigation, to switch the line item to an edit state, or to delete the item.

Active can be combined with edit and delete, but not with navigation. Do not combine active with single selection.

When you add an item, add the row:

  • Beneath the last item if there are 10 items or less overall, or if you rarely add an item. Scroll the screen if necessary to ensure that the new item remains visible.
  • As the first item if there are more than 10 items overall, or if you add an item quite frequently.

When you add items, ignore the sort, filter, and group settings when the item is added. As soon as the responsive table is sorted, filtered, and grouped again, the new item is handled accordingly, but not before.

Editable Content

For editable content, use input fields and any other interactive controls within the table cells that meet your input needs.

All SAPUI5 controls can be used.

If you need edit mode, change your text controls, such as label, text, and link, to input fields, or other appropriate controls as soon as you switch to edit mode, but not before.

You can do this by exchanging the control or, in more complex cases, by exchanging the whole responsive table.

For mass editing items:

  • Provide multiselection (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.MultiSelect).
  • Provide an Edit button.
  • If several items are selected, choosing the Edit button opens a dialog in which the user edits the corresponding fields for all selected items.

This is similar to mass editing in the split screen app.

View Settings: Sort, Filter, and Group

Sort, filter, and/or group settings are handled in the view settings dialog. This dialog can provide any combination of these three settings, including just one setting, such as sort only.

  • If sorting, filtering, and/or grouping are a common use case in your app, offer one, two, or all three of the corresponding features in one or more view settings dialogs. Note: Do not offer these features if the table is expected to have only a small number of entries (up to 20 in most cases).
  • If filtering is a main use case, do not offer filtering in the view settings dialog. Use the filter bar instead.

To trigger the view settings dialog, provide several buttons, one for each of these view settings. Each button opens a view settings dialog that contains only the relevant page.

You should always use only the view settings you really need. For example, do not offer grouping if it does not support your use case well.

Using the view settings dialog allows you to define several sort, filter, and/or group settings per column. Thus, you can sort, filter, and/or group a column with several data points independently by each data point.

Several triggers for the different view settings (sort, filter, group)
Several triggers for the different view settings (sort, filter, group)

To display the current filter state, use the info bar below the table title. A click on the info bar opens the view settings dialog on the filter page.

Show the info bar only if the filter settings are not shown somewhere else. For example: Do not show the info bar for settings taken in the filter bar or in a select placed in the table toolbar.

If the info bar is shown, provide an option to reset all corresponding filters on the info bar.

Filtered table
Filtered table

To display the current group state, group headers are shown.

On the group header, show the following text (sap.m.GroupHeaderListItem, property: title):

[Label of the grouped column]: [Grouping Value]

Grouped table
Grouped table

Persist the view settings. When a user reopens the app, show the analytical table with the same sort, filter, and group settings as last defined by this user.

Personalization

To add, remove, or rearrange columns, use the table personalization dialog. Trigger the dialog via a button in the table toolbar.

Offer personalization if you need more columns than those that fit on a tablet screen, which is usually five, to fulfill 80% of your main use cases. Before doing so, try to reduce the number of columns, for example, by using several lines per column or by utilizing the pop-in function. See the cheat sheet for an example.

View settings and table personalization icons
View settings and table personalization icons

Persist the column layout settings. When a user reopens the app, show the responsive table with the same column layout as last defined by this user.

Properties

sap.m.Table

The following additional properties are available for the responsive table:

  • The property: fixedLayout defines the algorithm the control uses to define column width. Setting it to “false” would perform automatic calculations for the column width, based on the longest non-breakable content. You should always set it to “true” for performance reasons. Exceptions are permissible if the table has only a few columns on a large screen width and fewer than 10 rows are displayed.
  • The property: backgroundDesign defines the background on which items are rendered. Use the default value.
  • The property: showOverlay provides an overlay on the whole table, which prevents use of the responsive table. This is used within the list report floorplan to mark the table as outdated after filter settings have been changed but the new filter settings have not yet been applied. Do not use it in other cases.
  • The property: insert adds a margin on all sides of the responsive table.
  • The property: headerText is a simple way to set the table title if you just need a title. However, do not use any of the following:
    • A separate toolbar
    • variantManagement
    • headerToolbar aggregation
  • The property: headerDesign affects the appearance of the header if the theme supports it. Leave the default value as it is.
  • The property: footerText adds a small additional row below the table footer or last item. This row can contain text only. Do not use this property.
  • The property: width defines the width of the whole table.
  • The property: includeItemInSelection uses a click on the whole line item to select the corresponding item if the responsive table is in a selection mode. This competes with other settings like “Navigation” or “Active” and should therefore not be used.
  • The property: enableBusyIndicator automatically shows a busy indicator while data is loaded. (In contrast to the property: busy, where the application can control when the table is set to busy state and when not)
  • The property: modeAnimationOn does not have any effect. Do not use it.
  • The property: showSeparators allows you to show all, none, or some separators. The default setting, which is to show all separators, is to be used.
  • The property: swipeDirection allows you to define the direction in which to swipe if additional actions are hidden behind a table row. This works only on touch devices. Do not use this property.
  • The property: rememberSelections leaves items selected even if they are not currently visible, for example, through filtering. If this behavior is not wanted, set the flag to “false”, but you should do so only in exceptional cases.
  • The property: busy sets the table to a busy state. While in busy state, the whole table cannot be used and items cannot be read due to an overlay.
  • The property: busyIndicatorDelay defines the time after which a busy state is shown after the responsive table has been set to this state. Use the default value.
  • The property: visible shows the table (“true”) or hides it (“false”).
  • The property: tooltip does not have an effect. Do not use it.

sap.m.Column

The following additional properties are available for sap.m.Column:

  • The property: width defines the width of the column in all units allowed by HTML, such as em, rem, %, and px.
  • The property: styleClass is used if you need to change the visual design of a column. Do not use this, but use the default style instead.
  • The property: visible shows or hides the column.
  • The property: tooltip does not have an effect. Do not use it.

sap.m.ColumnListItem

The following additional properties are available for sap.m.ColumnListItem:

  • The property: selected allows an item to be selected programmatically.
  • The property: counter does not have any effect. Do not use it.
  • Do not use the property: busy.
  • Do not use the property: busyIndicatorDelay.
  • The property: visible shows or hides the item.
  • The property: tooltip adds a tooltip to a whole row. The tooltip is only shown on mouse interaction. It will not work on tablets or smartphones. Do not use it.

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

Responsive Table

The responsive table is the default table in SAP Fiori. It contains a set of line items and is fully responsive. Depending on the scenario, users can also navigate from the line items to further details.

Usage

Use the responsive table if:

  • You need a table. The responsive table is the default table in SAP Fiori.
  • You need to use various controls inside a line item, such as micro charts, for example. In contrast, the analytical table supports only a very limited set of controls.
  • The focus lies on working on line items, not on cells. The responsive table is optimized for viewing complete items on all devices.
  • Selecting one or more items is a main use case and details are needed to choose the correct item.
  • Line items are independent of each other and no operation across columns is needed.
  • You want to have only one implementation for all devices. As the name suggests, the responsive table is responsive.

Do not use the responsive table if:

  • The main use case is to select one item from a very small number of items, without viewing additional details. In this case, a select or combo box might be more appropriate.
  • The main use case is to select one item from several items, with the possibility of viewing only a few details per item. In this case, a list might be more appropriate. Pay attention to the layout of the list item to ensure that it has a pleasant appearance. The master list is a good example of a list use case.
  • The cell level and the spatial relationship between cells is more important than the line item. In this case, use the analytical table or grid table. Examples include spreadsheet analyses and waterfall charts. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • You are working on more than 1,000 rows. In this case, the analytical table and the grid table are easier to handle and provide better performance. In contrast to the responsive table, the architecture of the analytical table and of the grid table is optimized for handling large numbers of items. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • Comparing items is a major use case. In this case, the analytical table or grid table might or might not be more appropriate. Each cell contains only one data point. In contrast, the responsive table has more flexibility in terms of line items, including the ability to add more data points per cell and also the pop-in function. Both make comparisons more difficult. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • Data needs to be structured in a hierarchical manner. In this case, a tree table might be more appropriate. Although the analytical table can have several grouping levels, it is not as flexible when nodes at several levels contain children. Note that neither the tree table nor the analytical table are fully responsive. You will need to take an adaptive approach by offering an additional UI for tablets.
  • You need an overview of a large amount of data. In this case, use a chart.
  • You just need it for layout reasons. In this case, use a layout container such as a horizontal layout or a vertical layout instead.
  • You need read-only or editable field-value pairs. In this case, use a form instead. The responsive table is not optimized for form-like input navigation.
Don't
Don't: Do not use a responsive table as a form
Don't: Do not use a responsive table as a form

See the table overview to decide which SAP Fiori table is most suitable for your needs.

Responsiveness

The responsiveness of a responsive table is optimized for viewing one line item at a time with no or only vertical scrolling, irrespective of the display width.

On smartphones, only the most important data remains in the one-column or two-column table, while all other data is moved to the space between two item rows, known as the “pop-in area”. In this area, data of the corresponding cell is provided as a label, or value pair, which is defined by the column header. The pop-in area itself is responsive, so labels can be shown next to or above the corresponding data.

The responsive table displayed on a smartphone
The responsive table displayed on a smartphone
The responsive table displayed on a tablet
The responsive table displayed on a tablet
The responsive table displayed in compact mode on a desktop computer
The responsive table displayed in compact mode on a desktop computer

To ensure responsiveness, you must configure each column. Depending on the screen width (in pixels), the column needs to know which of the following responses is required:

  • Stay in the table layout.
  • Move to the pop-in (sap.m.Column, with the properties: demandPopin, minScreenWidth, popinHAlign, popinDisplay).
  • Hide.

Since you have to define this for each column, you can also handle more than one column at a single breakpoint, such as moving three columns to the pop-in area at once.

Each of the three device types has a predefined value for the screen width. However, you will get better results if you offer more breakpoints by using pixel values instead of the predefined values.

For the smallest screen width, keep the following information in the table layout:

  • The identifier of the line item
  • The key attribute

The examples in the following tables help to illustrate this:

A typical responsive table.

A typical responsive table
A typical responsive table

Hide the information column for a screen width smaller than 570 px:

Hiding the information column
Hiding the information column

Move the column “vendor” to the pop-in area for a screen width smaller than 460 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the vendor column to the pop-in area
Moving the vendor column to the pop-in area

Move the column “limit” to the pop-in for a screen width smaller than 350 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the limit column to the pop-in area
Moving the limit column to the pop-in area

Move the column “price” to the pop-in area for a screen width smaller than 270 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the price column to the pop-in area
Moving the price column to the pop-in area

If you still need to support smaller screens, values can be moved below the corresponding labels inside the pop-in area. In this examples this happens for a screen width smaller than 220 px (sap.m.Column, property: popinDisplay):

Pop-in area: moving the data below the labels
Pop-in area: moving the data below the labels

Layout

The optional title bar contains the title of the responsive table, an item counter, the variant management, and the toolbar.

The filter info bar appears when the responsive table is filtered, and it shows information on the filter settings.

The column header shows the label for each column.

The collection of items, or rows, occupies the main part of the responsive table.

You can add aggregation information (such as totals) to the footer.

A More button can be shown if you do not want all items to be loaded at the start (known as “lazy loading”). Ideally, you should use scrolling to load more items instead of choosing the More button.

Schematic visualization of the responsive table
Schematic visualization of the responsive table

Components

The title bar consists of a toolbar.
The toolbar can contain entry points for the view settings dialog and the table personalization dialog, as well as view switches in the form of a segmented button, and buttons for AddEdit, and other actions.
Beneath the toolbar, display a filter info bar (which itself is a special toolbar) if the responsive table is filtered.
To format data as part of items, apply the guidelines for formatting data. Controls commonly used inside items are the object identifier and the object number. For more information about these, please see object display components.

Behavior and Interaction

The responsive table is quite flexible in regards to its content.

Table Level

Scroll

The height of the table is defined by the numbers of items it contains. It does not have a scroll container on its own, but is scrolled together with the app.

Same table, different number of items
Same table, different number of items

Merge Duplicates

To simulate the behavior of row spanning, you can merge cells of consecutive rows inside a column automatically if they contain the same value (sap.m.Column, properties: mergeDuplicates, mergeFunctionName).

Use the merge feature if you expect the column to contain duplicate entries, and it makes sense to group them. In the example screenshot, the Supplier, Product, and Dimensions columns reflect a hierarchical structure: Suppliers have products, which in turn have dimensions. Because suppliers typically have multiple products, merging duplicate entries for the supplier column makes the table easier to read. Note, however, that when the user sorts the table by another field, the hierarchy changes and the merged items are regrouped accordingly.

Do not use the merge feature if duplicate entries are not part of the design. If consecutive table rows happen to have the same values at runtime, this alone isn’t a valid reason to group them.

Supplier column merges duplicates in consecutive rows
Supplier column merges duplicates in consecutive rows

Select

A responsive table can have one of the following selection types (sap.m.Table/ sap.m.ListBase, property: mode):

  • None: Items cannot be selected (sap.m.ListMode.None).
    Beware: Line items can, nevertheless, use the sap.m.ListType “navigation” which allows click handling on specific line items. This should only be used when the click triggers a navigation to a corresponding line item details page.
  • Single select master: One item of the responsive table can be selected. To select an item, the whole row can be clicked. Single select master does not add any visual indication and can therefore not be differentiated from none-selection tables. For single selection, this it the preferred mode. (sap.m.ListMode.SingleSelectMaster)
  • Single select left: One item of the responsive table can be selected. For this, the responsive table provides radio buttons on the left side of each line item. Use this selection mode only if clicking on the row shoud trigger something else, such as navigation. Ideally, always keep one item selected, even in initial state (sap.m.ListMode.SingleSelectLeft).
  • Multi-select: Allows the selection of one or more items. For this, the responsive table provides checkboxes on the left side of each line item. Select All works via a checkbox on the left of the column header. Select All (de-)selects all items which the user can reach via scrolling (sap.m.ListMode.MultiSelect). With multiselection, responsive tables avoid having checkboxes in the first column.
Responsive table without selectable items
Responsive table without selectable items
Single-selection
Single-selection
SIngle-selection with radio buttons. Use only if row clicks are used for something else, such as for navigation.
SIngle-selection with radio buttons. Use only if row clicks are used for something else, such as for navigation.
Multiselection
Multiselection

Group

For grouping items, a group header is displayed (sap.m.GroupHeaderLisItem). The group header is not interactive.

Group headers
Group headers

Show Aggregations

For showing aggregations (such astotals), use the table footer (sap.m.Column, aggregation: footer).

Do not show aggregations in “growing” mode. It is not clear, if an aggregation will only aggregate the items loaded into the front end, or all items.

Table footer displays aggregated total
Table footer displays aggregated total

Load Items

To show more than 200 items, use the “growing” mode (sap.m.Table/ sap.m.ListBase, properties: growing, growingThreshold, growingScrollToLoad, growingTriggerText). The growing mode allows the user to load only the first few items. Additional items are only loaded (and rendered) on request, which improves performance. The “request” can either be done via scrolling (preferred), or by clicking the More button.

If using the More button, show the number of already loaded items and the total number items below the text More, if possible.

Do not show more than 1,000 items overall, even in growing mode.

Do not show aggregations if the growing mode is used. Also, do not display an item count on the table toolbar if growing mode is used. Use the count on the More button instead.

OK: more button; nevertheless, scrolling is preferred
OK: more button; nevertheless, scrolling is preferred

Line Item Level

Delete Single Item Rows

To delete single item rows, use the table in the mode “delete” (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.Delete). This adds Delete buttons to each line item. Clicking this button triggers the deletion of the corresponding line item.

Do not use this mode if deleting multiple lines at once is the preferred use case.

Delete is a mode of the responsive table and can therefore not be used together with single selection or multiselection.

Responsive table in
Responsive table in "delete" mode

Navigate

Because the controls inside line items are handled by the corresponding control behaviors, clicking on an interactive control within a line item does not trigger the navigation event.

To allow navigation from a line item, set sap.m.ListType to “navigation” within the corresponding item (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Navigation). This will create indicator at the end of the line (“>”) and the entire line item will become clickable. Clicking on the line triggers the navigation event. Use this to navigate to a new page containing line item details. In rare cases, you can also use the navigation mode for category navigation without navigating to another page.

If no navigation is possible, set sap.m.ListType to “inactive”.

Navigation is a list item type and can therefore not be used together with “edit”, or in combination with click events for the entire item (“active”).

Navigation indicator
Navigation indicator

Edit Line Items

To allow editing a line item details page, set sap.m.ListType to “detail” within the corresponding item (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Detail or sap.m.ListType.DetailAndActive). This will create an Edit button at the end of the line. Clicking the button triggers the edit event. Use this event to switch the corresponding line item to edit mode.

Edit is a list item type and can therefore not be used together with “navigation” or in combination with click events for the entire item (“active”).

Edit button
Edit button

Click an Item

Items as a whole can be clickable. An event is fired by clicking on the item (anywhere where there is no interactive control inside the item). Apps can react on the event, such as by opening a dialog(sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Active or sap.m.ListType.DetailAndActive).

Active elements do not have a visual indication and can therefore not be differentiated from non-active elements.

Active is a list item type and can therefore not be used together with “navigation” or “edit”. In addition, “active” uses the whole item as a clickable area and therefore cannot be used together with a single-selection table.

Active element
Active element

Cell Level

Showing Information

In contrast to traditional tables (such as the analytical table or the tree table), a cell can contain more than just one line of text.

Several lines of text within one cell
Several lines of text within one cell

Add controls

Aside from textual elements, you can also add any control to a table cell.

Controls inside cells
Controls inside cells
Any control can be placed inside cells
Any control can be placed inside cells

A cell can contain more than one control and more than one data point.

Due to the View Settings dialog, you can sort, filter, and group by each of these data points.

Several controls per cell
Several controls per cell

Guidelines

Table Title

Implement the table title by using a toolbar control.

Use a table title if the title of a responsive table is not indicated in the surrounding area. Do not use a table title if it would just repeat text that is already above the responsive table.

Use a table title if you need the table toolbar. To avoid repeating text, feel free to use generic text as a table title, such as Items.

If you use a table title, be sure to include one of the following:

Table title
Table title
  • Or an item count using the following format: Items (Number of Items). For example, Items: 2. You can combine an item count with variant management.
  • Do not use an item count together with “growing mode”.
Table title with item count
Table title with item count

Loading Data

To indicate that the table is currently loading items, use the busy state. (sap.m.Table, property: busy). Do not show any items or text. As soon as the data is loaded, remove the busy state and show all items.

Table in busy state while loading data
Table in busy state while loading data

Columns – Best Practices

Minimize the number of columns:

  • On a smartphone, use only one or two columns, depending on the content.
  • On a tablet or desktop, use up to three columns if the responsive table is shown in the details area of a split-screen layout. Use up to four columns if using the full screen width, depending on the content.

If the responsive table does not fit on the screen width:

  • Hide columns to reduce the width of the table.
  • Use pop-in areas to show the whole content by increasing the height of the line items (sap.m.Column, properties: demandPopin, minScreenWidth).

At the smallest size, keep the following information in the table layout:

  • The column that identifies the line item
  • The column that contains the key attribute

If both of these do not fit on the respective screen width, keep just the column with the line item identifier in the tabular layout.

The responsive table assigns the same width to each column by default. It is recommended that you overwrite this default to provide optimal space for your content (sap.m.Column, property: width).

Optimize column width for its initial content (sap.m.Column, property: width). If the content is dynamic, optimize column width for typical content.

If you need more columns than those that fit on a tablet screen, which is usually five, to fulfill 80% of your main use cases, offer an option to add, remove, and rearrange columns via the table personalization dialog. Before doing so, try to reduce the number of columns, for example, by using several lines per column or by utilizing the pop-in function. See the cheat sheet for an example.

Column Headers – Best Practices

Within the column header, provide a label for each column (sap.m.Column, aggregation: header). The column header label is reused as a label in the pop-in area.

Exception: If the column does not pop in, you can leave out the column header label as long as at least one column still has a column header label.

Use controls that wrap, for example, text. Do not use controls that truncate, such as labels.

Do
Do: wrap column headers
Do: wrap column headers
Don't
Do not: truncate column headers
Do not: truncate column headers

Column headers (sap.m.Column, aggregation: header) usually contain links or text-based controls.

Column headers can also contain other kinds of SAP Fiori controls. However, the column header cannot be aligned vertically, making it difficult to use many controls in the column header. Using other kinds of controls also creates problems with pop-in behavior and could thus lead to accessibility issues. Therefore, exercise caution when using them in a column header.

Accepted: Link as column header text (used rarely)
Accepted: Link as column header text (used rarely)

Content Alignment

For alignment of cell content, follow the guidelines below (sap.m.Column, properties: halgin, valign, sap.m.ColumnListItem, property: VAlign). Align the column header horizontally according to the cells’ content.

Left-align: text, IDs, phone numbers, URLs, passwords, and email addresses.

Left-alignment of text
Left-alignment of text

Right-align: numbers and amounts, except IDs, to ensure comparability of such figures.

Right-alignment of numbers
Right-alignment of numbers

Right-align: dates and times (to ensure comparability for most formats and locales).

Right-alignment of dates
Right-alignment of dates

In general, center one-word status information and icons:

If there is an icon and text, or if the status contains more than two words in the English language, left-align the entire status column.

Center-alignment of one-word texts
Center-alignment of one-word texts

Vertical alignment:

Top-align where possible to facilitate reading the content on one line.

Do not use top-alignment if it results in a peculiar layout. This usually happens when controls that need more vertical space are combined with text-only controls, such as input fields. In this case, try center-alignment instead and fine tune it until the layout fits.

Do
Do: use top-alignment where possible
Do: use top-alignment where possible
Don't
Do not: rigidly use top alignment if it does not make sense
Do not: rigidly use top alignment if it does not make sense

Content Formatting

The responsive table provides flexibility, including multiline cells, by enabling every control to be put into a cell.

As a key identifier of an item, use an object identifier. Show the key identifier in the first column. For more information, see object display components.

If the screen width is small, do not hide this column or move it to the pop-in area.

Object identifier
Object identifier

Strings with IDs: If the responsive table contains more single-line data, show the ID in brackets after the corresponding string.

This minimizes the line height.

For items with a small line height, place the ID in brackets after the corresponding string
For items with a small line height, place the ID in brackets after the corresponding string

Strings with IDs: If line height is already large, show the ID below the corresponding string. Use the object identifier to do so.

For items with a large line height, place the ID below the corresponding string
For items with a large line height, place the ID below the corresponding string

For status information, use semantic colors on the foreground elements.

For status information on text: If the status is actionable, add a transparent icon button next to the text.

Semantic colors on text
Semantic colors on text

Avoid truncation. Use controls that wrap the text.

For example, use text instead of a label.

Do
Do: wrap text
Do: wrap text
Don't
Do not: truncate text
Do not: truncate text

For editable content, use input fields and other interactive controls within the table cells. If you need edit mode, change your text controls, such as labels, text, and links, to input fields or other appropriate controls as soon as you switch to edit mode, but not before.

You can do this by changing the control or, in more complex cases, by exchanging the whole responsive table.

Interactive controls – In line
Interactive controls – In line

If there is no value for a cell, leave it blank. Do not display text as N/A.

Leave empty fields blank
Leave empty fields blank

Numbering items:

  • If the item number has four digits/letters or less and is equally important as the corresponding description, concatenate the item number with the description and show it in one column.
  • If the item number has five digits/letters or more, or if it is more important than the corresponding description, for example, when no description is available, use a separate column for the item number.
  • If the item number is more like an ID in regards to its description, use ID formatting, like Description (ID).
For short numbers, add the item number to the description
For short numbers, add the item number to the description

Try not to display an empty responsive table. If there is no way around this, provide instructions on how to fill the table with data (sap.m.Table/ sap.m.ListBase, properties: showNoData, noDataText).

Provide meaningful instructions
Provide meaningful instructions

Item States

To show that an item is unread, use the corresponding flag (sap.m.Table, property: showUnread, sap.m.ColumnListItem/ sap.m.ListItemBase, property: unread). This shows most of the content in bold font.

An unread item
An unread item

To show that an item has been modified, for example, within the global edit flow, add the string (Modified) at the bottom of the column that identifies the line item.

A modified item
A modified item

To show that a modified item has an error, for example, within the global edit flow, add the string (Contains errors) at the bottom of the column that identifies the line item. Use an object status control with the error state for it (sap.m.ObjectStatus, property: state, value: sap.ui.core.ValueState.Error).

A modified item with an error
A modified item with an error

To show that an item is locked, use a transparent-style button with the corresponding icon and the text Locked by [name] at the bottom of the identifying column. The user can click or tap the button to open a quick view of the person.

A locked item
A locked item

To show that an item is in a draft state, use a transparent-style button with the text Draft at the bottom of the identifying column. The user can click or tap the button to open a popover showing the timestamp of the last change.

Item in draft state
Item in draft state

Show only one state at any one time.

Numbers and Units

Show the unit of measurement together with the number within the item rows.

Do not put the unit in the column header. Do not use an additional column to show the unit of measurement. This is also valid for prices.

Unit of mesaurement – In line
Unit of mesaurement – In line

For numbers with units, show the correct formatting by using the object number control.

Object number
Object number

For the most important number with its unit, show the correct formatting by using the object number control and the emphasized flag.
Exception: If all numbers are of equal importance, emphasize none of them.

If the screen width is small, do not hide this column or move it to the pop-in area.
Exception: If the column containing the object identifier and the column containing the key attribute do not fit together on the screen, move the column containing the key attribute to the pop-in area.

Object number (emphasized)
Object number (emphasized)

Actions

To trigger actions on multiple items, use a multiselection table (sap.m.Table, property: mode, value: sap.m.ListMode.MultiSelect):

  • Offer the corresponding actions in the footer toolbar if the responsive table is the only area on the screen where actions can be applied. This has the advantage that the actions on the footer toolbar are fixed on the screen and you cannot scroll them away.
  • In all other cases, show the actions on the table toolbar.

Do not offer action triggering on multiple items if the table is expected to have fewer than 10 items in most cases.

To trigger actions on a single item only (sap.m.Table, property: mode, value: sap.m.ListMode.SingleSelectMaster):

  • Offer the corresponding actions in the footer toolbar if the responsive table is the only area on the screen to which actions can be applied. This has the advantage that the actions on the footer toolbar are fixed on the screen and cannot be scrolled away.
  • In other cases, show the actions on the table toolbar.
  • In rare cases, show the actions within the line item. Since these actions are repeated in every line and thus use a lot of screen real estate, only do this for one or two actions at most. In this case, show the action trigger near the content to which it belongs. Do not add a specific column for actions, but instead use transparent-style buttons. An exception to this is if the action trigger belongs to a link.
OK: Place actions near to the objects to which they belong
OK: Place actions near to the objects to which they belong

The following actions on single items must always be in-line:

Delete: Use “Delete” table mode (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.Delete). This places a Delete button at the end of each row.

Delete button
Delete button

Navigation: Use the “Navigation” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Navigation). This places a Navigation indicator at the end of each row.

Use this to navigate to a new page containing line item details. In rare cases, you can also use this for navigation within the table without navigating to another page.

Navigation indicator
Navigation indicator

Edit: Use the “Detail” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Detail). This places an Edit icon at the end of each row.

Edit button
Edit button

From these three actions (delete, navigation, and edit), you can combine delete and edit, or delete and navigation.

Edit and navigation cannot be combined.

To trigger actions that are independent of the selection, show the actions on the table toolbar. Examples of such actions are add, edit (in the sense of changing the whole table to edit mode), sort, filter, group (or view settings), and table personalization.

To trigger a default action on the whole line item, use the “Active” or “DetailAndActive” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Active).

Active items trigger an event when clicked, which can be handled by apps, for example, to open a dialog. Clicks on interactive controls within the item do not trigger the event, but are handled by the interactive control.

Do not use this for navigation, to switch the line item to an edit state, or to delete the item.

Active can be combined with edit and delete, but not with navigation. Do not combine active with single selection.

When you add an item, add the row:

  • Beneath the last item if there are 10 items or less overall, or if you rarely add an item. Scroll the screen if necessary to ensure that the new item remains visible.
  • As the first item if there are more than 10 items overall, or if you add an item quite frequently.

When you add items, ignore the sort, filter, and group settings when the item is added. As soon as the responsive table is sorted, filtered, and grouped again, the new item is handled accordingly, but not before.

Editable Content

For editable content, use input fields and any other interactive controls within the table cells that meet your input needs.

All SAPUI5 controls can be used.

If you need edit mode, change your text controls, such as label, text, and link, to input fields, or other appropriate controls as soon as you switch to edit mode, but not before.

You can do this by exchanging the control or, in more complex cases, by exchanging the whole responsive table.

For mass editing items:

  • Provide multiselection (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.MultiSelect).
  • Provide an Edit button.
  • If several items are selected, choosing the Edit button opens a dialog in which the user edits the corresponding fields for all selected items.

This is similar to mass editing in the split screen app.

View Settings: Sort, Filter, and Group

Sort, filter, and/or group settings are handled in the view settings dialog. This dialog can provide any combination of these three settings, including just one setting, such as sort only.

  • If sorting, filtering, and/or grouping are a common use case in your app, offer one, two, or all three of the corresponding features in one or more view settings dialogs. Note: Do not offer these features if the table is expected to have only a small number of entries (up to 20 in most cases).
  • If filtering is a main use case, do not offer filtering in the view settings dialog. Use the filter bar instead.

To trigger the view settings dialog, provide several buttons, one for each of these view settings. Each button opens a view settings dialog that contains only the relevant page.

You should always use only the view settings you really need. For example, do not offer grouping if it does not support your use case well.

Using the view settings dialog allows you to define several sort, filter, and/or group settings per column. Thus, you can sort, filter, and/or group a column with several data points independently by each data point.

Several triggers for the different view settings (sort, filter, group)
Several triggers for the different view settings (sort, filter, group)

To display the current filter state, use the info bar below the table title. A click on the info bar opens the view settings dialog on the filter page.

Show the info bar only if the filter settings are not shown somewhere else. For example: Do not show the info bar for settings taken in the filter bar or in a select placed in the table toolbar.

If the info bar is shown, provide an option to reset all corresponding filters on the info bar.

Filtered table
Filtered table

To display the current group state, group headers are shown.

On the group header, show the following text (sap.m.GroupHeaderListItem, property: title):

[Label of the grouped column]: [Grouping Value]

Grouped table
Grouped table

Persist the view settings. When a user reopens the app, show the analytical table with the same sort, filter, and group settings as last defined by this user.

Personalization

To add, remove, or rearrange columns, use the table personalization dialog. Trigger the dialog via a button in the table toolbar.

Offer personalization if you need more columns than those that fit on a tablet screen, which is usually five, to fulfill 80% of your main use cases. Before doing so, try to reduce the number of columns, for example, by using several lines per column or by utilizing the pop-in function. See the cheat sheet for an example.

View settings and table personalization icons
View settings and table personalization icons

Persist the column layout settings. When a user reopens the app, show the responsive table with the same column layout as last defined by this user.

Properties

sap.m.Table

The following additional properties are available for the responsive table:

  • The property: fixedLayout defines the algorithm the control uses to define column width. Setting it to “false” would perform automatic calculations for the column width, based on the longest non-breakable content. You should always set it to “true” for performance reasons. Exceptions are permissible if the table has only a few columns on a large screen width and fewer than 10 rows are displayed.
  • The property: backgroundDesign defines the background on which items are rendered. Use the default value.
  • The property: showOverlay provides an overlay on the whole table, which prevents use of the responsive table. This is used within the list report floorplan to mark the table as outdated after filter settings have been changed but the new filter settings have not yet been applied. Do not use it in other cases.
  • The property: insert adds a margin on all sides of the responsive table.
  • The property: headerText is a simple way to set the table title if you just need a title. However, do not use any of the following:
    • A separate toolbar
    • variantManagement
    • headerToolbar aggregation
  • The property: headerDesign affects the appearance of the header if the theme supports it. Leave the default value as it is.
  • The property: footerText adds a small additional row below the table footer or last item. This row can contain text only. Do not use this property.
  • The property: width defines the width of the whole table.
  • The property: includeItemInSelection uses a click on the whole line item to select the corresponding item if the responsive table is in a selection mode. This competes with other settings like “Navigation” or “Active” and should therefore not be used.
  • The property: enableBusyIndicator shows a busy indicator while data is loaded.
  • The property: modeAnimationOn does not have any effect. Do not use it.
  • The property: showSeparators allows you to show all, none, or some separators. The default setting, which is to show all separators, is to be used.
  • The property: swipeDirection allows you to define the direction in which to swipe if additional actions are hidden behind a table row. This works only on touch devices. Do not use this property.
  • The property: rememberSelections leaves items selected even if they are not currently visible, for example, through filtering. If this behavior is not wanted, set the flag to “false”, but you should do so only in exceptional cases.
  • The property: busy sets the table to a busy state. While in busy state, the whole table cannot be used and items cannot be read due to an overlay.
  • The property: busyIndicatorDelay defines the time after which a busy state is shown after the responsive table has been set to this state. Use the default value.
  • The property: visible shows the table (“true”) or hides it (“false”).
  • The property: tooltip does not have an effect. Do not use it.

sap.m.Column

The following additional properties are available for sap.m.Column:

  • The property: width defines the width of the column in all units allowed by HTML, such as em, rem, %, and px.
  • The property: styleClass is used if you need to change the visual design of a column. Do not use this, but use the default style instead.
  • The property: visible shows or hides the column.
  • The property: tooltip does not have an effect. Do not use it.

sap.m.ColumnListItem

The following additional properties are available for sap.m.ColumnListItem:

  • The property: selected allows an item to be selected programmatically.
  • The property: counter does not have any effect. Do not use it.
  • Do not use the property: busy.
  • Do not use the property: busyIndicatorDelay.
  • The property: visible shows or hides the item.
  • The property: tooltip adds a tooltip to a whole row. The tooltip is only shown on mouse interaction. It will not work on tablets or smartphones. Do not use it.

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

Responsive Table

The responsive table is the default table in SAP Fiori. It contains a set of line items and is fully responsive. Depending on the scenario, users can also navigate from the line items to further details.

Usage

Use the responsive table if:

  • You need a table. The responsive table is the default table in SAP Fiori.
  • You need to use various controls inside a line item, such as micro charts, for example. In contrast, the analytical table supports only a very limited set of controls.
  • The focus lies on working on line items, not on cells. The responsive table is optimized for viewing complete items on all devices.
  • Selecting one or more items is a main use case and details are needed to choose the correct item.
  • Line items are independent of each other and no operation across columns is needed.
  • You want to have only one implementation for all devices. As the name suggests, the responsive table is responsive.

 

Do not use the responsive table if:

  • The main use case is to select one item from a very small number of items, without viewing additional details. In this case, a select or combo box might be more appropriate.
  • The main use case is to select one item from several items, with the possibility of viewing only a few details per item. In this case, a list might be more appropriate. Pay attention to the layout of the list item to ensure that it has a pleasant appearance. The master list is a good example of a list use case.
  • The cell level and the spatial relationship between cells is more important than the line item. In this case, use the analytical table or grid table. Examples include spreadsheet analyses and waterfall charts. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • You are working on more than 1,000 rows. In this case, the analytical table and the grid table are easier to handle and provide better performance. In contrast to the responsive table, the architecture of the analytical table and of the grid table is optimized for handling large numbers of items. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • Comparing items is a major use case. In this case, the analytical table or grid table might or might not be more appropriate. Each cell contains only one data point. In contrast, the responsive table has more flexibility in terms of line items, including the ability to add more data points per cell and also the pop-in function. Both make comparisons more difficult. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • Data needs to be structured in a hierarchical manner. In this case, a tree table might be more appropriate. Although the analytical table can have several grouping levels, it is not as flexible when nodes at several levels contain children. Note that neither the tree table nor the analytical table are fully responsive. You will need to take an adaptive approach by offering an additional UI for tablets.
  • You need an overview of a large amount of data. In this case, use a chart.
  • You just need it for layout reasons. In this case, use a layout container such as a horizontal layout or a vertical layout instead.
  • You need read-only or editable field-value pairs. In this case, use a form instead. The responsive table is not optimized for form-like input navigation.
Don't
Don't: Do not use a responsive table as a form
Don't: Do not use a responsive table as a form

See the table overview to decide which SAP Fiori table is most suitable for your needs.

Responsiveness

The responsiveness of a responsive table is optimized for viewing one line item at a time with no or only vertical scrolling, irrespective of the display width.

On smartphones, only the most important data remains in the one-column or two-column table, while all other data is moved to the space between two item rows, known as the “pop-in area”. In this area, data of the corresponding cell is provided as a label, or value pair, which is defined by the column header. The pop-in area itself is responsive, so labels can be shown next to or above the corresponding data.

A responsive table displayed on a smartphone
A responsive table displayed on a smartphone
A responsive table displayed on a tablet
A responsive table displayed on a tablet
A responsive table displayed in compact mode on a desktop computer
A responsive table displayed in compact mode on a desktop computer

To ensure responsiveness, you must configure each column. Depending on the screen width (in pixels), the column needs to know which of the following responses is required:

  • Stay in the table layout.
  • Move to the pop-in (sap.m.Column, with the properties: demandPopin, minScreenWidth, popinHAlign, popinDisplay).
  • Hide.

Since you have to define this for each column, you can also handle more than one column at a single breakpoint, such as moving three columns to the pop-in area at once.

Each of the three device types has a predefined value for the screen width. However, you will get better results if you offer more breakpoints by using pixel values instead of the predefined values.

For the smallest screen width, keep the following information in the table layout:

  • The identifier of the line item
  • The key attribute

The examples in the following tables help to illustrate this:

A typical responsive table.

A typical responsive table
A typical responsive table

Hide the Information column for a screen width smaller than 570 px:

Hiding the Information column
Hiding the Information column

Move the Vendor column to the pop-in area for a screen width smaller than 460 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the Vendor column to the pop-in area
Moving the Vendor column to the pop-in area

Move the Limit column to the pop-in area for a screen width smaller than 350 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the Limit column to the popin area
Moving the Limit column to the popin area

Move the Price column to the pop-in area for a screen width smaller than 270 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the Price column to the pop-in area
Moving the Price column to the pop-in area

If you need to support even smaller screens, values can be moved below the corresponding labels inside the pop-in area. In the example below, this has been done for a screen width smaller than 220 px (sap.m.Column, property: popinDisplay):

Pop-in area – Moving the data below the labels
Pop-in area – Moving the data below the labels

Layout

The optional title bar contains the title of the responsive table, an item counter, the variant management, and the toolbar.

The filter info bar appears when the responsive table is filtered, and it shows information on the filter settings.

The column header shows the label for each column.

The collection of items, or rows, occupies the main part of the responsive table.

You can add aggregation information (such as totals) to the footer.

A More button can be shown if you do not want all items to be loaded at the start (known as “lazy loading”). Ideally, you should use scrolling to load more items instead of choosing the More button.

Schematic visualization of the responsive table
Schematic visualization of the responsive table

Components

The title bar consists of a toolbar.
The toolbar can contain entry points for the view settings dialog and the table personalization dialog, as well as view switches in the form of a segmented button, and buttons for AddEdit, and other actions.
Beneath the toolbar, display a filter info bar (which itself is a special toolbar) if the responsive table is filtered.
To format data as part of items, apply the guidelines for formatting data. Controls commonly used inside items are the object identifier and the object number. For more information about these, please see object display components.

Behavior and Interaction

The responsive table is quite flexible in regards to its content.

Table Level

Scroll

The height of the table is defined by the number of items it contains. It does not have its own scroll container, but is scrolled together with the app.

Same table, different number of items
Same table, different number of items

Merge Duplicates

To simulate the behavior of row spanning, you can merge cells of consecutive rows inside a column automatically if they contain the same value (sap.m.Column, properties: mergeDuplicates, mergeFunctionName).

Use the merge feature if you expect the column to contain duplicate entries, and it makes sense to group them. In the example screenshot, the Supplier, Product, and Dimensions columns reflect a hierarchical structure: Suppliers have products, which in turn have dimensions. Because suppliers typically have multiple products, merging duplicate entries for the supplier column makes the table easier to read. Note, however, that when the user sorts the table by another field, the hierarchy changes and the merged items are regrouped accordingly.

Do not use the merge feature if duplicate entries are not part of the design. If consecutive table rows happen to have the same values at runtime, this alone is not a valid reason to group them.

Supplier column merges duplicates in consecutive rows
Supplier column merges duplicates in consecutive rows

Select

A responsive table can have one of the following selection types (sap.m.Table/ sap.m.ListBase, property: mode):

  • None: Items cannot be selected (sap.m.ListMode.None).
    Beware: Line items can, nevertheless, use the sap.m.ListType “navigation” which allows click handling on specific line items. This should only be used when the click triggers a navigation to a corresponding line item details page.
  • Single select master: One item of the responsive table can be selected. To select an item, the whole row can be clicked. Single select master does not add any visual indication and can therefore not be differentiated from none-selection tables. For single selection, this it the preferred mode. (sap.m.ListMode.SingleSelectMaster)
  • Single select left: One item of the responsive table can be selected. For this, the responsive table provides radio buttons on the left side of each line item. Use this selection mode only if clicking on the row shoud trigger something else, such as navigation. Ideally, always keep one item selected, even in initial state (sap.m.ListMode.SingleSelectLeft).
  • Multi-select: Allows the selection of one or more items. For this, the responsive table provides checkboxes on the left side of each line item. Select All works via a checkbox on the left of the column header. Select All (de-)selects all items which the user can reach via scrolling (sap.m.ListMode.MultiSelect). With multiselection, responsive tables avoid having checkboxes in the first column.
Responsive table without selectable items
Responsive table without selectable items
Single selection
Single selection
Single selection with radio buttons. Use only if row clicks are used for something else, such as navigation.
Single selection with radio buttons. Use only if row clicks are used for something else, such as navigation.
Multiselection
Multiselection

Group

To group items, a group header is displayed (sap.m.GroupHeaderLisItem). The group header is not interactive.

Group headers
Group headers

Show Aggregations

To show aggregations, such as totals, use the table footer (sap.m.Column, aggregation: footer).

Do not show aggregations in growing mode. It is not clear whether an aggregation only aggregates the items loaded into the front end, or all items.

Showing totals on the table footer
Showing totals on the table footer

Load Items

To show more than 200 items, use growing mode (sap.m.Table/ sap.m.ListBase, properties: growing, growingThreshold, growingScrollToLoad, growingTriggerText). Growing mode allows only the first few items to be loaded. Additional items are only loaded (and rendered) on request, which improves performance. The request can be submitted via scrolling, which is the preferred method, or by clicking the More button.

If you use the More button, show the number of items already loaded and the total number items below the word More if possible.

Do not show more than 1,000 items overall, even in growing mode. Since the responsive table renders all items, showing more than 1,000 items can lead to performance issues.

Do not show aggregations if growing mode is used. Do not display an item count on the table toolbar if growing mode is used. Use the count below the More button instead.

More button is permissible, but scrolling is preferred
More button is permissible, but scrolling is preferred

Keyboard

The responsive table knows two different modes for keyboard interaction:

  1. The navigation mode allows fast navigation on the whole screen (sap.m.Table/ sap.m.ListBase, property: keyboardMode, value: Navigation). This is the default keyboard mode of the responsive table. In this mode, the focus moves to one line item and to the controls inside this item before if leaves the table. The tab chain is kept short. If the focus is on the line item, it can be moved to other items using the arrow keys. In addition, F7 toggles the focus between item level and control level.

Use the navigation mode if:

  • The table is read-only.
  • The table currently contains no interactive content (for example, in read-only mode of an editable table). In this case, switch the keyboard mode at runtime as soon as the edit mode of the table is started/ended.
  • The table contains only a minimal set of interactive content and it is unlikely that it is changed often.

2. The edit mode allows fast editing of the whole table (sap.m.Table/ sap.m.ListBase, property: keyboardMode, value: Edit). In this mode, focus moves to each interactive control inside all items before it leaves the table. The tab chain gets very long.

Use the edit mode if:

  • The table contains many interactive controls.
  • It is very likely that the content is changed frequently.
  • The table needs to support mass editing scenarios.
  • The table currently contains interactive content (for example, in edit mode of an editable table). In this case, switch the keyboard mode at runtime as soon as the edit mode of the table is started/ ended.

To provide better accessibility support, please ensure that your tab chain is kept short. If you use the keyboard mode “edit”, make sure that there is also a possibility to switch to the keyboard mode “navigation”.
Exception: The table is very short and contains only a very limited number of interactive controls, where the tab chain is anyway short.

Line Item Level

Delete Single Item Rows

To delete single item rows, use the table in the mode “delete” (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.Delete). This adds Delete buttons to each line item. Clicking this button triggers the deletion of the corresponding line item.

Do not use this mode if deleting multiple lines at once is the preferred use case.

Delete is a mode of the responsive table and can therefore not be used together with single selection or multiselection.

Responsive table in delete mode
Responsive table in delete mode

Navigate

Because the controls inside line items are handled by the corresponding control behaviors, clicking on an interactive control within a line item does not trigger the navigation event.

To allow navigation from a line item, set sap.m.ListType to “navigation” within the corresponding item (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Navigation). This will create indicator at the end of the line (“>”) and the entire line item will become clickable. Clicking on the line triggers the navigation event. Use this to navigate to a new page containing line item details. In rare cases, you can also use the navigation mode for category navigation without navigating to another page.

If no navigation is possible, set sap.m.ListType to “inactive”.

Navigation is a list item type and can therefore not be used together with “edit”, or in combination with click events for the entire item (“active”).

Navigation indicator
Navigation indicator

Edit Line Items

To allow editing a line item details page, set sap.m.ListType to “detail” within the corresponding item (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Detail or sap.m.ListType.DetailAndActive). This will create an Edit button at the end of the line. Clicking the button triggers the edit event. Use this event to switch the corresponding line item to edit mode.

Edit is a list item type and can therefore not be used together with “navigation” or in combination with click events for the entire item (“active”).

Edit button
Edit button

Click an Item

Items as a whole can be clickable. An event is fired by clicking on the item (anywhere where there is no interactive control inside the item). Apps can react on the event, such as by opening a dialog(sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Active or sap.m.ListType.DetailAndActive).

Active elements do not have a visual indication and can therefore not be differentiated from non-active elements.

Active is a list item type and can therefore not be used together with “navigation” or “edit”. In addition, “active” uses the whole item as a clickable area and therefore cannot be used together with a single-selection table.

Active element
Active element

Cell Level

Show Information

In contrast to traditional tables, such as an analytical table or a tree table, a cell can contain more than just one line of text.

Several lines of text within one cell
Several lines of text within one cell

Add Controls

Beside textual elements, you can add any control to a table cell.

Controls inside cells
Controls inside cells
Any control can be placed inside a cell
Any control can be placed inside a cell

A cell can contain more than one control and more than one data point.

The view settings dialog allows you to sort, filter, and group by each of these data points.

Several controls per cell
Several controls per cell

Guidelines

Table Title

Implement the table title by using a toolbar control.

Use a table title if the title of a responsive table is not indicated in the surrounding area. Do not use a table title if it would just repeat text that is already above the responsive table.

Use a table title if you need the table toolbar. To avoid repeating text, feel free to use generic text as a table title, such as Items.

If you use a table title, be sure to include one of the following:

Table title
Table title
  • Or an item count using the following format: Items (Number of Items). For example, Items: 2. You can combine an item count with variant management.
  • Do not use an item count together with “growing mode”.
Table title with item count
Table title with item count

Loading Data

To indicate that the table is currently loading items, use the busy state. (sap.m.Table, property: busy). Do not show any items or text. As soon as the data is loaded, remove the busy state and show all items.

Table in busy state while loading data
Table in busy state while loading data

Columns – Best Practices

Minimize the number of columns:

  • On a smartphone, use only one or two columns, depending on the content.
  • On a tablet or desktop, use up to three columns if the responsive table is shown in the details area of a split-screen layout. Use up to four columns if using the full screen width, depending on the content.

If the responsive table does not fit on the screen width:

  • Hide columns to reduce the width of the table.
  • Use pop-in areas to show the whole content by increasing the height of the line items (sap.m.Column, properties: demandPopin, minScreenWidth).

At the smallest size, keep the following information in the table layout:

  • The column that identifies the line item
  • The column that contains the key attribute

If both of these do not fit on the respective screen width, keep just the column with the line item identifier in the tabular layout.

The responsive table assigns the same width to each column by default. It is recommended that you overwrite this default to provide optimal space for your content (sap.m.Column, property: width).

Optimize column width for its initial content (sap.m.Column, property: width). If the content is dynamic, optimize column width for typical content.

If you need more columns than those that fit on a tablet screen, which is usually five, to fulfill 80% of your main use cases, offer an option to add, remove, and rearrange columns via the table personalization dialog. Before doing so, try to reduce the number of columns, for example, by using several lines per column or by utilizing the pop-in function. See the cheat sheet for an example.

Column Headers – Best Practices

Within the column header, provide a label for each column (sap.m.Column, aggregation: header). The column header label is reused as a label in the pop-in area.

Exception: If the column does not pop in, you can leave out the column header label as long as at least one column still has a column header label.

Use controls that wrap, for example, text. Do not use controls that truncate, such as labels.

Do
Do: wrap column headers
Do: wrap column headers
Don't
Do not: truncate column headers
Do not: truncate column headers

Column headers (sap.m.Column, aggregation: header) usually contain links or text-based controls.

Column headers can also contain other kinds of SAP Fiori controls. However, the column header cannot be aligned vertically, making it difficult to use many controls in the column header. Using other kinds of controls also creates problems with pop-in behavior and could thus lead to accessibility issues. Therefore, exercise caution when using them in a column header.

Accepted: Link as column header text (used rarely)
Accepted: Link as column header text (used rarely)

Content Alignment

For alignment of cell content, follow the guidelines below (sap.m.Column, properties: halgin, valign, sap.m.ColumnListItem, property: VAlign). Align the column header horizontally according to the cells’ content.

Left-align: text, IDs, phone numbers, URLs, passwords, and email addresses.

Left-alignment of text
Left-alignment of text

Right-align: numbers and amounts, except IDs, to ensure comparability of such figures.

Right-alignment of numbers
Right-alignment of numbers

Right-align: dates and times (to ensure comparability for most formats and locales).

Right-alignment of dates
Right-alignment of dates

In general, center one-word status information and icons:

If there is an icon and text, or if the status contains more than two words in the English language, left align the entire status column.

Center-alignment of one-word texts
Center-alignment of one-word texts

Vertical alignment:

Top-align where possible to facilitate reading the content on one line.

Do not use top-alignment if it results in a peculiar layout. This usually happens when controls that need more vertical space are combined with text-only controls, such as input fields. In this case, try center-alignment instead and fine tune it until the layout fits.

Do
Do: use top-alignment where possible
Do: use top-alignment where possible
Don't
Do not: rigidly use top alignment if it does not make sense
Do not: rigidly use top alignment if it does not make sense

Content Formatting

The responsive table provides flexibility, including multiline cells, by enabling every control to be put into a cell.

As a key identifier of an item, use an object identifier. Show the key identifier in the first column. Formore information, see object display components.

If the screen width is small, do not hide this column or move it to the pop-in area.

Object identifier
Object identifier

Strings with IDs: If the responsive table contains more single-line data, show the ID in brackets after the corresponding string.

This minimizes the line height.

For items with a small line height, place the ID in brackets after the corresponding string
For items with a small line height, place the ID in brackets after the corresponding string

Strings with IDs: If line height is already large, show the ID below the corresponding string. Use the object identifier to do so.

For items with a large line height, place the ID below the corresponding string
For items with a large line height, place the ID below the corresponding string

For status information, use semantic colors on the foreground elements.

For status information on text: If the status is actionable, add a transparent icon button next to the text.

Semantic colors on text
Semantic colors on text

Avoid truncation. Use controls that wrap the text.

For example, use text instead of a label.

Do
Do: wrap text
Do: wrap text
Don't
Do not: truncate text
Do not: truncate text

For editable content, use input fields and other interactive controls within the table cells. If you need edit mode, change your text controls, such as labels, text, and links, to input fields or other appropriate controls as soon as you switch to edit mode, but not before.

You can do this by changing the control or, in more complex cases, by exchanging the whole responsive table.

Interactive controls – In line
Interactive controls – In line

If there is no value for a cell, leave it blank. Do not display text as N/A.

Leave empty fields blank
Leave empty fields blank

Numbering items:

  • If the item number has four digits/letters or less and is equally important as the corresponding description, concatenate the item number with the description and show it in one column.
  • If the item number has five digits/letters or more, or if it is more important than the corresponding description, for example, when no description is available, use a separate column for the item number.
  • If the item number is more like an ID in regards to its description, use ID formatting, such as Description (ID).
For short numbers, add the item number to the description
For short numbers, add the item number to the description

Try not to display an empty responsive table. If there is no way around this, provide instructions on how to fill the table with data (sap.m.Table/ sap.m.ListBase, properties: showNoData, noDataText).

Provide meaningful instructions
Provide meaningful instructions

Item States

To show that an item is unread, use the corresponding flag (sap.m.Table, property: showUnread, sap.m.ColumnListItem/ sap.m.ListItemBase, property: unread). This shows most of the content in bold font.

An unread item
An unread item

To show that an item has been modified, for example, within the global edit flow, add the string (Modified) at the bottom of the column that identifies the line item.

A modified item
A modified item

To show that a modified item has an error, for example, within the global edit flow, add the string (Contains errors) at the bottom of the column that identifies the line item. Use an object status control with the error state for it (sap.m.ObjectStatus, property: state, value: sap.ui.core.ValueState.Error).

A modified item with an error
A modified item with an error

To show that an item is locked, use a transparent-style button with the corresponding icon and the text Locked by [name] at the bottom of the identifying column. The user can click or tap the button to open a quick view of the person.

A locked item
A locked item

To show that an item is in a draft state, use a transparent-style button with the text Draft at the bottom of the identifying column. The user can click or tap the button to open a popover showing the timestamp of the last change.

Item in draft state
Item in draft state

Show only one state at any one time.

Numbers and Units

Show the unit of measurement together with the number within the item rows.

Do not put the unit in the column header. Do not use an additional column to show the unit of measurement. This is also valid for prices.

Unit of mesaurement – In line
Unit of mesaurement – In line

For numbers with units, show the correct formatting by using the object number control.

Object number
Object number

For the most important number with its unit, show the correct formatting by using the object number control and the emphasized flag.
Exception: If all numbers are of equal importance, emphasize none of them.

If the screen width is small, do not hide this column or move it to the pop-in area.
Exception: If the column containing the object identifier and the column containing the key attribute do not fit together on the screen, move the column containing the key attribute to the pop-in area.

Object number (emphasized)
Object number (emphasized)

Actions

To trigger actions on multiple items, use a multiselection table (sap.m.Table, property: mode, value: sap.m.ListMode.MultiSelect):

  • Offer the corresponding actions in the footer toolbar if the responsive table is the only area on the screen where actions can be applied. This has the advantage that the actions on the footer toolbar are fixed on the screen and you cannot scroll them away.
  • In all other cases, show the actions on the table toolbar.

Do not offer action triggering on multiple items if the table is expected to have fewer than 10 items in most cases.

To trigger actions on a single item only (sap.m.Table, property: mode, value: sap.m.ListMode.SingleSelectMaster):

  • Offer the corresponding actions in the footer toolbar if the responsive table is the only area on the screen to which actions can be applied. This has the advantage that the actions on the footer toolbar are fixed on the screen and cannot be scrolled away.
  • In other cases, show the actions on the table toolbar.
  • In rare cases, show the actions within the line item. Since these actions are repeated in every line and thus use a lot of screen real estate, only do this for one or two actions at most. In this case, show the action trigger near the content to which it belongs. Do not add a specific column for actions, but instead use transparent-style buttons. An exception to this is if the action trigger belongs to a link.
OK: Place actions near to the objects to which they belong
OK: Place actions near to the objects to which they belong

The following actions on single items must always be in-line:

Delete: Use “Delete” table mode (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.Delete). This places a Delete button at the end of each row.

Delete button
Delete button

Navigation: Use the “Navigation” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Navigation). This places a Navigation indicator at the end of each row.

Use this to navigate to a new page containing line item details. In rare cases, you can also use this for navigation within the table without navigating to another page.

Navigation indicator
Navigation indicator

Edit: Use the “Detail” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Detail). This places an Edit icon at the end of each row.

Edit button
Edit button

From these three actions (delete, navigation, and edit), you can combine delete and edit, or delete and navigation.

Edit and navigation cannot be combined.

To trigger actions that are independent of the selection, show the actions on the table toolbar. Examples of such actions are add, edit (in the sense of changing the whole table to edit mode), sort, filter, group (or view settings), and table personalization.

To trigger a default action on the whole line item, use the “Active” or “DetailAndActive” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Active).

Active items trigger an event when clicked, which can be handled by apps, for example, to open a dialog. Clicks on interactive controls within the item do not trigger the event, but are handled by the interactive control.

Do not use this for navigation, to switch the line item to an edit state, or to delete the item.

Active can be combined with edit and delete, but not with navigation. Do not combine active with single selection.

When you add an item, add the row:

  • Beneath the last item if there are 10 items or less overall, or if you rarely add an item. Scroll the screen if necessary to ensure that the new item remains visible.
  • As the first item if there are more than 10 items overall, or if you add an item quite frequently.

When you add items, ignore the sort, filter, and group settings when the item is added. As soon as the responsive table is sorted, filtered, and grouped again, the new item is handled accordingly, but not before.

Editable Content

For editable content, use input fields and any other interactive controls within the table cells that meet your input needs.

All SAPUI5 controls can be used.

If you need edit mode, change your text controls, such as label, text, and link, to input fields, or other appropriate controls as soon as you switch to edit mode, but not before.

You can do this by exchanging the control or, in more complex cases, by exchanging the whole responsive table.

For mass editing items:

  • Provide multiselection (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.MultiSelect).
  • Provide an Edit button.
  • If several items are selected, choosing the Edit button opens a dialog in which the user edits the corresponding fields for all selected items.

This is similar to mass editing in the split screen app.

View Settings: Sort, Filter, and Group

Sort, filter, and/or group settings are handled in the view settings dialog. This dialog can provide any combination of these three settings, including just one setting, such as sort only.

  • If sorting, filtering, and/or grouping are a common use case in your app, offer one, two, or all three of the corresponding features in one or more view settings dialogs. Note: Do not offer these features if the table is expected to have only a small number of entries (up to 20 in most cases).
  • If filtering is a main use case, do not offer filtering in the view settings dialog. Use the filter bar instead.

To trigger the view settings dialog, provide several buttons, one for each of these view settings. Each button opens a view settings dialog that contains only the relevant page.

You should always use only the view settings you really need. For example, do not offer grouping if it does not support your use case well.

Using the view settings dialog allows you to define several sort, filter, and/or group settings per column. Thus, you can sort, filter, and/or group a column with several data points independently by each data point.

Several triggers for the different view settings (sort, filter, group)
Several triggers for the different view settings (sort, filter, group)

To display the current filter state, use the infobar below the table title. A click on the infobar opens the view settings dialog on the filter page.

Show the infobar only if the filter settings are not shown somewhere else. For example: Do not show the infobar for settings taken in the filter bar or in a select placed in the table toolbar.

If the infobar is shown, provide an option to reset all corresponding filters on the infobar.

Filtered table
Filtered table

To display the current group state, group headers are shown.

On the group header, show the following text (sap.m.GroupHeaderListItem, property: title):

[Label of the grouped column]: [Grouping Value]

Grouped table
Grouped table

Persist the view settings. When a user reopens the app, show the analytical table with the same sort, filter, and group settings as last defined by this user.

Personalization

To add, remove, or rearrange columns, use the table personalization dialog. Trigger the dialog via a button in the table toolbar.

Offer personalization if you need more columns than those that fit on a tablet screen, which is usually five, to fulfill 80% of your main use cases. Before doing so, try to reduce the number of columns, for example, by using several lines per column or by utilizing the pop-in function. See the cheat sheet for an example.

View settings and table personalization icons
View settings and table personalization icons

Persist the column layout settings. When a user reopens the app, show the responsive table with the same column layout as last defined by this user.

Properties

sap.m.Table

The following additional properties are available for the responsive table:

  • The property: fixedLayout defines the algorithm the control uses to define column width. Setting it to “false” would perform automatic calculations for the column width, based on the longest non-breakable content. You should always set it to “true” for performance reasons. Exceptions are permissible if the table has only a few columns on a large screen width and fewer than 10 rows are displayed.
  • The property: backgroundDesign defines the background on which items are rendered. Use the default value.
  • The property: showOverlay provides an overlay on the whole table, which prevents use of the responsive table. This is used within the list report floorplan to mark the table as outdated after filter settings have been changed but the new filter settings have not yet been applied. Do not use it in other cases.
  • The property: insert adds a margin on all sides of the responsive table.
  • The property: headerText is a simple way to set the table title if you just need a title. However, do not use any of the following:
    • A separate toolbar
    • variantManagement
    • headerToolbar aggregation
  • The property: headerDesign affects the appearance of the header if the theme supports it. Leave the default value as it is.
  • The property: footerText adds a small additional row below the table footer or last item. This row can contain text only. Do not use this property.
  • The property: width defines the width of the whole table.
  • The property: includeItemInSelection uses a click on the whole line item to select the corresponding item if the responsive table is in a selection mode. This competes with other settings like “Navigation” or “Active” and should therefore not be used.
  • The property: enableBusyIndicator shows a busy indicator while data is loaded.
  • The property: modeAnimationOn does not have any effect. Do not use it.
  • The property: showSeparators allows you to show all, none, or some separators. The default setting, which is to show all separators, is to be used.
  • The property: swipeDirection allows you to define the direction in which to swipe if additional actions are hidden behind a table row. This works only on touch devices. Do not use this property.
  • The property: rememberSelections leaves items selected even if they are not currently visible, for example, through filtering. If this behavior is not wanted, set the flag to “false”, but you should do so only in exceptional cases.
  • The property: busy sets the table to a busy state. While in busy state, the whole table cannot be used and items cannot be read due to an overlay.
  • The property: busyIndicatorDelay defines the time after which a busy state is shown after the responsive table has been set to this state. Use the default value.
  • The property: visible shows the table (“true”) or hides it (“false”).
  • The property: tooltip does not have an effect. Do not use it.

sap.m.Column

The following additional properties are available for sap.m.Column:

  • The property: width defines the width of the column in all units allowed by HTML, such as em, rem, %, and px.
  • The property: styleClass is used if you need to change the visual design of a column. Do not use this, but use the default style instead.
  • The property: visible shows or hides the column.
  • The property: tooltip does not have an effect. Do not use it.

sap.m.ColumnListItem

The following additional properties are available for sap.m.ColumnListItem:

  • The property: selected allows an item to be selected programmatically.
  • The property: counter does not have any effect. Do not use it.
  • Do not use the property: busy.
  • Do not use the property: busyIndicatorDelay.
  • The property: visible shows or hides the item.
  • The property: tooltip adds a tooltip to a whole row. The tooltip is only shown on mouse interaction. It will not work on tablets or smartphones. Do not use it.

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

Responsive Table

The responsive table is the default table in SAP Fiori. It contains a set of line items and is fully responsive. Depending on the scenario, users can also navigate from the line items to further details.

Usage

Use the responsive table if:

  • You need a table. The responsive table is the default table in SAP Fiori.
  • You need to use various controls inside a line item, such as micro charts, for example. In contrast, the analytical table supports only a very limited set of controls.
  • The focus lies on working on line items, not on cells. The responsive table is optimized for viewing complete items on all devices.
  • Selecting one or more items is a main use case and details are needed to choose the correct item.
  • Line items are independent of each other and no operation across columns is needed.
  • You want to have only one implementation for all devices. As the name suggests, the responsive table is responsive.

 

Do not use the responsive table if:

  • The main use case is to select one item from a very small number of items, without viewing additional details. In this case, a select or combo box might be more appropriate.
  • The main use case is to select one item from several items, with the possibility of viewing only a few details per item. In this case, a list might be more appropriate. Pay attention to the layout of the list item to ensure that it has a pleasant appearance. The master list is a good example of a list use case.
  • The cell level and the spatial relationship between cells is more important than the line item. In this case, use the analytical table or grid table. Examples include spreadsheet analyses and waterfall charts. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • You are working on more than 1,000 rows. In this case, the analytical table and the grid table are easier to handle and provide better performance. In contrast to the responsive table, the architecture of the analytical table and of the grid table is optimized for handling large numbers of items. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • Comparing items is a major use case. In this case, the analytical table or grid table might or might not be more appropriate. Each cell contains only one data point. In contrast, the responsive table has more flexibility in terms of line items, including the ability to add more data points per cell and also the pop-in function. Both make comparisons more difficult. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • Data needs to be structured in a hierarchical manner. In this case, a tree table might be more appropriate. Although the analytical table can have several grouping levels, it is not as flexible when nodes at several levels contain children. Note that neither the tree table nor the analytical table are fully responsive. You will need to take an adaptive approach by offering an additional UI for tablets.
  • You need an overview of a large amount of data. In this case, use a chart.
  • You just need it for layout reasons. In this case, use a layout container such as a horizontal layout or a vertical layout instead.
  • You need read-only or editable field-value pairs. In this case, use a form instead. The responsive table is not optimized for form-like input navigation.
Don't
Don't: Do not use a responsive table as a form
Don't: Do not use a responsive table as a form

See the table overview to decide which SAP Fiori table is most suitable for your needs.

Responsiveness

The responsiveness of a responsive table is optimized for viewing one line item at a time with no or only vertical scrolling, irrespective of the display width.

On smartphones, only the most important data remains in the one-column or two-column table, while all other data is moved to the space between two item rows, known as the “pop-in area”. In this area, data of the corresponding cell is provided as a label, or value pair, which is defined by the column header. The pop-in area itself is responsive, so labels can be shown next to or above the corresponding data.

A responsive table displayed on a smartphone
A responsive table displayed on a smartphone
A responsive table displayed on a tablet
A responsive table displayed on a tablet
A responsive table displayed in compact mode on a desktop computer
A responsive table displayed in compact mode on a desktop computer

To ensure responsiveness, you must configure each column. Depending on the screen width (in pixels), the column needs to know which of the following responses is required:

  • Stay in the table layout.
  • Move to the pop-in (sap.m.Column, with the properties: demandPopin, minScreenWidth, popinHAlign, popinDisplay).
  • Hide.

Since you have to define this for each column, you can also handle more than one column at a single breakpoint, such as moving three columns to the pop-in area at once.

Each of the three device types has a predefined value for the screen width. However, you will get better results if you offer more breakpoints by using pixel values instead of the predefined values.

For the smallest screen width, keep the following information in the table layout:

  • The identifier of the line item
  • The key attribute

The examples in the following tables help to illustrate this:

A typical responsive table.

A typical responsive table
A typical responsive table

Hide the Information column for a screen width smaller than 570 px:

Hiding the Information column
Hiding the Information column

Move the Vendor column to the pop-in area for a screen width smaller than 460 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the Vendor column to the pop-in area
Moving the Vendor column to the pop-in area

Move the Limit column to the pop-in area for a screen width smaller than 350 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the Limit column to the popin area
Moving the Limit column to the popin area

Move the Price column to the pop-in area for a screen width smaller than 270 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the Price column to the pop-in area
Moving the Price column to the pop-in area

If you need to support even smaller screens, values can be moved below the corresponding labels inside the pop-in area. In the example below, this has been done for a screen width smaller than 220 px (sap.m.Column, property: popinDisplay):

Pop-in area – Moving the data below the labels
Pop-in area – Moving the data below the labels

Layout

The optional title bar contains the title of the responsive table, an item counter, the variant management, and the toolbar.

The filter info bar appears when the responsive table is filtered, and it shows information on the filter settings.

The column header shows the label for each column.

The collection of items, or rows, occupies the main part of the responsive table.

You can add aggregation information (such as totals) to the footer.

A More button can be shown if you do not want all items to be loaded at the start (known as “lazy loading”). Ideally, you should use scrolling to load more items instead of choosing the More button.

Schematic visualization of the responsive table
Schematic visualization of the responsive table

Components

The title bar consists of a toolbar.
The toolbar can contain entry points for the view settings dialog and the table personalization dialog, as well as view switches in the form of a segmented button, and buttons for AddEdit, and other actions.
Beneath the toolbar, display a filter info bar (which itself is a special toolbar) if the responsive table is filtered.
To format data as part of items, apply the guidelines for formatting data. Controls commonly used inside items are the object identifier and the object number. For more information about these, please see object display components.

Behavior and Interaction

The responsive table is quite flexible in regards to its content.

Table Level

Scroll

The height of the table is defined by the number of items it contains. It does not have its own scroll container, but is scrolled together with the app.

Same table, different number of items
Same table, different number of items

Merge Duplicates

To simulate the behavior of row spanning, you can merge cells of consecutive rows inside a column automatically if they contain the same value (sap.m.Column, properties: mergeDuplicates, mergeFunctionName).

Use the merge feature if you expect the column to contain duplicate entries, and if it makes sense to group them. In the example screenshot, the Supplier, Product, and Dimensions columns reflect a hierarchical structure: Suppliers have products, which in turn have dimensions. Because suppliers typically have multiple products, merging duplicate entries for the supplier column makes the table easier to read. Note, however, that when the user sorts the table by another field, the hierarchy changes and the merged items are regrouped accordingly.

Do not use the merge feature if duplicate entries are not part of the design. If consecutive table rows happen to have the same values at runtime, this alone is not a valid reason to group them.

Supplier column merges duplicates in consecutive rows
Supplier column merges duplicates in consecutive rows

Select

A responsive table can have one of the following selection types (sap.m.Table/ sap.m.ListBase, property: mode):

  • None: Items cannot be selected (sap.m.ListMode.None).
    Beware: Line items can, nevertheless, use the sap.m.ListType “navigation” which allows click handling on specific line items. This should only be used when the click triggers a navigation to a corresponding line item details page.
  • Single select master: One item of the responsive table can be selected. To select an item, the whole row can be clicked. Single select master does not add any visual indication and can therefore not be differentiated from none-selection tables. For single selection, this it the preferred mode. (sap.m.ListMode.SingleSelectMaster)
  • Single select left: One item of the responsive table can be selected. For this, the responsive table provides radio buttons on the left side of each line item. Use this selection mode only if clicking on the row shoud trigger something else, such as navigation. Ideally, always keep one item selected, even in initial state (sap.m.ListMode.SingleSelectLeft).
  • Multi-select: Allows the selection of one or more items. For this, the responsive table provides checkboxes on the left side of each line item. Select All works via a checkbox on the left of the column header. Select All (de-)selects all items which the user can reach via scrolling (sap.m.ListMode.MultiSelect). With multiselection, responsive tables avoid having checkboxes in the first column.
Responsive table without selectable items
Responsive table without selectable items
Single selection
Single selection
Single selection with radio buttons. Use only if row clicks are used for something else, such as navigation.
Single selection with radio buttons. Use only if row clicks are used for something else, such as navigation.
Multiselection
Multiselection

Group

To group items, a group header is displayed (sap.m.GroupHeaderLisItem). The group header is not interactive.

Group headers
Group headers

Show Aggregations

To show aggregations, such as totals, use the table footer (sap.m.Column, aggregation: footer).

Do not show aggregations in growing mode. It is not clear whether an aggregation only aggregates the items loaded into the front end, or all items.

Showing totals on the table footer
Showing totals on the table footer

Load Items

To show more than 200 items, use growing mode (sap.m.Table/ sap.m.ListBase, properties: growing, growingThreshold, growingScrollToLoad, growingTriggerText). Growing mode allows only the first few items to be loaded. Additional items are only loaded (and rendered) on request, which improves performance. The request can be submitted via scrolling, which is the preferred method, or by clicking the More button.

If you use the More button, show the number of items already loaded and the total number items below the word More if possible.

Do not show more than 1,000 items overall, even in growing mode. Since the responsive table renders all items, showing more than 1,000 items can lead to performance issues.

Do not show aggregations if growing mode is used. Also, do not display an item count on the table toolbar if growing mode is used. Use the count below the More button instead.

More button is permissible, but scrolling is preferred
More button is permissible, but scrolling is preferred

Line Item Level

Delete Single Item Rows

To delete single item rows, use the table in the mode “delete” (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.Delete). This adds Delete buttons to each line item. Clicking this button triggers the deletion of the corresponding line item.

Do not use this mode if deleting multiple lines at once is the preferred use case.

Delete is a mode of the responsive table and can therefore not be used together with single selection or multiselection.

Responsive table in delete mode
Responsive table in delete mode

Navigate

Because the controls inside line items are handled by the corresponding control behaviors, clicking on an interactive control within a line item does not trigger the navigation event.

To allow navigation from a line item, set sap.m.ListType to “navigation” within the corresponding item (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Navigation). This will create indicator at the end of the line (“>”) and the entire line item will become clickable. Clicking on the line triggers the navigation event. Use this to navigate to a new page containing line item details. In rare cases, you can also use the navigation mode for category navigation without navigating to another page.

If no navigation is possible, set sap.m.ListType to “inactive”.

Navigation is a list item type and can therefore not be used together with “edit”, or in combination with click events for the entire item (“active”).

Navigation indicator
Navigation indicator

Edit Line Items

To allow editing a line item details page, set sap.m.ListType to “detail” within the corresponding item (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Detail or sap.m.ListType.DetailAndActive). This will create an Edit button at the end of the line. Clicking the button triggers the edit event. Use this event to switch the corresponding line item to edit mode.

Edit is a list item type and can therefore not be used together with “navigation” or in combination with click events for the entire item (“active”).

Edit button
Edit button

Click an Item

Items as a whole can be clickable. An event is fired by clicking on the item (anywhere where there is no interactive control inside the item). Apps can react on the event, such as by opening a dialog(sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Active or sap.m.ListType.DetailAndActive).

Active elements do not have a visual indication and can therefore not be differentiated from non-active elements.

Active is a list item type and can therefore not be used together with “navigation” or “edit”. In addition, “active” uses the whole item as a clickable area and therefore cannot be used together with a single-selection table.

Active element
Active element

Cell Level

Show Information

In contrast to traditional tables, such as an analytical table or a tree table, a cell can contain more than just one line of text.

Several lines of text within one cell
Several lines of text within one cell

Add Controls

Beside textual elements, you can add any control to a table cell.

Controls inside cells
Controls inside cells
Any control can be placed inside a cell
Any control can be placed inside a cell

A cell can contain more than one control and more than one data point.

The view settings dialog allows you to sort, filter, and group by each of these data points.

Several controls per cell
Several controls per cell

Guidelines

Table Title

Implement the table title by using a toolbar control.

Use a table title if the title of a responsive table is not indicated in the surrounding area. Do not use a table title if it would just repeat text that is already above the responsive table.

Use a table title if you need the table toolbar. To avoid repeating text, feel free to use generic text as a table title, such as Items.

If you use a table title, be sure to include one of the following:

Table title
Table title
  • Or an item count using the following format: Items (Number of Items). For example, Items: 2. You can combine an item count with variant management.
  • Do not use an item count together with “growing mode”.
Table title with item count
Table title with item count

Loading Data

To indicate that the table is currently loading items, use the busy state. (sap.m.Table, property: busy). Do not show any items or text. As soon as the data is loaded, remove the busy state and show all items.

Table in busy state while loading data
Table in busy state while loading data

Columns – Best Practices

Minimize the number of columns:

  • On a smartphone, use only one or two columns, depending on the content.
  • On a tablet or desktop, use up to three columns if the responsive table is shown in the details area of a split-screen layout. Use up to four columns if using the full screen width, depending on the content.

If the responsive table does not fit on the screen width:

  • Hide columns to reduce the width of the table.
  • Use pop-in areas to show the whole content by increasing the height of the line items (sap.m.Column, properties: demandPopin, minScreenWidth).

At the smallest size, keep the following information in the table layout:

  • The column that identifies the line item
  • The column that contains the key attribute

If both of these do not fit on the respective screen width, keep just the column with the line item identifier in the tabular layout.

The responsive table assigns the same width to each column by default. It is recommended that you overwrite this default to provide optimal space for your content (sap.m.Column, property: width).

Optimize column width for its initial content (sap.m.Column, property: width). If the content is dynamic, optimize column width for typical content.

If you need more columns than those that fit on a tablet screen, which is usually five, to fulfill 80% of your main use cases, offer an option to add, remove, and rearrange columns via the table personalization dialog. Before doing so, try to reduce the number of columns, for example, by using several lines per column or by utilizing the pop-in function. See the cheat sheet for an example.

Column Headers – Best Practices

Within the column header, provide a label for each column (sap.m.Column, aggregation: header). The column header label is reused as a label in the pop-in area.

Exception: If the column does not pop in, you can leave out the column header label as long as at least one column still has a column header label.

Use controls that wrap, for example, text. Do not use controls that truncate, such as labels.

Do
Do: wrap column headers
Do: wrap column headers
Don't
Do not: truncate column headers
Do not: truncate column headers

Column headers (sap.m.Column, aggregation: header) usually contain links or text-based controls.

Column headers can also contain other kinds of SAP Fiori controls. However, the column header cannot be aligned vertically, making it difficult to use many controls in the column header. Using other kinds of controls also creates problems with pop-in behavior and could thus lead to accessibility issues. Therefore, exercise caution when using them in a column header.

Accepted: Link as column header text (used rarely)
Accepted: Link as column header text (used rarely)

Content Alignment

For alignment of cell content, follow the guidelines below (sap.m.Column, properties: halgin, valign, sap.m.ColumnListItem, property: VAlign). Align the column header horizontally according to the cells’ content.

Left-align: text, IDs, phone numbers, URLs, passwords, and email addresses.

Left-alignment of text
Left-alignment of text

Right-align: numbers and amounts, except IDs, to ensure comparability of such figures.

Right-alignment of numbers
Right-alignment of numbers

Right-align: dates and times (to ensure comparability for most formats and locales).

Right-alignment of dates
Right-alignment of dates

In general, center one-word status information and icons:

If there is an icon and text, or if the status contains more than two words in the English language, left align the entire status column.

Center-alignment of one-word texts
Center-alignment of one-word texts

Vertical alignment:

Top-align where possible to facilitate reading the content on one line.

Do not use top-alignment if it results in a peculiar layout. This usually happens when controls that need more vertical space are combined with text-only controls, such as input fields. In this case, try center-alignment instead and fine tune it until the layout fits.

Do
Do: use top-alignment where possible
Do: use top-alignment where possible
Don't
Do not: rigidly use top alignment if it does not make sense
Do not: rigidly use top alignment if it does not make sense

Content Formatting

The responsive table provides flexibility, including multiline cells, by enabling every control to be put into a cell.

As a key identifier of an item, use an object identifier. Show the key identifier in the first column. Formore information, see object display components.

If the screen width is small, do not hide this column or move it to the pop-in area.

Object identifier
Object identifier

Strings with IDs: If the responsive table contains more single-line data, show the ID in brackets after the corresponding string.

This minimizes the line height.

For items with a small line height, place the ID in brackets after the corresponding string
For items with a small line height, place the ID in brackets after the corresponding string

Strings with IDs: If line height is already large, show the ID below the corresponding string. Use the object identifier to do so.

For items with a large line height, place the ID below the corresponding string
For items with a large line height, place the ID below the corresponding string

For status information, use semantic colors on the foreground elements.

For status information on text: If the status is actionable, add a transparent icon button next to the text.

Semantic colors on text
Semantic colors on text

Avoid truncation. Use controls that wrap the text.

For example, use text instead of a label.

Do
Do: wrap text
Do: wrap text
Don't
Do not: truncate text
Do not: truncate text

For editable content, use input fields and other interactive controls within the table cells. If you need edit mode, change your text controls, such as labels, text, and links, to input fields or other appropriate controls as soon as you switch to edit mode, but not before.

You can do this by changing the control or, in more complex cases, by exchanging the whole responsive table.

Interactive controls – In line
Interactive controls – In line

If there is no value for a cell, leave it blank. Do not display text as N/A.

Leave empty fields blank
Leave empty fields blank

Numbering items:

  • If the item number has four digits/letters or less and is equally important as the corresponding description, concatenate the item number with the description and show it in one column.
  • If the item number has five digits/letters or more, or if it is more important than the corresponding description, for example, when no description is available, use a separate column for the item number.
  • If the item number is more like an ID in regards to its description, use ID formatting, such as Description (ID).
For short numbers, add the item number to the description
For short numbers, add the item number to the description

Try not to display an empty responsive table. If there is no way around this, provide instructions on how to fill the table with data (sap.m.Table/ sap.m.ListBase, properties: showNoData, noDataText).

Provide meaningful instructions
Provide meaningful instructions

Item States

To show that an item is unread, use the corresponding flag (sap.m.Table, property: showUnread, sap.m.ColumnListItem/ sap.m.ListItemBase, property: unread). This shows most of the content in bold font.

An unread item
An unread item

To show that an item has been modified, for example, within the global edit flow, add the string (Modified) at the bottom of the column that identifies the line item.

A modified item
A modified item

To show that a modified item has an error, for example, within the global edit flow, add the string (Contains errors) at the bottom of the column that identifies the line item. Use an object status control with the error state for it (sap.m.ObjectStatus, property: state, value: sap.ui.core.ValueState.Error).

A modified item with an error
A modified item with an error

To show that an item is locked, use a transparent-style button with the corresponding icon and the text Locked by [name] at the bottom of the identifying column. The user can click or tap the button to open a quick view of the person.

A locked item
A locked item

To show that an item is in a draft state, use a transparent-style button with the text Draft at the bottom of the identifying column. The user can click or tap the button to open a popover showing the timestamp of the last change.

Item in draft state
Item in draft state

Show only one state at any one time.

Numbers and Units

Show the unit of measurement together with the number within the item rows.

Do not put the unit in the column header. Do not use an additional column to show the unit of measurement. This is also valid for prices.

Unit of mesaurement – In line
Unit of mesaurement – In line

For numbers with units, show the correct formatting by using the object number control.

Object number
Object number

For the most important number with its unit, show the correct formatting by using the object number control and the emphasized flag.
Exception: If all numbers are of equal importance, emphasize none of them.

If the screen width is small, do not hide this column or move it to the pop-in area.
Exception: If the column containing the object identifier and the column containing the key attribute do not fit together on the screen, move the column containing the key attribute to the pop-in area.

Object number (emphasized)
Object number (emphasized)

Actions

To trigger actions on multiple items, use a multiselection table (sap.m.Table, property: mode, value: sap.m.ListMode.MultiSelect):

  • Offer the corresponding actions in the footer toolbar if the responsive table is the only area on the screen where actions can be applied. This has the advantage that the actions on the footer toolbar are fixed on the screen and you cannot scroll them away.
  • In all other cases, show the actions on the table toolbar.

Do not offer action triggering on multiple items if the table is expected to have fewer than 10 items in most cases.

To trigger actions on a single item only (sap.m.Table, property: mode, value: sap.m.ListMode.SingleSelectMaster):

  • Offer the corresponding actions in the footer toolbar if the responsive table is the only area on the screen to which actions can be applied. This has the advantage that the actions on the footer toolbar are fixed on the screen and cannot be scrolled away.
  • In other cases, show the actions on the table toolbar.
  • In rare cases, show the actions within the line item. Since these actions are repeated in every line and thus use a lot of screen real estate, only do this for one or two actions at most. In this case, show the action trigger near the content to which it belongs. Do not add a specific column for actions, but instead use transparent-style buttons. An exception to this is if the action trigger belongs to a link.
OK: Place actions near to the objects to which they belong
OK: Place actions near to the objects to which they belong

The following actions on single items must always be in-line:

Delete: Use “Delete” table mode (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.Delete). This places a Delete button at the end of each row.

Delete button
Delete button

Navigation: Use the “Navigation” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Navigation). This places a Navigation indicator at the end of each row.

Use this to navigate to a new page containing line item details. In rare cases, you can also use this for navigation within the table without navigating to another page.

Navigation indicator
Navigation indicator

Edit: Use the “Detail” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Detail). This places an Edit icon at the end of each row.

Edit button
Edit button

From these three actions (delete, navigation, and edit), you can combine delete and edit, or delete and navigation.

Edit and navigation cannot be combined.

To trigger actions that are independent of the selection, show the actions on the table toolbar. Examples of such actions are add, edit (in the sense of changing the whole table to edit mode), sort, filter, group (or view settings), and table personalization.

To trigger a default action on the whole line item, use the “Active” or “DetailAndActive” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Active).

Active items trigger an event when clicked, which can be handled by apps, for example, to open a dialog. Clicks on interactive controls within the item do not trigger the event, but are handled by the interactive control.

Do not use this for navigation, to switch the line item to an edit state, or to delete the item.

Active can be combined with edit and delete, but not with navigation. Do not combine active with single selection.

When you add an item, add the row:

  • Beneath the last item if there are 10 items or less overall, or if you rarely add an item. Scroll the screen if necessary to ensure that the new item remains visible.
  • As the first item if there are more than 10 items overall, or if you add an item quite frequently.

When you add items, ignore the sort, filter, and group settings when the item is added. As soon as the responsive table is sorted, filtered, and grouped again, the new item is handled accordingly, but not before.

Editable Content

For editable content, use input fields and any other interactive controls within the table cells that meet your input needs.

All SAPUI5 controls can be used.

If you need edit mode, change your text controls, such as label, text, and link, to input fields, or other appropriate controls as soon as you switch to edit mode, but not before.

You can do this by exchanging the control or, in more complex cases, by exchanging the whole responsive table.

For mass editing items:

  • Provide multiselection (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.MultiSelect).
  • Provide an Edit button.
  • If several items are selected, choosing the Edit button opens a dialog in which the user edits the corresponding fields for all selected items.

This is similar to mass editing in the split screen app.

View Settings: Sort, Filter, and Group

Sort, filter, and/or group settings are handled in the view settings dialog. This dialog can provide any combination of these three settings, including just one setting, such as sort only.

  • If sorting, filtering, and/or grouping are a common use case in your app, offer one, two, or all three of the corresponding features in one or more view settings dialogs. Note: Do not offer these features if the table is expected to have only a small number of entries (up to 20 in most cases).
  • If filtering is a main use case, do not offer filtering in the view settings dialog. Use the filter bar instead.

To trigger the view settings dialog, provide several buttons, one for each of these view settings. Each button opens a view settings dialog that contains only the relevant page.

You should always use only the view settings you really need. For example, do not offer grouping if it does not support your use case well.

Using the view settings dialog allows you to define several sort, filter, and/or group settings per column. Thus, you can sort, filter, and/or group a column with several data points independently by each data point.

Several triggers for the different view settings (sort, filter, group)
Several triggers for the different view settings (sort, filter, group)

To display the current filter state, use the infobar below the table title. A click on the infobar opens the view settings dialog on the filter page.

Show the infobar only if the filter settings are not shown somewhere else. For example: Do not show the infobar for settings taken in the filter bar or in a select placed in the table toolbar.

If the infobar is shown, provide an option to reset all corresponding filters on the infobar.

Filtered table
Filtered table

To display the current group state, group headers are shown.

On the group header, show the following text (sap.m.GroupHeaderListItem, property: title):

[Label of the grouped column]: [Grouping Value]

Grouped table
Grouped table

Persist the view settings. When a user reopens the app, show the analytical table with the same sort, filter, and group settings as last defined by this user.

Personalization

To add, remove, or rearrange columns, use the table personalization dialog. Trigger the dialog via a button in the table toolbar.

Offer personalization if you need more columns than those that fit on a tablet screen, which is usually five, to fulfill 80% of your main use cases. Before doing so, try to reduce the number of columns, for example, by using several lines per column or by utilizing the pop-in function. See the cheat sheet for an example.

View settings and table personalization icons
View settings and table personalization icons

Persist the column layout settings. When a user reopens the app, show the responsive table with the same column layout as last defined by this user.

Properties

sap.m.Table

The following additional properties are available for the responsive table:

  • The property: fixedLayout defines the algorithm the control uses to define column width. Setting it to “false” would perform automatic calculations for the column width, based on the longest non-breakable content. You should always set it to “true” for performance reasons. Exceptions are permissible if the table has only a few columns on a large screen width and fewer than 10 rows are displayed.
  • The property: backgroundDesign defines the background on which items are rendered. Use the default value.
  • The property: showOverlay provides an overlay on the whole table, which prevents use of the responsive table. This is used within the list report floorplan to mark the table as outdated after filter settings have been changed but the new filter settings have not yet been applied. Do not use it in other cases.
  • The property: insert adds a margin on all sides of the responsive table.
  • The property: headerText is a simple way to set the table title if you just need a title. However, do not use any of the following:
    • A separate toolbar
    • variantManagement
    • headerToolbar aggregation
  • The property: headerDesign affects the appearance of the header if the theme supports it. Leave the default value as it is.
  • The property: footerText adds a small additional row below the table footer or last item. This row can contain text only. Do not use this property.
  • The property: width defines the width of the whole table.
  • The property: includeItemInSelection uses a click on the whole line item to select the corresponding item if the responsive table is in a selection mode. This competes with other settings like “Navigation” or “Active” and should therefore not be used.
  • The property: enableBusyIndicator shows a busy indicator while data is loaded.
  • The property: modeAnimationOn does not have any effect. Do not use it.
  • The property: showSeparators allows you to show all, none, or some separators. The default setting, which is to show all separators, is to be used.
  • The property: swipeDirection allows you to define the direction in which to swipe if additional actions are hidden behind a table row. This works only on touch devices. Do not use this property.
  • The property: rememberSelections leaves items selected even if they are not currently visible, for example, through filtering. If this behavior is not wanted, set the flag to “false”, but you should do so only in exceptional cases.
  • The property: busy sets the table to a busy state. While in busy state, the whole table cannot be used and items cannot be read due to an overlay.
  • The property: busyIndicatorDelay defines the time after which a busy state is shown after the responsive table has been set to this state. Use the default value.
  • The property: visible shows the table (“true”) or hides it (“false”).
  • The property: tooltip does not have an effect. Do not use it.

sap.m.Column

The following additional properties are available for sap.m.Column:

  • The property: width defines the width of the column in all units allowed by HTML, such as em, rem, %, and px.
  • The property: styleClass is used if you need to change the visual design of a column. Do not use this, but use the default style instead.
  • The property: visible shows or hides the column.
  • The property: tooltip does not have an effect. Do not use it.

sap.m.ColumnListItem

The following additional properties are available for sap.m.ColumnListItem:

  • The property: selected allows an item to be selected programmatically.
  • The property: counter does not have any effect. Do not use it.
  • Do not use the property: busy.
  • Do not use the property: busyIndicatorDelay.
  • The property: visible shows or hides the item.
  • The property: tooltip adds a tooltip to a whole row. The tooltip is only shown on mouse interaction. It will not work on tablets or smartphones. Do not use it.

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

Responsive Table

The responsive table is the default table in SAP Fiori. It contains a set of line items and is fully responsive. Depending on the scenario, users can also navigate from the line items to further details.

Usage

Use the responsive table if:

  • You need a table. The responsive table is the default table in SAP Fiori.
  • You need to use various controls inside a line item, such as micro charts, for example. In contrast, the analytical table supports only a very limited set of controls.
  • The focus lies on working on line items, not on cells. The responsive table is optimized for viewing complete items on all devices.
  • Selecting one or more items is a main use case and details are needed to choose the correct item.
  • Line items are independent of each other and no operation across columns is needed.
  • You want to have only one implementation for all devices. As the name suggests, the responsive table is responsive.

 

Do not use the responsive table if:

  • The main use case is to select one item from a very small number of items, without viewing additional details. In this case, a select or combo box might be more appropriate.
  • The main use case is to select one item from several items, with the possibility of viewing only a few details per item. In this case, a list might be more appropriate. Pay attention to the layout of the list item to ensure that it has a pleasant appearance. The master list is a good example of a list use case.
  • The cell level and the spatial relationship between cells is more important than the line item. In this case, use the analytical table or grid table. Examples include spreadsheet analyses and waterfall charts. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • You are working on more than 1,000 rows. In this case, the analytical table and the grid table are easier to handle and provide better performance. In contrast to the responsive table, the architecture of the analytical table and of the grid table is optimized for handling large numbers of items. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • Comparing items is a major use case. In this case, the analytical table or grid table might or might not be more appropriate. Each cell contains only one data point. In contrast, the responsive table has more flexibility in terms of line items, including the ability to add more data points per cell and also the pop-in function. Both make comparisons more difficult. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • Data needs to be structured in a hierarchical manner. In this case, a tree table might be more appropriate. Although the analytical table can have several grouping levels, it is not as flexible when nodes at several levels contain children. Note that neither the tree table nor the analytical table are fully responsive. You will need to take an adaptive approach by offering an additional UI for tablets.
  • You need an overview of a large amount of data. In this case, use a chart.
  • You just need it for layout reasons. In this case, use a layout container such as a horizontal layout or a vertical layout instead.
  • You need read-only or editable field-value pairs. In this case, use a form instead. The responsive table is not optimized for form-like input navigation.
Don't
Don't: Do not use a responsive table as a form
Don't: Do not use a responsive table as a form

See the table overview to decide which SAP Fiori table is most suitable for your needs.

Responsiveness

The responsiveness of a responsive table is optimized for viewing one line item at a time with no or only vertical scrolling, irrespective of the display width.

On smartphones, only the most important data remains in the one-column or two-column table, while all other data is moved to the space between two item rows, known as the “pop-in area”. In this area, data of the corresponding cell is provided as a label, or value pair, which is defined by the column header. The pop-in area itself is responsive, so labels can be shown next to or above the corresponding data.

A responsive table displayed on a smartphone
A responsive table displayed on a smartphone
A responsive table displayed on a tablet
A responsive table displayed on a tablet
A responsive table displayed in compact mode on a desktop computer
A responsive table displayed in compact mode on a desktop computer

To ensure responsiveness, you must configure each column. Depending on the screen width (in pixels), the column needs to know which of the following responses is required:

  • Stay in the table layout.
  • Move to the pop-in (sap.m.Column, with the properties: demandPopin, minScreenWidth, popinHAlign, popinDisplay).
  • Hide.

Since you have to define this for each column, you can also handle more than one column at a single breakpoint, such as moving three columns to the pop-in area at once.

Each of the three device types has a predefined value for the screen width. However, you will get better results if you offer more breakpoints by using pixel values instead of the predefined values.

For the smallest screen width, keep the following information in the table layout:

  • The identifier of the line item
  • The key attribute

The examples in the following tables help to illustrate this:

A typical responsive table.

A typical responsive table
A typical responsive table

Hide the Information column for a screen width smaller than 570 px:

Hiding the Information column
Hiding the Information column

Move the Vendor column to the pop-in area for a screen width smaller than 460 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the Vendor column to the pop-in area
Moving the Vendor column to the pop-in area

Move the Limit column to the pop-in area for a screen width smaller than 350 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the Limit column to the popin area
Moving the Limit column to the popin area

Move the Price column to the pop-in area for a screen width smaller than 270 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the Price column to the pop-in area
Moving the Price column to the pop-in area

If you need to support even smaller screens, values can be moved below the corresponding labels inside the pop-in area. In the example below, this has been done for a screen width smaller than 220 px (sap.m.Column, property: popinDisplay):

Pop-in area – Moving the data below the labels
Pop-in area – Moving the data below the labels

Layout

The optional title bar contains the title of the responsive table, an item counter, the variant management, and the toolbar.

The filter info bar appears when the responsive table is filtered, and it shows information on the filter settings.

The column header shows the label for each column.

The collection of items, or rows, occupies the main part of the responsive table.

You can add aggregation information (such as totals) to the footer.

A More button can be shown if you do not want all items to be loaded at the start (known as “lazy loading”). Ideally, you should use scrolling to load more items instead of choosing the More button.

Schematic visualization of the responsive table
Schematic visualization of the responsive table

Components

The title bar consists of a toolbar.
The toolbar can contain entry points for the view settings dialog and the table personalization dialog, as well as view switches in the form of a segmented button, and buttons for AddEdit, and other actions.
Beneath the toolbar, display a filter info bar (which itself is a special toolbar) if the responsive table is filtered.
To format data as part of items, apply the guidelines for formatting data. Controls commonly used inside items are the object identifier and the object number. For more information about these, please see object display components.

Behavior and Interaction

The responsive table is quite flexible in regards to its content.

Table Level

Scroll

The height of the table is defined by the number of items it contains. It does not have its own scroll container, but is scrolled together with the app.

Same table, different number of items
Same table, different number of items

Merge Duplicates

To simulate the behavior of row spanning, you can merge cells of consecutive rows inside a column automatically if they contain the same value (sap.m.Column, properties: mergeDuplicates, mergeFunctionName).

Use the merge feature if you expect the column to contain duplicate entries, and if it makes sense to group them. In the example screenshot, the Supplier, Product, and Dimensions columns reflect a hierarchical structure: Suppliers have products, which in turn have dimensions. Because suppliers typically have multiple products, merging duplicate entries for the supplier column makes the table easier to read. Note, however, that when the user sorts the table by another field, the hierarchy changes and the merged items are regrouped accordingly.

Do not use the merge feature if duplicate entries are not part of the design. If consecutive table rows happen to have the same values at runtime, this alone is not a valid reason to group them.

Supplier column merges duplicates in consecutive rows
Supplier column merges duplicates in consecutive rows

Select

A responsive table can have one of the following selection types (sap.m.Table/ sap.m.ListBase, property: mode):

  • None: Items cannot be selected (sap.m.ListMode.None).
    Beware: Line items can, nevertheless, use the sap.m.ListType “navigation” which allows click handling on specific line items. This should only be used when the click triggers a navigation to a corresponding line item details page.
  • Single select master: One item of the responsive table can be selected. To select an item, the whole row can be clicked. Single select master does not add any visual indication and can therefore not be differentiated from none-selection tables. For single selection, this it the preferred mode. (sap.m.ListMode.SingleSelectMaster)
  • Single select left: One item of the responsive table can be selected. For this, the responsive table provides radio buttons on the left side of each line item. Use this selection mode only if clicking on the row shoud trigger something else, such as navigation. Ideally, always keep one item selected, even in initial state (sap.m.ListMode.SingleSelectLeft).
  • Multi-select: Allows the selection of one or more items. For this, the responsive table provides checkboxes on the left side of each line item. Select All works via a checkbox on the left of the column header. Select All (de-)selects all items which the user can reach via scrolling (sap.m.ListMode.MultiSelect). With multiselection, responsive tables avoid having checkboxes in the first column.
Responsive table without selectable items
Responsive table without selectable items
Single selection
Single selection
Single selection with radio buttons. Use only if row clicks are used for something else, such as navigation.
Single selection with radio buttons. Use only if row clicks are used for something else, such as navigation.
Multiselection
Multiselection

Group

To group items, a group header is displayed (sap.m.GroupHeaderLisItem). The group header is not interactive.

Group headers
Group headers

Show Aggregations

To show aggregations, such as totals, use the table footer (sap.m.Column, aggregation: footer).

Do not show aggregations in growing mode. It is not clear whether an aggregation only aggregates the items loaded into the front end, or all items.

Showing totals on the table footer
Showing totals on the table footer

Load Items

To show more than 200 items, use growing mode (sap.m.Table/ sap.m.ListBase, properties: growing, growingThreshold, growingScrollToLoad, growingTriggerText). Growing mode allows only the first few items to be loaded. Additional items are only loaded (and rendered) on request, which improves performance. The request can be submitted via scrolling, which is the preferred method, or by clicking the More button.

If you use the More button, show the number of items already loaded and the total number items below the word More if possible.

Do not show more than 1,000 items overall, even in growing mode. Since the responsive table renders all items, showing more than 1,000 items can lead to performance issues.

Do not show aggregations if growing mode is used. Also, do not display an item count on the table toolbar if growing mode is used. Use the count below the More button instead.

More button is permissible, but scrolling is preferred
More button is permissible, but scrolling is preferred

Line Item Level

Delete Single Item Rows

To delete single item rows, use the table in the mode “delete” (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.Delete). This adds Delete buttons to each line item. Clicking this button triggers the deletion of the corresponding line item.

Do not use this mode if deleting multiple lines at once is the preferred use case.

Delete is a mode of the responsive table and can therefore not be used together with single selection or multiselection.

Responsive table in delete mode
Responsive table in delete mode

Navigate

Because the controls inside line items are handled by the corresponding control behaviors, clicking on an interactive control within a line item does not trigger the navigation event.

To allow navigation from a line item, set sap.m.ListType to “navigation” within the corresponding item (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Navigation). This will create indicator at the end of the line (“>”) and the entire line item will become clickable. Clicking on the line triggers the navigation event. Use this to navigate to a new page containing line item details. In rare cases, you can also use the navigation mode for category navigation without navigating to another page.

If no navigation is possible, set sap.m.ListType to “inactive”.

Navigation is a list item type and can therefore not be used together with “edit”, or in combination with click events for the entire item (“active”).

Navigation indicator
Navigation indicator

Edit Line Items

To allow editing a line item details page, set sap.m.ListType to “detail” within the corresponding item (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Detail or sap.m.ListType.DetailAndActive). This will create an Edit button at the end of the line. Clicking the button triggers the edit event. Use this event to switch the corresponding line item to edit mode.

Edit is a list item type and can therefore not be used together with “navigation” or in combination with click events for the entire item (“active”).

Edit button
Edit button

Click an Item

Items as a whole can be clickable. An event is fired by clicking on the item (anywhere where there is no interactive control inside the item). Apps can react on the event, such as by opening a dialog(sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Active or sap.m.ListType.DetailAndActive).

Active elements do not have a visual indication and can therefore not be differentiated from non-active elements.

Active is a list item type and can therefore not be used together with “navigation” or “edit”. In addition, “active” uses the whole item as a clickable area and therefore cannot be used together with a single-selection table.

Active element
Active element

Cell Level

Show Information

In contrast to traditional tables, such as an analytical table or a tree table, a cell can contain more than just one line of text.

Several lines of text within one cell
Several lines of text within one cell

Add Controls

Beside textual elements, you can add any control to a table cell.

Controls inside cells
Controls inside cells
Any control can be placed inside a cell
Any control can be placed inside a cell

A cell can contain more than one control and more than one data point.

The view settings dialog allows you to sort, filter, and group by each of these data points.

Several controls per cell
Several controls per cell

Guidelines

Table Title

Implement the table title by using a toolbar control.

Use a table title if the title of a responsive table is not indicated in the surrounding area. Do not use a table title if it would just repeat text that is already above the responsive table.

Use a table title if you need the table toolbar. To avoid repeating text, feel free to use generic text as a table title, such as Items.

If you use a table title, be sure to include one of the following:

Table title
Table title
  • Or an item count using the following format: Items (Number of Items). For example, Items: 2. You can combine an item count with variant management.
  • Do not use an item count together with “growing mode”.
Table title with item count
Table title with item count

Loading Data

To indicate that the table is currently loading items, use the busy state. (sap.m.Table, property: busy). Do not show any items or text. As soon as the data is loaded, remove the busy state and show all items.

Table in busy state while loading data
Table in busy state while loading data

Columns – Best Practices

Minimize the number of columns:

  • On a smartphone, use only one or two columns, depending on the content.
  • On a tablet or desktop, use up to three columns if the responsive table is shown in the details area of a split-screen layout. Use up to four columns if using the full screen width, depending on the content.

If the responsive table does not fit on the screen width:

  • Hide columns to reduce the width of the table.
  • Use pop-in areas to show the whole content by increasing the height of the line items (sap.m.Column, properties: demandPopin, minScreenWidth).

At the smallest size, keep the following information in the table layout:

  • The column that identifies the line item
  • The column that contains the key attribute

If both of these do not fit on the respective screen width, keep just the column with the line item identifier in the tabular layout.

The responsive table assigns the same width to each column by default. It is recommended that you overwrite this default to provide optimal space for your content (sap.m.Column, property: width).

Optimize column width for its initial content (sap.m.Column, property: width). If the content is dynamic, optimize column width for typical content.

If you need more columns than those that fit on a tablet screen, which is usually five, to fulfill 80% of your main use cases, offer an option to add, remove, and rearrange columns via the table personalization dialog. Before doing so, try to reduce the number of columns, for example, by using several lines per column or by utilizing the pop-in function. See the cheat sheet for an example.

Column Headers – Best Practices

Within the column header, provide a label for each column (sap.m.Column, aggregation: header). The column header label is reused as a label in the pop-in area.

Exception: If the column does not pop in, you can leave out the column header label as long as at least one column still has a column header label.

Use controls that wrap, for example, text. Do not use controls that truncate, such as labels.

Do
Do: wrap column headers
Do: wrap column headers
Don't
Do not: truncate column headers
Do not: truncate column headers

Column headers (sap.m.Column, aggregation: header) usually contain links or text-based controls.

Column headers can also contain other kinds of SAP Fiori controls. However, the column header cannot be aligned vertically, making it difficult to use many controls in the column header. Using other kinds of controls also creates problems with pop-in behavior and could thus lead to accessibility issues. Therefore, exercise caution when using them in a column header.

Accepted: Link as column header text (used rarely)
Accepted: Link as column header text (used rarely)

Content Alignment

For alignment of cell content, follow the guidelines below (sap.m.Column, properties: halgin, valign, sap.m.ColumnListItem, property: VAlign). Align the column header horizontally according to the cells’ content.

Left-align: text, IDs, phone numbers, URLs, passwords, and email addresses.

Left-alignment of text
Left-alignment of text

Right-align: numbers and amounts, except IDs, to ensure comparability of such figures.

Right-alignment of numbers
Right-alignment of numbers

Right-align: dates and times (to ensure comparability for most formats and locales).

Right-alignment of dates
Right-alignment of dates

In general, center one-word status information and icons:

If there is an icon and text, or if the status contains more than two words in the English language, left align the entire status column.

Center-alignment of one-word texts
Center-alignment of one-word texts

Vertical alignment:

Top-align where possible to facilitate reading the content on one line.

Do not use top-alignment if it results in a peculiar layout. This usually happens when controls that need more vertical space are combined with text-only controls, such as input fields. In this case, try center-alignment instead and fine tune it until the layout fits.

Do
Do: use top-alignment where possible
Do: use top-alignment where possible
Don't
Do not: rigidly use top alignment if it does not make sense
Do not: rigidly use top alignment if it does not make sense

Content Formatting

The responsive table provides flexibility, including multiline cells, by enabling every control to be put into a cell.

As a key identifier of an item, use an object identifier. Show the key identifier in the first column. Formore information, see object display components.

If the screen width is small, do not hide this column or move it to the pop-in area.

Object identifier
Object identifier

Strings with IDs: If the responsive table contains more single-line data, show the ID in brackets after the corresponding string.

This minimizes the line height.

For items with a small line height, place the ID in brackets after the corresponding string
For items with a small line height, place the ID in brackets after the corresponding string

Strings with IDs: If line height is already large, show the ID below the corresponding string. Use the object identifier to do so.

For items with a large line height, place the ID below the corresponding string
For items with a large line height, place the ID below the corresponding string

For status information, use semantic colors on the foreground elements.

For status information on text: If the status is actionable, add a transparent icon button next to the text.

Semantic colors on text
Semantic colors on text

Avoid truncation. Use controls that wrap the text.

For example, use text instead of a label.

Do
Do: wrap text
Do: wrap text
Don't
Do not: truncate text
Do not: truncate text

For editable content, use input fields and other interactive controls within the table cells. If you need edit mode, change your text controls, such as labels, text, and links, to input fields or other appropriate controls as soon as you switch to edit mode, but not before.

You can do this by changing the control or, in more complex cases, by exchanging the whole responsive table.

Interactive controls – In line
Interactive controls – In line

If there is no value for a cell, leave it blank. Do not display text as N/A.

Leave empty fields blank
Leave empty fields blank

Numbering items:

  • If the item number has four digits/letters or less and is equally important as the corresponding description, concatenate the item number with the description and show it in one column.
  • If the item number has five digits/letters or more, or if it is more important than the corresponding description, for example, when no description is available, use a separate column for the item number.
  • If the item number is more like an ID in regards to its description, use ID formatting, such as Description (ID).
For short numbers, add the item number to the description
For short numbers, add the item number to the description

Try not to display an empty responsive table. If there is no way around this, provide instructions on how to fill the table with data (sap.m.Table/ sap.m.ListBase, properties: showNoData, noDataText).

Provide meaningful instructions
Provide meaningful instructions

Item States

To show that an item is unread, use the corresponding flag (sap.m.Table, property: showUnread, sap.m.ColumnListItem/ sap.m.ListItemBase, property: unread). This shows most of the content in bold font.

An unread item
An unread item

To show that an item has been modified, for example, within the global edit flow, add the string (Modified) at the bottom of the column that identifies the line item.

A modified item
A modified item

To show that a modified item has an error, for example, within the global edit flow, add the string (Contains errors) at the bottom of the column that identifies the line item. Use an object status control with the error state for it (sap.m.ObjectStatus, property: state, value: sap.ui.core.ValueState.Error).

A modified item with an error
A modified item with an error

To show that an item is locked, use a transparent-style button with the corresponding icon and the text Locked by [name] at the bottom of the identifying column. The user can click or tap the button to open a quick view of the person.

A locked item
A locked item

To show that an item is in a draft state, use a transparent-style button with the text Draft at the bottom of the identifying column. The user can click or tap the button to open a popover showing the timestamp of the last change.

Item in draft state
Item in draft state

Show only one state at any one time.

Numbers and Units

Show the unit of measurement together with the number within the item rows.

Do not put the unit in the column header. Do not use an additional column to show the unit of measurement. This is also valid for prices.

Unit of mesaurement – In line
Unit of mesaurement – In line

For numbers with units, show the correct formatting by using the object number control.

Object number
Object number

For the most important number with its unit, show the correct formatting by using the object number control and the emphasized flag.
Exception: If all numbers are of equal importance, emphasize none of them.

If the screen width is small, do not hide this column or move it to the pop-in area.
Exception: If the column containing the object identifier and the column containing the key attribute do not fit together on the screen, move the column containing the key attribute to the pop-in area.

Object number (emphasized)
Object number (emphasized)

Actions

To trigger actions on multiple items, use a multiselection table (sap.m.Table, property: mode, value: sap.m.ListMode.MultiSelect):

  • Offer the corresponding actions in the footer toolbar if the responsive table is the only area on the screen where actions can be applied. This has the advantage that the actions on the footer toolbar are fixed on the screen and you cannot scroll them away.
  • In all other cases, show the actions on the table toolbar.

Do not offer action triggering on multiple items if the table is expected to have fewer than 10 items in most cases.

To trigger actions on a single item only (sap.m.Table, property: mode, value: sap.m.ListMode.SingleSelectMaster):

  • Offer the corresponding actions in the footer toolbar if the responsive table is the only area on the screen to which actions can be applied. This has the advantage that the actions on the footer toolbar are fixed on the screen and cannot be scrolled away.
  • In other cases, show the actions on the table toolbar.
  • In rare cases, show the actions within the line item. Since these actions are repeated in every line and thus use a lot of screen real estate, only do this for one or two actions at most. In this case, show the action trigger near the content to which it belongs. Do not add a specific column for actions, but instead use transparent-style buttons. An exception to this is if the action trigger belongs to a link.
OK: Place actions near to the objects to which they belong
OK: Place actions near to the objects to which they belong

The following actions on single items must always be in-line:

Delete: Use “Delete” table mode (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.Delete). This places a Delete button at the end of each row.

Delete button
Delete button

Navigation: Use the “Navigation” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Navigation). This places a Navigation indicator at the end of each row.

Use this to navigate to a new page containing line item details. In rare cases, you can also use this for navigation within the table without navigating to another page.

Navigation indicator
Navigation indicator

Edit: Use the “Detail” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Detail). This places an Edit icon at the end of each row.

Edit button
Edit button

From these three actions (delete, navigation, and edit), you can combine delete and edit, or delete and navigation.

Edit and navigation cannot be combined.

To trigger actions that are independent of the selection, show the actions on the table toolbar. Examples of such actions are add, edit (in the sense of changing the whole table to edit mode), sort, filter, group (or view settings), and table personalization.

To trigger a default action on the whole line item, use the “Active” or “DetailAndActive” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Active).

Active items trigger an event when clicked, which can be handled by apps, for example, to open a dialog. Clicks on interactive controls within the item do not trigger the event, but are handled by the interactive control.

Do not use this for navigation, to switch the line item to an edit state, or to delete the item.

Active can be combined with edit and delete, but not with navigation. Do not combine active with single selection.

When you add an item, add the row:

  • Beneath the last item if there are 10 items or less overall, or if you rarely add an item. Scroll the screen if necessary to ensure that the new item remains visible.
  • As the first item if there are more than 10 items overall, or if you add an item quite frequently.

When you add items, ignore the sort, filter, and group settings when the item is added. As soon as the responsive table is sorted, filtered, and grouped again, the new item is handled accordingly, but not before.

Editable Content

For editable content, use input fields and any other interactive controls within the table cells that meet your input needs.

All SAPUI5 controls can be used.

If you need edit mode, change your text controls, such as label, text, and link, to input fields, or other appropriate controls as soon as you switch to edit mode, but not before.

You can do this by exchanging the control or, in more complex cases, by exchanging the whole responsive table.

For mass editing items:

  • Provide multiselection (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.MultiSelect).
  • Provide an Edit button.
  • If several items are selected, choosing the Edit button opens a dialog in which the user edits the corresponding fields for all selected items.

This is similar to mass editing in the split screen app.

View Settings: Sort, Filter, and Group

Sort, filter, and/or group settings are handled in the view settings dialog. This dialog can provide any combination of these three settings, including just one setting, such as sort only.

  • If sorting, filtering, and/or grouping are a common use case in your app, offer one, two, or all three of the corresponding features in one or more view settings dialogs. Note: Do not offer these features if the table is expected to have only a small number of entries (up to 20 in most cases).
  • If filtering is a main use case, do not offer filtering in the view settings dialog. Use the filter bar instead.

There are two ways of triggering the view settings dialog:

  1. Via a button on the table toolbar. Offer all relevant functionality (sort, filter, and/or group) within this dialog.
  2. Provide several buttons, one for each of these view settings. Each button opens a view settings dialog that contains only the relevant page.

Use one of these alternatives in accordance with the following guidelines:

  • If sorting, filtering, and/or grouping are a secondary use case, use option 1.
  • If there are several additional actions, which result in the table toolbar becoming overloaded with buttons, use option 1.
  • If sorting, filtering, and/or grouping are a primary use case, use option 2. This allows faster access to these settings.
  • If there are no problems with screen real estate, use option 2.
  • If there is only one view setting (sort, filter, or group), use option 2.

You should always use only the view settings you really need. For example, do not offer grouping if it does not support your use case well.

Using the view settings dialog allows you to define several sort, filter, and/or group settings per column. Thus, you can sort, filter, and/or group a column with several data points independently by each data point.

Option 1: one trigger for all view settings (sort, filter, group)
Option 1: one trigger for all view settings (sort, filter, group)
Option 2: several triggers for the different view settings (sort, filter, group)
Option 2: several triggers for the different view settings (sort, filter, group)

To display the current filter state, use the infobar below the table title. Click the info bar to open the view settings dialog on the filter page.

Show the infobar only if the filter settings are not shown elsewhere. For example, do not show the infobar for settings made in the filter bar or in a select placed in the table toolbar.

If the infobar is shown, provide an option to reset all corresponding filters in the infobar.

Filtered table
Filtered table

To display the current group state, group headers are shown.

On the group header, show the following text (sap.m.GroupHeaderListItem, property: title):

[Label of the grouped column]: [Grouping Value]

Grouped table
Grouped table

Persist the view settings. When a user reopens the app, show the analytical table with the same sort, filter, and group settings as last defined by this user.

Personalization

To add, remove, or rearrange columns, use the table personalization dialog. Trigger the dialog via a button in the table toolbar.

Offer personalization if you need more columns than those that fit on a tablet screen, which is usually five, to fulfill 80% of your main use cases. Before doing so, try to reduce the number of columns, for example, by using several lines per column or by utilizing the pop-in function. See the cheat sheet for an example.

View settings and table personalization icons
View settings and table personalization icons

Persist the column layout settings. When a user reopens the app, show the responsive table with the same column layout as last defined by this user.

Properties

sap.m.Table

The following additional properties are available for the responsive table:

  • The property: fixedLayout defines the algorithm the control uses to define column width. Setting it to “false” would perform automatic calculations for the column width, based on the longest non-breakable content. You should always set it to “true” for performance reasons. Exceptions are permissible if the table has only a few columns on a large screen width and fewer than 10 rows are displayed.
  • The property: backgroundDesign defines the background on which items are rendered. Use the default value.
  • The property: showOverlay provides an overlay on the whole table, which prevents use of the responsive table. This is used within the list report floorplan to mark the table as outdated after filter settings have been changed but the new filter settings have not yet been applied. Do not use it in other cases.
  • The property: insert adds a margin on all sides of the responsive table.
  • The property: headerText is a simple way to set the table title if you just need a title. However, do not use any of the following:
    • A separate toolbar
    • variantManagement
    • headerToolbar aggregation
  • The property: headerDesign affects the appearance of the header if the theme supports it. Leave the default value as it is.
  • The property: footerText adds a small additional row below the table footer or last item. This row can contain text only. Do not use this property.
  • The property: width defines the width of the whole table.
  • The property: includeItemInSelection uses a click on the whole line item to select the corresponding item if the responsive table is in a selection mode. This competes with other settings like “Navigation” or “Active” and should therefore not be used.
  • The property: enableBusyIndicator shows a busy indicator while data is loaded.
  • The property: modeAnimationOn does not have any effect. Do not use it.
  • The property: showSeparators allows you to show all, none, or some separators. The default setting, which is to show all separators, is to be used.
  • The property: swipeDirection allows you to define the direction in which to swipe if additional actions are hidden behind a table row. This works only on touch devices. Do not use this property.
  • The property: rememberSelections leaves items selected even if they are not currently visible, for example, through filtering. If this behavior is not wanted, set the flag to “false”, but you should do so only in exceptional cases.
  • The property: busy sets the table to a busy state. While in busy state, the whole table cannot be used and items cannot be read due to an overlay.
  • The property: busyIndicatorDelay defines the time after which a busy state is shown after the responsive table has been set to this state. Use the default value.
  • The property: visible shows the table (“true”) or hides it (“false”).
  • The property: tooltip does not have an effect. Do not use it.

sap.m.Column

The following additional properties are available for sap.m.Column:

  • The property: width defines the width of the column in all units allowed by HTML, such as em, rem, %, and px.
  • The property: styleClass is used if you need to change the visual design of a column. Do not use this, but use the default style instead.
  • The property: visible shows or hides the column.
  • The property: tooltip does not have an effect. Do not use it.

sap.m.ColumnListItem

The following additional properties are available for sap.m.ColumnListItem:

  • The property: selected allows an item to be selected programmatically.
  • The property: counter does not have any effect. Do not use it.
  • Do not use the property: busy.
  • Do not use the property: busyIndicatorDelay.
  • The property: visible shows or hides the item.
  • The property: tooltip adds a tooltip to a whole row. The tooltip is only shown on mouse interaction. It will not work on tablets or smartphones. Do not use it.

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

Responsive Table

The responsive table is the default table in SAP Fiori. It contains a set of line items and is fully responsive. Depending on the scenario, users can also navigate from the line items to further details.

Usage

Use the responsive table if:

  • You need a table. The responsive table is the default table in SAP Fiori.
  • You need to use various controls inside a line item, such as micro charts, for example. In contrast, the analytical table supports only a very limited set of controls.
  • The focus lies on working on line items, not on cells. The responsive table is optimized for viewing complete items on all devices.
  • Selecting one or more items is a main use case and details are needed to choose the correct item.
  • Line items are independent of each other and no operation across columns is needed.
  • You want to have only one implementation for all devices. As the name suggests, the responsive table is responsive.

 

Do not use the responsive table if:

  • The main use case is to select one item from a very small number of items, without viewing additional details. In this case, a select or combo box might be more appropriate.
  • The main use case is to select one item from several items, with the possibility of viewing only a few details per item. In this case, a list might be more appropriate. Pay attention to the layout of the list item to ensure that it has a pleasant appearance. The master list is a good example of a list use case.
  • The cell level and the spatial relationship between cells is more important than the line item. In this case, use the analytical table or grid table. Examples include spreadsheet analyses and waterfall charts. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • You are working on more than 1,000 rows. In this case, the analytical table and the grid table are easier to handle and provide better performance. In contrast to the responsive table, the architecture of the analytical table and of the grid table is optimized for handling large numbers of items. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • Comparing items is a major use case. In this case, the analytical table or grid table might or might not be more appropriate. Each cell contains only one data point. In contrast, the responsive table has more flexibility in terms of line items, including the ability to add more data points per cell and also the pop-in function. Both make comparisons more difficult. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • Data needs to be structured in a hierarchical manner. In this case, a tree table might be more appropriate. Although the analytical table can have several grouping levels, it is not as flexible when nodes at several levels contain children. Note that neither the tree table nor the analytical table are fully responsive. You will need to take an adaptive approach by offering an additional UI for tablets.
  • You need an overview of a large amount of data. In this case, use a chart.
  • You just need it for layout reasons. In this case, use a layout container such as a horizontal layout or a vertical layout instead.
  • You need read-only or editable field-value pairs. In this case, use a form instead. The responsive table is not optimized for form-like input navigation.
Don't
Don't: Do not use a responsive table as a form
Don't: Do not use a responsive table as a form

See the table overview to decide which SAP Fiori table is most suitable for your needs.

Responsiveness

The responsiveness of a responsive table is optimized for viewing one line item at a time with no or only vertical scrolling, irrespective of the display width.

On smartphones, only the most important data remains in the one-column or two-column table, while all other data is moved to the space between two item rows, known as the “pop-in area”. In this area, data of the corresponding cell is provided as a label, or value pair, which is defined by the column header. The pop-in area itself is responsive, so labels can be shown next to or above the corresponding data.

A responsive table displayed on a smartphone
A responsive table displayed on a smartphone
A responsive table displayed on a tablet
A responsive table displayed on a tablet
A responsive table displayed in compact mode on a desktop computer
A responsive table displayed in compact mode on a desktop computer

To ensure responsiveness, you must configure each column. Depending on the screen width (in pixels), the column needs to know which of the following responses is required:

  • Stay in the table layout.
  • Move to the pop-in (sap.m.Column, with the properties: demandPopin, minScreenWidth, popinHAlign, popinDisplay).
  • Hide.

Since you have to define this for each column, you can also handle more than one column at a single breakpoint, such as moving three columns to the pop-in area at once.

Each of the three device types has a predefined value for the screen width. However, you will get better results if you offer more breakpoints by using pixel values instead of the predefined values.

For the smallest screen width, keep the following information in the table layout:

  • The identifier of the line item
  • The key attribute

The examples in the following tables help to illustrate this:

A typical responsive table.

A typical responsive table
A typical responsive table

Hide the Information column for a screen width smaller than 570 px:

Hiding the Information column
Hiding the Information column

Move the Vendor column to the pop-in area for a screen width smaller than 460 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the Vendor column to the pop-in area
Moving the Vendor column to the pop-in area

Move the Limit column to the pop-in area for a screen width smaller than 350 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the Limit column to the popin area
Moving the Limit column to the popin area

Move the Price column to the pop-in area for a screen width smaller than 270 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the Price column to the pop-in area
Moving the Price column to the pop-in area

If you need to support even smaller screens, values can be moved below the corresponding labels inside the pop-in area. In the example below, this has been done for a screen width smaller than 220 px (sap.m.Column, property: popinDisplay):

Pop-in area – Moving the data below the labels
Pop-in area – Moving the data below the labels

Layout

The optional title bar contains the title of the responsive table, an item counter, the variant management, and the toolbar.

The filter info bar appears when the responsive table is filtered, and it shows information on the filter settings.

The column header shows the label for each column.

The collection of items, or rows, occupies the main part of the responsive table.

You can add aggregation information (such as totals) to the footer.

A More button can be shown if you do not want all items to be loaded at the start (known as “lazy loading”). Ideally, you should use scrolling to load more items instead of choosing the More button.

Schematic visualization of the responsive table
Schematic visualization of the responsive table

Components

The title bar consists of a toolbar.
The toolbar can contain entry points for the view settings dialog and the table personalization dialog, as well as view switches in the form of a segmented button, and buttons for AddEdit, and other actions.
Beneath the toolbar, display a filter info bar (which itself is a special toolbar) if the responsive table is filtered.
To format data as part of items, apply the guidelines for formatting data. Controls commonly used inside items are the object identifier and the object number. For more information about these, please see object display components.

Behavior and Interaction

The responsive table is quite flexible in regards to its content.

Table Level

Scroll

The height of the table is defined by the number of items it contains. It does not have its own scroll container, but is scrolled together with the app.

Same table, different number of items
Same table, different number of items

Merge Duplicates

To simulate the behavior of row spanning, you can merge cells of consecutive rows inside a column automatically if they contain the same value (sap.m.Column, properties: mergeDuplicates, mergeFunctionName).

Use the merge feature if you expect the column to contain duplicate entries, and if it makes sense to group them. In the example screenshot, the Supplier, Product, and Dimensions columns reflect a hierarchical structure: Suppliers have products, which in turn have dimensions. Because suppliers typically have multiple products, merging duplicate entries for the supplier column makes the table easier to read. Note, however, that when the user sorts the table by another field, the hierarchy changes and the merged items are regrouped accordingly.

Do not use the merge feature if duplicate entries are not part of the design. If consecutive table rows happen to have the same values at runtime, this alone is not a valid reason to group them.

Supplier column merges duplicates in consecutive rows
Supplier column merges duplicates in consecutive rows

Select

A responsive table can have one of the following selection types (sap.m.Table/ sap.m.ListBase, property: mode):

  • None: Items cannot be selected (sap.m.ListMode.None).
    Beware: Line items can, nevertheless, use the sap.m.ListType “navigation” which allows click handling on specific line items. This should only be used when the click triggers a navigation to a corresponding line item details page.
  • Single select master: One item of the responsive table can be selected. To select an item, the whole row can be clicked. Single select master does not add any visual indication and can therefore not be differentiated from none-selection tables. For single selection, this it the preferred mode. (sap.m.ListMode.SingleSelectMaster)
  • Single select left: One item of the responsive table can be selected. For this, the responsive table provides radio buttons on the left side of each line item. Use this selection mode only if clicking on the row shoud trigger something else, such as navigation. Ideally, always keep one item selected, even in initial state (sap.m.ListMode.SingleSelectLeft).
  • Multi-select: Allows the selection of one or more items. For this, the responsive table provides checkboxes on the left side of each line item. Select All works via a checkbox on the left of the column header. Select All (de-)selects all items which the user can reach via scrolling (sap.m.ListMode.MultiSelect). With multiselection, responsive tables avoid having checkboxes in the first column.
Responsive table without selectable items
Responsive table without selectable items
Single selection
Single selection
Single selection with radio buttons. Use only if row clicks are used for something else, such as navigation.
Single selection with radio buttons. Use only if row clicks are used for something else, such as navigation.
Multiselection
Multiselection

Group

To group items, a group header is displayed (sap.m.GroupHeaderLisItem). The group header is not interactive.

Group headers
Group headers

Show Aggregations

To show aggregations, such as totals, use the table footer (sap.m.Column, aggregation: footer).

Do not show aggregations in growing mode. It is not clear whether an aggregation only aggregates the items loaded into the front end, or all items.

Showing totals on the table footer
Showing totals on the table footer

Load Items

To show more than 200 items, use growing mode (sap.m.Table/ sap.m.ListBase, properties: growing, growingThreshold, growingScrollToLoad, growingTriggerText). Growing mode allows only the first few items to be loaded. Additional items are only loaded (and rendered) on request, which improves performance. The request can be submitted via scrolling, which is the preferred method, or by clicking the More button.

If you use the More button, show the number of items already loaded and the total number items below the word More if possible.

Do not show more than 1,000 items overall, even in growing mode. Since the responsive table renders all items, showing more than 1,000 items can lead to performance issues.

Do not show aggregations if growing mode is used. Also, do not display an item count on the table toolbar if growing mode is used. Use the count below the More button instead.

More button is permissible, but scrolling is preferred
More button is permissible, but scrolling is preferred

Line Item Level

Delete Single Item Rows

To delete single item rows, use the table in the mode “delete” (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.Delete). This adds Delete buttons to each line item. Clicking this button triggers the deletion of the corresponding line item.

Do not use this mode if deleting multiple lines at once is the preferred use case.

Delete is a mode of the responsive table and can therefore not be used together with single selection or multiselection.

Responsive table in delete mode
Responsive table in delete mode

Navigate

Because the controls inside line items are handled by the corresponding control behaviors, clicking on an interactive control within a line item does not trigger the navigation event.

To allow navigation from a line item, set sap.m.ListType to “navigation” within the corresponding item (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Navigation). This will create indicator at the end of the line (“>”) and the entire line item will become clickable. Clicking on the line triggers the navigation event. Use this to navigate to a new page containing line item details. In rare cases, you can also use the navigation mode for category navigation without navigating to another page.

If no navigation is possible, set sap.m.ListType to “inactive”.

Navigation is a list item type and can therefore not be used together with “edit”, or in combination with click events for the entire item (“active”).

Navigation indicator
Navigation indicator

Edit Line Items

To allow editing a line item details page, set sap.m.ListType to “detail” within the corresponding item (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Detail or sap.m.ListType.DetailAndActive). This will create an Edit button at the end of the line. Clicking the button triggers the edit event. Use this event to switch the corresponding line item to edit mode.

Edit is a list item type and can therefore not be used together with “navigation” or in combination with click events for the entire item (“active”).

Edit button
Edit button

Click an Item

Items as a whole can be clickable. An event is fired by clicking on the item (anywhere where there is no interactive control inside the item). Apps can react on the event, such as by opening a dialog(sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Active or sap.m.ListType.DetailAndActive).

Active elements do not have a visual indication and can therefore not be differentiated from non-active elements.

Active is a list item type and can therefore not be used together with “navigation” or “edit”. In addition, “active” uses the whole item as a clickable area and therefore cannot be used together with a single-selection table.

Active element
Active element

Cell Level

Show Information

In contrast to traditional tables, such as an analytical table or a tree table, a cell can contain more than just one line of text.

Several lines of text within one cell
Several lines of text within one cell

Add Controls

Beside textual elements, you can add any control to a table cell.

Controls inside cells
Controls inside cells
Any control can be placed inside a cell
Any control can be placed inside a cell

A cell can contain more than one control and more than one data point.

The view settings dialog allows you to sort, filter, and group by each of these data points.

Several controls per cell
Several controls per cell

Guidelines

Table Title

Implement the table title by using a toolbar control.

Use a table title if the title of a responsive table is not indicated in the surrounding area. Do not use a table title if it would just repeat text that is already above the responsive table.

Use a table title if you need the table toolbar. To avoid repeating text, feel free to use generic text as a table title, such as Items.

If you use a table title, be sure to include one of the following:

Table title
Table title
  • Or an item count using the following format: Items (Number of Items). For example, Items: 2. You can combine an item count with variant management.
  • Do not use an item count together with “growing mode”.
Table title with item count
Table title with item count

Columns – Best Practices

Minimize the number of columns:

  • On a smartphone, use only one or two columns, depending on the content.
  • On a tablet or desktop, use up to three columns if the responsive table is shown in the details area of a split-screen layout. Use up to four columns if using the full screen width, depending on the content.

If the responsive table does not fit on the screen width:

  • Hide columns to reduce the width of the table.
  • Use pop-in areas to show the whole content by increasing the height of the line items (sap.m.Column, properties: demandPopin, minScreenWidth).

At the smallest size, keep the following information in the table layout:

  • The column that identifies the line item
  • The column that contains the key attribute

If both of these do not fit on the respective screen width, keep just the column with the line item identifier in the tabular layout.

The responsive table assigns the same width to each column by default. It is recommended that you overwrite this default to provide optimal space for your content (sap.m.Column, property: width).

Optimize column width for its initial content (sap.m.Column, property: width). If the content is dynamic, optimize column width for typical content.

If you need more columns than those that fit on a tablet screen, which is usually five, to fulfill 80% of your main use cases, offer an option to add, remove, and rearrange columns via the table personalization dialog. Before doing so, try to reduce the number of columns, for example, by using several lines per column or by utilizing the pop-in function. See the cheat sheet for an example.

Column Headers – Best Practices

Within the column header, provide a label for each column (sap.m.Column, aggregation: header). The column header label is reused as a label in the pop-in area.

Exception: If the column does not pop in, you can leave out the column header label as long as at least one column still has a column header label.

Use controls that wrap, for example, text. Do not use controls that truncate, such as labels.

Do
Do: wrap column headers
Do: wrap column headers
Don't
Do not: truncate column headers
Do not: truncate column headers

Column headers (sap.m.Column, aggregation: header) usually contain links or text-based controls.

Column headers can also contain other kinds of SAP Fiori controls. However, the column header cannot be aligned vertically, making it difficult to use many controls in the column header. Using other kinds of controls also creates problems with pop-in behavior and could thus lead to accessibility issues. Therefore, exercise caution when using them in a column header.

Accepted: Link as column header text (used rarely)
Accepted: Link as column header text (used rarely)

Content Alignment

For alignment of cell content, follow the guidelines below (sap.m.Column, properties: halgin, valign, sap.m.ColumnListItem, property: VAlign). Align the column header horizontally according to the cells’ content.

Left-align: text, IDs, phone numbers, URLs, passwords, and email addresses.

Left-alignment of text
Left-alignment of text

Right-align: numbers and amounts, except IDs, to ensure comparability of such figures.

Right-alignment of numbers
Right-alignment of numbers

Right-align: dates and times (to ensure comparability for most formats and locales).

Right-alignment of dates
Right-alignment of dates

In general, center one-word status information and icons:

If there is an icon and text, or if the status contains more than two words in the English language, left align the entire status column.

Center-alignment of one-word texts
Center-alignment of one-word texts

Vertical alignment:

Top-align where possible to facilitate reading the content on one line.

Do not use top-alignment if it results in a peculiar layout. This usually happens when controls that need more vertical space are combined with text-only controls, such as input fields. In this case, try center-alignment instead and fine tune it until the layout fits.

Do
Do: use top-alignment where possible
Do: use top-alignment where possible
Don't
Do not: rigidly use top alignment if it does not make sense
Do not: rigidly use top alignment if it does not make sense

Content Formatting

The responsive table provides flexibility, including multiline cells, by enabling every control to be put into a cell.

As a key identifier of an item, use an object identifier. Show the key identifier in the first column. Formore information, see object display components.

If the screen width is small, do not hide this column or move it to the pop-in area.

Object identifier
Object identifier

Strings with IDs: If the responsive table contains more single-line data, show the ID in brackets after the corresponding string.

This minimizes the line height.

For items with a small line height, place the ID in brackets after the corresponding string
For items with a small line height, place the ID in brackets after the corresponding string

Strings with IDs: If line height is already large, show the ID below the corresponding string. Use the object identifier to do so.

For items with a large line height, place the ID below the corresponding string
For items with a large line height, place the ID below the corresponding string

For status information, use semantic colors on the foreground elements.

For status information on text: If the status is actionable, add a transparent icon button next to the text.

Semantic colors on text
Semantic colors on text

Avoid truncation. Use controls that wrap the text.

For example, use text instead of a label.

Do
Do: wrap text
Do: wrap text
Don't
Do not: truncate text
Do not: truncate text

For editable content, use input fields and other interactive controls within the table cells. If you need edit mode, change your text controls, such as labels, text, and links, to input fields or other appropriate controls as soon as you switch to edit mode, but not before.

You can do this by changing the control or, in more complex cases, by exchanging the whole responsive table.

Interactive controls – In line
Interactive controls – In line

If there is no value for a cell, leave it blank. Do not display text as N/A.

Leave empty fields blank
Leave empty fields blank

Numbering items:

  • If the item number has four digits/letters or less and is equally important as the corresponding description, concatenate the item number with the description and show it in one column.
  • If the item number has five digits/letters or more, or if it is more important than the corresponding description, for example, when no description is available, use a separate column for the item number.
  • If the item number is more like an ID in regards to its description, use ID formatting, such as Description (ID).
For short numbers, add the item number to the description
For short numbers, add the item number to the description

Try not to display an empty responsive table. If there is no way around this, provide instructions on how to fill the table with data (sap.m.Table/ sap.m.ListBase, properties: showNoData, noDataText).

Provide meaningful instructions
Provide meaningful instructions

Item States

To show that an item is unread, use the corresponding flag (sap.m.Table, property: showUnread, sap.m.ColumnListItem/ sap.m.ListItemBase, property: unread). This shows most of the content in bold font.

An unread item
An unread item

To show that an item has been modified, for example, within the global edit flow, add the string (Modified) at the bottom of the column that identifies the line item.

A modified item
A modified item

To show that a modified item has an error, for example, within the global edit flow, add the string (Contains errors) at the bottom of the column that identifies the line item. Use an object status control with the error state for it (sap.m.ObjectStatus, property: state, value: sap.ui.core.ValueState.Error).

A modified item with an error
A modified item with an error

To show that an item is locked, use a transparent-style button with the corresponding icon and the text Locked by [name] at the bottom of the identifying column. The user can click or tap the button to open a quick view of the person.

A locked item
A locked item

To show that an item is in a draft state, use a transparent-style button with the text Draft at the bottom of the identifying column. The user can click or tap the button to open a popover showing the timestamp of the last change.

Item in draft state
Item in draft state

Show only one state at any one time.

Numbers and Units

Show the unit of measurement together with the number within the item rows.

Do not put the unit in the column header. Do not use an additional column to show the unit of measurement. This is also valid for prices.

Unit of mesaurement – In line
Unit of mesaurement – In line

For numbers with units, show the correct formatting by using the object number control.

Object number
Object number

For the most important number with its unit, show the correct formatting by using the object number control and the emphasized flag.
Exception: If all numbers are of equal importance, emphasize none of them.

If the screen width is small, do not hide this column or move it to the pop-in area.
Exception: If the column containing the object identifier and the column containing the key attribute do not fit together on the screen, move the column containing the key attribute to the pop-in area.

Object number (emphasized)
Object number (emphasized)

Actions

To trigger actions on multiple items, use a multiselection table (sap.m.Table, property: mode, value: sap.m.ListMode.MultiSelect):

  • Offer the corresponding actions in the footer toolbar if the responsive table is the only area on the screen where actions can be applied. This has the advantage that the actions on the footer toolbar are fixed on the screen and you cannot scroll them away.
  • In all other cases, show the actions on the table toolbar.

Do not offer action triggering on multiple items if the table is expected to have fewer than 10 items in most cases.

To trigger actions on a single item only (sap.m.Table, property: mode, value: sap.m.ListMode.SingleSelectMaster):

  • Offer the corresponding actions in the footer toolbar if the responsive table is the only area on the screen to which actions can be applied. This has the advantage that the actions on the footer toolbar are fixed on the screen and cannot be scrolled away.
  • In other cases, show the actions on the table toolbar.
  • In rare cases, show the actions within the line item. Since these actions are repeated in every line and thus use a lot of screen real estate, only do this for one or two actions at most. In this case, show the action trigger near the content to which it belongs. Do not add a specific column for actions, but instead use transparent-style buttons. An exception to this is if the action trigger belongs to a link.
OK: Place actions near to the objects to which they belong
OK: Place actions near to the objects to which they belong

The following actions on single items must always be in-line:

Delete: Use “Delete” table mode (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.Delete). This places a Delete button at the end of each row.

Delete button
Delete button

Navigation: Use the “Navigation” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Navigation). This places a Navigation indicator at the end of each row.

Use this to navigate to a new page containing line item details. In rare cases, you can also use this for navigation within the table without navigating to another page.

Navigation indicator
Navigation indicator

Edit: Use the “Detail” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Detail). This places an Edit icon at the end of each row.

Edit button
Edit button

From these three actions (delete, navigation, and edit), you can combine delete and edit, or delete and navigation.

Edit and navigation cannot be combined.

To trigger actions that are independent of the selection, show the actions on the table toolbar. Examples of such actions are add, edit (in the sense of changing the whole table to edit mode), sort, filter, group (or view settings), and table personalization.

To trigger a default action on the whole line item, use the “Active” or “DetailAndActive” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Active).

Active items trigger an event when clicked, which can be handled by apps, for example, to open a dialog. Clicks on interactive controls within the item do not trigger the event, but are handled by the interactive control.

Do not use this for navigation, to switch the line item to an edit state, or to delete the item.

Active can be combined with edit and delete, but not with navigation. Do not combine active with single selection.

When you add an item, add the row:

  • Beneath the last item if there are 10 items or less overall, or if you rarely add an item. Scroll the screen if necessary to ensure that the new item remains visible.
  • As the first item if there are more than 10 items overall, or if you add an item quite frequently.

When you add items, ignore the sort, filter, and group settings when the item is added. As soon as the responsive table is sorted, filtered, and grouped again, the new item is handled accordingly, but not before.

Editable Content

For editable content, use input fields and any other interactive controls within the table cells that meet your input needs.

All SAPUI5 controls can be used.

If you need edit mode, change your text controls, such as label, text, and link, to input fields, or other appropriate controls as soon as you switch to edit mode, but not before.

You can do this by exchanging the control or, in more complex cases, by exchanging the whole responsive table.

For mass editing items:

  • Provide multiselection (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.MultiSelect).
  • Provide an Edit button.
  • If several items are selected, choosing the Edit button opens a dialog in which the user edits the corresponding fields for all selected items.

This is similar to mass editing in the split screen app.

View Settings: Sort, Filter, and Group

Sort, filter, and/or group settings are handled in the view settings dialog. This dialog can provide any combination of these three settings, including just one setting, such as sort only.

  • If sorting, filtering, and/or grouping are a common use case in your app, offer one, two, or all three of the corresponding features in one or more view settings dialogs. Note: Do not offer these features if the table is expected to have only a small number of entries (up to 20 in most cases).
  • If filtering is a main use case, do not offer filtering in the view settings dialog. Use the filter bar instead.

There are two ways of triggering the view settings dialog:

  1. Via a button on the table toolbar. Offer all relevant functionality (sort, filter, and/or group) within this dialog.
  2. Provide several buttons, one for each of these view settings. Each button opens a view settings dialog that contains only the relevant page.

Use one of these alternatives in accordance with the following guidelines:

  • If sorting, filtering, and/or grouping are a secondary use case, use option 1.
  • If there are several additional actions, which result in the table toolbar becoming overloaded with buttons, use option 1.
  • If sorting, filtering, and/or grouping are a primary use case, use option 2. This allows faster access to these settings.
  • If there are no problems with screen real estate, use option 2.
  • If there is only one view setting (sort, filter, or group), use option 2.

You should always use only the view settings you really need. For example, do not offer grouping if it does not support your use case well.

Using the view settings dialog allows you to define several sort, filter, and/or group settings per column. Thus, you can sort, filter, and/or group a column with several data points independently by each data point.

Option 1: one trigger for all view settings (sort, filter, group)
Option 1: one trigger for all view settings (sort, filter, group)
Option 2: several triggers for the different view settings (sort, filter, group)
Option 2: several triggers for the different view settings (sort, filter, group)

To display the current filter state, use the infobar below the table title. Click the info bar to open the view settings dialog on the filter page.

Show the infobar only if the filter settings are not shown elsewhere. For example, do not show the infobar for settings made in the filter bar or in a select placed in the table toolbar.

If the infobar is shown, provide an option to reset all corresponding filters in the infobar.

Filtered table
Filtered table

To display the current group state, group headers are shown.

On the group header, show the following text (sap.m.GroupHeaderListItem, property: title):

[Label of the grouped column]: [Grouping Value]

Grouped table
Grouped table

Persist the view settings. When a user reopens the app, show the analytical table with the same sort, filter, and group settings as last defined by this user.

Personalization

To add, remove, or rearrange columns, use the table personalization dialog. Trigger the dialog via a button in the table toolbar.

Offer personalization if you need more columns than those that fit on a tablet screen, which is usually five, to fulfill 80% of your main use cases. Before doing so, try to reduce the number of columns, for example, by using several lines per column or by utilizing the pop-in function. See the cheat sheet for an example.

View settings and table personalization icons
View settings and table personalization icons

Persist the column layout settings. When a user reopens the app, show the responsive table with the same column layout as last defined by this user.

Properties

sap.m.Table

The following additional properties are available for the responsive table:

  • The property: fixedLayout defines the algorithm the control uses to define column width. Setting it to “false” would perform automatic calculations for the column width, based on the longest non-breakable content. You should always set it to “true” for performance reasons. Exceptions are permissible if the table has only a few columns on a large screen width and fewer than 10 rows are displayed.
  • The property: backgroundDesign defines the background on which items are rendered. Use the default value.
  • The property: showOverlay provides an overlay on the whole table, which prevents use of the responsive table. This is used within the list report floorplan to mark the table as outdated after filter settings have been changed but the new filter settings have not yet been applied. Do not use it in other cases.
  • The property: insert adds a margin on all sides of the responsive table.
  • The property: headerText is a simple way to set the table title if you just need a title. However, do not use any of the following:
    • A separate toolbar
    • variantManagement
    • headerToolbar aggregation
  • The property: headerDesign affects the appearance of the header if the theme supports it. Leave the default value as it is.
  • The property: footerText adds a small additional row below the table footer or last item. This row can contain text only. Do not use this property.
  • The property: width defines the width of the whole table.
  • The property: includeItemInSelection uses a click on the whole line item to select the corresponding item if the responsive table is in a selection mode. This competes with other settings like “Navigation” or “Active” and should therefore not be used.
  • The property: enableBusyIndicator shows a busy indicator while data is loaded.
  • The property: modeAnimationOn does not have any effect. Do not use it.
  • The property: showSeparators allows you to show all, none, or some separators. The default setting, which is to show all separators, is to be used.
  • The property: swipeDirection allows you to define the direction in which to swipe if additional actions are hidden behind a table row. This works only on touch devices. Do not use this property.
  • The property: rememberSelections leaves items selected even if they are not currently visible, for example, through filtering. If this behavior is not wanted, set the flag to “false”, but you should do so only in exceptional cases.
  • The property: busy sets the table to a busy state. While in busy state, the whole table cannot be used and items cannot be read due to an overlay.
  • The property: busyIndicatorDelay defines the time after which a busy state is shown after the responsive table has been set to this state. Use the default value.
  • The property: visible shows the table (“true”) or hides it (“false”).
  • The property: tooltip does not have an effect. Do not use it.

sap.m.Column

The following additional properties are available for sap.m.Column:

  • The property: width defines the width of the column in all units allowed by HTML, such as em, rem, %, and px.
  • The property: styleClass is used if you need to change the visual design of a column. Do not use this, but use the default style instead.
  • The property: visible shows or hides the column.
  • The property: tooltip does not have an effect. Do not use it.

sap.m.ColumnListItem

The following additional properties are available for sap.m.ColumnListItem:

  • The property: selected allows an item to be selected programmatically.
  • The property: counter does not have any effect. Do not use it.
  • Do not use the property: busy.
  • Do not use the property: busyIndicatorDelay.
  • The property: visible shows or hides the item.
  • The property: tooltip adds a tooltip to a whole row. The tooltip is only shown on mouse interaction. It will not work on tablets or smartphones. Do not use it.

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

Responsive Table

The responsive table is the default table in SAP Fiori. It contains a set of line items and is fully responsive. Depending on the scenario, users can also navigate from the line items to further details.

Usage

Use the responsive table if:

  • You need a table. The responsive table is the default table in SAP Fiori.
  • You need to use various controls inside a line item, such as micro charts, for example. In contrast, the analytical table supports only a very limited set of controls.
  • The focus lies on working on line items, not on cells. The responsive table is optimized for viewing complete items on all devices.
  • Selecting one or more items is a main use case and details are needed to choose the correct item.
  • Line items are independent of each other and no operation across columns is needed.
  • You want to have only one implementation for all devices. As the name suggests, the responsive table is responsive.

 

Do not use the responsive table if:

  • The main use case is to select one item from a very small number of items, without viewing additional details. In this case, a select or combo box might be more appropriate.
  • The main use case is to select one item from several items, with the possibility of viewing only a few details per item. In this case, a list might be more appropriate. Pay attention to the layout of the list item to ensure that it has a pleasant appearance. The master list is a good example of a list use case.
  • The cell level and the spatial relationship between cells is more important than the line item. In this case, use the analytical table or grid table. Examples include spreadsheet analyses and waterfall charts. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • You are working on more than 1,000 rows. In this case, the analytical table and the grid table are easier to handle and provide better performance. In contrast to the responsive table, the architecture of the analytical table and of the grid table is optimized for handling large numbers of items. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • Comparing items is a major use case. In this case, the analytical table or grid table might or might not be more appropriate. Each cell contains only one data point. In contrast, the responsive table has more flexibility in terms of line items, including the ability to add more data points per cell and also the pop-in function. Both make comparisons more difficult. Note that neither the analytical table nor the grid table are fully responsive. Both are only available for desktops and tablets, so you will need to take an adaptive approach by offering an additional UI for smartphones.
  • Data needs to be structured in a hierarchical manner. In this case, a tree table might be more appropriate. Although the analytical table can have several grouping levels, it is not as flexible when nodes at several levels contain children. Note that neither the tree table nor the analytical table are fully responsive. You will need to take an adaptive approach by offering an additional UI for tablets.
  • You need an overview of a large amount of data. In this case, use a chart.
  • You just need it for layout reasons. In this case, use a layout container such as a horizontal layout or a vertical layout instead.
  • You need read-only or editable field-value pairs. In this case, use a form instead. The responsive table is not optimized for form-like input navigation.
Don't
Don't: Do not use a responsive table as a form
Don't: Do not use a responsive table as a form

See the table overview to decide which SAP Fiori table is most suitable for your needs.

Responsiveness

The responsiveness of the responsive table is optimized for viewing one line item at a time with no or only vertical scrolling, no matter of the display width.

On smartphone, only the most important data stays in the tabular structure (1 or 2 columns), while all other data moves to the pop-in area. The pop-in area is the space between two item rows. In this area, data of the corresponding cell is provided as label – value pair, where the label is provided by the column header. The pop-in area itself is responsive: labels could be shown next to or above the corresponding data.

The responsive table displayed on a smartphone
The responsive table displayed on a smartphone
The responsive table displayed on a tablet
The responsive table displayed on a tablet
The responsive table displayed in compact mode on a desktop computer
The responsive table displayed in compact mode on a desktop computer

To ensure responsiveness, you must configure each column. Depending on the screen width (in pixels), the column needs to know which of the following responses is required:

  • Stay in the table layout.
  • Move to the pop-in (sap.m.Column, with the properties: demandPopin, minScreenWidth, popinHAlign, popinDisplay).
  • Hide.

Since you have to define this for each column, you can also handle more than one column at a single breakpoint, such as moving three columns to the pop-in area at once.

Each of the three device types has a predefined value for the screen width. However, you will get better results if you offer more breakpoints by using pixel values instead of the predefined values.

For the smallest screen width, keep the following information in the table layout:

  • The identifier of the line item
  • The key attribute

The examples in the following tables help to illustrate this:

A typical responsive table.

A typical responsive table
A typical responsive table

Hide the information column for a screen width smaller than 570 px:

Hiding the information column
Hiding the information column

Move the column “vendor” to the pop-in area for a screen width smaller than 460 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the vendor column to the pop-in area
Moving the vendor column to the pop-in area

Move the column “limit” to the pop-in for a screen width smaller than 350 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the limit column to the pop-in area
Moving the limit column to the pop-in area

Move the column “price” to the pop-in area for a screen width smaller than 270 px (sap.m.Column, properties: demandPopin, minScreenWidth):

Moving the price column to the pop-in area
Moving the price column to the pop-in area

If you still need to support smaller screens, values can be moved below the corresponding labels inside the pop-in area. In this examples this happens for a screen width smaller than 220 px (sap.m.Column, property: popinDisplay):

Pop-in area: moving the data below the labels
Pop-in area: moving the data below the labels

Layout

The optional title bar contains the title of the responsive table, an item counter, the variant management, and the toolbar.

The filter info bar appears when the responsive table is filtered, and it shows information on the filter settings.

The column header shows the label for each column.

The collection of items, or rows, occupies the main part of the responsive table.

You can add aggregation information (such as totals) to the footer.

A More button can be shown if you do not want all items to be loaded at the start (known as “lazy loading”). Ideally, you should use scrolling to load more items instead of choosing the More button.

Schematic visualization of the responsive table
Schematic visualization of the responsive table

Components

The title bar consists of a toolbar.
The toolbar can contain entry points for the view settings dialog and the table personalization dialog, as well as view switches in the form of a segmented button, and buttons for AddEdit, and other actions.
Beneath the toolbar, display a filter info bar (which itself is a special toolbar) if the responsive table is filtered.
To format data as part of items, apply the guidelines for formatting data. Controls commonly used inside items are the object identifier and the object number. For more information about these, please see object display components.

Behavior and Interaction

The responsive table is quite flexible in regards to its content.

Table Level

Scroll

The height of the table is defined by the numbers of items it contains. It does not have a scroll container on its own, but is scrolled together with the app.

Same table, different number of items
Same table, different number of items

Merge Duplicates

To simulate the behavior of row spanning, you can merge cells of consecutive rows inside a column automatically if they contain the same value (sap.m.Column, properties: mergeDuplicates, mergeFunctionName).

Use the merge feature if you expect the column to contain duplicate entries, and it makes sense to group them. In the example screenshot, the Supplier, Product, and Dimensions columns reflect a hierarchical structure: suppliers have products, which in turn have dimensions. Because suppliers typically have multiple products, merging duplicate entries for the supplier column makes the table easier to read. Note, however, that when the user sorts the table by another field, the hierarchy changes and the merged items are regrouped accordingly.

Do not use the merge feature if duplicate entries are not part of the design. If consecutive table rows happen to have the same values at runtime, this alone isn’t a valid reason to group them.

Supplier column merges duplicates in consecutive rows
Supplier column merges duplicates in consecutive rows

Select

A responsive table can have one of the following selection types (sap.m.Table/ sap.m.ListBase, property: mode):

  • None: items cannot be selected (sap.m.ListMode.None).
    Beware: line items can, nevertheless, use the sap.m.ListType “navigation” which allows click handling on specific line items. This should only be used when the click triggers a navigation to a corresponding line item details page.
  • Single select master: one item of the responsive table can be selected. To select an item, the whole row can be clicked. Single select master does not add any visual indication and can therefore not be differentiated from none-selection tables. For single selection, this it the preferred mode. (sap.m.ListMode.SingleSelectMaster)
  • Single select left: one item of the responsive table can be selected. For this, the responsive table provides radio buttons on the left side of each line item. Use this selection mode only, if a click on the row shoud trigger something else, e.g. a navigation. Ideally, keep always one item selected, even in initial state. (sap.m.ListMode.SingleSelectLeft)
  • Multi select: allows selection of one or more items. For this, the responsive table provides checkboxes on the left side of each line item. Select all works via a checkbox on the left of the column header. Select all (de-)selects all items which the user can reach via scrolling. (sap.m.ListMode.MultiSelect)

In multi-selection responsive tables avoid having check boxes in your first column.

Responsive table without selectable items
Responsive table without selectable items
Single-selection
Single-selection
SIngle-selection with radio buttons (use only, if row clicks are used for something else, e.g. for navigation)
SIngle-selection with radio buttons (use only, if row clicks are used for something else, e.g. for navigation)
Multi-selection
Multi-selection

Group

For grouping items, a group header is displayed (sap.m.GroupHeaderLisItem). The group header is not interactive.

Group headers
Group headers

Show Aggregations

For showing aggregations (e.g. totals), use the table footer (sap.m.Column, aggregation: footer).

Do not show aggregations in “growing” mode. It is not clear, if an aggregation will only aggregate the items loaded into the front-end or all items.

Showing totals on the table footer
Showing totals on the table footer

Load Items

For showing more than 200 items, use the “growing” mode (sap.m.Table/ sap.m.ListBase, properties: growing, growingThreshold, growingScrollToLoad, growingTriggerText). The growing mode allows to load only the first few items. Additional items are only loaded (and rendered) on request, which improves performance. The “request” can either be done via scrolling (preferred), or by clicking a more button.

If using the more button, show the number of already loaded items and the number of all items below the text more, if possible.

Do not show more than 1.000 items overall, even in growing mode.

Do not show aggregations if the “growing” mode is used. Do not display an item count on the table toolbar if “growing” mode is used. Use the count on the more  button instead.

OK: more button; nevertheless, scrolling is preferred
OK: more button; nevertheless, scrolling is preferred

Line Item Level

Delete Single Item Rows

For deleting single item rows, use the table in the mode “delete” (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.Delete). This adds “delete” buttons to each line item. A click on this button throws an event. Use this event for deleting the corresponding line item.

Do not use this mode if deleting multiple lines at once is the preferred use-case.

“Delete” is a mode of the responsive table and can therefore not be used together with single-selection or multi-selection.

Responsive table in
Responsive table in "delete" mode

Navigate

To allow navigation from a line item, set sap.m.ListType to “navigation” within the corresponding item (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Navigation). This will result in an according indicator at the end of the line (“>”). The whole line item gets clickable. Clicking on the line triggers the navigation event. A click on an interactive control inside the line item is handled by the corresponding control and thus does not trigger the navigation event.

Use this to navigate to a new page containing line item details. In rare cases, you can also use the navigation mode for category navigation without navigating to another page.

If no navigation is possible, set sap.m.ListType to “inactive”.

“Navigation” is a list item type and can therefore not be used together with “edit” or with using click events on the whole item (“active”).

Navigation indicator
Navigation indicator

Edit Line Items

To allow editing a line item details page, set sap.m.ListType to “detail” within the corresponding item (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Detail or sap.m.ListType.DetailAndActive). This will result in an edit button at the end of the line. Clicking the button triggers the edit event. Use this event to switch the corresponding line item to edit mode.

Edit is a list item type and can therefore not be used together with “navigation” or with using click events on the whole item (“active”).

Edit button
Edit button

Click an Item

Items as a whole can be clickable. An event is fired by click on the item (anywhere where there is no interactive control inside the item). Apps can react on the event, e.g. by opening dialogues (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Active or sap.m.ListType.DetailAndActive).

Active elements do not have a visual indication and can therefore not be differentiated from non-active elements.

“Active” is a list item type and can therefore not be used together with “navigation” or edit. In addition, “active” uses the whole item as clickable area and therefore cannot be used together with a single-selection table.

Active element
Active element

Cell Level

Showing Information

In contrast to traditional tables (e.g. the analytical table or tree table), a cell can contain more than just one line of text.

Several lines of text within one cell
Several lines of text within one cell

Add controls

Beside textual elements, you can add any control to a table cell.

Controls inside cells
Controls inside cells
Any control can be placed inside cells
Any control can be placed inside cells

A cell can contain more than one control and more than one data point.

Due to the View Settings dialog, you can sort, filter, and group by each of these data points.

Several controls per cell
Several controls per cell

Guidelines

Table Title

Implement the table title by using a toolbar control.

Use a table title if the title of a responsive table is not indicated in the surrounding area. Do not use a table title if it would just repeat text that is already above the responsive table.

Use a table title if you need the table toolbar. To avoid repeating text, feel free to use generic text as a table title, such as Items.

If you use a table title, be sure to include one of the following:

Table title
Table title
  • Or an item count using the following format: Items (Number of Items). For example, Items: 2. You can combine an item count with variant management.
  • Do not use an item count together with “growing mode”.
Table title with item count
Table title with item count

Columns – Best Practices

Minimize the number of columns:

  • On a smartphone, use only one or two columns, depending on the content.
  • On a tablet or desktop, use up to three columns if the responsive table is shown in the details area of a split-screen layout. Use up to four columns if using the full screen width, depending on the content.

If the responsive table does not fit on the screen width:

  • Hide columns to reduce the width of the table.
  • Use pop-in areas to show the whole content by increasing the height of the line items (sap.m.Column, properties: demandPopin, minScreenWidth).

At the smallest size, keep the following information in the table layout:

  • The column that identifies the line item
  • The column that contains the key attribute

If both of these do not fit on the respective screen width, keep just the column with the line item identifier in the tabular layout.

The responsive table assigns the same width to each column by default. It is recommended that you overwrite this default to provide optimal space for your content (sap.m.Column, property: width).

Optimize column width for its initial content (sap.m.Column, property: width). If the content is dynamic, optimize column width for typical content.

If you need more columns than those that fit on a tablet screen, which is usually five, to fulfill 80% of your main use cases, offer an option to add, remove, and rearrange columns via the table personalization dialog. Before doing so, try to reduce the number of columns, for example, by using several lines per column or by utilizing the pop-in function. See the cheat sheet for an example.

Column Headers – Best Practices

Within the column header, provide a label for each column (sap.m.Column, aggregation: header). The column header label is reused as a label in the pop-in area.

Exception: If the column does not pop in, you can leave out the column header label as long as at least one column still has a column header label.

Use controls that wrap, for example, text. Do not use controls that truncate, such as labels.

Do
Do: wrap column headers
Do: wrap column headers
Don't
Do not: truncate column headers
Do not: truncate column headers

Column headers (sap.m.Column, aggregation: header) usually contain links or text-based controls.

Column headers can also contain other kinds of SAP Fiori controls. However, the column header cannot be aligned vertically, making it difficult to use many controls in the column header. Using other kinds of controls also creates problems with pop-in behavior and could thus lead to accessibility issues. Therefore, exercise caution when using them in a column header.

Accepted: Link as column header text (used rarely)
Accepted: Link as column header text (used rarely)

Content Alignment

For alignment of cell content, follow the guidelines below (sap.m.Column, properties: halgin, valign, sap.m.ColumnListItem, property: VAlign). Align the column header horizontally according to the cells’ content.

Left-align text, IDs, phone numbers, URLs, passwords, and e-mail addresses:

Left-alignment of text
Left-alignment of text

Right-align numbers and amounts, except IDs, to ensure comparability of such figures:

Right-alignment of numbers
Right-alignment of numbers

Right-align dates and times to ensure comparability for most formats and locales:

Right-alignment of dates
Right-alignment of dates

In general, center one-word status information and icons:

Center-alignment of one-word texts
Center-alignment of one-word texts

Vertical alignment:

Top-align where possible to facilitate reading the content on one line.

Do not use top-alignment if it results in a peculiar layout. This usually happens when controls that need more vertical space are combined with text-only controls, such as input fields. In this case, try center-alignment instead and fine tune it until the layout fits.

Do
Do: use top-alignment where possible
Do: use top-alignment where possible
Don't
Do not: rigidly use top alignment if it does not make sense
Do not: rigidly use top alignment if it does not make sense
Don't
Do not: truncate text
Do not: truncate text
Do
Do: wrap text
Do: wrap text

For editable content, use input fields and other interactive controls within the table cells. If you need edit mode, change your text controls, such as labels, text, and links, to input fields or other appropriate controls as soon as you switch to edit mode, but not before.

You can do this by changing the control or, in more complex cases, by exchanging the whole responsive table.

Interactive controls - In line
Interactive controls - In line

If there is no value for a cell, leave it blank. Do not display text like N/A.

Leave empty fields blank
Leave empty fields blank

Numbering items:

  • If the item number is short, that is, up to 4 digits/letters, and equally important as the corresponding description, concatenate the item number with the description and show it in one column.
  • If the item number is long, that is, 5 digits/letters or more, or if it is more important than the corresponding description, for example, when no description is available, use a separate column for the item number.
  • If the item number is more like an ID in regards to its description, use ID formatting, like Description (ID).
For short numbers, add the item number to the description
For short numbers, add the item number to the description

Try not to display an empty responsive table. If there is no way around this, provide instructions on how to fill the table with data (sap.m.Table/ sap.m.ListBase, properties: showNoData, noDataText).

Provide meaningful instructions
Provide meaningful instructions

Item States

To show that an item is unread, use the corresponding flag (sap.m.Table, property: showUnread, sap.m.ColumnListItem/ sap.m.ListItemBase, property: unread). This shows most of the content in bold font.

An unread item
An unread item

To show that an item has been modified, for example, within the global edit flow, add the string (Modified) at the bottom of the column that identifies the line item.

A modified item
A modified item

To show that a modified item has an error, for example, within the global edit flow, add the string (Contains errors) at the bottom of the column that identifies the line item. Use an object status control with the error state for it (sap.m.ObjectStatus, property: state, value: sap.ui.core.ValueState.Error).

A modified item with an error
A modified item with an error

To show that an item is locked, use a transparent-style button with the corresponding icon and the text Locked by [name] at the bottom of the identifying column. The user can click or tap the button to open a quickview of the person.

A locked item
A locked item

To show that an item is in a draft state, use a transparent-style button with the text Draft at the bottom of the identifying column. The user can click or tap the button to open a pop-over showing the timestamp of the last change.

Item in draft state
Item in draft state

Show only one state at any one time.

Item States

To show that an item is unread, use the corresponding flag (sap.m.Table, property: showUnread, sap.m.ColumnListItem/ sap.m.ListItemBase, property: unread). This shows most of the content in bold font.

An unread item
An unread item

To show that an item has been modified, for example, within the global edit flow, add the string (Modified) at the bottom of the column that identifies the line item.

A modified item
A modified item

To show that a modified item has an error, for example, within the global edit flow, add the string (Contains errors) at the bottom of the column that identifies the line item. Use an object status control with the error state for it (sap.m.ObjectStatus, property: state, value: sap.ui.core.ValueState.Error).

A modified item with an error
A modified item with an error

To show that an item is locked, use a transparent-style button with the corresponding icon and the text Locked by [name] at the bottom of the identifying column. The user can click or tap the button to open a quickview of the person.

A locked item
A locked item

To show that an item is in a draft state, use a transparent-style button with the text Draft at the bottom of the identifying column. The user can click or tap the button to open a pop-over showing the timestamp of the last change.

Item in draft state
Item in draft state

Show only one state at any one time.

Show the unit of measurement together with the number within the item rows.

Do not put the unit in the column header. Do not use an additional column for showing the unit of measurement. This is also valid for prices.

Unit of mesaurement - In line
Unit of mesaurement - In line

For numbers with units, show the correct formatting by using the object number control.

Object number
Object number

For the most important number with its unit, show the correct formatting by using the object number control and the emphasized flag.
Exception: If all numbers are of equal importance, emphasize none of them.

If the screen width is small, do not hide this column or move it to the pop-in area.
Exception: If the column containing the object identifier and the column containing the key attribute do not fit together on the screen, move the column containing the key attribute to the pop-in area.

Object number (emphasized)
Object number (emphasized)
OK: Place actions near to the objects to which they belong
OK: Place actions near to the objects to which they belong

The following actions on single items must always be in-line:

Delete: Use “Delete” table mode (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.Delete). This places a Delete button at the end of each row.

Delete button
Delete button

Navigation: Use the “Navigation” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Navigation). This places a Navigation indicator at the end of each row.

Use this to navigate to a new page containing line item details. In rare cases, you can also use this for navigation within the table without navigating to another page.

Navigation indicator
Navigation indicator

Edit: Use the “Detail” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Detail). This places an Edit icon at the end of each row.

Edit button
Edit button

From these three actions (delete, navigation, and edit), you can combine delete and edit, or delete and navigation.

Edit and navigation cannot be combined.

To trigger actions that are independent of the selection, show the actions on the table toolbar. Examples of such actions are add, edit (in the sense of changing the whole table to edit mode), sort, filter, group (or view settings), and table personalization.

To trigger a default action on the whole line item, use the “Active” or “DetailAndActive” column list item type (sap.m.ColumnListItem/ sap.m.ListItemBase, property: type, value: sap.m.ListType.Active).

Active items trigger an event when clicked, which can be handled by apps, for example, to open a dialog. Clicks on interactive controls within the item do not trigger the event, but are handled by the interactive control.

Do not use this for navigation, to switch the line item to an edit state, or to delete the item.

Active can be combined with edit and delete, but not with navigation. Do not combine active with single selection.

When you add an item, add the row:

  • Beneath the last item if there are 10 items or less overall, or if you rarely add an item. Scroll the screen if necessary to ensure that the new item remains visible.
  • As the first item if there are more than 10 items overall, or if you add an item quite frequently.

When you add items, ignore the sort, filter, and group settings when the item is added. As soon as the responsive table is sorted, filtered, and grouped again, the new item is handled accordingly, but not before.

Editable Content

For editable content, use input fields and any other interactive controls within the table cells that meet your input needs.

All SAPUI5 controls can be used.

If you need edit mode, change your text controls, such as label, text, and link, to input fields, or other appropriate controls as soon as you switch to edit mode, but not before.

You can do this by exchanging the control or, in more complex cases, by exchanging the whole responsive table.

For mass editing items:

  • Provide multiselection (sap.m.Table/ sap.m.ListBase, property: mode, value: sap.m.ListMode.MultiSelect).
  • Provide an Edit button.
  • If several items are selected, choosing the Edit button opens a dialog in which the user edits the corresponding fields for all selected items.

This is similar to mass editing in the split screen app.

View Settings: Sort, Filter, and Group

Sort, Filter and/ or Group settings are handled in the view settings dialog. This dialog can provide any combination of these three settings, including only one setting (e.g. just Sort).

  • If sorting, filtering and/ or grouping is a common use case in your app, offer one, two or all of the corresponding features within one or several view settings dialogs. Beware: Do not offer these features if the table is expected to have only a small number of entries (up to 20 in usual cases).
  • If filtering is a main use-case, do not offer filtering in the view settings dialog. Use the filter bar instead.

To trigger the view settings dialog, provide several buttons, one for each of these view setting. Each button opens a view settings dialog which contains only the corresponding page.

Use only the view settings you really need. For example, do not offer grouping if it does not support your use case well.

Using the view settings dialog allows you do define several Sort, Filter, and/ or Group settings per column. Thus, a column with several data points can be sorted, filtered, and/ or grouped independently by each data point.

Several triggers for the different View Settings (Sort, Filter, Group)
Several triggers for the different View Settings (Sort, Filter, Group)

To display the current filter state, use the info bar below the table title. Click or tap the info bar to open the view settings dialog on the filter page.

Filtered table
Filtered table

To display the current group state, group headers are shown.

On the group header, show the following text (sap.m.GroupHeaderListItem, property: title):

[Label of the grouped column]: [Grouping Value]

Grouped table
Grouped table

Be persistent. When reopening the app, show the analytical table with the same view settings (sort/ filter/ group settings) as it was left by the user before.

Personalization

For adding, removing, and re-arranging columns, use the Table Personalization dialog. Trigger the dialog via a Button on the Table Toolbar.

Offer personalization if you need more columns than fitting on a tablet screen (usually more than 5) to fullfil 80% of your main use cases. Before doing so, try to reduce the number of columns, e.g. by using several lines per column or by using the pop-in. For an example, please have a look at the cheat sheet.

View settings and Table Personalization icon
View settings and Table Personalization icon

Be persistent. When reopening the app, show the Responsive Table in the same column layout as it was left by the user before.

Properties

sap.m.Table

The following additional properties are available for the responsive table:

  • The property: fixedLayout defines the algorithm the control uses to define column width. Setting it to “false” would perform automatic calculations for the column width, based on the longest non-breakable content. You should always set it to “true” for performance reasons. Exceptions are permissible if the table has only a few columns on a large screen width and fewer than 10 rows are displayed.
  • The property: backgroundDesign defines the background on which items are rendered. Use the default value.
  • The property: showOverlay provides an overlay on the whole table, which prevents use of the responsive table. This is used within the list report floorplan to mark the table as outdated after filter settings have been changed but the new filter settings have not yet been applied. Do not use it in other cases.
  • The property: insert adds a margin on all sides of the responsive table.
  • The property: headerText is a simple way to set the table title if you just need a title. However, do not use any of the following:
    • A separate toolbar
    • variantManagement
    • headerToolbar aggregation
  • The property: headerDesign affects the appearance of the header if the theme supports it. Leave the default value as it is.
  • The property: footerText adds a small additional row below the table footer or last item. This row can contain text only. Do not use this property.
  • The property: width defines the width of the whole table.
  • The property: includeItemInSelection uses a click on the whole line item to select the corresponding item if the responsive table is in a selection mode. This competes with other settings like “Navigation” or “Active” and should therefore not be used.
  • The property: enableBusyIndicator shows a busy indicator while data is loaded.
  • The property: modeAnimationOn does not have any effect. Do not use it.
  • The property: showSeparators allows you to show all, none, or some separators. The default setting, which is to show all separators, is to be used.
  • The property: swipeDirection allows you to define the direction in which to swipe if additional actions are hidden behind a table row. This works only on touch devices. Do not use this property.
  • The property: rememberSelections leaves items selected even if they are not currently visible, for example, through filtering. If this behavior is not wanted, set the flag to “false”, but you should do so only in exceptional cases.
  • The property: busy sets the table to a busy state. While in busy state, the whole table cannot be used and items cannot be read due to an overlay.
  • The property: busyIndicatorDelay defines the time after which a busy state is shown after the responsive table has been set to this state. Use the default value.
  • The property: visible shows the table (“true”) or hides it (“false”).
  • The property: tooltip does not have an effect. Do not use it.

sap.m.Column

The following additional properties are available for sap.m.Column:

  • The property: width defines the width of the column in all units allowed by HTML, such as em, rem, %, and px.
  • The property: styleClass is used if you need to change the visual design of a column. Do not use this, but use the default style instead.
  • The property: visible shows or hides the column.
  • The property: tooltip does not have an effect. Do not use it.

sap.m.ColumnListItem

The following additional properties are available for sap.m.ColumnListItem:

  • The property: selected allows an item to be selected programmatically.
  • The property: counter does not have any effect. Do not use it.
  • Do not use the property: busy.
  • Do not use the property: busyIndicatorDelay.
  • The property: visible shows or hides the item.
  • The property: tooltip adds a tooltip to a whole row. The tooltip is only shown on mouse interaction. It will not work on tablets or smartphones. Do not use it.

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

Footer Toolbar

The footer bar always appears at the bottom edge of the screen.

The control is used for main actions that impact the whole page and is always visible except in the home screen and if the empty page is shown. One main advantage of the footer bar is, that this bar is always visible and will not scroll away.

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 very often used to seldom used. This ensures that the most important buttons will go last into the overflow.

Usage

Use the footer toolbar:

  • If you have several controls on your page and the actions are valid for the whole page.

Do not use the footer toolbar:

  • If you have different containers on your page (such as charts, tables, and forms) and the action influences only certain items. In this case, put the action as close to the corresponding item(s) as possible.

Responsiveness

To enable responsiveness, use the OverflowToolbar control. For more information, please refer to 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.

Split-screen layout footer toolbar (top: desktop; bottom: smartphone)
Split-screen layout footer toolbar (top: desktop; bottom: smartphone)
Full screen footer toolbar (top: desktop; bottom: smartphone)
Full screen footer toolbar (top: desktop; bottom: smartphone)

Components

The footer toolbar can contain the following components :

  • App-specific actions
  • Generic actions

 

The following actions count as generic:

  • Add
  • Sort, Filter, and Group (view settings)
  • Approve, Reject, and Forward
  • Edit, Delete, and Copy
  • Open In…
  • Favorite and Flag
  • Share menu
  • Overflow
Examples of possible components
Examples of possible components
Examples of possible components
Examples of possible components
Examples of possible components
Examples of possible components

Another generic action that is closely related to the actions in the footer toolbar is the Multi-Select action, which is placed in the master header. When the user switches to multi-select mode, the actions in the footer toolbar of the master view change.

Behavior and Interaction

App-Specific 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, Share). Note that translated UIs may increase the length of the text string.

Only use icon buttons if you are sure that the user will be able to interpret the meaning of the icon easily and without the aid of a tooltip.  Use standard and easily recognizable icons, such as a paper clip for an attachment.

App-specific text, icon button, and generic Share button
App-specific text, icon button, and generic Share button

Add (Generic)

The Add item or row action can be presented by a generic icon button or a text that describes the action in more detail. Place the action as close to the content as possible. Note that if you use icon buttons instead of text, the icon appears on the right, next to the text actions.

Add as icon button in full screen mode
Add as icon button in full screen mode
Add as text button in full screen mode
Add as text button in full screen mode

If the app development team wants to use a combination of actions, such as Add, Edit, and Delete, we recommend placing the actions as text buttons. Only by doing so can the buttons be arranged side by side.

If the Add action is a main function, the action should never be moved into the overflow.

If the app uses more than two Add actions, or if the meaning of the icon is not entirely clear, use text buttons.

Add as icon button in the master list
Add as icon button in the master list
Add as icon button in the detail area
Add as icon button in the detail area

Sort, Filter, Group (Generic)

Sort, Filter, and Group can be shown in the footer toolbar of the master list. They can appear in any combination or as a single action. Be sure to use the order suggested (Sort, Filter, and Group) if you use more than one of these actions.

The Sort, Filter, and Group buttons can trigger a select if only basic actions are available. In this case, however, note that the user can select only one option.

Otherwise, the view settings dialog appears. The app team must put all these actions into the overflow if more space is needed for other actions.

A combination of both is also possible: some buttons can trigger a select and some can open a dialog.

For more information about Sort, Filter, Group, and the view settings dialog, see responsive table.

Master list with Add, Sort, Filter, and Group
Master list with Add, Sort, Filter, and Group
Master list with basic filtering actions – Select is used instead of the View settings dialog
Master list with basic filtering actions – Select is used instead of the View settings dialog

Multi-Select (Generic)

Multiple items can also be selected for processing in the master. The user activates multi-select mode by clicking or tapping the multi-select icon in the master header.

The actions in the footer toolbar change by switching to this mode. If you enable the user to Sort, Filter or Group, these actions should also be visible in multi-select mode.

For more information about multi-select mode, see master list.

Split-screen layout with multi-select icon in master header
Split-screen layout with multi-select icon in master header

Approve, Reject, Forward (Generic)

Approve, Reject, and Forward are displayed as text buttons. They can appear in any combination. For more information about the behavior of the Forward action, see forward. Ensure that the Approve and Reject buttons are visible in your app on smartphones. Otherwise, users have to open the overflow whenever they want to select an action.

Approve, Reject, and Forward on full screen
Approve, Reject, and Forward on full screen

Edit and Delete (Generic)

Use the Edit button if you want to perform a global edit action.

If you want to perform a global delete action, you can use the Delete button.

Edit and Delete in the detail area
Edit and Delete in the detail area

Open In… (Generic)

The Open In… action takes the user outside the current app. App teams can choose whether they use the Share button or use a text button with Open In… . The text button opens an action sheet with the possible actions. For example, if the app navigates to another app, the icon and name of the new app are displayed.

Use a text button with Open In… if you expect the user to use this action frequently. Otherwise, put the action in the Share menu. An example is shown in the Share section.

Open In... as text button
Open In... as text button
Open In... within the Share menu
Open In... within the Share menu

Favorite and Flag (Generic)

Users can mark objects as a favorite or flagged for quick subsequent retrieval. The user does this by clicking or tapping the relevant generic Favorite or Flag button in the footer toolbar. For more information, see flag and favorite.

Flag and Favorite on full screen
Flag and Favorite on full screen

Share (Generic)

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… <filetype>
  • Open In… <apptype>

If you expect the user to use the Open In… functionality frequently, place it directly in the footer toolbar. This is described in detail in the Open In… section.

The Share action can appear on the full screen or details screen, and is never moved into the overflow menu. It is always right-aligned. The overflow starts on the right side of the Share icon.

Possible actions in the Share menu
Possible actions in the Share menu

Overflow (Generic)

Please see the section on overflow in the Behavior and Interaction section of the toolbar overview article.

Footer toolbar on desktop without overflow
Footer toolbar on desktop without overflow
Footer toolbar on smartphone with overflow
Footer toolbar on smartphone with overflow
Footer toolbar on smartphone with overflow
Footer toolbar on smartphone with overflow

Styles

Button styles should be used to help the user and not for decoration.

They should be defined for actions that a user will use mostly, such as EditCreate, and Save.

Actions within (modal) dialogs have no highlighting.

Use a positive or negative (property: type – accept/reject) or an emphasized (property: type – emphasized) styled button. Avoid using both styles on one screen.

Exception 1: Multi-select mode on a master or details screen

Exception 2: Message button appears

Exception 3: Object is marked as flag/favorite

 

For more information, see button.

Guidelines

Please 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

Footer Toolbar

The footer toolbar always appears as floating footer at the bottom of the screen. The floating footer property creates some padding between screen and toolbar, improving visibility.

The control is used for closing or finalizing actions that impact the whole page. It is only visible when actions appear, when message handling is visible, or when the draft indicator is displayed. One main advantage of the footer bar is that this bar is always visible and will not scroll away.

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 will go into the overflow last.

Usage

Use the footer toolbar:

  • If you have closing or finalizing actions on your page that apply to the whole page.

Do not use the footer toolbar:

  • If you have different containers on your page (such as charts, tables, and forms) and the action influences only certain items. In this case, place the action as close to the corresponding item(s) as possible.

Responsiveness

To enable responsiveness, use the OverflowToolbar control. For more information, please refer to 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.

Split-screen layout footer toolbar (top: desktop; bottom: smartphone)
Split-screen layout footer toolbar (top: desktop; bottom: smartphone)
Full screen footer toolbar (top: desktop; bottom: smartphone)
Full screen footer toolbar (top: desktop; bottom: smartphone)

Components

The footer toolbar can contain the following components :

  • App-specific actions
  • Generic actions

 

The following actions are generic:

  • Add
  • Sort, Filter, and Group (view settings)
  • Approve, Reject, and Forward
  • Edit, Delete, and Copy
  • Open In…
  • Favorite and Flag
  • Share menu
  • Overflow
Examples of possible components (master detail screen)
Examples of possible components (master detail screen)
Examples of possible components
Examples of possible components
Examples of possible components
Examples of possible components

Another generic action that is closely related to the actions in the footer toolbar is the multi-select action, which is placed in the master header. When the user switches to multi-select mode, the actions in the footer toolbar of the master view change.

Behavior and Interaction

App-Specific 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, Share). Note that translated UIs may increase the length of the text string.

Only use icon buttons if you are sure that the user will be able to interpret the meaning of the icon easily and without the aid of a tooltip.  Use standard and easily recognizable icons, such as a paper clip for an attachment.

App-specific text, icon button, and generic Share button
App-specific text, icon button, and generic Share button

Add (Generic)

The Add item or row action can be presented by a generic icon button or a text that describes the action in more detail. Place the action as close to the content as possible. Note that if you use icon buttons instead of text, the icon appears on the right, next to the text actions.

Add as icon button in full screen mode
Add as icon button in full screen mode
Add as text button in full screen mode
Add as text button in full screen mode

If the app development team wants to use a combination of actions, such as Add, Edit, and Delete, we recommend placing the actions as text buttons. Only by doing so can the buttons be arranged side by side.

If the Add action is a main function, the action should never be moved into the overflow.

If the app uses more than two Add actions, or if the meaning of the icon is not entirely clear, use text buttons.

Add as icon button in the master list
Add as icon button in the master list
Add as icon button in the detail area
Add as icon button in the detail area

Sort, Filter, Group (Generic)

Sort, Filter, and Group can be shown in the footer toolbar of the master list. They can appear in any combination or as a single action. Be sure to use the order suggested (Sort, Filter, and Group) if you use more than one of these actions.

The Sort, Filter, and Group buttons can trigger a select if only basic actions are available. In this case, however, note that the user can select only one option.

Otherwise, the view settings dialog appears. The app team must put all these actions into the overflow if more space is needed for other actions.

A combination of both is also possible: some buttons can trigger a select and some can open a dialog.

For more information about Sort, Filter, Group, and the view settings dialog, see responsive table.

Master list with Add, Sort, Filter, and Group
Master list with Add, Sort, Filter, and Group
Master list with basic filtering actions – Select is used instead of the view settings dialog
Master list with basic filtering actions – Select is used instead of the view settings dialog

Multi-Select (Generic)

Multiple items can also be selected for processing in the master. The user activates multi-select mode by clicking or tapping the multi-select icon in the master header.

The actions in the footer toolbar change by switching to this mode. If you enable the user to Sort, Filter or Group, these actions should also be visible in multi-select mode.

For more information about multi-select mode, see master list.

Split-screen layout with multi-select icon in master header
Split-screen layout with multi-select icon in master header

Approve, Reject, Forward (Generic)

Approve, Reject, and Forward are displayed as text buttons. They can appear in any combination. For more information about the behavior of the Forward action, see forward. Ensure that the Approve and Reject buttons are visible in your app on smartphones. Otherwise, users have to open the overflow whenever they want to select an action.

Approve, Reject, and Forward on full screen
Approve, Reject, and Forward on full screen

Edit and Delete (Generic)

Use the Edit button if you want to perform a global edit action.

If you want to perform a global delete action, you can use the Delete button.

Edit and Delete in the detail area
Edit and Delete in the detail area

Open In… (Generic)

The Open In… action takes the user outside the current app. App teams can choose whether they use the Share button or use a text button with Open In… . The text button opens an action sheet with the possible actions. For example, if the app navigates to another app, the icon and name of the new app are displayed.

Use a text button with Open In… if you expect the user to use this action frequently. Otherwise, put the action in the Share menu. An example is shown in the Share section.

Open In... as text button
Open In... as text button
Open In... within the Share menu
Open In... within the Share menu

Favorite and Flag (Generic)

Users can mark objects as a favorite or flagged for quick subsequent retrieval. The user does this by clicking or tapping the relevant generic Favorite or Flag button in the footer toolbar. For more information, see flag and favorite.

Flag and Favorite on full screen
Flag and Favorite on full screen

Share (Generic)

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… <filetype>
  • Open In… <apptype>

If you expect the user to use the Open In… functionality frequently, place it directly in the footer toolbar. This is described in detail in the Open In… section.

The Share action can appear on the full screen or details screen, and is never moved into the overflow menu. It is always right-aligned. The overflow starts on the right side of the Share icon.

Possible actions in the Share menu
Possible actions in the Share menu

Overflow (Generic)

Please see the section on overflow in the Behavior and Interaction section of the toolbar overview article.

Footer toolbar on desktop without overflow
Footer toolbar on desktop without overflow
Footer toolbar on smartphone with overflow
Footer toolbar on smartphone with overflow
Footer toolbar on smartphone with open overflow
Footer toolbar on smartphone with open overflow

Styles

Button styles should be used to help the user and not for decoration.

They should be defined for actions that a user will use mostly, such as EditCreate, and Save.

Actions within (modal) dialogs are not highlighted.

Use a positive or negative (property: type – accept/reject) or an emphasized (property: type – emphasized) styled button. Avoid using both styles on one screen.
  • Exception 1: Multi-select mode on a master or details screen
  • Exception 2: Message button appears
  • Exception 3: Object is marked as flag/favorite

For more information, see button.

Guidelines

Please 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

Footer Toolbar

The footer bar always appears at the bottom edge of the screen.

The control is used for main actions that impact the whole page and is always visible except in the home screen and if the empty page is shown. One main advantage of the footer bar is, that this bar is always visible and will not scroll away.

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 very often used to seldom used. This ensures that the most important buttons will go last into the overflow.

Usage

Use the footer toolbar:

  • If you have several controls on your page and the actions are valid for the whole page.

Do not use the footer toolbar:

  • If you have different containers on your page (such as charts, tables, and forms) and the action influences only certain items. In this case, put the action as close to the corresponding item(s) as possible.

Responsiveness

To enable responsiveness, use the OverflowToolbar control. For more information, please refer to 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.

Split-screen layout footer toolbar (top: desktop; bottom: smartphone)
Split-screen layout footer toolbar (top: desktop; bottom: smartphone)
Full screen footer toolbar (top: desktop; bottom: smartphone)
Full screen footer toolbar (top: desktop; bottom: smartphone)

Components

The footer toolbar can contain the following components:

  • App-specific actions
  • Generic actions

 

The following actions count as generic:

  • Add
  • Sort, Filter, and Group
  • Multi Select
  • Approve, Reject, and Forward
  • Open In…
  • Favorite and Flag
  • Share menu
  • Overflow
Examples of possible components
Examples of possible components
Examples of possible components
Examples of possible components
Examples of possible components
Examples of possible components

Behavior and Interaction

App-Specific 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, Share). Note that translated UIs may increase the length of the text string.

Only use icon buttons if you are sure that the user will be able to interpret the meaning of the icon easily and without the aid of a tooltip.  Use standard and easily recognizable icons, such as a paper clip for an attachment.

App-specific text, icon button, and generic Share button
App-specific text, icon button, and generic Share button

Add (Generic)

The Add item or row action can be presented by a generic icon button or a text that describes the action in more detail. Place the action as close to the content as possible.

If the Add action is a main function, the action should never be moved into the overflow.

If the app uses more than two Add actions, or if the meaning of the icon is not entirely clear, use text buttons.

Add as icon button in the master list
Add as icon button in the master list
Add as icon button in the details area
Add as icon button in the details area

Sort, Filter, Group (Generic)

Sort, Filter, and Group can be shown in the footer toolbar of the master list. They can appear in any combination or as a single action. Be sure to use the order suggested (Sort, Filter, and Group) if you use more than one of these actions.

The Sort, Filter, and Group buttons can trigger a select if only basic actions are available. In this case, however, note that the user can select only one option.

Otherwise, the view settings dialog appears. The app team must put all these actions into the overflow if more space is needed for other actions.

A combination of both is also possible: some buttons can trigger a select and some can open a dialog.

For more information about Sort, Filter, Group, and the view settings dialog, see responsive table.

Master list with Add, Sort, Filter, and Group
Master list with Add, Sort, Filter, and Group
Master list with basic filtering actions – Select is used instead of the View settings dialog
Master list with basic filtering actions – Select is used instead of the View settings dialog

Multi-Select (Generic)

Multiple items can also be selected for processing in the master. The user activates multi-select mode by clicking or tapping the multi-select icon in the master header.

The actions in the footer toolbar change by switching to this mode. If you enable the user to Sort, Filter or Group, these actions should also be visible in multi-select mode.

For more information about multi-select mode, see master list.

Split-screen layout with multi-select icon in master header
Split-screen layout with multi-select icon in master header

Approve, Reject, Forward (Generic)

Approve, Reject, and Forward are displayed as text buttons. They can appear in any combination. For more information about the behavior of the Forward action, see forward. Ensure that the Approve and Reject buttons are visible in your app on smartphones. Otherwise, users have to open the overflow whenever they want to select an action.

Approve, Reject, and Forward on full screen
Approve, Reject, and Forward on full screen

Open In… (Generic)

The Open In… action takes the user outside the current app. App teams can choose whether they use the Share button or use a text button with Open In… . The text button opens an action sheet with the possible actions. For example, if the app navigates to another app, the icon and name of the new app are displayed.

Use a text button with Open In… if you expect the user to use this action frequently. Otherwise, put the action in the Share menu. An example is shown in the Share section.

Open In... as text button
Open In... as text button
Open In... within the Share menu
Open In... within the Share menu

Favorite and Flag (Generic)

Users can mark objects as a favorite or flagged for quick subsequent retrieval. The user does this by clicking or tapping the relevant generic Favorite or Flag button in the footer toolbar. For more information, see flag and favorite.

Flag and Favorite on full screen
Flag and Favorite on full screen

Share (Generic)

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… <filetype>
  • Open In… <apptype>

If you expect the user to use the Open In… functionality frequently, place it directly in the footer toolbar. This is described in detail in the Open In… section.

The Share action can appear on the full screen or details screen, and is never moved into the overflow menu. It is always right-aligned. The overflow starts on the right side of the Share icon.

Possible actions in the Share menu
Possible actions in the Share menu

Overflow (Generic)

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 footer 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.

Since release 1.30, new features have been added to the overflow toolbar. The  “” (overflow) button is now a toggle button and can be used to switch the overflow menu on and off.

The user clicks or taps 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.

Footer toolbar on desktop without overflow
Footer toolbar on desktop without overflow
Footer toolbar on smartphone with overflow
Footer toolbar on smartphone with overflow
Footer toolbar on smartphone with overflow
Footer toolbar on smartphone with overflow

Styles

Button styles should be used to help the user and not for decoration.

They should be defined for actions that a user will use mostly, such as EditCreate, and Save.

Actions within (modal) dialogs have no highlighting.

Use a positive or negative (property: type – accept/reject) or an emphasized (property: type – emphasized) styled button. Avoid using both styles on one screen.

Exception 1: Multi-select mode on a master or details screen

Exception 2: Message button appears

Exception 3: Object is marked as flag/favorite

 

For more information, see button.

Guidelines

Please 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

Footer Toolbar

The footer bar always appears at the bottom edge of the screen.

The control is used for main actions that impact the whole page and is always visible except in the home screen and if the empty page is shown. One main advantage of the footer bar is, that this bar is always visible and will not scroll away.

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 very often used to seldom used. This ensures that the most important buttons will go last into the overflow.

Usage

Use the footer toolbar:

  • If you have several controls on your page and the actions are valid for the whole page.

Do not use the footer toolbar:

  • If you have different containers on your page (such as charts, tables, and forms) and the action influences only certain items. In this case, put the action as close to the corresponding item(s) as possible.

Responsiveness

To enable responsiveness, use the OverflowToolbar control. For more information, please refer to 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.

Split-screen layout footer toolbar (top: desktop; bottom: smartphone)
Split-screen layout footer toolbar (top: desktop; bottom: smartphone)
Full screen footer toolbar (top: desktop; bottom: smartphone)
Full screen footer toolbar (top: desktop; bottom: smartphone)

Components

The footer toolbar can contain the following components:

  • App-specific actions
  • Generic actions

 

The following actions count as generic:

  • Add
  • Sort, Filter, and Group
  • Multi Select
  • Approve, Reject, and Forward
  • Open In…
  • Favorite and Flag
  • Share menu
  • Overflow
Examples of possible components
Examples of possible components
Examples of possible components
Examples of possible components
Examples of possible components
Examples of possible components

Behavior and Interaction

App-Specific 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, Share). Note that translated UIs may increase the length of the text string.

Only use icon buttons if you are sure that the user will be able to interpret the meaning of the icon easily and without the aid of a tooltip.  Use standard and easily recognizable icons, such as a paper clip for an attachment.

App-specific text, icon button, and generic Share button
App-specific text, icon button, and generic Share button

Add (Generic)

The Add item or row action can be presented by a generic icon button or a text that describes the action in more detail. Place the action as close to the content as possible.

If the Add action is a main function, the action should never be moved into the overflow.

If the app uses more than two Add actions, or if the meaning of the icon is not entirely clear, use text buttons.

Add as icon button in the master list
Add as icon button in the master list
Add as icon button in the details area
Add as icon button in the details area

Sort, Filter, Group (Generic)

Sort, Filter, and Group can be shown in the footer toolbar of the master list. They can appear in any combination or as a single action. Be sure to use the order suggested (Sort, Filter, and Group) if you use more than one of these actions.

The Sort, Filter, and Group buttons can trigger a select if only basic actions are available. In this case, however, note that the user can select only one option.

Otherwise, the view settings dialog appears. The app team must put all these actions into the overflow if more space is needed for other actions.

A combination of both is also possible: some buttons can trigger a select and some can open a dialog.

For more information about Sort, Filter, Group, and the view settings dialog, see responsive table.

Master list with Add, Sort, Filter, and Group
Master list with Add, Sort, Filter, and Group
Master list with basic filtering actions – Select is used instead of the View settings dialog
Master list with basic filtering actions – Select is used instead of the View settings dialog

Multi-Select (Generic)

Multiple items can also be selected for processing in the master. The user activates multi-select mode by clicking or tapping the multi-select icon in the master header.

The actions in the footer toolbar change by switching to this mode. If you enable the user to Sort, Filter or Group, these actions should also be visible in multi-select mode.

For more information about multi-select mode, see master list.

Split-screen layout with multi-select icon in master header
Split-screen layout with multi-select icon in master header

Approve, Reject, Forward (Generic)

Approve, Reject, and Forward are displayed as text buttons. They can appear in any combination. For more information about the behavior of the Forward action, see forward. Ensure that the Approve and Reject buttons are visible in your app on smartphones. Otherwise, users have to open the overflow whenever they want to select an action.

Approve, Reject, and Forward on full screen
Approve, Reject, and Forward on full screen

Open In… (Generic)

The Open In… action takes the user outside the current app. App teams can choose whether they use the Share button or use a text button with Open In… . The text button opens an action sheet with the possible actions. For example, if the app navigates to another app, the icon and name of the new app are displayed.

Use a text button with Open In… if you expect the user to use this action frequently. Otherwise, put the action in the Share menu. An example is shown in the Share section.

Open In... as text button
Open In... as text button
Open In... within the Share menu
Open In... within the Share menu

Favorite and Flag (Generic)

Users can mark objects as a favorite or flagged for quick subsequent retrieval. The user does this by clicking or tapping the relevant generic Favorite or Flag button in the footer toolbar. For more information, see flag and favorite.

Flag and Favorite on full screen
Flag and Favorite on full screen

Share (Generic)

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… <filetype>
  • Open In… <apptype>

If you expect the user to use the Open In… functionality frequently, place it directly in the footer toolbar. This is described in detail in the Open In… section.

The Share action can appear on the full screen or details screen, and is never moved into the overflow menu. It is always right-aligned. The overflow starts on the right side of the Share icon.

Possible actions in the Share menu
Possible actions in the Share menu

Overflow (Generic)

Please see the section on overflow in the Behavior and Interaction section of the toolbar overview article.

Footer toolbar on desktop without overflow
Footer toolbar on desktop without overflow
Footer toolbar on smartphone with overflow
Footer toolbar on smartphone with overflow
Footer toolbar on smartphone with overflow
Footer toolbar on smartphone with overflow

Styles

Button styles should be used to help the user and not for decoration.

They should be defined for actions that a user will use mostly, such as EditCreate, and Save.

Actions within (modal) dialogs have no highlighting.

Use a positive or negative (property: type – accept/reject) or an emphasized (property: type – emphasized) styled button. Avoid using both styles on one screen.

Exception 1: Multi-select mode on a master or details screen

Exception 2: Message button appears

Exception 3: Object is marked as flag/favorite

 

For more information, see button.

Guidelines

Please 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

Footer Toolbar

The footer bar always appears at the bottom edge of the screen.

The control is used for main actions that impact the whole page and is always visible except in the home screen and if the empty page is shown. One main advantage of the footer bar is, that this bar is always visible and will not scroll away.

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 very often used to seldom used. This ensures that the most important buttons will go last into the overflow.

Usage

Use the footer toolbar:

  • If you have several controls on your page and the actions are valid for the whole page.

Do not use the footer toolbar:

  • If you have different containers on your page (such as charts, tables, and forms) and the action influences only certain items. In this case, put the action as close to the corresponding item(s) as possible.

Responsiveness & Adaptiveness

For a responsivness use the OverflowToolbar control. It is a container based on sap.m.Toolbar, that provides overflow when its content does not fit in the visible area. A the moment only buttons can move into the overflow all other controls can shrink.

Only allow important actions to shrink and stay outside of the overflow, since truncated text on infrequently used actions is not helpful for the user. This has to be done by the application itself.

The height of the toolbar changes on desktop (compact mode), tablet, and phone (cozy mode).

Split-screen layout footer toolbar (top: desktop; bottom: smartphone)
Split-screen layout footer toolbar (top: desktop; bottom: smartphone)
Full screen footer toolbar (top: desktop; bottom: smartphone)
Full screen footer toolbar (top: desktop; bottom: smartphone)

Components

The footer toolbar can contain the following components:

  • App-specific actions
  • Generic actions

 

The following actions count as generic:

  • Add
  • Sort, Filter, and Group
  • Multi Select
  • Approve, Reject, and Forward
  • Open In…
  • Favorite and Flag
  • Share menu
  • Overflow
Examples of possible components
Examples of possible components
Examples of possible components
Examples of possible components
Examples of possible components
Examples of possible components

Behavior and Interaction

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.

The buttons are sorted from frequently-used to seldom-used. This ensures that the most important buttons will go into the overflow last.

App-Specific 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, Share). Note that translated UIs may increase the length of the text string.

Only use icon buttons if you are sure that the user will be able to interpret the meaning of the icon easily and without the aid of a tooltip.  Use standard and easily recognizable icons, such as a paper clip for an attachment.

App-specific text, icon button, and generic Share button
App-specific text, icon button, and generic Share button

Add (Generic)

The Add item or row action can be presented by a generic icon button or a text that describes the action in more detail. Place the action as close to the content as possible.

If the Add action is a main function, the action should never be moved into the overflow.

If the app uses more than two Add actions, or if the meaning of the icon is not entirely clear, use text buttons.

Add as icon button in the master list
Add as icon button in the master list
Add as icon button in the details area
Add as icon button in the details area

Sort, Filter, Group (Generic)

Sort, Filter, and Group can be shown in the footer toolbar of the master list. They can appear in any combination or as a single action. Be sure to use the order suggested (Sort, Filter, and Group) if you use more than one of these actions.

The Sort, Filter, and Group buttons can trigger a select if only basic actions are available. In this case, however, note that the user can select only one option.

Otherwise, the view settings dialog appears. The app team must put all these actions into the overflow if more space is needed for other actions.

A combination of both is also possible: some buttons can trigger a select and some can open a dialog.

For more information about Sort, Filter, Group, and the view settings dialog, see responsive table.

Master list with Add, Sort, Filter, and Group
Master list with Add, Sort, Filter, and Group
Master list with basic filtering actions – Select is used instead of the View settings dialog
Master list with basic filtering actions – Select is used instead of the View settings dialog

Multi-Select (Generic)

Multiple items can also be selected for processing in the master. The user activates multi-select mode by clicking or tapping the multi-select icon in the master header.

The actions in the footer toolbar change by switching to this mode. If you enable the user to Sort, Filter or Group, these actions should also be visible in multi-select mode.

For more information about multi-select mode, see master list.

Split-screen layout with multi-select icon in master header
Split-screen layout with multi-select icon in master header

Approve, Reject, Forward (Generic)

Approve, Reject, and Forward are displayed as text buttons. They can appear in any combination. For more information about the behavior of the Forward action, see forward. Ensure that the Approve and Reject buttons are visible in your app on smartphones. Otherwise, users have to open the overflow whenever they want to select an action.

Approve, Reject, and Forward on full screen
Approve, Reject, and Forward on full screen

Open In… (Generic)

The Open In… action takes the user outside the current app. App teams can choose whether they use the Share button or use a text button with Open In… . The text button opens an action sheet with the possible actions. For example, if the app navigates to another app, the icon and name of the new app are displayed.

Use a text button with Open In… if you expect the user to use this action frequently. Otherwise, put the action in the Share menu. An example is shown in the Share section.

Open In... as text button
Open In... as text button
Open In... within the Share menu
Open In... within the Share menu

Favorite and Flag (Generic)

Users can mark objects as a favorite or flagged for quick subsequent retrieval. The user does this by clicking or tapping the relevant generic Favorite or Flag button in the footer toolbar. For more information, see flag and favorite.

Flag and Favorite on full screen
Flag and Favorite on full screen

Share (Generic)

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… <filetype>
  • Open In… <apptype>

If you expect the user to use the Open In… functionality frequently, place it directly in the footer toolbar. This is described in detail in the Open In… section.

The Share action can appear on the full screen or details screen, and is never moved into the overflow menu. It is always right-aligned. The overflow starts on the right side of the Share icon.

Possible actions in the Share menu
Possible actions in the Share menu

Overflow (Generic)

If Applications use the overflow toolbar the overflow will be generated automatically. The overflow is activated either when there is not enough space for all footer bar actions or some actions are less important than others. In this case, the app decides to have certain actions only appear in the overflow.

Furthermore, the app decides if some actions are so important that they should never move into the overflow.

An action sheet opens by clicking on the overflow button. In this action sheet, all text buttons are displayed without an icon and all icon buttons are labeled with text.

Split-screen layouts have their own overflow menus.

All buttons go from right to the left into the overflow. This ensures that the most important buttons go last into the overflow.

Everything else than a button cannot move into the overflow wave 8/1.28. We will change this at a later stage.

Footer bar on desktop without overflow
Footer bar on desktop without overflow
Footer bar on smartphone with overflow
Footer bar on smartphone with overflow
Footer bar on smartphone with overflow
Footer bar on smartphone with overflow

Styles

Button styles should be used to help the user and not for decoration.

They should be defined for actions that a user will use mostly, such as EditCreate, and Save.

Actions within (modal) dialogs have no highlighting.

Use a positive or negative (property: type – accept/reject) or an emphasized (property: type – emphasized) styled button. Avoid using both styles on one screen.

Exception 1: Multi-select mode on a master or details screen

Exception 2: Message button appears

Exception 3: Object is marked as flag/favorite

 

For more information, see button.

Guidelines

Please 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

Chart Toolbar

The chart toolbar acts as a container for charts.

The width and height of the chart container are never defined by the app, but are always set by the container itself (as explained in Size of the Chart Container).

The toolbar is mandatory. Small charts such as dashboards, table cells, and small frames are an exception to this rule. In these cases, the developer must provide a consistent UI to enable action on the chart.

The toolbar is always placed on top of the chart. It provides actions such as multiple box selection for selecting dimensions, full screen format, personalization actions, and a toggle function for showing and hiding legends.

Responsiveness

The chart container uses the sap.m.OverflowToolbar control. It is a container based on sap.m.Toolbar that provides overflow when its content does not fit in the visible area. For more information, please refer to the toolbar overview article (under Responsiveness).

Chart toolbar – Size S
Chart toolbar – Size S
Chart toolbar – Size L
Chart toolbar – Size L

Components

The chart toolbar can contain the following components:

  • App-specific actions
  • Generic actions

 

The following actions are generic:

  • Perspective switch or chart/title
  • View switch
  • Legend
  • Personalization
  • Zoom in/zoom out
  • Full screen mode
  • Overflow
Components of the chart toolbar
Components of the chart toolbar

Behavior and Interaction

App-Specific Actions

If needed, the app team can define their own actions for the app using icon buttons. These actions are placed explicitly on the UI, although this is due to change at a later stage.

App-specific actions
App-specific actions

Perspective Switch/Title (Generic)

Chart toolbar overview
Chart toolbar overview

The perspective switch is left-aligned in the toolbar when a generic dropdown or select control is used. It can be used to switch between different dimensions.

For SAP Smart Business apps, the view incorporates and defines the chart description, the dimension, the measure, and the defaulted chart type. The various views are preconfigured and maintained by an SAP Smart Business administrator.

Ensure that all switches have a meaningful title. We recommend that you use a short chart description followed by the dimensions:

<Chart description> by <Dimension>

Simple perspective
Simple perspective

You also have the option of extending the perspective switch if the app needs to switch between specific subdimensions. The number of dimensions and subdimensions that are needed depends on the app.

In general, you can use any kind of control. However, we recommend using the select control.

<Chart description> by <Leading Dimension> <Sub Dimension>

Perspective view with subdimension
Perspective view with subdimension

If the app does not need a perspective switch, use the chart title (property: title).

Chart with title
Chart with title

View Switch (Generic)

View switches are right-aligned in the toolbar. They allow the user to switch between different chart types or table layouts. You need to offer the view switch if the chart relies on subtle color differences or color gradients. Users with visual impairments can then use the table view.

Switches are optional. The buttons can be hidden if there is no need to switch between different charts or tables.

You need to be careful when choosing the chart types and the number of switches. For each app, you must decide which chart types are best suited to visualizing data in the user’s context.

We recommend using no more than three types of visualization. The sequence of chart type switches is not fixed, although we recommend sorting them by importance and usage within the respective app.

The segmented button control is used to display the chart types. The control highlights the chart that is currently displayed.

Chart toolbar with view switch
Chart toolbar with view switch

View Switch – Switch Between Chart and Table

The view switch allows you to switch easily between tables and charts.

Some actions are only available in certain views. For example, the Legend icon is only visible in the chart view. If the user selects the table view, the Filter action is visible and the Legend icon is hidden.

Icon Usage

Each visualization of a chart is represented by an icon.

Bar chart:
Bar chart: "SAP-icons" font - Unicode: #e02c - Name: horizontal-bar-chart
Horizontal bullet chart:
Horizontal bullet chart: "SAP-icons" font - Unicode: #e215
Vertical bullet chart:
Vertical bullet chart: "SAP-icons" font - Unicode: #e216
Combined column line chart:
Combined column line chart: "SAP-icons" font - Unicode: #e11f - Name: business-objects-experience
Stacked bar chart:
Stacked bar chart: "SAP-icons" font - Unicode: #e183 - Name: horizontal-stacked-chart
Stacked column 100% chart:
Stacked column 100% chart: "SAP-icons" font - Unicode: #e180 - Name: full-stacked-column-chart
Bar chart:
Bar chart: "SAP-icons" font - Unicode: #e182 - Name: horizontal-bar-chart-2
Column chart:
Column chart: "SAP-icons" font - Unicode: #e0ef - Name: vertical-bar-chart
Pie chart:
Pie chart: "SAP-icons" font - Unicode: #e015 - Name: pie-chart
Stacked bar 100% chart:
Stacked bar 100% chart: "SAP-icons" font - Unicode: #e17f - Name: full-stacked-chart
Table chart:
Table chart: "SAP-icons" font - Unicode: #e0bb - Name: table-chart
Heatmap:
Heatmap: "SAP-icons" font - Unicode: #e214
Bubble chart:
Bubble chart: "SAP-icons" font - Unicode: #e18e - Name: bubble-chart
Column chart:
Column chart: "SAP-icons" font - Unicode:  - Name: vertical-bar-chart-2
Donut chart:
Donut chart: "SAP-icons" font - Unicode: #e213
Scatter chart:
Scatter chart: "SAP-icons" font - Unicode: & #xe18f; - Name: scatter-chart
Stacked column chart:
Stacked column chart: "SAP-icons" font - Unicode: #e184 - Name: vertical-stacked-chart
Map:
Map: "SAP-icons" font - Unicode: #e185 - Name: choropleth-chart

Legend (Generic)

The chart Legend button (property: ShowLegend) is placed next to the view switches. The user clicks or taps this button to hide or show the legend.

The legend also allows the user to select or deselect data points.

Icon Usage

The legend is represented by the following icon:

Chart legend icon
Chart legend icon

Personalization (Generic)

Developers can add a Personalization button to the app’s chart toolbar to enable app-specific personalization charting (property: ShowPersonalization). The corresponding popover and details also need to be implemented by the developer.

We do not recommend using this feature. If you do choose to use it, exercise caution as the toolbar’s perspective switch feature already allows the preconfiguration of several combinations of dimensions, measures, and selections of chart types.

Hence, the developer should decide on the most valuable chart/data set combinations for the end user beforehand.

When viewing charts, users do not usually want to think about what chart types, dimensions, or measures are most suitable in a particular use case. Therefore, the app should provide users with the most appropriate preconfigured chart view.

Chart personalization action
Chart personalization action

Icon Usage

Personalization is represented by the following icon:

Chart personalization icon
Chart personalization icon

Zoom In/Zoom Out (Generic)

The app developer can add Zoom In and Zoom Out buttons to the chart toolbar to provide zoom functionality. Two icon buttons depicting a magnifying glass are then displayed. These buttons are positioned just to the left of the full-screen icon and they automatically drive the zoom feature in the chart. When the user clicks or taps the Zoom In or Zoom Out icon, the chart automatically zooms in or out to the most appropriate scale.

Chart with zoom in/out buttons
Chart with zoom in/out buttons

Icon Usage

The zoom in/out functionality is represented by the following icons:

Chart zoom in/out icons
Chart zoom in/out icons

Full Screen Mode (Generic)

Alternatively, the app can use the full-screen mode of the chart container (property: FullScreen). However, the full-screen button is always placed at the top right of the toolbar. Further details are available in the Behavior and Interaction section above.

The user can toggle between embedded and full-screen mode via the Maximize full-screen toggle button. In full-screen mode, the toolbar replaces the page header bar which is usually used (the Minimize icon appears).

In full-screen mode, the chart and toolbar occupy the entire width and height.

Icon Usage

The user clicks or taps the full-screen chart icon to initiate full-screen mode. This icon is then replaced by an icon that allows the user to exit full-screen mode.

Full-screen chart icon
Full-screen chart icon

Overflow (Generic)

Please see the section on overflow in the Behavior and Interaction section of the toolbar overview article.

Guidelines

Please see the detailed Guidelines section of the toolbar overview article.

Additional Guidelines

  • Think carefully about what actions you really need in the chart toolbar – do not overload the table toolbar with actions.
  • Try to put the actions as close to the content as possible.
  • Use tooltips like Sort, Filter, and Group to label icon buttons in the table toolbar.

Resources

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

Chart Toolbar

The chart toolbar acts as a container for charts.

The width and height of the chart container are never defined by the app, but are always set by the container itself (as explained in Size of the Chart Container).

The toolbar is mandatory. Small charts such as dashboards, table cells, and small frames are an exception to this rule. In these cases, the developer must provide a consistent UI to enable action on the chart.

The toolbar is always placed on top of the chart. It provides actions such as multiple box selection for selecting dimensions, full screen format, personalization actions, and a toggle function for showing and hiding legends.

Responsiveness

The content of the toolbar adapts to the width of the toolbar.

In this example, you can see three perspective views (dropdowns) and three view switches.

While all three perspectives are shown on desktops, these are grouped into a single button on tablets and smartphones. The button is labeled View by by default, but can be renamed by the app team.

Chart toolbar size S
Chart toolbar size S
Chart toolbar size M
Chart toolbar size M
Chart toolbar size L
Chart toolbar size L

Components

All components of the chart toolbar are optional. It can contain the following actions:

  • Perspective switch or chart/ title (Show title or perspective switch)
  • View switch (optional)
  • Legend (optional)
  • Personalization (optional)
  • Full screen mode (optional)
Components of the chart toolbar
Components of the chart toolbar

Behavior and Interaction

Perspective Switch/Title (Generic)

Overview chart toolbar
Overview chart toolbar

The perspective switch is left-aligned in the toolbar when a generic drop down/ select control is used. It can be used to switch between respective dimensions.

For smart business apps the view incorporates and defines the chart description, the dimension, the measure, and the defaulted chart type. The several views are preconfigured and maintained by an administrator in smart business.

Please make sure that all switches have a meaningful title. Therefore, we recommend to use a short chart description followed by the dimensions:

<Chart description> by <Dimension>

Simple perspective
Simple perspective

Optionally, the perspective switch can be extended if the app needs to switch between specific sub dimensions. It depends on the app how many dimensions and subdimensions are needed.

In general, you can use any kind of control. However, we recommend using the select control.

<Chart description> by <Leading Dimension> <Sub Dimension>

Perspective view with subdimension
Perspective view with subdimension

If there is not enough space, all perspective switches move into one button (property: SelectorGroupLabel).

Apps can rename the default button named View by.

A click on this button opens a popover in large and medium sizes and a full-screen dialog in small sizes.

Small - Responsive behavior perspective switches
Small - Responsive behavior perspective switches
Medium - Responsive behavior perspective switches
Medium - Responsive behavior perspective switches

If the app does not need a perspective switch, use the chart title (property: title).

Chart with title
Chart with title

View Switch (Generic)

View switches are right-aligned in the toolbar. They allow the user to switch between different chart types or table layouts. You need to offer the view switch when the chart relies on subtle color differences or color gradients. Users with visual impairments can then use the table view.

Switches are optional. The buttons can be hidden, if there is no need to switch between different charts or tables.

The chart types and the number of switches need to be chosen with caution. Each app must decide which chart types are best suited to the user’s context.

We recommend using no more than three types of visualization. The sequence of chart type switches is not fixed; however, we recommend sorting them by importance and usage within the respective app.

The segmented button control is used to display the chart types. The control highlights the chart that is currently being displayed.

Chart toolbar with view switch
Chart toolbar with view switch

If you have more than three view switches, you can use a space-saving alternative. In this case, the segmented button morphs into one button that represents the selected view. Initially, this button shows the default chart type.

Clicking the button opens a popover with a selected menu control showing all possible views. If the user chooses a different view, the popover closes and the selected view is displayed.

Please check the responsiveness section to understand how the toolbar reacts when the screen size is restricted.

View Switch – Switch between Chart and Table

You can easily switch between tables and charts by using the view switch.

Some specific actions are only available in certain views. For example the Legend icon is only visible in the chart view. If the user selects the table view, the Filter action is visible and the Legend icon is hidden.

Icon Usage

Each visualization of a chart is represented by an icon.

Bar Chart: Font 'SAP-icons' - Unicode: #e02c - Name: horizontal-bar-chart
Bar Chart: Font 'SAP-icons' - Unicode: #e02c - Name: horizontal-bar-chart
Horizontal Bullet Chart: Font 'SAP-icons' - Unicode: #215
Horizontal Bullet Chart: Font 'SAP-icons' - Unicode: #215
Vertical Bullet Chart: Font 'SAP-icons' - Unicode: #e216
Vertical Bullet Chart: Font 'SAP-icons' - Unicode: #e216
Combined Column Line Chart: Font 'SAP-icons' - Unicode: #e11f - Name: business-objects-experience
Combined Column Line Chart: Font 'SAP-icons' - Unicode: #e11f - Name: business-objects-experience
Stacked Bar Chart: Font 'SAP-icons' - Unicode: #e183 - Name: horizontal-stacked-chart
Stacked Bar Chart: Font 'SAP-icons' - Unicode: #e183 - Name: horizontal-stacked-chart
Stacked Column 100% Chart: Font 'SAP-icons' - Unicode: #e180 - Name: full-stacked-column-chart
Stacked Column 100% Chart: Font 'SAP-icons' - Unicode: #e180 - Name: full-stacked-column-chart
Bar Chart : Font 'SAP-icons' - Unicode: #e182 - Name: horizontal-bar-chart-2
Bar Chart : Font 'SAP-icons' - Unicode: #e182 - Name: horizontal-bar-chart-2
Column Chart: Font 'SAP-icons' - Unicode: #e0ef - Name: vertical-bar-chart
Column Chart: Font 'SAP-icons' - Unicode: #e0ef - Name: vertical-bar-chart
Pie Chart: Font 'SAP-icons' - Unicode: #e015 - Name: pie-chart
Pie Chart: Font 'SAP-icons' - Unicode: #e015 - Name: pie-chart
Stacked Bar 100% Chart: Font 'SAP-icons' - Unicode: #e17f - Name: full-stacked-chart
Stacked Bar 100% Chart: Font 'SAP-icons' - Unicode: #e17f - Name: full-stacked-chart
Table Chart: Font 'SAP-icons' - Unicode: #e0bb - Name: table-chart
Table Chart: Font 'SAP-icons' - Unicode: #e0bb - Name: table-chart
Bubble Chart: Font 'SAP-icons' - Unicode: #e18e - Name: bubble-chart
Bubble Chart: Font 'SAP-icons' - Unicode: #e18e - Name: bubble-chart
Column Chart: Font 'SAP-icons' - Unicode:  - Name: vertical-bar-chart-2
Column Chart: Font 'SAP-icons' - Unicode:  - Name: vertical-bar-chart-2
Scatter Chart: Font 'SAP-icons' - Unicode: & #xe18f; - Name: scatter-chart
Scatter Chart: Font 'SAP-icons' - Unicode: & #xe18f; - Name: scatter-chart
Stacked Column Chart: Font 'SAP-icons' - Unicode: #e184 - Name: vertical-stacked-chart
Stacked Column Chart: Font 'SAP-icons' - Unicode: #e184 - Name: vertical-stacked-chart
Map: Font 'SAP-icons' - Unicode: #e185 - Name: choropleth-chart
Map: Font 'SAP-icons' - Unicode: #e185 - Name: choropleth-chart

Legend (Generic)

The chart Legend button (property: ShowLegend) is placed next to the view switches. The user clicks or taps this button to hide or show the legend.

The legend also allows the user to select or deselect data points.

Icon Usage

The legend is represented by the following icon:

Chart legend icon
Chart legend icon

Personalization (Generic)

Developers can add a Personalization button to the app’s chart toolbar to enable app-specific personalization charting (property: ShowPersonalization). The corresponding popover and details also need to be implemented by the developer.

We do not recommend using this feature. If you do choose to use it, exercise caution as the toolbar’s perspective switch feature already allows the preconfiguration of several combinations of dimensions, measures, and selections of chart types.

Hence, the developer should decide on the most valuable chart/data set combinations for the end user beforehand.

When viewing charts, users do not usually want to think about what chart types, dimensions, or measures are most suitable in a particular use case. Therefore, the app should provide users with the most appropriate preconfigured chart view.

Chart personalization action
Chart personalization action

Icon Usage

Personalization is represented by the following icon:

Chart personalization icon
Chart personalization icon

Zoom In/Zoom Out (Generic)

The app can add zoom in/ zoom out button in the chart toolbar to enable zoom functionality. Two icon buttons with a magnifier glass will be displayed.  These buttons will be positioned just before the full screen icon and will automatically drive the zooming feature in the chart. When the zoom in or zoom out icon is pressed, the chart will automatically zoom in or out to the most appropriate scale.

Chart with zoom in/ zoom out buttons
Chart with zoom in/ zoom out buttons

Icon Usage

The zoom in/ zoom out functionality is represented by the following icon:

Chart zoom in/ zoom out icon
Chart zoom in/ zoom out icon

Full Screen Mode (Generic)

Alternatively, the app can use the full-screen mode of the chart container (property: FullScreen). However, the full-screen button is always placed at the top right of the toolbar. Further details are available in the Behavior and Interaction section above.

The user can toggle between embedded and full-screen mode via the Maximize full-screen toggle button. In full-screen mode, the toolbar replaces the page header bar which is usually used (the Minimize icon appears).

In full-screen mode, the chart and toolbar occupy the entire width and height.

Icon Usage

The user clicks or taps the full-screen chart icon to initiate full-screen mode. This icon is then replaced by an icon that allows the user to exit full-screen mode.

Full-screen chart icon
Full-screen chart icon

Guidelines

Please see the detailed Guidelines section of the toolbar overview article.

Additional Guidelines

  • Think carefully about what actions you really need in the chart toolbar – do not overload the table toolbar with actions.
  • Try to put the actions as close to the content as possible.
  • Use tooltips like Sort, Filter, and Group to label icon buttons in the table toolbar.

Resources

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

Chart Toolbar

The chart toolbar acts as a container for charts.

The width and height of the chart container are never defined by the app, but are always set by the container itself (as explained in Size of the Chart Container).

The toolbar is mandatory. Small charts such as dashboards, table cells, and small frames are an exception to this rule. In these cases, the developer must provide a consistent UI to enable action on the chart.

The toolbar is always placed on top of the chart. It provides actions such as multiple box selection for selecting dimensions, full screen format, personalization actions, and a toggle function for showing and hiding legends.

Responsiveness

The chart container uses the sap.m.OverflowToolbar control. It is a container based on sap.m.Toolbar that provides overflow when its content does not fit in the visible area. For more information, please refer to the toolbar overview article (under Responsiveness).

Chart toolbar – Size S
Chart toolbar – Size S
Chart toolbar – Size L
Chart toolbar – Size L

Components

The chart toolbar can contain the following components:

  • App-specific actions
  • Generic actions

 

The following actions are generic:

  • Perspective switch or chart/title
  • View switch
  • Legend
  • Personalization
  • Zoom in/zoom out
  • Full screen mode
  • Overflow
Components of the chart toolbar
Components of the chart toolbar

Behavior and Interaction

App-Specific Actions

If needed, the app team can define their own actions for the app using icon buttons. These actions are placed explicitly on the UI, although this is due to change at a later stage.

App-specific actions
App-specific actions

Perspective Switch/Title (Generic)

Chart toolbar overview
Chart toolbar overview

The perspective switch is left-aligned in the toolbar when a generic dropdown or select control is used. It can be used to switch between different dimensions.

For SAP Smart Business apps, the view incorporates and defines the chart description, the dimension, the measure, and the defaulted chart type. The various views are preconfigured and maintained by an SAP Smart Business administrator.

Ensure that all switches have a meaningful title. We recommend that you use a short chart description followed by the dimensions:

<Chart description> by <Dimension>

Simple perspective
Simple perspective

You also have the option of extending the perspective switch if the app needs to switch between specific subdimensions. The number of dimensions and subdimensions that are needed depends on the app.

In general, you can use any kind of control. However, we recommend using the select control.

<Chart description> by <Leading Dimension> <Sub Dimension>

Perspective view with subdimension
Perspective view with subdimension

If the app does not need a perspective switch, use the chart title (property: title).

Chart with title
Chart with title

View Switch (Generic)

View switches are right-aligned in the toolbar. They allow the user to switch between different chart types or table layouts. You need to offer the view switch if the chart relies on subtle color differences or color gradients. Users with visual impairments can then use the table view.

Switches are optional. The buttons can be hidden if there is no need to switch between different charts or tables.

You need to be careful when choosing the chart types and the number of switches. For each app, you must decide which chart types are best suited to visualizing data in the user’s context.

We recommend using no more than three types of visualization. The sequence of chart type switches is not fixed, although we recommend sorting them by importance and usage within the respective app.

The segmented button control is used to display the chart types. The control highlights the chart that is currently displayed.

Chart toolbar with view switch
Chart toolbar with view switch

View Switch – Switch Between Chart and Table

The view switch allows you to switch easily between tables and charts.

Some actions are only available in certain views. For example, the Legend icon is only visible in the chart view. If the user selects the table view, the Filter action is visible and the Legend icon is hidden.

Icon Usage

Each visualization of a chart is represented by an icon.

Bar chart:
Bar chart: "SAP-icons" font - Unicode: #e02c - Name: horizontal-bar-chart
Horizontal bullet chart:
Horizontal bullet chart: "SAP-icons" font - Unicode: #e215
Vertical bullet chart:
Vertical bullet chart: "SAP-icons" font - Unicode: #e216
Combined column line chart:
Combined column line chart: "SAP-icons" font - Unicode: #e11f - Name: business-objects-experience
Stacked bar chart:
Stacked bar chart: "SAP-icons" font - Unicode: #e183 - Name: horizontal-stacked-chart
Stacked column 100% chart:
Stacked column 100% chart: "SAP-icons" font - Unicode: #e180 - Name: full-stacked-column-chart
Bar chart:
Bar chart: "SAP-icons" font - Unicode: #e182 - Name: horizontal-bar-chart-2
Column chart:
Column chart: "SAP-icons" font - Unicode: #e0ef - Name: vertical-bar-chart
Pie chart:
Pie chart: "SAP-icons" font - Unicode: #e015 - Name: pie-chart
Stacked bar 100% chart:
Stacked bar 100% chart: "SAP-icons" font - Unicode: #e17f - Name: full-stacked-chart
Table chart:
Table chart: "SAP-icons" font - Unicode: #e0bb - Name: table-chart
Heatmap:
Heatmap: "SAP-icons" font - Unicode: #e214
Bubble chart:
Bubble chart: "SAP-icons" font - Unicode: #e18e - Name: bubble-chart
Column chart:
Column chart: "SAP-icons" font - Unicode:  - Name: vertical-bar-chart-2
Donut chart:
Donut chart: "SAP-icons" font - Unicode: #e213
Scatter chart:
Scatter chart: "SAP-icons" font - Unicode: & #xe18f; - Name: scatter-chart
Stacked column chart:
Stacked column chart: "SAP-icons" font - Unicode: #e184 - Name: vertical-stacked-chart
Map:
Map: "SAP-icons" font - Unicode: #e185 - Name: choropleth-chart

Legend (Generic)

The chart Legend button (property: ShowLegend) is placed next to the view switches. The user clicks or taps this button to hide or show the legend.

The legend also allows the user to select or deselect data points.

Icon Usage

The legend is represented by the following icon:

Chart legend icon
Chart legend icon

Personalization (Generic)

Developers can add a Personalization button to the app’s chart toolbar to enable app-specific personalization charting (property: ShowPersonalization). The corresponding popover and details also need to be implemented by the developer.

We do not recommend using this feature. If you do choose to use it, exercise caution as the toolbar’s perspective switch feature already allows the preconfiguration of several combinations of dimensions, measures, and selections of chart types.

Hence, the developer should decide on the most valuable chart/data set combinations for the end user beforehand.

When viewing charts, users do not usually want to think about what chart types, dimensions, or measures are most suitable in a particular use case. Therefore, the app should provide users with the most appropriate preconfigured chart view.

Chart personalization action
Chart personalization action

Icon Usage

Personalization is represented by the following icon:

Chart personalization icon
Chart personalization icon

Zoom In/Zoom Out (Generic)

The app developer can add Zoom In and Zoom Out buttons to the chart toolbar to provide zoom functionality. Two icon buttons depicting a magnifying glass are then displayed. These buttons are positioned just to the left of the full-screen icon and they automatically drive the zoom feature in the chart. When the user clicks or taps the Zoom In or Zoom Out icon, the chart automatically zooms in or out to the most appropriate scale.

Chart with zoom in/out buttons
Chart with zoom in/out buttons

Icon Usage

The zoom in/out functionality is represented by the following icons:

Chart zoom in/out icons
Chart zoom in/out icons

Full Screen Mode (Generic)

Alternatively, the app can use the full-screen mode of the chart container (property: FullScreen). However, the full-screen button is always placed at the top right of the toolbar. Further details are available in the Behavior and Interaction section above.

The user can toggle between embedded and full-screen mode via the Maximize full-screen toggle button. In full-screen mode, the toolbar replaces the page header bar which is usually used (the Minimize icon appears).

In full-screen mode, the chart and toolbar occupy the entire width and height.

Icon Usage

The user clicks or taps the full-screen chart icon to initiate full-screen mode. This icon is then replaced by an icon that allows the user to exit full-screen mode.

Full-screen chart icon
Full-screen chart icon

Overflow (Generic)

The overflow is activated if there is not enough space for all the chart bar actions. It is generated automatically.

Release 1.30 saw several new features being added to the overflow toolbar. The  “(overflow) button is now a toggle button and can be used to switch the overflow menu on and off.

When the user clicks or taps the overflow button, a popover appears. In this action sheet, all the icon buttons are labeled with text. The following controls can be overflowed:

  • sap.m.SegmentedButton: When the segmented button is in the overflow, it is in “select mode” and looks exactly like a select control, although it is technically still a segmented button.
  • sap.m.Select: When the select control is 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

All buttons go into the overflow from right to left. This ensures that the most important buttons are the last to go into the overflow.

Guidelines

Please see the detailed Guidelines section of the toolbar overview article.

Additional Guidelines

  • Think carefully about what actions you really need in the chart toolbar – do not overload the table toolbar with actions.
  • Try to put the actions as close to the content as possible.
  • Use tooltips like Sort, Filter, and Group to label icon buttons in the table toolbar.

Resources

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

Variant Management

Variants store filter settings which have been defined within the filter bar. The filter settings consist of selection fields, filter parameters, and a layout. This control enables the user to load, save, and change variants. In some cases, the table settings are also implicitly saved within the variant.

In the context of tables, this control is used to save, manage, and load table settings which include layout, column visibility, sorting, and grouping.

Usage

Use the variant management control if:

  • The user needs to save and load different filter settings to find the relevant data.
  • The user needs to save and load different layouts (for example, a table) to display data in different views.

Responsiveness

Smartphone (S Size)

Variant selection, manage dialog, and save dialog are opened in full screen.

Variant selection
Variant selection
Manage Variants
Manage Variants
Save Variant
Save Variant

Tablet (M Size)

Variant selection
Variant selection
Manage Variants
Manage Variants
Save Variant
Save Variant

Desktop (L Size)

Variant selection
Variant selection
Manage Variants
Manage Variants
Save Variant
Save Variant

Layout

The variant management control is used within the filter bar and table. The layout differs depending where it is used.

Filter Bar

Variant management can be enabled within the filter bar.

Within filter bar
Within filter bar

Variant management is also available within the filter dialog.

Filter dialog
Filter dialog

Table

You can use the variant management control if you need to store table settings (layout, column visibility, sorting, or grouping) independently of the filter settings. The following examples illustrate where this control should be placed.

Always place this control as the first item within the table toolbar.

If a title or the variant management control is placed inside a toolbar, you need to apply the following styles:

  • The toolbar height must be set to 3 rem.
  • The toolbar design must be transparent.
  • The title must have the class “sapMH4Fontsize”.
Variant management within table toolbar
Variant management within table toolbar

If the table has a separate title, place the title first.

Variant management with table title
Variant management with table title

Behavior and Interaction

This control allows the user to select, create, update, and delete variants within the filter bar. In the context of a table, this is the table configuration (layout, column visibility, sorting, and grouping).

Selecting a Variant

The control label displays the active variant. When the user selects it, a popover displays all available variants. The currently active variant is highlighted. To load another variant, the user simply selects one from the list.

Variants that have been modified but not saved are marked with an asterisk (*).

Selecting a variant
Selecting a variant

If more than 10 variants exist, a search option is displayed.

Select variant – Search option
Select variant – Search option

The standard variant is the minimum set of variants which is delivered by SAP and cannot be modified or deleted.

Save

Save can only be applied to variants that the user is allowed to save. Otherwise, this button is disabled. Save overwrites the active variant.

Save As

Save As enables the user to save the current filter settings as a new variant. The Save As function can also be used to duplicate existing variants for later modification.

Manage

This opens a new dialog which allows the user to update and delete existing variants.

Creating – “Save As” Variant

The following options can be set:

Use as Default

The variant that is set to default is selected when the user launches the app.

Execute on Select

If this option is active, the variant is executed immediately. The user does not need to click or tap the search button. This option is often used if small filter changes need to be made before the user finally executes the search.

Save As
Save As

Share

The user can set the Share option to make a variant available to other users.

All variants that are shared by users or delivered by SAP, partners, or key users are available within the manage list and the selection list.

Create As Tile

A tile with the same label as the variant is created on the home page.

You can hide the options Execute on Select and Create as Tile by configuring the control correspondingly.

Information
Note that the you must still create the tile even if you select the Create as Tile flag.

Managing – Update/Delete Variant

Within the manage dialog, the user can rename, delete, and change properties of existing variants.

Users can only modify or delete entries if they have the necessary permissions. By default, variants which have been created by the user can also be modified and deleted. Users can also modify and delete entries from other users. This is currently a limitation.

 

Based on the configuration of the variant management control, the following column can be hidden or shown:

  • Execute on Select. (If this control is used in the context of tables, Execute on Select is hidden.)
Manage
Manage

Guidelines

In the context of variants, we recommend that you directly reference the variant with the tile. Use the name of the variant as the tile title. Map this as a preset title that cannot be edited by the user.  In this case, whenever the variant is updated, the tile is updated accordingly.

Enable the option Create as Tile within the Save As dialog if your use case generally requires a tile to be created immediately after the Save As action.  In some scenarios, such as MRP, variants and their respective tiles are created on a weekly basis and then removed.

If the variant has been modified but not yet saved (“dirty state”), ensure that the variant is saved before the tile is created.

Exception

If the variant cannot be referenced directly due to technical limitations, offer the standard tile creation option where only filter parameters and settings are saved within the URL. Do not offer the Create as Tile option within the Save As 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

Variant Management

Variants store filter settings which have been defined within the filter bar. The filter settings consist of selection fields, filter parameters, and a layout. This control enables the user to load, save, and change variants. In some cases, the table settings are also implicitly saved within the variant.

In the context of tables, this control is used to save, manage, and load table settings which include layout, column visibility, sorting, and grouping.

Usage

Use the variant management control if:

  • The user needs to save and load different filter settings to find the relevant data.
  • The user needs to save and load different layouts (for example, a table) to display data in different views.

Responsiveness

Smartphone (S Size)

Variant selection, manage dialog, and save dialog are opened in full screen.

Variant selection
Variant selection
Manage Variants
Manage Variants
Save Variant
Save Variant

Tablet (M Size)

Variant selection
Variant selection
Manage Variants
Manage Variants
Save Variant
Save Variant

Desktop (L Size)

Variant selection
Variant selection
Manage Variants
Manage Variants
Save Variant
Save Variant

Layout

The variant management control is used within the filter bar and table. The layout differs depending where it is used.

Filter Bar

Variant management can be enabled within the filter bar.

Within filter bar
Within filter bar

Variant management is also available within the filter dialog.

Filter dialog
Filter dialog

Table

You can use the variant management control if you need to store table settings (layout, column visibility, sorting, or grouping) independently of the filter settings. The following examples illustrate where this control should be placed.

Always place this control as the first item within the table toolbar.

If a title or the variant management control is placed inside a toolbar, you need to apply the following styles:

  • The toolbar height must be set to 3 rem.
  • The toolbar design must be transparent.
  • The title must have the class “sapMH4Fontsize”.
Variant management within table toolbar
Variant management within table toolbar

If the table has a separate title, place the title first.

Variant management with table title
Variant management with table title

Behavior and Interaction

This control allows the user to select, create, update, and delete variants within the filter bar. In the context of a table, this is the table configuration (layout, column visibility, sorting, and grouping).

Selecting a Variant

The control label displays the active variant. When the user selects it, a popover displays all available variants. The currently active variant is highlighted. To load another variant, the user simply selects one from the list.

Variants that have been modified but not saved are marked with an asterisk (*).

Selecting a variant
Selecting a variant

If more than 10 variants exist, a search option is displayed.

Select variant – Search option
Select variant – Search option

The standard variant is the minimum set of variants which is delivered by SAP and cannot be modified or deleted.

Save

Save can only be applied to variants that the user is allowed to save. Otherwise, this button is disabled. Save overwrites the active variant.

Save As

Save As enables the user to save the current filter settings as a new variant. The Save As function can also be used to duplicate existing variants for later modification.

Manage

This opens a new dialog which allows the user to update and delete existing variants.

Creating – “Save As” Variant

The following options can be set:

Use as Default

The variant that is set to default is selected when the user launches the app.

Execute on Select

If this option is active, the variant is executed immediately. The user does not need to click or tap the search button. This option is often used if small filter changes need to be made before the user finally executes the search.

Save As
Save As

Share

The user can set the Share option to make a variant available to other users.

All variants that are shared by users or delivered by SAP, partners, or key users are available within the manage list and the selection list.

Create As Tile

A tile with the same label as the variant is created on the home page.

You can hide the options Execute on Select and Create as Tile by configuring the control correspondingly.

Information
Note that the you must still create the tile even if you select the Create as Tile flag.

Managing – Update/Delete Variant

Within the manage dialog, the user can rename, delete, and change properties of existing variants.

Users can only modify or delete entries if they have the necessary permissions. By default, variants which have been created by the user can also be modified and deleted. Users can also modify and delete entries from other users. This is currently a limitation.

 

Based on the configuration of the variant management control, the following column can be hidden or shown:

  • Execute on Select. (If this control is used in the context of tables, Execute on Select is hidden.)
Manage
Manage

Guidelines

In the context of variants, we recommend that you directly reference the variant with the tile. Use the name of the variant as the tile title. Map this as a preset title that cannot be edited by the user.  In this case, whenever the variant is updated, the tile is updated accordingly.

Enable the option Create as Tile within the Save As dialog if your use case generally requires a tile to be created immediately after the Save As action.  In some scenarios, such as MRP, variants and their respective tiles are created on a weekly basis and then removed.

If the variant has been modified but not yet saved (“dirty state”), ensure that the variant is saved before the tile is created.

Exception

If the variant cannot be referenced directly due to technical limitations, offer the standard tile creation option where only filter parameters and settings are saved within the URL. Do not offer the Create as Tile option within the Save As 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

Variant Management

Variants store filter settings which have been defined within the filter bar. The filter settings consist of filter parameters, selection fields and a layout. This control enables the user to load, save, and change variants. In some cases, the table settings are also saved within a variant.

In the context of tables, this control is used to save, manage, and load table settings which include layout, column visibility, sorting, and grouping.

Smart variant management saves both filter settings and table layouts. It creates a page variant that includes all the controls. The button is located within the page header bar, and no secondary management is possible on table level.

Usage

Use the variant management control if:

  • The user needs to save and load different filter settings to find the relevant data.
  • The user needs to save and load different layouts (for example, a table) to display data in different views.
  • Use smart variant management if the user needs to save the page including the filter settings and table layout.

Responsiveness

Smartphone (S Size)

Variant selection, manage dialog, and save dialog are opened in full screen.

Variant selection
Variant selection
Manage Variants
Manage Variants
Save Variant
Save Variant

Tablet (M Size)

Variant selection
Variant selection
Manage Variants
Manage Variants
Save Variant
Save Variant

Desktop (L Size)

Variant selection
Variant selection
Manage Variants
Manage Variants
Save Variant
Save Variant

Layout

The variant management control is used within the filter bar and table. The layout differs depending where it is used.

Filter Bar

Variant management can be enabled within the filter bar.

Within filter bar
Within filter bar

Variant management is also available within the filter dialog.

Filter dialog
Filter dialog

Table

You can use the variant management control if you need to store table settings (layout, column visibility, sorting, or grouping) independently of the filter settings. The following examples illustrate where this control should be placed.

Always place this control as the first item within the table toolbar.

If a title or the variant management control is placed inside a toolbar, you need to apply the following styles:

  • The toolbar height must be set to 3 rem.
  • The toolbar design must be transparent.
  • The title must have the class “sapMH4Fontsize”.
Variant management within table toolbar
Variant management within table toolbar

If the table has a separate title, place the title first.

Variant management with table title
Variant management with table title

Behavior and Interaction

This control allows the user to select, create, update, and delete variants within the filter bar. In the context of a table, this is the table configuration (layout, column visibility, sorting, and grouping).

Selecting a Variant

The control label displays the active variant. When the user selects it, a popover displays all available variants. The currently active variant is highlighted. To load another variant, the user simply selects one from the list.

Variants that have been modified but not saved are marked with an asterisk (*).

Selecting a variant
Selecting a variant

If more than 10 variants exist, a search option is displayed.

Select variant – Search option
Select variant – Search option

The standard variant is the minimum set of variants which is delivered by SAP and cannot be modified or deleted.

Save

Save can only be applied to variants that the user is allowed to save. Otherwise, this button is disabled. Save overwrites the active variant.

Save As

Save As enables the user to save the current filter settings as a new variant. The Save As function can also be used to duplicate existing variants for later modification.

Manage

This opens a new dialog which allows the user to update and delete existing variants.

Creating – “Save As” Variant

The following options can be set:

Use as Default

The variant that is set to default is selected when the user launches the app.

Execute on Select

If this option is active, the variant is executed immediately. The user does not need to click or tap the search button. This option is often used if small filter changes need to be made before the user finally executes the search.

Save As
Save As

Share

The user can set the Share option to make a variant available to other users.

All variants that are shared by users or delivered by SAP, partners, or key users are available within the manage list and the selection list.

Create As Tile

A tile with the same label as the variant is created on the home page.

You can hide the options Execute on Select and Create as Tile by configuring the control correspondingly.

Information
Note that the you must still create the tile even if you select the Create as Tile flag.

Managing – Update/Delete Variant

Within the manage dialog, the user can rename, delete, and change properties of existing variants.

Users can only modify or delete entries if they have the necessary permissions. By default, variants which have been created by the user can also be modified and deleted. Users can also modify and delete entries from other users. This is currently a limitation.

 

Based on the configuration of the variant management control, the following column can be hidden or shown:

  • Execute on Select. (If this control is used in the context of tables, Execute on Select is hidden.)
Manage
Manage

Guidelines

In the context of variants, we recommend that you directly reference the variant with the tile. Use the name of the variant as the tile title. Map this as a preset title that cannot be edited by the user.  In this case, whenever the variant is updated, the tile is updated accordingly.

Enable the option Create as Tile within the Save As dialog if your use case generally requires a tile to be created immediately after the Save As action.  In some scenarios, such as MRP, variants and their respective tiles are created on a weekly basis and then removed.

If the variant has been modified but not yet saved (“dirty state”), ensure that the variant is saved before the tile is created.

Exception

If the variant cannot be referenced directly due to technical limitations, offer the standard tile creation option where only filter parameters and settings are saved within the URL. Do not offer the Create as Tile option within the Save As 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

Variant Management

Variants store filter settings which have been defined within the filter bar. The filter settings consist of filter parameters, selection fields and a layout. This control enables the user to load, save, and change variants. In some cases, the table settings are also saved within a variant.

In the context of tables, this control is used to save, manage, and load table settings which include layout, column visibility, sorting, and grouping.

Smart variant management saves both filter settings and table layouts. It creates a page variant that includes all the controls. The button is located within the page header bar, and no secondary management is possible on table level.

Usage

Use the variant management control if:

  • The user needs to save and load different filter settings to find the relevant data.
  • The user needs to save and load different layouts (for example, a table) to display data in different views.
  • Use smart variant management if the user needs to save the page including the filter settings and table layout.

Responsiveness

Smartphone (S Size)

Variant selection, manage dialog, and save dialog are opened in full screen.

Variant selection
Variant selection
Manage Variants
Manage Variants
Save Variant
Save Variant

Tablet (M Size)

Variant selection
Variant selection
Manage Variants
Manage Variants
Save Variant
Save Variant

Desktop (L Size)

Variant selection
Variant selection
Manage Variants
Manage Variants
Save Variant
Save Variant

Layout

The variant management control is used within the filter bar (next to the page title) and the table toolbar (next to the table title).

Filter Bar

The variant management control is located next to the page title within the page header container and saves the stored filter settings or both filter and table settings.

Variant management within filter bar next to the page title
Variant management within filter bar next to the page title

Table

The variant management control can also store table settings (layout, column visibility, sorting, or grouping) independently of the filter settings.

It is placed as the first item within the table toolbar.

If a title or the variant management control is placed inside a toolbar, you need to apply the following styles:

  • The toolbar height must be set to 3 rem.
  • The toolbar design must be transparent.
  • The title must have the class “sapMH4Fontsize”.
Variant management within table toolbar
Variant management within table toolbar

If the table has a separate title, place the title first.

Variant management with table title
Variant management with table title

Behavior and Interaction

This control allows the user to select, create, update, and delete variants within the filter bar. In the context of a table, this is the table configuration (layout, column visibility, sorting, and grouping).

Selecting a Variant

The control label displays the active variant. When the user selects it, a popover displays all available variants. The currently active variant is highlighted. To load another variant, the user simply selects one from the list.

Variants that have been modified but not saved are marked with an asterisk (*).

Selecting a variant
Selecting a variant

If more than 10 variants exist, a search option is displayed.

Select variant – Search option
Select variant – Search option

The standard variant is the minimum set of variants which is delivered by SAP and cannot be modified or deleted.

Save

Save can only be applied to variants that the user is allowed to save. Otherwise, this button is disabled. Save overwrites the active variant.

Save As

Save As enables the user to save the current filter settings as a new variant. The Save As function can also be used to duplicate existing variants for later modification.

Manage

This opens a new dialog which allows the user to update and delete existing variants.

Creating – “Save As” Variant

The following options can be set:

Set as Default

The variant that is set to default is selected when the user launches the app.

Execute on Select

If this option is active, the variant is executed immediately. The user does not need to click or tap the ‘Go’ button. This option is often used if small filter changes need to be made before the user finally executes the search.

Save As
Save As

Share

The user can set the Share option to make a variant available to other users.

All variants that are shared by users or delivered by SAP, partners, or key users are available within the manage list and the selection list.

Create As Tile

A tile with the same label as the variant is created on the home page.

You can hide the options Execute on Select and Create as Tile by configuring the control correspondingly.

Information
Note that the you must still create the tile even if you select the Create as Tile flag.

Managing – Update/Delete Variant

Within the manage dialog, the user can rename, delete, and change properties of existing variants.

Users can only modify or delete entries if they have the necessary permissions. By default, variants which have been created by the user can also be modified and deleted. Users can also modify and delete entries from other users. This is currently a limitation.

 

Based on the configuration of the variant management control, the following column can be hidden or shown:

  • Execute on Select. (If this control is used in the context of tables, Execute on Select is hidden.)
Manage
Manage

Guidelines

In the context of variants, we recommend that you directly reference the variant with the tile. Use the name of the variant as the tile title. Map this as a preset title that cannot be edited by the user.  In this case, whenever the variant is updated, the tile is updated accordingly.

Enable the option Create as Tile within the Save As dialog if your use case generally requires a tile to be created immediately after the Save As action.  In some scenarios, such as MRP, variants and their respective tiles are created on a weekly basis and then removed.

If the variant has been modified but not yet saved (“dirty state”), ensure that the variant is saved before the tile is created.

Exception

If the variant cannot be referenced directly due to technical limitations, offer the standard tile creation option where only filter parameters and settings are saved within the URL. Do not offer the Create as Tile option within the Save As 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

Chart (VizFrame)

Use the sap.viz.ui5.controls.VizFrame control to display different types of charts.  The VizFrame control can display charts containing large sets of values in an interactively rich and responsive way, or it can display charts containing a small amount of data with no interaction.

You can put the VizFrame control inside the ChartContainer SAPUI5 control.  This enables you to place a toolbar above the chart which gives users the ability to switch between a chart view and a table view, as well as switch to full screen mode.

The following sections provide further details about the VizFrame charts, including the chart types, interaction features, and display settings.

VizFrame column chart
VizFrame column chart

Resources

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

Chart (VizFrame)

Use the sap.viz.ui5.controls.VizFrame control to display different types of charts.  The VizFrame control can display charts containing large sets of values in an interactively rich and responsive way, or it can display charts containing a small amount of data with no interaction.

You can put the VizFrame control inside the ChartContainer SAPUI5 control.  This enables you to place a toolbar above the chart which gives users the ability to switch between a chart view and a table view, as well as switch to full screen mode.

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

No links.

Implementation

Chart (VizFrame)

Charts are used to display quantitative information. They give the user access to key information contained in structured data records. Charts are efficient because they are based on visual perception, which helps with identifying shapes. If charts are correctly designed, the key information will be correctly highlighted.

Use vizFrame charts to visualize large set of values, in a fully interactive and responsive way. But obviously, small set of data also works well.

The ChartContainer SAPUI5 control allows you to have a toolbar on top, it also allows switching between charts and tables and to use the full screen mode.

vizFrame column chart
vizFrame column chart

If you need to visualize very few data points in small sizes, and in a non-interactive way, then use the mini charts. Mini charts can be embedded in tiles, smart business drill down and any SAPUI5 container such as SAPUI5 tables.

Resources

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

Chart (VizFrame)

Charts are used to display quantitative information. They give the user access to key information contained in structured data records. Charts are efficient because they are based on visual perception, which helps with identifying shapes. If charts are correctly designed, the key information will be correctly highlighted.

Use vizFrame charts to visualize large set of values, in a fully interactive and responsive way. But obviously, a small set of data also works well.

The ChartContainer SAPUI5 control allows you to have a toolbar on top. It also allows the user to switch between charts and tables and to use the full screen mode.

vizFrame column chart
vizFrame column chart

If you need to visualize very few data points in small sizes, and in a non-interactive way, then use the mini charts. Mini charts can be embedded in tiles, smart business drill down and any SAPUI5 container such as SAPUI5 tables.

Resources

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

Chart (VizFrame)

Use the sap.viz.ui5.controls.VizFrame control to display different types of charts.  The VizFrame control can display charts containing large sets of values in an interactively rich and responsive way, or it can display charts containing a small amount of data with no interaction.

You can put the VizFrame control inside the ChartContainer SAPUI5 control.  This enables you to place a toolbar above the chart which gives users the ability to switch between a chart view and a table view, as well as switch to full screen mode.

The following sections provide further details about the VizFrame charts, including the chart types, interaction features, and display settings.

VizFrame column chart
VizFrame column chart

Resources

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

Chart – Behavior and Interaction

This article describes the many different ways to interact with chart content.

Selection

Selection in charts is used to display related information about the selection or to trigger actions related to the selection. The user can select items in multiple ways.

For more information, see selection,

Selection
Selection

Popover

The popover is used to display information or action related to the selected data points.

For more information, see popover.

Popover
Popover

Gestures

The following gestures are used in charts:

Gesture Associated Action
Tap Selects a data point and dispalys related information and actions
Press and drag Lasso Selection: when pressed outside a datapoint, starts a lasso selection.
Drag/slide Scrolls the chart horizontally or vertically
Flick Scrolls the chart quickly (horizontally or vertically)
Spread or pinch Not implemented yet. Will be used for zoom in and out.

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

Chart – Behavior and Interaction

This article describes the many different ways to interact with chart content.

Zoom

The scale on the axis can be changed programmatically by the developer, or manually by the user.

For more information, see zoom.

Zoom
Zoom

Selection

Selection in charts is used to display related information about the selection or to trigger actions related to the selection. The user can select items in multiple ways.

For more information, see selection,

Selection
Selection

Popover

The popover is used to display information or action related to the selected data points.

For more information, see popover.

Popover
Popover

Gestures

The following gestures are used in charts:

Gesture Associated Action
Tap Selects a data point and displays related information and actions
Press and drag Triggers lasso selection when pressed outside a datapoint
Drag/slide Scrolls the chart horizontally or vertically
Flick Scrolls the chart quickly (horizontally or vertically)
Spread or pinch Zooms in and out

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

Chart – Embedding

This article explains how to embed an SAP Fiori chart in an app in such a way that it has the correct size and scrolling behavior.

Developer Hint
The ChartContainer toolbar and FixFlex SAPUI5 control help you support these guidelines. See the “Resources” section at the end of this page.

Vertically-Scrolled Page vs. Frame

The optimal way to embed a chart component in an app depends on the layout pattern of the app. Embedding a chart component in a split-screen layout is different from embedding one in a full screen layout.

Two main layout patterns must be considered:

Vertically-Scrolled Page

In this layout pattern, the page scrolls vertically. If the page content cannot be seen in full, a vertical scroll bar appears.

Layout examples:

Split-screen layout with object below the chart:

Chart embedded in a detail view
Chart embedded in a detail view

Object page or dashboard:

Chart embedded in an object page or dashboard
Chart embedded in an object page or dashboard

Full-width page:

Chart embedded in a full-width page
Chart embedded in a full-width page

Frame

In this layout pattern, the page contains multiple frames and does not scroll horizontally or vertically. If the page content cannot be seen in full, the frames are resized so that they remain visible. Some frames may remain with a fixed size, while other frames are resized. When a chart is embedded in a frame, the frame is generally resized.

Layout examples:

Split-screen layout with the chart as the last object in the detail view:

Chart embedded in a detail view
Chart embedded in a detail view

SAP Smart Business apps, full-screen app, analysis floorplan, list report floorplan:

Chart embedded in a frame
Chart embedded in a frame

Apps with multiple frames:

Two charts embedded in two frames
Two charts embedded in two frames

Scrolling Direction of the Chart

How you embed a chart component in an app also depends on its scrolling direction. Embedding a chart that scrolls horizontally is different from embedding one that scrolls vertically.

For more information, see the article on the scrolling direction of charts.

Horizontally-Scrolled Chart

The height of the chart component is defined by the app developer and remains fixed, even when the height of the page changes.

Height of a horizontally scrolled chart
Height of a horizontally scrolled chart

Vertically-Scrolled Chart

The height of the chart component is defined by the app developer and remains fixed, even when the height of the page changes.

Height of a vertically scrolled chart
Height of a vertically scrolled chart

As a design principle, you should avoid having two vertical scroll bars on the same page. The chart component should be large enough to avoid a vertical scroll bar appearing inside the component. The height of the chart component must equal the height of its content.

When the content of the chart changes, make sure that the height of the chart adapts to its content. That will happen each time the data set changes.

When the scroll bar of the page appears, the chart toolbar could disappear when scrolling. This is why this layout should be applied only for a small amount of data.

For a large amount of data, it is better to embed the chart in a frame.

Estimating the Height of a Vertically-Scrolled Chart

You can estimate the height by using the following formula:

bar heights = Nb of bars * (24 px or 48 px)

+ gaps betweens bars =  (Nb of bars – 1) * bar.width * 0.125

+ gap between categories (if categories exist) = bar.width * (Nb of categories-1)

+ margin before first bar and after last bar  = 2 * bar.width * 0.4375

+ height of axis = 27

+  title + gap below the title  (if title exist) = 41

Note: This is only an estimation. Add some pixels to make sure the vertical scroll bar will not appear.

Embedding in Frames

In this layout pattern, the screen contains multiple frames and does not scroll horizontally or vertically. The scrolling is instead managed by each of the frames. When the chart component is embedded in a frame, it is resized to occupy the full height and width of the frame.

The chart component manages the scroll bars as necessary and displays the appropriate data point correctly.

Charts embedded in a frame
Charts embedded in a frame

Bidirectional Scrolled Chart

Charts that have no main scrolling direction should be managed on a case-by-case basis.

Resources

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

Elements and Controls

Implementation

Chart – Embedding

This article explains how to embed an SAP Fiori chart in an app in such a way that it has the correct size and scrolling behavior.

Developer Hint
The ChartContainer toolbar and FixFlex SAPUI5 control help you support these guidelines. See the “Resources” section at the end of this page.

Vertically-Scrolled Page vs. Frame

The optimal way to embed a chart component in an app depends on the layout pattern of the app. Embedding a chart component in a split-screen layout is different from embedding one in a full screen layout.

Two main layout patterns must be considered:

Vertically-Scrolled Page

In this layout pattern, the page scrolls vertically. If the page content cannot be seen in full, a vertical scroll bar appears.

Layout examples:

Split-screen layout with object below the chart:

Chart embedded in a detail view
Chart embedded in a detail view

Object page or dashboard:

Chart embedded in an object page or dashboard
Chart embedded in an object page or dashboard

Full-width page:

Chart embedded in a full-width page
Chart embedded in a full-width page

Frame

In this layout pattern, the page contains multiple frames and does not scroll horizontally or vertically. If the page content cannot be seen in full, the frames are resized so that they remain visible. Some frames may remain with a fixed size, while other frames are resized. When a chart is embedded in a frame, the frame is generally resized.

Layout examples:

Split-screen layout with the chart as the last object in the detail view:

Chart embedded in a detail view
Chart embedded in a detail view

SAP Smart Business apps, full-screen app, analysis floorplan, list report floorplan:

Chart embedded in a frame
Chart embedded in a frame

Apps with multiple frames:

Two charts embedded in two frames
Two charts embedded in two frames

Scrolling Direction of the Chart

How you embed a chart component in an app also depends on its scrolling direction. Embedding a chart that scrolls horizontally is different from embedding one that scrolls vertically.

For more information, see the article on the scrolling direction of charts.

Horizontally-Scrolled Chart

The height of the chart component is defined by the app developer and remains fixed, even when the height of the page changes.

Height of a horizontally scrolled chart
Height of a horizontally scrolled chart

Vertically-Scrolled Chart

The height of the chart component is defined by the app developer and remains fixed, even when the height of the page changes.

Height of a vertically scrolled chart
Height of a vertically scrolled chart

As a design principle, you should avoid having two vertical scroll bars on the same page. To do so, try one of the following:

  • Define the correct zoom setting to display the entire set of data.
  • Make the chart non-zoomable, but ensure that the chart component is big enough to avoid having a vertical scroll bar inside it. The height of the chart component must be calculated so that its entire content can be seen without a scroll bar.

When the scroll bar of the page appears, the chart toolbar could disappear when scrolling. For that reason, this layout should be applied only for a small amount of data. For a large amount of data, it is better to embed the chart in a frame.

Embedding in Frames

In this layout pattern, the screen contains multiple frames and does not scroll horizontally or vertically. The scrolling is instead managed by each of the frames. When the chart component is embedded in a frame, it is resized to occupy the full height and width of the frame.

The chart component manages the scroll bars as necessary and displays the appropriate data point correctly.

Charts embedded in a frame
Charts embedded in a frame

When the chart is reduced to its minimum height, it is no longer resized. This is likely to happen on small screens.

Chart embedded in a frame with minimum height
Chart embedded in a frame with minimum height
Developer Hint
Use the property fixFlex:minFlexSize to set a minimum height for the flexible part of the layout.

Bidirectional Scrolled Chart

Charts that have no main scrolling direction should be managed on a case-by-case basis.

Resources

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

Elements and Controls

Implementation

Chart – Embedding

This article explains how to embed an SAP Fiori chart in an app in such a way that it has the correct size and scrolling behavior.

Developer Hint
The ChartContainer toolbar and FixFlex SAPUI5 control help you support these guidelines. See the “Resources” section at the end of this page.

Vertically-Scrolled Page vs. Frame

The optimal way to embed a chart component in an app depends on the layout pattern of the app. Embedding a chart component in a split-screen layout is different from embedding one in a full screen layout.

Two main layout patterns must be considered:

Vertically-Scrolled Page

In this layout pattern, the page scrolls vertically. If the page content cannot be seen in full, a vertical scroll bar appears.

Layout examples:

Split-screen layout with object below the chart:

Chart embedded in a detail view
Chart embedded in a detail view

Object page or dashboard:

Chart embedded in an object page or dashboard
Chart embedded in an object page or dashboard

Full-width page:

Chart embedded in a full-width page
Chart embedded in a full-width page

Frame

In this layout pattern, the page contains multiple frames and does not scroll horizontally or vertically. If the page content cannot be seen in full, the frames are resized so that they remain visible. Some frames may remain with a fixed size, while other frames are resized. When a chart is embedded in a frame, the frame is generally resized.

Layout examples:

Split-screen layout with the chart as the last object in the detail view:

Chart embedded in a detail view
Chart embedded in a detail view

SAP Smart Business apps, full-screen app, analysis floorplan, list report floorplan:

Chart embedded in a frame
Chart embedded in a frame

Apps with multiple frames:

Two charts embedded in two frames
Two charts embedded in two frames

Scrolling Direction of the Chart

How you embed a chart component in an app also depends on its scrolling direction. Embedding a chart that scrolls horizontally is different from embedding one that scrolls vertically.

For more information, see the article on the scrolling direction of charts.

Horizontally-Scrolled Chart

The height of the chart component is defined by the app developer and remains fixed, even when the height of the page changes.

Height of a horizontally scrolled chart
Height of a horizontally scrolled chart

Vertically-Scrolled Chart

The height of the chart component is defined by the app developer and remains fixed, even when the height of the page changes.

Height of a vertically scrolled chart
Height of a vertically scrolled chart

Embedding in Frames

In this layout pattern, the screen contains multiple frames and does not scroll horizontally or vertically. The scrolling is instead managed by each of the frames. When the chart component is embedded in a frame, it is resized to occupy the full height and width of the frame.

The chart component manages the scroll bars as necessary and displays the appropriate data point correctly.

Charts embedded in a frame
Charts embedded in a frame

Bidirectional Scrolled Chart

Charts that have no main scrolling direction should be managed on a case-by-case basis.

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 Chart

The bullet chart is used to compare primary and secondary (comparison) values.

Encoded Values

Primary Values

Frequently used for actual values, primary values can also be used for any type of value that you want to compare to the secondary/comparison value.

Secondary/Comparison Values

Frequently used for target and plan values, comparison values can also be used to compare the primary value with any other value. There are use cases where the comparison value is used to express a forecast, a competitor, or a specific year.

Additional Values

The bullet chart can also express an additional value so long as it’s directly related to the primary value.

Orientation

The bullet chart can be orientated horizontally or vertically. It’s best to orientate it vertically for time series.

Horizontal bullet chart
Horizontal bullet chart
Vertical bullet chart
Vertical bullet chart

Color Palette

If nothing is customised, the bullet chart will automatically use colors from the qualitative palette.

However, it is also possible to customize the colors (for example, if you want to differentiate between categories). For more information, check out the article on bullet chart colors.

SAP Fiori chart palettes
SAP Fiori chart palettes

Selection and Popover

Unlike other charts, when the user clicks on a bullet, all the associated values are displayed in the popover – primary value, comparison value along with additional value, projected value, and qualitative ranges (if used). The popover can also be customized to display other information and actions if you wish.

Popover
Popover

Legend

As with all other charts, when you customize the colors, the text of each legend item must also be manually maintained because the chart component cannot guess the meaning of each color.

For more information, see legend.

Legend
Legend

Resources

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

Elements and Controls

Implementation

  • No links.

Chart – Secondary Data

Legend

A legend explains the meaning of all visual elements (such as colors and shapes) contained in the data plot.

For more information, please see legend.

Legend
Legend

Reference Lines

A reference line can be added to highlight a particular value. Reference lines can be added only to continuous axes, not to categorical axes.

For more information, please see reference line.

Reference lines
Reference lines

Chart – Selection

The user can select one or more data points. They are generally selected to display related information about the respective points or to trigger actions that relate to them. There are several ways in which the user can select items.

Default Selection

The charts provide three types of selections:

No Selection

In this mode, data points cannot be selected individually and therefore no actions can be triggered from a data point.

  • When the user clicks or taps a data point, nothing happens.
  • When a user with a mouse device hovers the pointer over a data point, nothing happens.

Single Selection

In single-selection mode, the user clicks or taps a data point to select it. Clicking or tapping another data point selects this data point and deselects the previously selected one.

Clicking or tapping a blank area deselects a selected data point.

Example of single selection
Example of single selection

Multiselection

This is the default mode.

In multiselection mode, the user clicks or taps a data point to add it to the selection.

Clicking or tapping a blank area deselects all selected data points.

Example of multiselection (default mode)
Example of multiselection (default mode)

Shortcut for Multiselection

The following actions are shortcuts for selecting multiple data points:

  • Click or tap a category label: All associated data points are selected.
  • Click or tap a legend item: All associated data points are selected.
  • Rubber-band-like lasso selection: All data points within the lasso are selected.
Example of multiselection (shortcut)
Example of multiselection (shortcut)

Selection by API

The way in which data points are selected when they are clicked or tapped can also be changed through the vizSelection (aPoints, oAction) API.

Example: Category Selection

You can implement category selection by using the vizSelection (aPoints, oAction) API. When the user clicks or taps a data point, all data points in the same category are selected.

Example with stacked bars:

When the user clicks or taps a bar, all bars in the same stack are selected.

Example of category selection - First click
Example of category selection - First click

When the user clicks or taps another stack, this stack is added to the selection. The selection then contains all items of the two selected stacks.

Example of category selection - Second click
Example of category selection - Second click

Example: Series Selection

You can implement series selection by using the vizSelection (aPoints, oAction) API. When the user clicks or taps a data point, all data points in the same series are selected.

Example with Line Chart:

When the user clicks or taps a data point, all data points in the same line (series) are selected.

Example of series selection - First click
Example of series selection - First click

When the user clicks or taps another line, this line is added to the selection. The selection then contains all items of the two selected lines.

Example of series selection - Second click
Example of series selection - Second click

Deselection

Clicking or tapping a selected item deselects it again.

Clicking or tapping a blank area of the chart deselects all data points that are currently selected.

Appearance

Selected and non-selected items differ in terms of their appearance as follows:

  • Selected items are highlighted by using a darker color.
  • Non-selected items have a lighter color.

Resources

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

Elements and Controls

Implementation

No links.

Chart Popover

A popover is used to display information or an action related to the selected data points. By default, the chart component:

  • Displays dimension members and measure values fed into the chart that relate to the data point.
  • Displays the number of selected items when in multiselection mode.
  • Does not display related actions.

The entire content of the popover can be changed or a related action can be added at the end.

Selection and Popover

The content displayed in the popover depends on the selection mode; in other words, whether the chart is in single-selection or multiselection mode.

When the user clicks or taps an item that is not selected, the popover appears displaying information about this selected item only. The item that was previously selected becomes deselected.

In Single-Selection Mode

When the user clicks or taps an item that is not selected, the popover appears displaying information about this selected item only. The item that was previously selected becomes deselected.

Popover in single-selection mode
Popover in single-selection mode

In Multiselection Mode

When the user clicks or taps an item that is not selected, the item is added to the selection. The popover appears with information about this last selected item and any other selected items. When the user clicks or taps an item that is already selected, this item is removed from the selection. If there are no more selected items, the popover disappears.

Popover in multiselection mode
Popover in multiselection mode

Structure

The following figure provides an overview of the structure:
Popover structure
Popover structure
Popover structure
Popover structure
Section Explanation Provided by default Customizable
Related information about last selected item Contains all related information about the last selected item. In single-selection mode, this is the single selected item. In multiselection mode, this is the last item added to the selection. Yes Yes. If the app developer wants different information, this section should be replaced entirely. Text only cannot be changed and another value cannot be added.
Number of selected items Displays the number of items in the selection. Only used when multiple items are selected. Yes No
Related actions Displays actions that act on all selected items. No Yes. The app developer can add its own actions. See the section below about related actions.

Default Information

By default, the chart component displays all information related to the last selected item. The first row displays dimension members. A color marker is displayed and uses the same color as the selected item. Measures are displayed below with their associated values.
Default display
Default display

With multiple dimensions, the dimension members are concatenated and displayed in the following order:

  • Firstly, the dimensions displayed in the legend.
  • Secondly, the dimension displayed in the axis. If there is more than one dimension in the axis, the dimension closest to the axis is displayed first.

The first row is wrapped if necessary.

Multiple dimensions display
Multiple dimensions display
If the selected item contains multiple measures, all measures are displayed above the category.
Multiple measures display
Multiple measures display

Number of Selected Items

If multiselection is possible, the popover displays the number of items that have been selected. If multiple items have been selected, it is not possible to display the values of all selected items. If you need to display these values, you will have to develop your own solution. For example, you can add a Compare Values or Display Values button at the bottom of the popover. This button is only displayed when multiple items have been selected.

Related Actions

You can add related actions at the end of the popover. These related actions may vary depending on the current selection. Related actions can generally be used to do the following:

  • Display more information.
  • Display another type of visualization.
  • Display another data set.
  • Navigate to another page or app.

If an action is dedicated to showing more detailed information about the selection, use the View Details label. Actions that are specific to the entire chart or to the app should not be provided in the popover. In this case, it is better to provide them at app level, such as in the app toolbar.

Examples of popovers with one and three related actions
Examples of popovers with one and three related actions

Group of Actions

Do not display more than four actions in the popover. If more are needed, use in-place navigation.

Example of in-place navigation
Example of in-place navigation

Customization and UI Controls

The UI controls for customizing the popover are shown below:

UI controls for customization
UI controls for customization

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

Chart Popover

A popover is used to display information or an action related to the selected data points. By default, the chart component:

  • Displays dimension members and measure values fed into the chart that relate to the data point.
  • Displays the number of selected items when in multiselection mode.
  • Does not display related actions.

The entire content of the popover can be changed or a related action can be added at the end.

Selection and Popover

The content displayed in the popover depends on the selection mode; in other words, whether the chart is in single-selection or multiselection mode.

When the user clicks or taps an item that is not selected, the popover appears displaying information about this selected item only. The item that was previously selected becomes deselected.

In Single-Selection Mode

When the user clicks or taps an item that is not selected, the popover appears displaying information about this selected item only. The item that was previously selected becomes deselected.

Popover in single-selection mode
Popover in single-selection mode

In Multiselection Mode

When the user clicks or taps an item that is not selected, the item is added to the selection. The popover appears with information about this last selected item and any other selected items. When the user clicks or taps an item that is already selected, this item is removed from the selection. If there are no more selected items, the popover disappears.

Popover in multiselection mode
Popover in multiselection mode

Structure

The following figure provides an overview of the structure:
Popover structure
Popover structure
Popover structure
Popover structure
Section Explanation Provided by default Customizable
Related information about last selected item Contains all related information about the last selected item. In single-selection mode, this is the single selected item. In multiselection mode, this is the last item added to the selection. Yes Yes. If the app developer wants different information, this section should be replaced entirely. Text only cannot be changed and another value cannot be added.
Number of selected items Displays the number of items in the selection. Only used when multiple items are selected. Yes No
Related actions Displays actions that act on all selected items. No Yes. The app developer can add its own actions. See the section below about related actions.

Default Information

By default, the chart component displays all information related to the last selected item. The first row displays dimension members. A color marker is displayed and uses the same color as the selected item. Measures are displayed below with their associated values.
Default display
Default display

With multiple dimensions, the dimension members are concatenated and displayed in the following order:

  • Firstly, the dimensions displayed in the legend.
  • Secondly, the dimension displayed in the axis. If there is more than one dimension in the axis, the dimension closest to the axis is displayed first.

The first row is wrapped if necessary.

Multiple dimensions display
Multiple dimensions display
If the selected item contains multiple measures, all measures are displayed above the category.
Multiple measures display
Multiple measures display

Number of Selected Items

If multiselection is possible, the popover displays the number of items that have been selected. If multiple items have been selected, it is not possible to display the values of all selected items. If you need to display these values, you will have to develop your own solution. For example, you can add a Compare Values or Display Values button at the bottom of the popover. This button is only displayed when multiple items have been selected.

Related Actions

You can add related actions at the end of the popover. These related actions may vary depending on the current selection. Related actions can generally be used to do the following:

  • Display more information.
  • Display another type of visualization.
  • Display another data set.
  • Navigate to another page or app.

If an action is dedicated to showing more detailed information about the selection, use the View Details label. Actions that are specific to the entire chart or to the app should not be provided in the popover. In this case, it is better to provide them at app level, such as in the app toolbar.

Examples of popovers with one and three related actions
Examples of popovers with one and three related actions

Group of Actions

Do not display more than four actions in the popover. If more are needed, use in-place navigation.

Example of in-place navigation
Example of in-place navigation

Customization and UI Controls

The UI controls for customizing the popover are shown below:

UI controls for customization
UI controls for customization

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

Chart – Selection

The user can select one or more data points. They are generally selected to display related information about the respective points or to trigger actions that relate to them. There are several ways in which the user can select items.

Default Selection

The charts provide three types of selections:

No Selection

In this mode, data points cannot be selected individually and therefore no actions can be triggered from a data point.

  • When the user clicks or taps a data point, nothing happens.
  • When a user with a mouse device hovers the pointer over a data point, nothing happens.

Single Selection

In single-selection mode, the user clicks or taps a data point to select it. Clicking or tapping another data point selects this data point and deselects the previously selected one.

Clicking or tapping a blank area deselects a selected data point.

Example of single selection
Example of single selection

Multiselection

This is the default mode.

In multiselection mode, the user clicks or taps a data point to add it to the selection.

Clicking or tapping a blank area deselects all selected data points.

Example of multiselection (default mode)
Example of multiselection (default mode)

Shortcut for Multiselection

The following actions are shortcuts for selecting multiple data points:

  • Click or tap a category label: All associated data points are selected.
  • Click or tap a legend item: All associated data points are selected.
  • Rubber-band-like lasso selection: All data points within the lasso are selected.
Example of multiselection (shortcut)
Example of multiselection (shortcut)

Deselection

Clicking or tapping a selected item deselects it again.

Clicking or tapping a blank area of the chart deselects all data points that are currently selected.

Appearance

Selected and non-selected items differ in terms of their appearance as follows:

  • Selected items are highlighted by using a darker color.
  • Non-selected items have a lighter color.

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

Chart – Gestures

The following gestures are available in charts:

Gesture Associated action
Tap Select a data point and display related information and actions
Press and drag Lasso selection: When pressed outside a data point, select items by lassoing them
Drag or slide Scroll the chart horizontally or vertically
Flick Scroll quickly through the chart horizontally or vertically
Spread or pinch Used for zooming in and out

Resources

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

Elements and Controls

Implementation

No links.

Multi-Combo Box

The multi-combo box control is commonly used to enable users to select one or more options from a predefined list. The control 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 multiselection.

Usage

Use the multi-combo box if:

  • The user needs to select one or more options from a long list of options (maximum of approximately 200).
  • The values of the option list contain secondary information that does not need to be displayed right away.

Do not use the multi-combo box if:

  • The user needs to choose between two options, such as ON or OFF and YES or NO. In this case, consider using a switch control instead.
  • You need to display more than one attribute. In this case, consider using the select dialog or value help dialog instead.
  • The user needs to search on multiple attributes. In this case, consider using the select dialog or value help dialog instead.
  • Your use case requires all available options to be displayed right away, without any user interaction. In this case, consider using checkboxes instead.

Responsiveness

The multi-combo box is optimized for keyboard and mouse interaction. On touch devices, not all functions are available yet (for example, filtering the list with more than one character).

Size S

 Filter bar with multi-combo box - Size S
Filter bar with multi-combo box - Size S
Option list in full screen
Option list in full screen

Size M

Filter bar with multi-combo box
Filter bar with multi-combo box

Size L

Filter bar with multi-combo box
Filter bar with multi-combo box
Filter bar with multi-combo box
Filter bar with multi-combo box

Components

Input Field

The input field (2) can display a placeholder text (6) when it’s empty, or a token (1) if a value is selected.

Dropdown Trigger

The dropdown button (3) collapses and expands the dropdown list.

Option List

The option list (7) contains a list of selectable options (5). Clicking the label of an entry closes the option list and creates a token of the selected option. Every entry is accompanied by a checkbox (4) to allow multiselection. Clicking a checkbox creates a token. The option list remains open.

Components of the multi-combo box
Components of the multi-combo box

Behavior and Interaction

Select a Value

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

  • Tick the checkbox (option list remains open).
  • Click or tap the label of a select option (option list is closed).
  • Use the keyboard (spacebar or Enter).

The user clicks or taps the input field to place the cursor in the field (1). Clicking the arrow displays the list (2). As the user types into the input field, the list is filtered accordingly (3). The up and down arrows move the focus within the list (4). Selected options are automatically entered into the input field as tokens (5).

Input Field

Any character in the input field acts as a filter for the option list. The input field only allows users to type text that matches the items in the list. If a user tries to enter character combinations that are not in the option list, a visual feedback is provided to indicate that the combination of characters is invalid, while the input field suppresses the characters entered.

Behavior - Sizes M and L
Behavior - Sizes M and L

Choose from Option List

The option list displays all the available items that the user can choose from. Clicking the arrow opens the option list below the field. If there’s not enough space to display the dropdown list below the field, it’s displayed above the field instead.

Behavior for Mobile Devices

The control is still not optimized for use on mobile devices. The following sections describe how the multi-combo box interacts on mobile devices.

Tapping the arrow

Tapping the arrow opens the list on full screen (1). In this state, the input field is disabled (2), no tokens are available, and only direct selection is possible in the list (3).

Left: Form with multi-combo box. Right: Full-screen multi-combo box selection.
Left: Form with multi-combo box. Right: Full-screen multi-combo box selection.

Input field on collapsed list

If items have already been selected, the input field remains functional and the tokens remain visible (4). Tapping the Remove icon   in a token removes it (5). When the user taps the input field, the field becomes the focus and the mobile device’s keyboard opens(6). When the user types in the first character, the list opens to full screen (7). The list is filtered by this character (8), and at the same time, the input field is disabled. The input field only allows characters to be typed in that match the items in the list.

Left: Multi-combo box with token in the input field. Right: List for selection filtered by a character.
Left: Multi-combo box with token in the input field. Right: List for selection filtered by a character.

Multiple selected items

Not all the selected tokens can be displayed at the same time because the space is limited to the size of the input field (9). Swiping to the side scrolls horizontally to reveal a cropped token (10).

Swiping to display tokens
Swiping to display tokens

Copying and Pasting Data from a Spreadsheet or Text File

The control for the multi-combo box can handle paste actions containing, for example, multiple items that have been selected in a column of a spreadsheet or text file. The user simply selects an entire column in the spreadsheet and copies it. When items are entered into the multi-combo box, the user just pastes them from the clipboard and each item is then represented as a token. Only items that are part of the list are displayed as tokens.

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

Styles

These are the styles of the multi-combo box and their respective states:

Unselected
Unselected
Unselected predefined placeholder
Unselected predefined placeholder
Unselected on hover
Unselected on hover
In focus
In focus
Warning
Warning
Error
Error
Expanded
Expanded
Expanded selection
Expanded selection
Expanded multiselection
Expanded multiselection
Selected items shown as tokens
Selected items shown as tokens
Hover highlighting in list
Hover highlighting in list

Guidelines

Label

The multi-combo box control can be displayed with or without a label. If the field is attached to another field, you don’t need to define a second label. For more information about labels in SAP Fiori, see the label guidelines.

Placeholder

Don’t use the placeholder attribute as an alternative to a label. This is important because the placeholder text will be overwritten as soon as the form is filled out. Labels are necessary because they indicate the meaning of the form fields if the placeholders are no longer visible. Show a placeholder only if the user needs a hint about what data to enter. Don’t repeat the content of the label. A hint could be a sample value or a brief description of the expected format. For more information about how to use the placeholder, see input field.

Option List

Keep the label of an entry in the select option list as short as possible because the list uses single lines only. Values that are too long may be truncated. If you need to indicate that none of the selection options are selected, show a blank input field. Define a default selection whenever possible. The multi-combo box cannot display columns. If you want to show two values in the option list, show the leading information first, followed by the secondary information in parentheses, such as Walldorf (Germany). Typing into the input field shows all items that start with the search text.

Sorting

The option list contains all available items that the user can choose from. Choose one of the following styles depending on how you want the content to be arranged:

Logical: Sort items into a meaningful order. Group related options together and show the most common options first followed by less common options.

Logical multi-combo box
Logical multi-combo box

Alphabetical: Sort currencies, names, and so on into alphabetical order. We recommend this for lists with more than eight items.

Alphabetical multi-combo box
Alphabetical multi-combo box

Numeric: Sort numeric values into a sequential order with the lowest number first.

Numeric multi-combo box
Numeric multi-combo box

Chronological: Sort time-related information into chronological order with the most recent first (if applicable).

Chronological multi-combo box
Chronological multi-combo box

Width

You can adjust the width of the option list to some extent. The multi-combo box control is usually used in forms, where the width is determined by the form element or container in which it is embedded. Therefore, we don’t recommend defining a fixed width, but rather working with proper layout containers such as the form, simple form, or responsive grid layout, and with the layout data property, where the width is defined. If you need to restrict the width to a defined value, set the width accordingly. Keep in mind that there’s no horizontal scrolling in the option list. Entries that are too long are truncated and users won’t be able to read them.

Information
If localized text isn’t an issue, such as with currency codes, use a smaller width.

Resources

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

Elements and Controls

Implementation

  • No links

Multi-Combo Box

The multi-combo box control is commonly used to enable users to select one or more options from a predefined list. The control 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 multiselection.

Usage

Use the multi-combo box if:

  • The user needs to select one or more options from a long list of options (maximum of approximately 200).
  • The values of the option list contain secondary information that does not need to be displayed right away.

Do not use the multi-combo box if:

  • The user needs to choose between two options, such as ON or OFF and YES or NO. In this case, consider using a switch control instead.
  • You need to display more than one attribute. In this case, consider using the select dialog or value help dialog instead.
  • The user needs to search on multiple attributes. In this case, consider using the select dialog or value help dialog instead.
  • Your use case requires all available options to be displayed right away, without any user interaction. In this case, consider using checkboxes instead.

Responsiveness

The multi-combo box is optimized for keyboard and mouse interaction.

Size S

 Filter bar with multi-combo box - Size S
Filter bar with multi-combo box - Size S
Option list in full screen - Size S
Option list in full screen - Size S

Size M

Filter bar with multi-combo box - Size M
Filter bar with multi-combo box - Size M

Size L

Filter bar with multi-combo box - Size L
Filter bar with multi-combo box - Size L
Filter bar with multi-combo box - Size L
Filter bar with multi-combo box - Size L

Components

Input Field

The input field (2) can display a placeholder text (6) when it’s empty, or a token (1) if a value is selected.

Dropdown Trigger

The dropdown button (3) collapses and expands the dropdown list.

Option List

The option list (7) contains a list of selectable options (5). Clicking the label of an entry closes the option list and creates a token of the selected option. Every entry is accompanied by a checkbox (4) to allow multiselection. Clicking a checkbox creates a token. The option list remains open.

Components of the multi-combo box
Components of the multi-combo box

Behavior and Interaction

Select a Value

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

  • Tick the checkbox (option list remains open).
  • Click or tap the label of a select option (option list is closed).
  • Use the keyboard (spacebar or Enter).

The user clicks or taps the input field to place the cursor in the field (1). Clicking the arrow displays the list (2). As the user types into the input field, the list is filtered accordingly (3). The up and down arrows move the focus within the list (4). Selected options are automatically entered into the input field as tokens (5).

Input Field

Any character in the input field acts as a filter for the option list. The input field only allows users to type text that matches the items in the list. If a user tries to enter character combinations that are not in the option list, a visual feedback is provided to indicate that the combination of characters is invalid, while the input field suppresses the characters entered.

Behavior - Sizes M and L
Behavior - Sizes M and L

Choose from Option List

The option list displays all the available items that the user can choose from. Clicking the arrow opens the option list below the field. If there is not enough space to display the dropdown list below the field, it is displayed above the field instead.

Behavior for Mobile Devices

The following sections describe how the multi-combo box interacts on mobile devices.

Tapping the Arrow

Tapping the arrow opens the option list in a full screen dialog (1) with a title displayed in the header (2). The Close button (3) closes the dialog and cancels any selection changes in the option list. Clicking the label of an entry (4) closes the option list and creates a token of the selected option. By selecting a checkbox (5), the option list remains open and allows multi-selection. The OK button (6) takes over the selection and closes the dialog.

Left: Filter bar with multi-combo box. Right: Full-screen multi-combo box selection.
Left: Filter bar with multi-combo box. Right: Full-screen multi-combo box selection.
Developer Hint

The title of the full-screen dialog could be customized by adding a label as ariaLabelledBy to the multi-combo box. If no label is associated with the multi-combo box, the default title “Select” is set.

As the user types into the input field (7), the list is filtered accordingly using the “starts with” approach. Pressing the button next to the input field (8) toggles the view between all options and the selected one only.

Left: Option list, filtered by user input. Right: Selected options from the list.
Left: Option list, filtered by user input. Right: Selected options from the list.

Input Field on Collapsed List

If items have already been selected, the input field remains functional and the tokens remain visible (1). Tapping the Remove icon   in a token removes it (2). When the user taps on the input field, the list opens to full screen (3). Tapping on the input field sets the focus on it (4) and the mobile device’s keyboard opens (5). When the user types in the first character, the list is filtered by this character (6) using the “starts with” approach. The input field only allows characters to be typed in that match the items in the list.

Left: Multi-combo box with tokens in the input field. Right: List for selection filtered by a character.
Left: Multi-combo box with tokens in the input field. Right: List for selection filtered by a character.

Multiple Selected Items

Not all the selected tokens can be displayed at the same time because the space is limited to the size of the input field (6). Swiping to the side scrolls horizontally to reveal a cropped token (7).

Swiping to display tokens
Swiping to display tokens

Copying and Pasting Data from a Spreadsheet or Text File

The control for the multi-combo box can handle paste actions containing, for example, multiple items that have been selected in a column of a spreadsheet or text file. The user simply selects an entire column in the spreadsheet and copies it. When items are entered into the multi-combo box, the user just pastes them from the clipboard and each item is then represented as a token. Only items that are part of the list are displayed as tokens.

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

Styles

These are the styles of the multi-combo box and their respective states:

Unselected
Unselected
Unselected predefined placeholder
Unselected predefined placeholder
Unselected on hover
Unselected on hover
In focus
In focus
Warning
Warning
Error
Error
Expanded
Expanded
Expanded selection
Expanded selection
Expanded multiselection
Expanded multiselection
Selected items shown as tokens
Selected items shown as tokens
Hover highlighting in list
Hover highlighting in list

Guidelines

Label

The multi-combo box control can be displayed with or without a label. If the field is attached to another field, you don’t need to define a second label. For more information about labels in SAP Fiori, see the label guidelines.

Placeholder

Don’t use the placeholder attribute as an alternative to a label. This is important because the placeholder text will be overwritten as soon as the form is filled out. Labels are necessary because they indicate the meaning of the form fields if the placeholders are no longer visible. Show a placeholder only if the user needs a hint about what data to enter. Don’t repeat the content of the label. A hint could be a sample value or a brief description of the expected format. For more information about how to use the placeholder, see input field.

Option List

Keep the label of an entry in the select option list as short as possible because the list uses single lines only. Values that are too long may be truncated. If you need to indicate that none of the selection options are selected, show a blank input field. Define a default selection whenever possible. The multi-combo box cannot display columns. If you want to show two values in the option list, show the leading information first, followed by the secondary information in parentheses, such as Walldorf (Germany). Typing into the input field shows all items that start with the search text.

Sorting

The option list contains all available items that the user can choose from. Choose one of the following styles depending on how you want the content to be arranged:

Logical: Sort items into a meaningful order. Group related options together and show the most common options first followed by less common options.

Logical multi-combo box
Logical multi-combo box

Alphabetical: Sort currencies, names, and so on into alphabetical order. We recommend this for lists with more than eight items.

Alphabetical multi-combo box
Alphabetical multi-combo box

Numeric: Sort numeric values into a sequential order with the lowest number first.

Numeric multi-combo box
Numeric multi-combo box

Chronological: Sort time-related information into chronological order with the most recent first (if applicable).

Chronological multi-combo box
Chronological multi-combo box

Width

You can adjust the width of the option list to some extent. The multi-combo box control is usually used in forms, where the width is determined by the form element or container in which it is embedded. Therefore, we don’t recommend defining a fixed width, but rather working with proper layout containers such as the form, simple form, or responsive grid layout, and with the layout data property, where the width is defined. If you need to restrict the width to a defined value, set the width accordingly. Keep in mind that there’s no horizontal scrolling in the option list. Entries that are too long are truncated and users won’t be able to read them.

Information
If localized text isn’t an issue, such as with currency codes, use a smaller width.

Resources

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

Elements and Controls

Implementation

  • No links

Multi-Combo Box

The multi-combo box control is commonly used to enable users to select one or more options from a predefined list. The control 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 multiselection.

Usage

Use the multi-combo box if:

  • The user needs to select one or more options from a long list of options (maximum of approximately 200).
  • The values of the option list contain secondary information that does not need to be displayed right away.

Do not use the multi-combo box if:

  • The user needs to choose between two options, such as ON or OFF and YES or NO. In this case, consider using a switch control instead.
  • You need to display more than one attribute. In this case, consider using the select dialog or value help dialog instead.
  • The user needs to search on multiple attributes. In this case, consider using the select dialog or value help dialog instead.
  • Your use case requires all available options to be displayed right away, without any user interaction. In this case, consider using checkboxes instead.

Responsiveness

The multi-combo box is optimized for keyboard and mouse interaction. On touch devices, not all functions are available yet (for example, filtering the list with more than one character).

Size S

Form with multi-combo box - Size S
Form with multi-combo box - Size S
Option list in full screen
Option list in full screen

Size M

Form with multi-combo box
Form with multi-combo box

Size L

Filter bar with multi-combo box
Filter bar with multi-combo box
Filter bar with multi-combo box
Filter bar with multi-combo box

Components

Input Field

The input field (1) can display a placeholder text (7) when it is empty, or a token (6) if a value is selected.

Dropdown Trigger

The dropdown button (2) collapses and expands the dropdown list.

Option List

The option list (3) contains a list of selectable options (4). Clicking the label of an entry closes the option list and creates a token of the selected option. Every entry is accompanied by a checkbox (5) to allow multiselection. Clicking a checkbox creates a token. The option list remains open.

Components of the multi-combo box
Components of the multi-combo box

Behavior and Interaction

Selecting a Value

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

  • Tick the checkbox (option list remains open).
  • Click or tap the label of a select option (option list is closed).
  • Use the keyboard (spacebar or Enter).

The user clicks or taps the input field to place the cursor in the field (1). Clicking the arrow displays the list (2). As the user types into the input field, the list is filtered accordingly (3). The up and down arrows move the focus within the list (4). Selected options are automatically entered into the input field as tokens (5).

Input Field

Any character in the input field acts as a filter for the option list. The input field only allows users to type text that matches the items in the list. If a user tries to enter character combinations that are not in the option list, a visual feedback is provided to indicate that the combination of characters is invalid, while the input field suppresses the characters entered.

Behavior on sizes M and L
Behavior on sizes M and L

Choose from Option List

The option list displays all the available items that the user can choose from. Clicking the arrow opens the option list below the field. If there is not enough space to display the dropdown list below the field, it is displayed above the field instead.

Behavior for Mobile Devices

The control is still not optimized for use on mobile devices. The following sections describe how the multi-combo box interacts on mobile devices.

Tapping the arrow

Tapping the arrow opens the list on full screen (1). In this state, the input field is disabled (2), no tokens are available, and only direct selection is possible in the list (3).

Left: form with multi-combo box. Right: full-screen multi-combo box selection.
Left: form with multi-combo box. Right: full-screen multi-combo box selection.

Multiple selected items

Not all the selected tokens can be displayed at the same time because the space is limited to the size of the input field (9). Swiping to the side scrolls horizontally to reveal a cropped token (10).

Swiping to display tokens
Swiping to display tokens

Styles

These are the styles of the multi-combo box and their respective states:

Unselected
Unselected
Unselected predefined placeholder
Unselected predefined placeholder
Unselected on hover
Unselected on hover
In focus
In focus
Warning
Warning
Error
Error
Expanded
Expanded
Expanded selection
Expanded selection
Expanded multiselection
Expanded multiselection
Selected items shown as tokens
Selected items shown as tokens
Hover highlighting in list
Hover highlighting in list

Guidelines

Label

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

Placeholder

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

Option List

Keep the label of an entry in the select option list as short as possible because the list uses single lines only. Values that are too long may be truncated. If you need to indicate that none of the selection options are selected, show a blank input field. Define a default selection whenever possible. The multi-combo box cannot display columns. If you want to show two values in the option list, show the leading information first, followed by the secondary information in parentheses, such as Walldorf (Germany). Typing into the input field shows all items that start with the search text.

Sorting

The option list contains all available items that the user can choose from. Choose one of the following styles depending on how you want the content to be arranged:

Logical: Sort items into a meaningful order. Group related options together and show the most common options first, followed by less common options.

Logical multi-combo box
Logical multi-combo box

Alphabetical: Sort currencies, names, and so on into alphabetical order. We recommend this for lists with more than eight items.

Alphabetical multi-combo box
Alphabetical multi-combo box

Numeric: Sort numeric values into a sequential order, with the lowest number first.

Numeric multi-combo box
Numeric multi-combo box

Chronological: Sort time–related information into chronological order, with the most recent first (if applicable).

Chonological multi-combo box
Chonological multi-combo box

Width

You can adjust the width of the option list to some extent. The multi-combo box control is usually used in forms, where the width is determined by the form element or container in which it is embedded. Therefore, we do not recommend defining a fixed width, but rather working with proper layout containers such as the form, simple form, or responsive grid layout, and with the layout data property, where the width is defined. If you need to restrict the width to a defined value, set the width accordingly. Keep in mind that there is no horizontal scrolling in the option list. Entries that are too long are truncated and users will not be able to read them.

Information
If localized text is not an issue, such as with currency codes, use a smaller width.

Resources

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

Elements and Controls

Implementation

Multi-Combo Box

The multi-combo box control is commonly used to enable users to select one or more options from a predefined list. The control 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 multiselection.

Usage

Use the multi-combo box if:

  • The user needs to select one or more options from a long list of options (maximum of approximately 200).
  • The values of the option list contain secondary information that does not need to be displayed right away.

Do not use the multi-combo box if:

  • The user needs to choose between two options, such as ON or OFF and YES or NO. In this case, consider using a switch control instead.
  • You need to display more than one attribute. In this case, consider using the select dialog or value help dialog instead.
  • The user needs to search on multiple attributes. In this case, consider using the select dialog or value help dialog instead.
  • Your use case requires all available options to be displayed right away, without any user interaction. In this case, consider using checkboxes instead.

Responsiveness

The multi-combo box is optimized for keyboard and mouse interaction. On touch devices, not all functions are available yet (for example, filtering the list with more than one character).

Size S

Form with multi-combo box - Size S
Form with multi-combo box - Size S
Option list in full screen
Option list in full screen

Size M

Form with multi-combo box
Form with multi-combo box

Size L

Filter bar with multi-combo box
Filter bar with multi-combo box
Filter bar with multi-combo box
Filter bar with multi-combo box

Components

Input Field

The input field (1) can display a placeholder text (7) when it is empty, or a token (6) if a value is selected.

Dropdown Trigger

The dropdown button (2) collapses and expands the dropdown list.

Option List

The option list (3) contains a list of selectable options (4). Clicking the label of an entry closes the option list and creates a token of the selected option. Every entry is accompanied by a checkbox (5) to allow multiselection. Clicking a checkbox creates a token. The option list remains open.

Components of the multi-combo box
Components of the multi-combo box

Behavior and Interaction

Selecting a Value

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

  • Tick the checkbox (option list remains open).
  • Click or tap the label of a select option (option list is closed).
  • Use the keyboard (spacebar or Enter).

The user clicks or taps the input field to place the cursor in the field (1). Clicking the arrow displays the list (2). As the user types into the input field, the list is filtered accordingly (3). The up and down arrows move the focus within the list (4). Selected options are automatically entered into the input field as tokens (5).

Input Field

Any character in the input field acts as a filter for the option list. The input field only allows users to type text that matches the items in the list. If a user tries to enter character combinations that are not in the option list, a visual feedback is provided to indicate that the combination of characters is invalid, while the input field suppresses the characters entered.

Behavior on sizes M and L
Behavior on sizes M and L

Choose from Option List

The option list displays all the available items that the user can choose from. Clicking the arrow opens the option list below the field. If there is not enough space to display the dropdown list below the field, it is displayed above the field instead.

Behavior for Mobile Devices

The control is still not optimized for use on mobile devices. The following sections describe how the multi-combo box interacts on mobile devices.

Tapping the arrow

Tapping the arrow opens the list on full screen (1). In this state, the input field is disabled (2), no tokens are available, and only direct selection is possible in the list (3).

Left: form with multi-combo box. Right: full-screen multi-combo box selection.
Left: form with multi-combo box. Right: full-screen multi-combo box selection.

Input field on collapsed list

If items have already been selected, the input field remains functional and the tokens remain visible (4). Tapping the Remove icon   in a token removes it (5). When the user taps the input field, the field becomes the focus and the mobile device’s keyboard is shown (6). When the user types in the first character, the list opens on full screen (7). The list is filtered by this character (8), and at the same time, the input field is disabled. The input field only allows characters to be typed in that match the items in the list.

Multiple selected items

Not all the selected tokens can be displayed at the same time because the space is limited to the size of the input field (9). Swiping to the side scrolls horizontally to reveal a cropped token (10).

Swiping to display tokens
Swiping to display tokens

Copying and Pasting Data from a Spreadsheet or Text File

The control for the multi-combo box can handle paste actions containing, for example, multiple items that have been selected in a column of a spreadsheet or text file. The user simply selects an entire column in the spreadsheet and copies it. When items are entered into the multi-combo box, the user just pastes them from the clipboard and each item is then represented as a token. Only items that are part of the list are displayed as tokens.

Styles

These are the styles of the multi-combo box and their respective states:

Unselected
Unselected
Unselected predefined placeholder
Unselected predefined placeholder
Unselected on hover
Unselected on hover
In focus
In focus
Warning
Warning
Error
Error
Expanded
Expanded
Expanded selection
Expanded selection
Expanded multiselection
Expanded multiselection
Selected items shown as tokens
Selected items shown as tokens
Hover highlighting in list
Hover highlighting in list

Guidelines

Label

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

Placeholder

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

Option List

Keep the label of an entry in the select option list as short as possible because the list uses single lines only. Values that are too long may be truncated. If you need to indicate that none of the selection options are selected, show a blank input field. Define a default selection whenever possible. The multi-combo box cannot display columns. If you want to show two values in the option list, show the leading information first, followed by the secondary information in parentheses, such as Walldorf (Germany). Typing into the input field shows all items that start with the search text.

Sorting

The option list contains all available items that the user can choose from. Choose one of the following styles depending on how you want the content to be arranged:

Logical: Sort items into a meaningful order. Group related options together and show the most common options first, followed by less common options.

Logical multi-combo box
Logical multi-combo box

Alphabetical: Sort currencies, names, and so on into alphabetical order. We recommend this for lists with more than eight items.

Alphabetical multi-combo box
Alphabetical multi-combo box

Numeric: Sort numeric values into a sequential order, with the lowest number first.

Numeric multi-combo box
Numeric multi-combo box

Chronological: Sort time–related information into chronological order, with the most recent first (if applicable).

Chonological multi-combo box
Chonological multi-combo box

Width

You can adjust the width of the option list to some extent. The multi-combo box control is usually used in forms, where the width is determined by the form element or container in which it is embedded. Therefore, we do not recommend defining a fixed width, but rather working with proper layout containers such as the form, simple form, or responsive grid layout, and with the layout data property, where the width is defined. If you need to restrict the width to a defined value, set the width accordingly. Keep in mind that there is no horizontal scrolling in the option list. Entries that are too long are truncated and users will not be able to read them.

Information
If localized text is not an issue, such as with currency codes, use a smaller width.

Resources

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

Elements and Controls

Implementation

Multi-Combo Box

The multi-combo box control is commonly used to enable users to select one or more options from a predefined list. The control 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 multiselection.

Usage

Use the multi-combo box if:

  • The user needs to select one or more options from a long list of options (maximum of approximately 200).
  • The values of the option list contain secondary information that does not need to be displayed right away.

Do not use the multi-combo box if:

  • The user needs to choose between two options, such as ON or OFF and YES or NO. In this case, consider using a switch control instead.
  • You need to display more than one attribute. In this case, consider using the select dialog or value help dialog instead.
  • The user needs to search on multiple attributes. In this case, consider using the select dialog or value help dialog instead.
  • Your use case requires all available options to be displayed right away, without any user interaction. In this case, consider using checkboxes instead.

Responsiveness

The multi-combo box is optimized for keyboard and mouse interaction. On touch devices, not all functions are available yet (for example, filtering the list with more than one character).

Size S

Form with multi-combo box - Size S
Form with multi-combo box - Size S
Option list in full screen
Option list in full screen

Size M

Form with multi-combo box
Form with multi-combo box

Size L

Filter bar with multi-combo box
Filter bar with multi-combo box
Filter bar with multi-combo box
Filter bar with multi-combo box

Components

Input Field

The input field (1) can display a placeholder text (7) when it is empty, or a token (6) if a value is selected.

Dropdown Trigger

The dropdown button (2) collapses and expands the dropdown list.

Option List

The option list (3) contains a list of selectable options (4). Clicking the label of an entry closes the option list and creates a token of the selected option. Every entry is accompanied by a checkbox (5) to allow multiselection. Clicking a checkbox creates a token. The option list remains open.

Components of the multi-combo box
Components of the multi-combo box

Behavior and Interaction

Selecting a Value

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

  • Tick the checkbox (option list remains open).
  • Click or tap the label of a select option (option list is closed).
  • Use the keyboard (spacebar or Enter).

The user clicks or taps the input field to place the cursor in the field (1). Clicking the arrow displays the list (2). As the user types into the input field, the list is filtered accordingly (3). The up and down arrows move the focus within the list (4). Selected options are automatically entered into the input field as tokens (5).

Input Field

Any character in the input field acts as a filter for the option list. The input field only allows users to type text that matches the items in the list. If a user tries to enter character combinations that are not in the option list, a visual feedback is provided to indicate that the combination of characters is invalid, while the input field suppresses the characters entered.

Behavior on sizes M and L
Behavior on sizes M and L

Choose from Option List

The option list displays all the available items that the user can choose from. Clicking the arrow opens the option list below the field. If there is not enough space to display the dropdown list below the field, it is displayed above the field instead.

Behavior for Mobile Devices

The control is still not optimized for use on mobile devices. The following sections describe how the multi-combo box interacts on mobile devices.

Tapping the arrow

Tapping the arrow opens the list on full screen (1). In this state, the input field is disabled (2), no tokens are available, and only direct selection is possible in the list (3).

Left: form with multi-combo box. Right: full-screen multi-combo box selection.
Left: form with multi-combo box. Right: full-screen multi-combo box selection.

Input field on collapsed list

If items have already been selected, the input field remains functional and the tokens remain visible (4). Tapping the Remove icon   in a token removes it (5). When the user taps the input field, the field becomes the focus and the mobile device’s keyboard is shown (6). When the user types in the first character, the list opens on full screen (7). The list is filtered by this character (8), and at the same time, the input field is disabled. The input field only allows characters to be typed in that match the items in the list.

Multiple selected items

Not all the selected tokens can be displayed at the same time because the space is limited to the size of the input field (9). Swiping to the side scrolls horizontally to reveal a cropped token (10).

Swiping to display tokens
Swiping to display tokens

Copying and Pasting Data from a Spreadsheet or Text File

The control for the multi-combo box can handle paste actions containing, for example, multiple items that have been selected in a column of a spreadsheet or text file. The user simply selects an entire column in the spreadsheet and copies it. When items are entered into the multi-combo box, the user just pastes them from the clipboard and each item is then represented as a token. Only items that are part of the list are displayed as tokens.

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

Styles

These are the styles of the multi-combo box and their respective states:

Unselected
Unselected
Unselected predefined placeholder
Unselected predefined placeholder
Unselected on hover
Unselected on hover
In focus
In focus
Warning
Warning
Error
Error
Expanded
Expanded
Expanded selection
Expanded selection
Expanded multiselection
Expanded multiselection
Selected items shown as tokens
Selected items shown as tokens
Hover highlighting in list
Hover highlighting in list

Guidelines

Label

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

Placeholder

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

Option List

Keep the label of an entry in the select option list as short as possible because the list uses single lines only. Values that are too long may be truncated. If you need to indicate that none of the selection options are selected, show a blank input field. Define a default selection whenever possible. The multi-combo box cannot display columns. If you want to show two values in the option list, show the leading information first, followed by the secondary information in parentheses, such as Walldorf (Germany). Typing into the input field shows all items that start with the search text.

Sorting

The option list contains all available items that the user can choose from. Choose one of the following styles depending on how you want the content to be arranged:

Logical: Sort items into a meaningful order. Group related options together and show the most common options first, followed by less common options.

Logical multi-combo box
Logical multi-combo box

Alphabetical: Sort currencies, names, and so on into alphabetical order. We recommend this for lists with more than eight items.

Alphabetical multi-combo box
Alphabetical multi-combo box

Numeric: Sort numeric values into a sequential order, with the lowest number first.

Numeric multi-combo box
Numeric multi-combo box

Chronological: Sort time–related information into chronological order, with the most recent first (if applicable).

Chonological multi-combo box
Chonological multi-combo box

Width

You can adjust the width of the option list to some extent. The multi-combo box control is usually used in forms, where the width is determined by the form element or container in which it is embedded. Therefore, we do not recommend defining a fixed width, but rather working with proper layout containers such as the form, simple form, or responsive grid layout, and with the layout data property, where the width is defined. If you need to restrict the width to a defined value, set the width accordingly. Keep in mind that there is no horizontal scrolling in the option list. Entries that are too long are truncated and users will not be able to read them.

Information
If localized text is not an issue, such as with currency codes, use a smaller width.

Resources

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

Elements and Controls

Implementation

Chart – Primary Data

This topic covers the size of data points and value display.

Size of Data Points

Width of Bars

The following applies to all charts that contain bars: horizontal bar charts, vertical bar charts, stacked bar charts, bullet charts, combined charts, and so on:

  • The chart component tries to resize all bars so that all data points are visible, but a minimum width is applied. The minimum width allows for easy selection on all devices.
  • The minimum width of the bars is 48 px on touch screens and 24 px on mouse devices.

Note: When zoom is provided in later releases, this minimum width will no longer be enforced.

When the minimum width is reached, a scrollbar allows you to scroll and see all data points.

Minimum width displayed
Minimum width displayed

When there is enough space to show all data points, the width of the data point adapts proportionally to the width of the chart container.

Width adapted proportionaly
Width adapted proportionaly

Value Display

For more information, please see the article on value display.

Chart – Primary Data

This article explains how the values of primary data are displayed and how they can be customized.

Value Display

For more information, please see the article on value display.

Chart – Value Display

This article describes how value labels are displayed and how to customize them.

Default Value Display

By default, values of the data points are automatically displayed close to the data point, so that the user does not have to select each point to check its value.

As a general rule:

  • Values never overlap.
  • Text can be truncated.
  • Numeric values are never truncated.

Columns

Values are displayed above the bar.

Value display in column chart
Value display in column chart

Stacked Columns

Values are displayed within each bar.

If the height of the bar is too small so that the bar cannot hold the value itself (bar height < text height), the text is hidden.

Value display in stacked columns
Value display in stacked columns

Bars

Values are displayed on the right side of the bars.

Value display in bar chart
Value display in bar chart

Stacked Bars

Values are displayed within each bar.

If the width of the bar is too small so that the bar cannot hold the value itself (bar width < text width), the value is hidden.

Value display in stacked bars
Value display in stacked bars

Bubbles with Numeric Values

Values are displayed within the bubbles. If the numeric value does not fit in the bubble, it is hidden.

Value display in bubble charts
Value display in bubble charts

Bubbles with Text

Text are displayed within the bubbles. If the text does not fit in the bubble, it is truncated until a minimum of 3 characters. Below 3 characters, the text is hidden.

Value display in bubble charts
Value display in bubble charts

Line Chart

Values are displayed to avoid overlapping with the line and with the data point. In general, values are displayed above the data point, except when the line has a “V” shape (for example, when the values just before and after are larger than the current value). When the value is displayed above the data point, it can be slightly moved to the left or to the right to avoid overlapping.

Value display in line charts
Value display in line charts

Custom Value Display

If there are too many data points, it is possible to hide all values or to hide some values.

Hide Values for a Series (Combined Chart)

When combining a line with bars, avoid displaying values for both series unless you are sure that both series will not overlap. Instead, please only show values for the most important series.

Combined chart
Combined chart

Hide Values of a Series (Clustered Bars)

In clustered bars, when a series is not the key focus of the chart, it may be better to hide its values.

Clustered column chart
Clustered column chart

Hide Values for a Series (Multiple Lines)

When multiple lines are displayed in a chart, avoid displaying values for all the lines. This leads to cluttered information. Instead, please show only values for the most important line.

Line chart with multiple lines
Line chart with multiple lines

Hide Values for Categories

If the focus of the chart is on one specific category and its comparison with other categories, it may be better to hide all the values except the key category.

Column chart
Column chart

Hide Values Based on Condition (Min, Max)

It is also possible to highlight the first and last values of a series, or the minimum and maximum value of a series.

Maximum and minimum values are highlighted
Maximum and minimum values are highlighted

Formatting Values

Quantity Formatters

When values use quantity formatters such as short format or percentage, always display the formatters in the data point. For example, display 30M or 12% in the data point.

When appropriate, also show the formatters in the vertical or horizontal axis. For example, the vertical axis will display 10%, 20%, 30%…10%.

Quantity formatters
Quantity formatters

Locale

Be locale aware: Display numbers in the format corresponding to the user’s locale settings. For that purpose, use SAPUI5 number formatters.

Resources

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

Elements and Controls

Implementation

No links.

Search

A search is a means of accessing information quickly. If an amount of data is too large for users to find something just by scanning through it, you should consider providing a search function.

Search field
Search field

Usage

Use a search field (sap.m.SearchField) if you want to enable users to enter text to search for information. The search field is also the control of choice for filtering down a given amount of information.

Responsiveness

On tablets (size M) and smartphones (size S), the master list’s search field is not initially visible. It only appears when the user pulls down the list. Its position is not fixed, so it scrolls away. On desktops (size L), the master list’s search field is visible from the start. Its position is fixed and it does not scroll away.

Master list with search field
Master list with search field
Searching in the master list
Searching in the master list

Types

SAP Fiori comes with two different search types.

  1. The manual searchis triggered explicitly after the user enters text in the search field and clicks or taps the Search button or presses the Enter key.
  2. The live search(also known as “incremental search” or “search-as-you-type”) is triggered by each character that the user enters or deletes.

Queries that are entered are used to search the backend data for term matches (not case-sensitive). While a live search uses a “contains” approach, a manual search uses a “starts with” approach. “Contains” means that the result needs to match the query only partly to be a valid result. “Starts with” means that full terms of the result need to start with the entered query to be visualized.

Layout

The search input field (or search box) consists of two parts:

  1. The text input, which is left-aligned. Initially, the field shows a placeholder (Search). As soon as the user enters a character, this prompt text disappears. It appears again if the user deletes the entry.
  2. If a manual search is to be implemented, a search button with a magnifier icon is placed on the right side of this input control. The user clicks or taps this button to trigger the search. In live searches, the magnifier icon is also placed here, but it functions more like an additional indicator to signify that this is a search input field. It also functions as an explicit search button if the user wants to search again for a query that has already been entered.

All item attributes defined by the app development team are searched. When the results are displayed, the items found do not necessarily have to show the attribute through which the item was found. The results are displayed in the same list that contained the original item set. Initial grouping and the order of the list are not affected by the search.

When the split screen is used, the search field appears at the top of the master list. In full screen mode, the search field is placed at the top of the page.

Behavior and Interaction

Entering a Search Term

Search terms can be entered easily into the input field. The search box then displays all full-text search terms. There is no line break and no truncation if the query is longer than the input field. Results might also be displayed that do not match the query in their title or subtitle. This might be because details can also be searched for. The user can see the matching terms in the specific details section.

Deleting a Search Term

The user can click or tap the ex ( ) button to remove the text from the field. In the case of the live search, this also resets the search. In a manual search, deleting the search term and then triggering the search resets the search results.

Refreshing

If the Refresh button is available, the user can update the list without triggering a new search. This is usually needed when backend data changes quickly and often. If the currently selected item is no longer available after the list has been refreshed, the next item in the line is selected. If no next item is available, the first item in the line should be selected next.

Desktop – Search and Refresh combination
Desktop – Search and Refresh combination

On touch devices, the Refresh icon is not visible in the search field. In this case, Pull Down to Refresh is used instead. The Pull Down to Refresh arrow icon is animated and spins to signal that the user should release it.

Properties

The following methods are important.

For the live search:

  • attachLiveChange(oData?fnFunctionoListener?) Attach event handler fnFunction to the ‘liveChange’ event of this sap.m.SearchField.
  • detachLiveChange(fnFunctionoListener) Detach event handler fnFunction from the ‘liveChange’ event of this sap.m.SearchField.
  • fireLiveChange(mArguments?) Fire event liveChange to attached listeners.

For the manual search:

  • attachSearch(oData?fnFunctionoListener?) Attach event handler fnFunction to the ‘search’ event of this sap.m.SearchField.
  • detachSearch(fnFunctionoListener) Detach event handler fnFunction from the ‘search’ event of this sap.m.SearchField.
  • fireSearch(mArguments?) Fire event search to attached listeners.

If a Refresh button is needed:

To show the Search button:

To ensure the focus is set to input:

Guidelines

  • Implement the live search whenever possible.
  • Use a manual search only if the amount of data is too large and if your app would otherwise run into performance issues.
  • Show an appropriate prompt text:Search if queries are sent to all connected services, or Search In: if the search is limited to a certain source or providing service.

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

Search

A search is a means of accessing information quickly. If an amount of data is too large for users to find something just by scanning through it, you should consider providing a search function.

Search field
Search field

Usage

Use a search field (sap.m.SearchField) if you want to enable users to enter text to search for information. The search field is also the control of choice for filtering down a given amount of information.

Responsiveness

On tablets (size M) and smartphones (size S), the master list’s search field is not initially visible. It only appears when the user pulls down the list. Its position is not fixed, so it scrolls away. On desktops (size L), the master list’s search field is visible from the start. Its position is fixed and it does not scroll away.

Master list with search field
Master list with search field
Searching in the master list
Searching in the master list

Types

SAP Fiori comes with two different search types.

  1. The manual searchis triggered explicitly after the user enters text in the search field and clicks or taps the Search button or presses the Enter key.
  2. The live search(also known as “incremental search” or “search-as-you-type”) is triggered by each character that the user enters or deletes.

Queries that are entered are used to search the backend data for term matches (not case-sensitive). While a live search uses a “contains” approach, a manual search uses a “starts with” approach. “Contains” means that the result needs to match the query only partly to be a valid result. “Starts with” means that full terms of the result need to start with the entered query to be visualized.

Layout

The search input field (or search box) consists of two parts:

  1. The text input, which is left-aligned. Initially, the field shows a placeholder (Search). As soon as the user enters a character, this prompt text disappears. It appears again if the user deletes the entry.
  2. If a manual search is to be implemented, a search button with a magnifier icon is placed on the right side of this input control. The user clicks or taps this button to trigger the search. In live searches, the magnifier icon is also placed here, but it functions more like an additional indicator to signify that this is a search input field. It also functions as an explicit search button if the user wants to search again for a query that has already been entered.

All item attributes defined by the app development team are searched. When the results are displayed, the items found do not necessarily have to show the attribute through which the item was found. The results are displayed in the same list that contained the original item set. Initial grouping and the order of the list are not affected by the search.

When the split screen is used, the search field appears at the top of the master list. In full screen mode, the search field is placed at the top of the page.

Behavior and Interaction

Entering a Search Term

Search terms can be entered easily into the input field. The search box then displays all full-text search terms. There is no line break and no truncation if the query is longer than the input field. Results might also be displayed that do not match the query in their title or subtitle. This might be because details can also be searched for. The user can see the matching terms in the specific details section.

Deleting a Search Term

The user can click or tap the ex ( ) button to remove the text from the field. In the case of the live search, this also resets the search. In a manual search, deleting the search term and then triggering the search resets the search results.

Refreshing

If the Refresh button is available, the user can update the list without triggering a new search. This is usually needed when backend data changes quickly and often. If the currently selected item is no longer available after the list has been refreshed, the next item in the line is selected. If no next item is available, the first item in the line should be selected next.

Desktop – Search and Refresh combination
Desktop – Search and Refresh combination

On touch devices, the Refresh icon is not visible in the search field. In this case, Pull Down to Refresh is used instead. The Pull Down to Refresh arrow icon is animated and spins to signal that the user should release it.

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

Properties

The following methods are important.

For the live search:

  • attachLiveChange(oData?fnFunctionoListener?) Attach event handler fnFunction to the ‘liveChange’ event of this sap.m.SearchField.
  • detachLiveChange(fnFunctionoListener) Detach event handler fnFunction from the ‘liveChange’ event of this sap.m.SearchField.
  • fireLiveChange(mArguments?) Fire event liveChange to attached listeners.

For the manual search:

  • attachSearch(oData?fnFunctionoListener?) Attach event handler fnFunction to the ‘search’ event of this sap.m.SearchField.
  • detachSearch(fnFunctionoListener) Detach event handler fnFunction from the ‘search’ event of this sap.m.SearchField.
  • fireSearch(mArguments?) Fire event search to attached listeners.

If a Refresh button is needed:

To show the Search button:

To ensure the focus is set to input:

Guidelines

  • Implement the live search whenever possible.
  • Use a manual search only if the amount of data is too large and if your app would otherwise run into performance issues.
  • Show an appropriate prompt text:Search if queries are sent to all connected services, or Search In: if the search is limited to a certain source or providing service.

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

Search

A search is a means of accessing information quickly. If an amount of data is too large for users to find something just by scanning through it, you should consider providing a search function.

Search field
Search field

Usage

Use a search field (sap.m.SearchField) if you want to enable users to enter text to search for information. The search field is also the control of choice for filtering down a given amount of information.

Responsiveness

On tablets (size M) and smartphones (size S), the master list’s search field is not initially visible. It only appears when the user pulls down the list. Its position is not fixed, so it scrolls away. On desktops (size L), the master list’s search field is visible from the start. Its position is fixed and it does not scroll away.

Master list with search field
Master list with search field
Searching in the master list - Search field on focus
Searching in the master list - Search field on focus
Searching in the master list
Searching in the master list

Types

SAP Fiori comes with two different search types.

  1. The manual searchis triggered explicitly after the user enters text in the search field and clicks or taps the Search button or presses the Enter key.
  2. The live search(also known as “incremental search” or “search-as-you-type”) is triggered by each character that the user enters or deletes.

Queries that are entered are used to search the backend data for term matches (not case-sensitive). While a live search uses a “contains” approach, a manual search uses a “starts with” approach. “Contains” means that the result needs to match the query only partly to be a valid result. “Starts with” means that full terms of the result need to start with the entered query to be visualized.

Layout

The search input field (or search box) consists of two parts:

  1. The text input, which is left-aligned. Initially, the field shows a placeholder (Search). As soon as the user enters a character, this prompt text disappears. It appears again if the user deletes the entry.
  2. If a manual search is to be implemented, a search button with a magnifier icon is placed on the right side of this input control. The user clicks or taps this button to trigger the search. In live searches, the magnifier icon is also placed here, but it functions more like an additional indicator to signify that this is a search input field. It also functions as an explicit search button if the user wants to search again for a query that has already been entered.

All item attributes defined by the app development team are searched. When the results are displayed, the items found do not necessarily have to show the attribute through which the item was found. The results are displayed in the same list that contained the original item set. Initial grouping and the order of the list are not affected by the search.

When the split screen is used, the search field appears at the top of the master list. In full screen mode, the search field is placed at the top of the page.

Behavior and Interaction

Entering a Search Term

Search terms can be entered easily into the input field. The search box then displays all full-text search terms. There is no line break and no truncation if the query is longer than the input field. Results might also be displayed that do not match the query in their title or subtitle. This might be because details can also be searched for. The user can see the matching terms in the specific details section.

Deleting a Search Term

The user can click or tap the ex ( ) button to remove the text from the field. In the case of the live search, this also resets the search. In a manual search, deleting the search term and then triggering the search resets the search results.

Refreshing

If the Refresh button is available, the user can update the list without triggering a new search. This is usually needed when backend data changes quickly and often. If the currently selected item is no longer available after the list has been refreshed, the next item in the line is selected. If no next item is available, the first item in the line should be selected next.

Desktop – Search and Refresh combination
Desktop – Search and Refresh combination

On touch devices, the Refresh icon is not visible in the search field. In this case, Pull Down to Refresh is used instead. The Pull Down to Refresh arrow icon is animated and spins to signal that the user should release it.

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

Properties

The following methods are important.

For the live search:

  • attachLiveChange(oData?fnFunctionoListener?) Attach event handler fnFunction to the ‘liveChange’ event of this sap.m.SearchField.
  • detachLiveChange(fnFunctionoListener) Detach event handler fnFunction from the ‘liveChange’ event of this sap.m.SearchField.
  • fireLiveChange(mArguments?) Fire event liveChange to attached listeners.

For the manual search:

  • attachSearch(oData?fnFunctionoListener?) Attach event handler fnFunction to the ‘search’ event of this sap.m.SearchField.
  • detachSearch(fnFunctionoListener) Detach event handler fnFunction from the ‘search’ event of this sap.m.SearchField.
  • fireSearch(mArguments?) Fire event search to attached listeners.

If a Refresh button is needed:

To show the Search button:

To ensure the focus is set to input:

Guidelines

  • Implement the live search whenever possible.
  • Use a manual search only if the amount of data is too large and if your app would otherwise run into performance issues.
  • Show an appropriate prompt text:Search if queries are sent to all connected services, or Search In: if the search is limited to a certain source or providing service.

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

Dialog

The dialog control (sap.m.dialog) interrupts the current app process to prompt the user for information or a response. It is a forced decision or a confirmation that needs to be signed off by the user.

Usage

Use the dialog if:

  • You want to display a system message.
  • You want to interrupt the user’s action.
  • You want to show a message with a short and a long description.

Do not use the dialog if:

  • You just want to confirm a successful action.
  • You do not want to interrupt the user’s action.

Responsiveness

The dialog provides different behavior on a smartphone than on a tablet or desktop. You can distinguish between a cozy dialog and a compact dialog. For more information, see content density.

The buttons in the toolbar are aligned differently on the various devices. On a smartphone, they cover the entire footer, but on a tablet or desktop, they are right-aligned.

Size S (Smartphone)

Full Screen Dialog

We recommend displaying dialogs in S size in full screen mode. Most of the content of a dialog is worth opening in full screen so the user is able to focus on the content of the dialog. The stretch property can be easily set by the application to true. The toolbar on which the actions are placed within a dialog is positioned at the bottom of the dialog.

Full screen dialog (size S)
Full screen dialog (size S)

Position of the Action Buttons

By default, the dialog can have one or two actions, which cover the entire footer on smartphones.

Footer actions alignment (size S)
Footer actions alignment (size S)

When to Open Full Screen or Modal

Message dialogs should always be displayed as modals. There is no need to display a simple message in a full screen dialog. If you want to display a simple message, use the message box (sap.m.Messagebox) instead.

If you use standard dialogs such as value help, you should open them in full screen mode. The device’s entire screen is used to display the dialog, and the user can focus on the content of the message. The dialogs offer a stretch property for full screen behavior.

Size M (Tablet)

By default, the dialog can have up to two action buttons in the footer. The action buttons in the toolbar are right-aligned. Use cozy mode on tablet devices.

If the content height increases or is set to more than the screen height, the dialog height stops at 4 rem from the top and bottom. The user can then scroll through the content area.

Size L (Desktop)

By default, the dialog can have one or two actions. The action buttons on a desktop device are right-aligned. Use compact mode to ensure that the padding and margins are optimized for desktop devices.

If the content height increases or is set to more than the screen height, the dialog height stops at 4 rem from the top and bottom. The user can then scroll through the content area.

Dialog in compact mode (size L)
Dialog in compact mode (size L)

Layout

Position on the Screen

The dialog is positioned in the center of the screen. It opens in a modal window to ensure that it attracts the user’s attention when it displays emergency states.

On a smartphone, the stretch property allows you to achieve full screen behavior.

Centered position of a dialog
Centered position of a dialog

Position on the Screen

The dialog is positioned in the center of the screen. It opens in a modal window to ensure that it attracts the user’s attention when it displays emergency states.

On a smartphone, the stretch property allows you to achieve full screen behavior.

Centered position of a dialog
Centered position of a dialog

Behavior and Interaction

Messaging in Dialog

Message popovers do not need to be displayed in the dialogs. Keep it simple and just highlight each field that has a problem. For more information, see form field validation.

Highlighted form fields in dialog
Highlighted form fields in dialog

Types

Standard Dialog

Use the standard dialog if you want to display a common dialog. The main visual differences are that the header is displayed with a grey background, and that no icon is shown.

The content can be filled with your application-specific data.

Message Box

The message box is a special type of dialog that is used to display messages quickly. For each type of message, the app team can decide when to use a dialog. Use the message toast (sap.m.MessageToast) for success messages. For more information, see message box.

Components

The dialog contains the following sections and options:

Title: Title text appears in the dialog header.

Subheader: When a subheader is assigned to a dialog (optionally), it appears below the main header. As the subheader is not part of the content area, it is not scrollable.

Content: This area contains the actual content of the dialog.

Footer with actions: The footer can contain up to two buttons (optionally).

Example of a dialog structure
Example of a dialog structure

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

Dialog

The dialog control (sap.m.dialog) interrupts the current app process to prompt the user for information or a response. It is a forced decision or a confirmation that needs to be signed off by the user.

Usage

Use the dialog if:

  • You want to display a system message.
  • You want to interrupt the user’s action.
  • You want to show a message with a short and a long description.

Do not use the dialog if:

  • You just want to confirm a successful action.
  • You do not want to interrupt the user’s action.

Responsiveness

The dialog provides different behavior on a smartphone than on a tablet or desktop. You can distinguish between a cozy dialog and a compact dialog. For more information, see content density.

The buttons in the toolbar are aligned differently on the various devices. On a smartphone, they cover the entire footer, but on a tablet or desktop, they are right-aligned.

Size S (Smartphone)

Full Screen Dialog

We recommend displaying dialogs in S size in full screen mode. Most of the content of a dialog is worth opening in full screen so the user is able to focus on the content of the dialog. The stretch property can be easily set by the application to true. The toolbar on which the actions are placed within a dialog is positioned at the bottom of the dialog.

Full screen dialog (size S)
Full screen dialog (size S)

Position of the Action Buttons

By default, the dialog can have one or two actions, which cover the entire footer on smartphones.

Footer actions alignment (size S)
Footer actions alignment (size S)

When to Open Full Screen or Modal

Message dialogs should always be displayed as modals. There is no need to display a simple message in a full screen dialog. If you want to display a simple message, use the message box (sap.m.Messagebox) instead.

If you use standard dialogs such as value help, you should open them in full screen mode. The device’s entire screen is used to display the dialog, and the user can focus on the content of the message. The dialogs offer a stretch property for full screen behavior.

Size M (Tablet)

By default, the dialog can have up to two action buttons in the footer. The action buttons in the toolbar are right-aligned. Use cozy mode on tablet devices.

If the content height increases or is set to more than the screen height, the dialog height stops at 4 rem from the top and bottom. The user can then scroll through the content area.

Size L (Desktop)

By default, the dialog can have one or two actions. The action buttons on a desktop device are right-aligned. Use compact mode to ensure that the padding and margins are optimized for desktop devices.

If the content height increases or is set to more than the screen height, the dialog height stops at 4 rem from the top and bottom. The user can then scroll through the content area.

Dialog in compact mode (size L)
Dialog in compact mode (size L)

Layout

Position on the Screen

The dialog is positioned in the center of the screen. It opens in a modal window to ensure that it attracts the user’s attention when it displays emergency states.

On a smartphone, the stretch property allows you to achieve full screen behavior.

Centered position of a dialog
Centered position of a dialog

Position on the Screen

The dialog is positioned in the center of the screen. It opens in a modal window to ensure that it attracts the user’s attention when it displays emergency states.

On a smartphone, the stretch property allows you to achieve full screen behavior.

Centered position of a dialog
Centered position of a dialog

Behavior and Interaction

Resizable

The user can change the size of the dialog by setting the “resizable” property to true. The following figure shows the resizing indicator, which helps the user to identify this functionality.

Resizable indicator on the bottom right-hand corner
Resizable indicator on the bottom right-hand corner

Draggable

Dialogs can be moved by dragging the header to another position. Set the property “draggable” to ‘true’ and by clicking the title the user can move the dialog to another position.

Dialog is movable by dragging the title of the dialog
Dialog is movable by dragging the title of the dialog

Messaging in Dialog

Message popovers do not need to be displayed in the dialogs. Keep it simple and just highlight each field that has a problem. For more information, see form field validation.

Highlighted form fields in dialog
Highlighted form fields in dialog

Types

Standard Dialog

Use the standard dialog if you want to display a common dialog. The main visual differences are that the header is displayed with a grey background, and that no icon is shown.

The content can be filled with your application-specific data.

Message Box

The message box is a special type of dialog that is used to display messages quickly. For each type of message, the app team can decide when to use a dialog. Use the message toast (sap.m.MessageToast) for success messages. For more information, see message box.

Components

The dialog contains the following sections and options:

Title: Title text appears in the dialog header.

Subheader: When a subheader is assigned to a dialog (optionally), it appears below the main header. As the subheader is not part of the content area, it is not scrollable.

Content: This area contains the actual content of the dialog.

Footer with actions: The footer can contain up to two buttons (optionally).

Example of a dialog structure
Example of a dialog structure

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

Dialog

The dialog control (sap.m.dialog) interrupts the current app process to prompt the user for information or a response. It is a forced decision or a confirmation that needs to be signed off by the user.

Usage

Use the dialog if:

  • You want to display a system message.
  • You want to interrupt the user’s action.
  • You want to show a message with a short and a long description.

Do not use the dialog if:

  • You just want to confirm a successful action.
  • You do not want to interrupt the user’s action.

Responsiveness

The dialog provides different behavior on a smartphone than on a tablet or desktop. You can distinguish between a cozy dialog and a compact dialog. For more information, see content density.

The buttons in the toolbar are aligned differently on the various devices. On a smartphone, they cover the entire footer, but on a tablet or desktop, they are right-aligned.

Size S (Smartphone)

Full Screen Dialog

We recommend displaying dialogs in S size in full screen mode. Most of the content of a dialog is worth opening in full screen so the user is able to focus on the content of the dialog. The stretch property can be easily set by the application to true. The toolbar on which the actions are placed within a dialog is positioned at the bottom of the dialog.

Full screen dialog (size S)
Full screen dialog (size S)

Position of the Action Buttons

By default, the dialog can have one or two actions, which cover the entire footer on smartphones.

Footer actions alignment (size S)
Footer actions alignment (size S)

When to Open Full Screen or Modal

Message dialogs should always be displayed as modals. There is no need to display a simple message in a full screen dialog. If you want to display a simple message, use the message box (sap.m.Messagebox) instead.

If you use standard dialogs such as value help, you should open them in full screen mode. The device’s entire screen is used to display the dialog, and the user can focus on the content of the message. The dialogs offer a stretch property for full screen behavior.

Size M (Tablet)

By default, the dialog can have up to two action buttons in the footer. The action buttons in the toolbar are right-aligned. Use cozy mode on tablet devices.

If the content height increases or is set to more than the screen height, the dialog height stops at 4 rem from the top and bottom. The user can then scroll through the content area.

Size L (Desktop)

By default, the dialog can have one or two actions. The action buttons on a desktop device are right-aligned. Use compact mode to ensure that the padding and margins are optimized for desktop devices.

If the content height increases or is set to more than the screen height, the dialog height stops at 4 rem from the top and bottom. The user can then scroll through the content area.

Dialog in compact mode (size L)
Dialog in compact mode (size L)

Layout

Position on the Screen

The dialog is positioned in the center of the screen. It opens in a modal window to ensure that it attracts the user’s attention when it displays emergency states.

On a smartphone, the stretch property allows you to achieve full screen behavior.

Centered position of a dialog
Centered position of a dialog

Behavior and Interaction

Resizable

The user can change the size of the dialog by setting the “resizable” property to true. The following figure shows the resizing indicator, which helps the user to identify this functionality.

Resizable indicator on the bottom right-hand corner
Resizable indicator on the bottom right-hand corner

Draggable

Dialogs can be moved by dragging the header to another position. Set the property “draggable” to ‘true’ and by clicking the title the user can move the dialog to another position.

Dialog is movable by dragging the title of the dialog
Dialog is movable by dragging the title of the dialog

Messaging in Dialog

Message popovers do not need to be displayed in the dialogs. Keep it simple and just highlight each field that has a problem. For more information, see form field validation.

Highlighted form fields in dialog
Highlighted form fields in dialog

Types

Standard Dialog

Use the standard dialog if you want to display a common dialog. The main visual differences are that the header is displayed with a grey background, and that no icon is shown.

The content can be filled with your application-specific data.

Message Box

The message box is a special type of dialog that is used to display messages quickly. For each type of message, the app team can decide when to use a dialog. Use the message toast (sap.m.MessageToast) for success messages. For more information, see message box.

Components

The dialog contains the following sections and options:

Title: Title text appears in the dialog header.

Subheader: When a subheader is assigned to a dialog (optionally), it appears below the main header. As the subheader is not part of the content area, it is not scrollable.

Content: This area contains the actual content of the dialog.

Footer with actions: The footer can contain up to two buttons (optionally).

Example of a dialog structure
Example of a dialog structure

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

Dialog

The dialog control (sap.m.dialog) interrupts the current app process to prompt the user for information or a response. It is a forced decision or a confirmation that needs to be signed off by the user.

Usage

Use the dialog if:

  • You want to display a system message.
  • You want to interrupt the user’s action.
  • You want to show a message with a short and a long description.

Do not use the dialog if:

  • You just want to confirm a successful action.
  • You do not want to interrupt the user’s action.

Responsiveness

The dialog provides different behavior on a smartphone than on a tablet or desktop. You can distinguish between a cozy dialog and a compact dialog. For more information, see content density.

The buttons in the toolbar are aligned differently on the various devices. On a smartphone, they cover the entire footer, but on a tablet or desktop, they are right-aligned.

Size S (Smartphone)

Full Screen Dialog

We recommend displaying dialogs in S size in full screen mode. Most of the content of a dialog is worth opening full screen so the user is able to focus on the content of the dialog. The stretch property can be easily set by the application to true. The toolbar on which actions are placed within a dialog is positioned at the bottom of the dialog.

Full screen dialog (size S)
Full screen dialog (size S)

Position of the Action Buttons

By default, the dialog can have one or two actions, which cover the entire footer on smartphones.

Footer actions alignment (size S)
Footer actions alignment (size S)

When to Open Full Screen or Modal

Message dialogs should always be displayed as modals. There is no need to display a simple message in a full screen dialog. If you want to display a simple message, use the message box (sap.m.Messagebox) instead.

If you use standard dialogs such as value help, you should open them in full screen mode. The device’s entire screen is used to display the dialog, and the user can focus on the content of the message. The dialogs offer a stretch property for full screen behavior.

Size M (Tablet)

By default, the dialog can have up to two action buttons in the footer. The action buttons in the toolbar are right-aligned. Use cozy mode on tablet devices.

If the content height increases or is set to more than the screen height, the dialog height stops at 4 rem from the top and bottom. The user can then scroll through the content area.

Size L (Desktop)

By default, the dialog can have one or two actions. The action buttons on a desktop device are right-aligned. Use compact mode to ensure that the padding and margins are optimized for desktop devices.

If the content height increases or is set to more than the screen height, the dialog height stops at 4 rem from the top and bottom. The user can then scroll through the content area.

Dialog in compact mode (size L)
Dialog in compact mode (size L)

Layout

Position on the Screen

The dialog is positioned in the center of the screen. It opens in a modal window to ensure that it attracts the user’s attention when it displays emergency states.

On a smartphone, the stretch property allows you to achieve full screen behavior.

Centered position of a dialog
Centered position of a dialog

Behavior and Interaction

Resizable

The user can change the size of the dialog by setting the “resizable” property to true. The following figure shows the resizing indicator, which helps the user to identify this functionality.

Resizable indicator on the bottom right-hand corner
Resizable indicator on the bottom right-hand corner

Draggable

Dialogs can be moved by dragging the header to another position. Set the “draggable” property  to ‘true’ and by clicking the title, the user can move the dialog to another position.

Dialog is movable by dragging the title of the dialog
Dialog is movable by dragging the title of the dialog

Messaging in Dialog

Message popovers do not need to be displayed in dialogs. For example, to show an issue with with content in a field, highlighting can be used. For more information, see form field validation.

Highlighted form fields in dialog
Highlighted form fields in dialog

Types

Standard Dialog

Use the standard dialog if you want to display a common dialog. The main visual differences are that the header is displayed with a grey background, and that no icon is shown.

The content can be filled with your application-specific data.

Message Box

The message box is a special type of dialog that is used to display messages quickly. For each type of message, the app team can decide when to use a dialog. Use the message toast (sap.m.MessageToast) for success messages. For more information, see message box.

Components

The dialog contains the following sections and options:

Title: Title text appears in the dialog header.

Subheader: When a subheader is assigned to a dialog (optionally), it appears below the main header. As the subheader is not part of the content area, it is not scrollable.

Content: This area contains the actual content of the dialog.

Footer with actions: The footer can contain up to two buttons (optionally).

Example of a dialog structure
Example of a dialog structure

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

Input Field

A text input field allows users to enter and edit text or numeric values in one line. To help users enter a valid value, you can enable the autocomplete suggestion feature and the value help option.

Usage

Use the input field if:

  • The user needs to enter a short, single-line text or number.
  • The user needs to enter a password, URL, phone number, or email address.
  • The user needs to make a single selection from a large amount of data (for example, more than 200 items).
  • The user needs to find an object by searching for more than one attribute, such as an ID, city, and customer name. Use this control in combination with the autocomplete suggestion feature and value help option. For a small set of values (for example, fewer than 20 items), consider using the select control. Otherwise, use the combo box (for 20–200 items).

Do not use the input field if:

Responsiveness

In the examples below, the input field is shown in combination with the tabular autocomplete feature for different device sizes.

Size S (Smartphones)

Cozy mode:

When the user clicks or taps the input field, a new full-screen dialog opens in which suggested items can be selected. Here, the pop-in feature of the responsive table is used.

Tabular autocomplete suggestion feature on a smartphone
Tabular autocomplete suggestion feature on a smartphone

Size M (Tablets)

Cozy mode:

The pop-in feature of the responsive table is used here, and defined columns are wrapped into a new line due to the limited space available.

Tabular autocomplete suggestion feature on a tablet
Tabular autocomplete suggestion feature on a tablet

Size L (Desktops)

Compact mode:

The full table is shown in the suggest feature.

Tabular autocomplete suggestion feature on a desktop
Tabular autocomplete suggestion feature on a desktop

Types

Six input types are currently supported (API). Be sure to select the correct type for your use case. Depending on the input type, a different keyboard layout is displayed on a mobile device (see some sample input types).

Note: The control does not provide validation based on the type. The app development team must carry out format validation. If binding is used, validation is carried out by the model, but the error handling still needs to be taken care of on the UI.

Behavior and Interaction

Entering Text Using the Autocomplete Feature

Have a look at the interaction flow below:

Entering Text Using the Value Help Dialog

Have a look at the interaction flow below:

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

Styles

An input field can have four states: default, warning, error, or success.

Default state
Default state
Warning state
Warning state
Error state
Error state
Success state
Success state

Properties

Value State and Value State Message

The input control offers the four value states listed below. For the error and warning states, you can show an additional value state text when the focus is on the input field.

  1. None (default): No value state message is shown.
  2. Warning
  3. Error
  4. Success: No value state message is shown.

For more guidance on when to use which state, check out the article on message handling.

Default
Default
Warning
Warning
Error
Error
Success
Success

Maximum Length

Use this property to set the maximum number of characters allowed. There is no limit by default.

Placeholder

The placeholder, or input prompt, is a short hint (a word or short phrase) to help the user with data entry. A hint can be a sample value or a brief description of the expected format.

Placeholder
Placeholder

Description

You can provide an additional description on the input field, for example, for units or currency. The width of the input field and description is distributed equally by default. Although the default setting is 50%, you can change this with the fieldWidth property.

Input description
Input description

Width

The width of the input field is set to 100% by default. Input fields are usually used in forms, where the width is determined by the form element or container that the input field is embedded in. Therefore, we do not recommend defining a fixed width, but rather working with proper layout containers, like the form, simple form, and responsive grid layout, and with the layout data property, where the width is defined by the 12-column approach.

Editable and Enabled States

The input field has three states (see examples of input states):

  1. Editable: This is the default setting.
  2. Not editable: The input field is not shown; only the value is shown. This is used in display-only forms.
  3. Disabled: The input field is shown with a visual indication that an edit is not possible, for example, due to missing editing rights.
Editable and enabled input states
Editable and enabled input states

Text Alignment

The input field offers six types of alignment for text values (API):

  • Begin
  • Center
  • End
  • Initial (default): Browser-configured alignment is used
  • Left
  • Right
Right alignment
Right alignment

Value Help

To help the user find the correct value, you can enable the value help option (propertyshowValueHelp). By enabling this option, a small value help icon is displayed in the input field on the right-hand side. Once this option is enabled, the click event can be registered and one of the following displayed:

If you want to force the user to select only existing values, you can enable the value-help-only option (see an example of the value-help-only option). In this case, the user cannot enter text in the input field. Instead, the value must be selected from the list of suggestions, or chosen using the select dialog or value help dialog.

Value help option
Value help option

Autocomplete Suggestion

The input control offers three different types of autocomplete suggestions: single, two-value, and tabular. The width of the autocomplete and the input fields are set by default, but you can change these via the maxSuggestionWidth property. The position of the suggestion box depends on the space available below the control. If there is not enough space, the suggest box is shown above the control.

Single Value with Autocomplete

Displays a list of suggestions with one left-aligned value. As a base for the aggregation suggestionItemssap.ui.core.Item is used.

See live example of single-value autocomplete suggestions.

Single value autocomplete suggestion feature
Single value autocomplete suggestion feature

Two Values with Autocomplete

The two-value autocomplete suggestion feature displays two attributes of a business object, such as an ID and a name.  As a base for the aggregation suggestionItemssap.ui.core.ListItem is used.

The text property is displayed first, left-aligned, and the additionalText property is right-aligned.

See live example of two-value autocomplete suggestions.

Two-value autocomplete suggestion feature
Two-value autocomplete suggestion feature

Tabular Autocomplete

This autocomplete feature displays the values in a table layout. The width of the columns is distributed equally by default.

To use the tabular autocomplete feature, use the suggestionColumns aggregation to define the columns and the correct responsive behavior for the pop-in. For more information, see the article on the responsive table.

With the showTableSuggestionValueHelp property, you can offer a Show All Items button at the end of the suggest result list. Because the number of results in the suggest functionality is limited, this option helps the user find the relevant item via an alternative dialog:

See a live example of tabular autocomplete suggestions.

Tabular autocomplete
Tabular autocomplete

Guidelines

Always provide a meaningful label for any input field.

Maximum Length

Limit the length of the input field. For example, if you expect the user to enter a two-digit number, limit the maximum length to two. The maximum permissible character length is not defined by default. If the backend has a limit, ensure that you set this property accordingly.

Placeholder

Avoid using the placeholder attribute as an alternative to a label. This is important because the placeholder text is overwritten as soon as the form is filled out. Labels are necessary to indicate the meaning of the form fields when the placeholders are no longer visible.

Description

The description field should be used, for example, for displaying units or currency. Do not use a description for help text or as a label replacement. Note that the description is not placed in a new line in size S. Therefore, only use the description property for small input fields with a short description.

Width

Editable and Enabled States

Editable

Property settings: editable = true, enabled = true

The input control is enabled and editable by default. Set the control to editable to allow the user to enter a value.

Not Editable

Property settings: editable = false, enabled = true

Use this state, for example, to display data only.

Disabled

Property settings: editable = not relevant, enabled = false

Set the control to disabled in an edit scenario to indicate that the user cannot change the control, for example, due to missing access rights or previous conditions not having been fulfilled or selected.

Text Align

Align left if:

  • Text is used. Also use left alignment for a phone number, URL, password, and email address.

Align right if:

  • Amounts and decimal numbers are used.
  • Values need to be added and compared.

Value Help

Show the value help option to help the user select the correct value (such as a customer ID) from a large data set via the:

Use this option in combination with the autocomplete suggestion feature.

When the user clicks or taps the value help icon, the data entered into the input field must be transferred to the processing dialog so that the user does not have to enter the search term again. Likewise, data entered in the processing dialog must be transferred back to the input field.

Autocomplete Suggestion

Use the autocomplete suggestion feature to display real-time suggestions and to help the user enter information more accurately and efficiently. If you expect the suggest values to be longer than the input field itself, you can change the width via the maxSuggestionWidth property.

Single Value with Autocomplete

Use the single-value autocomplete feature if you want to search by only one attribute, such as an ID or a customer name.

Two Values with Autocomplete

Use the two-value autocomplete feature if you want to search by two attributes, such as a customer name and an ID. This ensures that the search is carried out for both attributes.

Tabular Autocomplete

If you need to display more than two attributes, use the tabular autocomplete feature. Try to keep the number of columns to a minimum, and focus on the columns that are really relevant for the use case. Define appropriate responsive behavior for sizes S and M. For more information, see responsive table.

The width of the columns is distributed equally by default. To avoid truncation, accurately estimate the primary attribute length and set a minimum width for this column.

Creating and Editing Objects

Sometimes a new object needs to be created if the user cannot find a specific item via autocomplete or value help. In this case, we recommend that you place the New action next to the input field.

If you want the user to be able to edit a selected object directly, you should place the Edit link next to the input field.

If both actions are needed, they should be toggled based on the content of the input field. If a valid object is selected, you should display Edit. If the input field is empty or the object is not valid, you should display New. This pattern can also be applied for the multi-input fieldcombo boxmulti-combo box, and select controls.

Input field – New and Edit actions
Input field – New and Edit actions

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

Input Field

A text input field allows users to enter and edit text or numeric values in one line. To help users enter a valid value, you can enable the autocomplete suggestion feature and the value help option.

Usage

Use the input field if:

  • The user needs to enter a short, single-line text or number.
  • The user needs to enter a password, URL, phone number, or email address.
  • The user needs to make a single selection from a large amount of data (for example, more than 200 items).
  • The user needs to find an object by searching for more than one attribute, such as an ID, city, and customer name. Use this control in combination with the autocomplete suggestion feature and value help option. For a small set of values (for example, fewer than 20 items), consider using the select control. Otherwise, use the combo box (for 20–200 items).

Do not use the input field if:

Responsiveness

In the examples below, the input field is shown in combination with the tabular autocomplete feature for different device sizes.

Size S (Smartphones)

Cozy mode:

When the user clicks or taps the input field, a new full-screen dialog opens in which suggested items can be selected. Here, the pop-in feature of the responsive table is used.

Tabular autocomplete suggestion feature on a smartphone
Tabular autocomplete suggestion feature on a smartphone

Size M (Tablets)

Cozy mode:

The pop-in feature of the responsive table is used here, and defined columns are wrapped into a new line due to the limited space available.

Tabular autocomplete suggestion feature on a tablet
Tabular autocomplete suggestion feature on a tablet

Size L (Desktops)

Compact mode:

The full table is shown in the suggest feature.

Tabular autocomplete suggestion feature on a desktop
Tabular autocomplete suggestion feature on a desktop

Types

Six input types are currently supported (API). Be sure to select the correct type for your use case. Depending on the input type, a different keyboard layout is displayed on a mobile device (see some sample input types).

Note: The control does not provide validation based on the type. The app development team must carry out format validation. If binding is used, validation is carried out by the model, but the error handling still needs to be taken care of on the UI.

Behavior and Interaction

Entering Text Using the Autocomplete Feature

Have a look at the interaction flow below:

Entering Text Using the Value Help Dialog

Have a look at the interaction flow below:

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

Styles

An input field can have four states: default, warning, error, or success.

Default state
Default state
Warning state
Warning state
Error state
Error state
Success state
Success state

Properties

Value State and Value State Message

The input control offers the four value states listed below. For the error and warning states, you can show an additional value state text when the focus is on the input field.

  1. None (default): No value state message is shown.
  2. Warning
  3. Error
  4. Success: No value state message is shown.

For more guidance on when to use which state, check out the article on message handling.

Default
Default
Warning
Warning
Error
Error
Success
Success

Maximum Length

Use this property to set the maximum number of characters allowed. There is no limit by default.

Placeholder

The placeholder, or input prompt, is a short hint (a word or short phrase) to help the user with data entry. A hint can be a sample value or a brief description of the expected format.

Placeholder
Placeholder

Description

You can provide an additional description on the input field, for example, for units or currency. The width of the input field and description is distributed equally by default. Although the default setting is 50%, you can change this with the fieldWidth property.

Input description
Input description

Width

The width of the input field is set to 100% by default. Input fields are usually used in forms, where the width is determined by the form element or container that the input field is embedded in. Therefore, we do not recommend defining a fixed width, but rather working with proper layout containers, like the form, simple form, and responsive grid layout, and with the layout data property, where the width is defined by the 12-column approach.

Editable and Enabled States

The input field has three states (see examples of input states):

  1. Editable: This is the default setting.
  2. Not editable: The input field is not shown; only the value is shown. This is used in display-only forms.
  3. Disabled: The input field is shown with a visual indication that an edit is not possible, for example, due to missing editing rights.
Editable and enabled input states
Editable and enabled input states

Text Alignment

The input field offers six types of alignment for text values (API):

  • Begin
  • Center
  • End
  • Initial (default): Browser-configured alignment is used
  • Left
  • Right
Right alignment
Right alignment

Value Help

To help the user find the correct value, you can enable the value help option (propertyshowValueHelp). By enabling this option, a small value help icon is displayed in the input field on the right-hand side. Once this option is enabled, the click event can be registered and one of the following displayed:

If you want to force the user to select only existing values, you can enable the value-help-only option (see an example of the value-help-only option). In this case, the user cannot enter text in the input field. Instead, the value must be selected from the list of suggestions, or chosen using the select dialog or value help dialog.

Value help option
Value help option

The values can also be pasted into the input field by copying and pasting, or dragging and dropping, if the user prefers this. In this case, the values will be automatically transformed into conditional expressions. Example: Copying values “1234” and “5678” leads to the token generation “=1234” and “=5678”. Additionally, these values will be found within the conditions tab of the value help dialog.

Autocomplete Suggestion

The input control offers three different types of autocomplete suggestions: single, two-value, and tabular. The width of the autocomplete and the input fields are set by default, but you can change these via the maxSuggestionWidth property. The position of the suggestion box depends on the space available below the control. If there is not enough space, the suggest box is shown above the control.

Single Value with Autocomplete

Displays a list of suggestions with one left-aligned value. As a base for the aggregation suggestionItemssap.ui.core.Item is used.

See live example of single-value autocomplete suggestions.

Single value autocomplete suggestion feature
Single value autocomplete suggestion feature

Two Values with Autocomplete

The two-value autocomplete suggestion feature displays two attributes of a business object, such as an ID and a name.  As a base for the aggregation suggestionItemssap.ui.core.ListItem is used.

The text property is displayed first, left-aligned, and the additionalText property is right-aligned.

See live example of two-value autocomplete suggestions.

Two-value autocomplete suggestion feature
Two-value autocomplete suggestion feature

Tabular Autocomplete

This autocomplete feature displays the values in a table layout. The width of the columns is distributed equally by default.

To use the tabular autocomplete feature, use the suggestionColumns aggregation to define the columns and the correct responsive behavior for the pop-in. For more information, see the article on the responsive table.

With the showTableSuggestionValueHelp property, you can offer a Show All Items button at the end of the suggest result list. Because the number of results in the suggest functionality is limited, this option helps the user find the relevant item via an alternative dialog:

See a live example of tabular autocomplete suggestions.

Tabular autocomplete
Tabular autocomplete

Guidelines

Always provide a meaningful label for any input field.

Maximum Length

Limit the length of the input field. For example, if you expect the user to enter a two-digit number, limit the maximum length to two. The maximum permissible character length is not defined by default. If the backend has a limit, ensure that you set this property accordingly.

Placeholder

Avoid using the placeholder attribute as an alternative to a label. This is important because the placeholder text is overwritten as soon as the form is filled out. Labels are necessary to indicate the meaning of the form fields when the placeholders are no longer visible.

Description

The description field should be used, for example, for displaying units or currency. Do not use a description for help text or as a label replacement. Note that the description is not placed in a new line in size S. Therefore, only use the description property for small input fields with a short description.

Width

Editable and Enabled States

Editable

Property settings: editable = true, enabled = true

The input control is enabled and editable by default. Set the control to editable to allow the user to enter a value.

Not Editable

Property settings: editable = false, enabled = true

Use this state, for example, to display data only.

Disabled

Property settings: editable = not relevant, enabled = false

Set the control to disabled in an edit scenario to indicate that the user cannot change the control, for example, due to missing access rights or previous conditions not having been fulfilled or selected.

Text Align

Align left if:

  • Text is used. Also use left alignment for a phone number, URL, password, and email address.

Align right if:

  • Amounts and decimal numbers are used.
  • Values need to be added and compared.

Value Help

Show the value help option to help the user select the correct value (such as a customer ID) from a large data set via the:

Use this option in combination with the autocomplete suggestion feature.

When the user clicks or taps the value help icon, the data entered into the input field must be transferred to the processing dialog so that the user does not have to enter the search term again. Likewise, data entered in the processing dialog must be transferred back to the input field.

Autocomplete Suggestion

Use the autocomplete suggestion feature to display real-time suggestions and to help the user enter information more accurately and efficiently. If you expect the suggest values to be longer than the input field itself, you can change the width via the maxSuggestionWidth property.

Single Value with Autocomplete

Use the single-value autocomplete feature if you want to search by only one attribute, such as an ID or a customer name.

Two Values with Autocomplete

Use the two-value autocomplete feature if you want to search by two attributes, such as a customer name and an ID. This ensures that the search is carried out for both attributes.

Tabular Autocomplete

If you need to display more than two attributes, use the tabular autocomplete feature. Try to keep the number of columns to a minimum, and focus on the columns that are really relevant for the use case. Define appropriate responsive behavior for sizes S and M. For more information, see responsive table.

The width of the columns is distributed equally by default. To avoid truncation, accurately estimate the primary attribute length and set a minimum width for this column.

Creating and Editing Objects

Sometimes a new object needs to be created if the user cannot find a specific item via autocomplete or value help. In this case, we recommend that you place the New action next to the input field.

If you want the user to be able to edit a selected object directly, you should place the Edit link next to the input field.

If both actions are needed, they should be toggled based on the content of the input field. If a valid object is selected, you should display Edit. If the input field is empty or the object is not valid, you should display New. This pattern can also be applied for the multi-input fieldcombo boxmulti-combo box, and select controls.

Input field – New and Edit actions
Input field – New and Edit actions

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

Upload Collection

The upload collection control allows users to upload single or multiple files from a device (desktop, tablet, or phone) to the SAP Fiori app. Typically, uploaded files appear in an Attachments tab. However, files can also be displayed elsewhere.

Information
The upload collection replaces the deprecated sap.ca.ui.FileUpload control. Please refrain from using the old CA control.

Usage

Use the upload collection control if:

  • You want to show a list of uploaded files that can be modified.
  • You want to allow users to add or remove files, and to change the file names.
  • You are still using the old sap.ca.ui.FileUpload control.

Do not use the upload collection control if:

Responsiveness

The upload collection control supports small, medium, and large containers.

Upload collection – Size S
Upload collection – Size S
Upload collection – Size M
Upload collection – Size M
Upload collection – Size L/XL
Upload collection – Size L/XL

Layout

The toolbar at the top of the upload collection control contains an Attachments header with a counter on the left, and an Add button ( ) for adding new items on the right. You can overwrite both the default text Attachments and the counter (property: numberOfAttachmentsText).

Files are listed vertically. Each item has a Rename ( ) and a Remove ( ) button.

While most file types have generic icons (for example documents, spreadsheets, or presentations), image files have a small thumbnail preview.

Layout – Items
Layout – Items

Attributes and Statuses

You can display additional attributes and statuses below the file name. Attributes can include the name of the person who uploaded the file, the upload date, the version number, file size, and so on.

App developers can also set individual statuses. These statuses usually refer to an object’s state in a workflow (such as Approved or Overdue).

If multiple attributes or statuses are displayed, they are separated by a bullet.

Layout – Attributes and statuses
Layout – Attributes and statuses

Technical Statuses

In contrast to the statuses mentioned above, technical statuses are not bound to a workflow or business process. Their main use is to show the current editing status of an object (Draft, Locked, Unsaved Changes). For further uses and more details see the object display components and draft handling articles.

Layout – Technical statuses
Layout – Technical statuses

Types

The upload collection control offers two different modes: UploadCollection and UploadCollectionForPendingUpload.

The classic upload collection allows users to upload single or multiple files directly to the app, where these files are displayed as a list.

In contrast, the upload collection for pending upload requires the user to first add multiple files to a list (usually presented in a dialog) and then explicitly trigger the upload for the entire list.

When the dialog with the list is confirmed, the user returns to the app screen with the upload collection set to busy until the upload is finished.

Behavior and Interaction

Uploading Files

As long as no files have been added to the upload collection, applications need to show a mock-entry that provides users with a hint on how to upload their files.

Interaction – Upload (1)
Interaction – Upload (1)

The Add button ( ) triggers a native operating system dialog that allows users to select the files they want to upload. You can decide whether the dialogs should allow users to select multiple items, or only one item.

Interaction – Upload (2)
Interaction – Upload (2)

Once the files have been selected and the dialog closes, the uploading progress is shown in the list.

Users can cancel individual uploads by pressing the Remove  button provided on each item.

Interaction – Upload (4)
Interaction – Upload (4)

Depending on the use case, the Add button (  ) can be either disabled or hidden.
If a user cannot upload any files at all, the button should be hidden completely.
If a user is only temporarily unable to upload files (for example, due to the server connection), the button should only be disabled to indicate that this state is temporary.

Opening Files

The user can click or tap the icons or thumbnails in front of the attachment. Opening files is handled differently depending on the operating system.

On a desktop device, clicking the file name or icon of a file opens the respective program that has been assigned to this file type. Mobile devices usually open a dialog in which the user can select an app that supports this file type.

Renaming Files

The rename function works identically on desktop and mobile devices.

The user clicks or taps the Rename (  ) button.

The file name becomes an input field in which the existing name is highlighted. At the same time, the Rename  (  ) and Remove  buttons are replaced by two options: OK and Cancel.

When the user starts typing, the highlighted text is overwritten. Alternatively, the user can use the mouse or keyboard to change the selected text.

There are three ways in which to validate the new file name:

  • The user clicks or taps somewhere outside the input field to change the focus.
  • The user clicks OK.
  • The user presses ENTER.

Editing Files

If users need to edit more than just the name of uploaded files, applications can implement an edit dialog with all the elements that can be changed by the user.

The image shows an example of how to structure such a dialog. The fields depend entirely on the use case and can be freely determined by each application.

Further details about editing parts of an object in a dialog can be found in the article manage objects – parts of an object. If multiple files need to be edited simultaneously, make sure to follow the guidelines for mass editing.

Interaction – Example of edit dialog
Interaction – Example of edit dialog

Deleting Files

The delete function works identically on desktop and mobile devices.

As soon as the user clicks or taps the Remove  button on a file, a dialog appears asking the user to confirm the deletion of the respective file.

The file name has to be specified in the dialog. Delete confirms the deletion and the file is removed from the list. Cancel aborts the process, closes the dialog, and brings the user back to the file list without making any changes.

Interaction – Delete
Interaction – Delete

Clickable Attributes

Object attributes can be made clickable. This can be very helpful to provide users with a direct way to access certain information such as a person’s profile, contact data, or the version history of a file.

Examples:

Uploaded By: John Miller

Last Edited By: Donna Moore

Version 1.1

Do not use more than two or three linked attributes per item. Excessive use of clickable attributes will overload the UI with interactive elements and have a negative impact on usability.

Information
If your attribute is a label or value pair, please notice that currently both label and value are linked (instead of just the value). We plan to separate them into a read-only label and clickable value.

Sorting and Filtering

Applications can enable sorting and filtering by placing the respective buttons next to the Add ) button. If both functions are provided separately, place Sort (  ) first, followed by Filter ). Each button should trigger the respective popover or dialog.

It is also possible to use the view settings dialog to handle both sorting and filtering in the same step. If you do this, use a combined button named Sort and Filter.

Interaction – Sort and Filter (1)
Interaction – Sort and Filter (1)

If a Filter is Set

Keep in mind to show the info bar if a filter is set. The sorting criteria should not be displayed in the info bar.

Clicking the info bar should bring up…
…the filter dialog if sorting and filtering are provided via separate buttons.
…the view settings dialog if only one Sort and Filter button is used.

Optionally, a button can be provided on the right hand side of the info bar to remove all filters.

Interaction – Sort and Filter (2)
Interaction – Sort and Filter (2)

Custom and Bulk Actions

App developers can introduce their own actions and apply an action to multiple objects (bulk actions).

Place both custom and bulk actions in the toolbar of the upload collection control. For the order of the actions, apply the same rules as for other toolbars.

If you want to use custom or bulk actions, you must use multiple selection (property: mode = MultiSelect). This mode removes the actions from each item. Instead, offer all necessary actions in the toolbar.

Interaction – Multi selection
Interaction – Multi selection

Uploading a New Version

With SAPUI5 version 1.38 and higher, the old version of an upload collection will be automatically replaced when the user uploads a newer version. This change no longer requires the user to delete the old version manually.

To upload a new version, the user needs to select a file and click Upload New Version. This button needs to be provided by the application as a custom action (see previous section). The following dialog (identical to standard uploading procedure) allows the user to pick a new file to replace the old one.

Developer Hint
The parameter UploadCollectionItem can be used to update a file with a newer version. The old version will be removed from the list automatically while the new version is uploaded. For more information, visit UI5 Explored.

Handling Duplicates

Some applications may allow duplicate files and file names. This section covers steps to prevent duplicates.

Duplicate File Name During Renaming

In this example, there are two different image files: Product Picture – Front and Product Picture – Back.

Interaction – Validation for renaming (1)
Interaction – Validation for renaming (1)
Interaction – Validation for renaming (2)
Interaction – Validation for renaming (2)

The user types in a name that is identical to one that already exists.

Interaction – Validation for renaming (3)
Interaction – Validation for renaming (3)

When the user clicks OK or tries to remove the focus from the input field, the field is highlighted (semantic color: error).

Interaction – Validation for renaming (4)
Interaction – Validation for renaming (4)

Placing the focus back on the field shows the error message (form field validation).

Interaction – Validation for renaming (5)
Interaction – Validation for renaming (5)

Duplicate Files During Upload

Information
Duplicate files are not recognized by the upload control. If needed, this feature must be implemented manually.

If a duplicate is recognized during the upload process, a dialog appears that allows the user to do one of the following:

1) This text explains the current conflict (no actions possible).

2) With Upload and replace, the current file is replaced with the newly updated one.

3) With Upload and rename automatically, the current file is kept and an incrementally increasing number is added to the newly uploaded file, such as “Technical Specs_2”.

4) With Skip this file, the file is not uploaded and the current file is kept instead.

5) If Do this for all n conflicts is checked, the selected action is applied to all remaining conflicts.

6) The OK button confirms selected action(s).

7) The Cancel button cancels the entire upload process.

Interaction – Upload duplicate – Details
Interaction – Upload duplicate – Details

Styles

The showSeparators property allows you to display dividers between each item. The default value is All, meaning that all dividers are shown. We recommend that you only turn off the separators if you expect to have just a few items since they can help to maintain a better overview in long lists.

Styles – Separators (default)
Styles – Separators (default)
Styles – No separators
Styles – No separators

Guidelines

When to Show/Deactivate/Hide Actions

Apps can control the visibility and the active state for all actions at item level. This applies to the Edit and Delete buttons.

The properties are as follows:

  • VisibleEdit
  • VisibleDelete
  • EnableEdit
  • EnableDelete

All the properties are set to true by default.

If users are not allowed to edit uploaded files, all the Edit buttons should be set to invisible. The same applies to the Delete function.

Identical actions should be placed directly beneath one another.

Do not leave buttons enabled, only to show an error message informing the user that the function is not available.

Identical actions should always appear beneath one another.

Do
Show identical actions beneath each other
Show identical actions beneath each other

If users are not allowed to use a certain function, these buttons should not be shown at all.

Do
Hide functions if the user doesn't have authorization
Hide functions if the user doesn't have authorization

If certain actions are unavailable in some cases, such as for files from other users, we recommended that you disable these actions.

Do
Disable functions not available for a specific file
Disable functions not available for a specific file

Do not disable all actions. If users are not allowed to use a certain action, these buttons should not be shown at all.

Don't
Don't disable all actions
Don't disable all actions

Identical actions should be placed directly beneath one another. In the example opposite, the Remove buttons on the lower two items should be visible but disabled.

Don't
Do not position the same actions differently
Do not position the same actions differently
Information
If you want users to be able to upload only specific file types, we recommend doing this via mime types.
You should also inform users on the UI about the file types they are allowed to upload.

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

Input Field

A text input field allows users to enter and edit text or numeric values in one line. To help users enter a valid value, you can enable the autocomplete suggestion feature and the value help option.

Usage

Use the input field if:

  • The user needs to enter a short, single-line text or number.
  • The user needs to enter a password, URL, phone number, or email address.
  • The user needs to make a single selection from a large amount of data (for example, more than 200 items).
  • The user needs to find an object by searching for more than one attribute, such as an ID, city, and customer name. Use this control in combination with the autocomplete suggestion feature and value help option. For a small set of values (for example, fewer than 20 items), consider using the select control. Otherwise, use the combo box (for 20–200 items).

Do not use the input field if:

Responsiveness

In the examples below, the input field is shown in combination with the tabular autocomplete feature for different device sizes.

Size S (Smartphones)

Cozy mode:

When the user clicks or taps the input field, a new full-screen dialog opens in which suggested items can be selected. Here, the pop-in feature of the responsive table is used.

Tabular autocomplete suggestion feature on a smartphone
Tabular autocomplete suggestion feature on a smartphone

Size M (Tablets)

Cozy mode:

The pop-in feature of the responsive table is used here, and defined columns are wrapped into a new line due to the limited space available.

Tabular autocomplete suggestion feature on a tablet
Tabular autocomplete suggestion feature on a tablet

Size L (Desktops)

Compact mode:

The full table is shown in the suggest feature.

Tabular autocomplete suggestion feature on a desktop
Tabular autocomplete suggestion feature on a desktop

Types

Six input types are currently supported (API). Be sure to select the correct type for your use case. Depending on the input type, a different keyboard layout is displayed on a mobile device (see some sample input types).

Note: The control does not provide validation based on the type. The app development team must carry out format validation. If binding is used, validation is carried out by the model, but the error handling still needs to be taken care of on the UI.

Behavior and Interaction

Entering Text Using the Autocomplete Feature

Have a look at the interaction flow below:

Entering Text Using the Value Help Dialog

Have a look at the interaction flow below:

Styles

An input field can have four states: default, warning, error, or success.

Default state
Default state
Warning state
Warning state
Error state
Error state
Success state
Success state

Properties

Value State and Value State Message

The input control offers the four value states listed below. For the error and warning states, you can show an additional value state text when the focus is on the input field.

  1. None (default): No value state message is shown.
  2. Warning
  3. Error
  4. Success: No value state message is shown.

For more guidance on when to use which state, check out the article on message handling.

Default
Default
Warning
Warning
Error
Error
Success
Success

Maximum Length

Use this property to set the maximum number of characters allowed. There is no limit by default.

Placeholder

The placeholder, or input prompt, is a short hint (a word or short phrase) to help the user with data entry. A hint can be a sample value or a brief description of the expected format.

Placeholder
Placeholder

Description

You can provide an additional description on the input field, for example, for units or currency. The width of the input field and description is distributed equally by default. Although the default setting is 50%, you can change this with the fieldWidth property.

Input description
Input description

Width

The width of the input field is set to 100% by default. Input fields are usually used in forms, where the width is determined by the form element or container that the input field is embedded in. Therefore, we do not recommend defining a fixed width, but rather working with proper layout containers, like the form, simple form, and responsive grid layout, and with the layout data property, where the width is defined by the 12-column approach.

Editable and Enabled States

The input field has three states (see examples of input states):

  1. Editable: This is the default setting.
  2. Not editable: The input field is not shown; only the value is shown. This is used in display-only forms.
  3. Disabled: The input field is shown with a visual indication that an edit is not possible, for example, due to missing editing rights.
Editable and enabled input states
Editable and enabled input states

Text Alignment

The input field offers six types of alignment for text values (API):

  • Begin
  • Center
  • End
  • Initial (default): Browser-configured alignment is used
  • Left
  • Right
Right alignment
Right alignment

Value Help

To help the user find the correct value, you can enable the value help option (propertyshowValueHelp). By enabling this option, a small value help icon is displayed in the input field on the right-hand side. Once this option is enabled, the click event can be registered and one of the following displayed:

If you want to force the user to select only existing values, you can enable the value-help-only option (see an example of the value-help-only option). In this case, the user cannot enter text in the input field. Instead, the value must be selected from the list of suggestions, or chosen using the select dialog or value help dialog.

Value help option
Value help option

Autocomplete Suggestion

The input control offers three different types of autocomplete suggestions: single, two-value, and tabular. The width of the autocomplete and the input fields are set by default, but you can change these via the maxSuggestionWidth property. The position of the suggestion box depends on the space available below the control. If there is not enough space, the suggest box is shown above the control.

Single Value with Autocomplete

Displays a list of suggestions with one left-aligned value. As a base for the aggregation suggestionItemssap.ui.core.Item is used.

See live example of single-value autocomplete suggestions.

Single value autocomplete suggestion feature
Single value autocomplete suggestion feature

Two Values with Autocomplete

The two-value autocomplete suggestion feature displays two attributes of a business object, such as an ID and a name.  As a base for the aggregation suggestionItemssap.ui.core.ListItem is used.

The text property is displayed first, left-aligned, and the additionalText property is right-aligned.

See live example of two-value autocomplete suggestions.

Two-value autocomplete suggestion feature
Two-value autocomplete suggestion feature

Tabular Autocomplete

This autocomplete feature displays the values in a table layout. The width of the columns is distributed equally by default.

To use the tabular autocomplete feature, use the suggestionColumns aggregation to define the columns and the correct responsive behavior for the pop-in. For more information, see the article on the responsive table.

With the showTableSuggestionValueHelp property, you can offer a Show All Items button at the end of the suggest result list. Because the number of results in the suggest functionality is limited, this option helps the user find the relevant item via an alternative dialog:

See a live example of tabular autocomplete suggestions.

Tabular autocomplete
Tabular autocomplete

Guidelines

Always provide a meaningful label for any input field.

Maximum Length

Limit the length of the input field. For example, if you expect the user to enter a two-digit number, limit the maximum length to two. The maximum permissible character length is not defined by default. If the backend has a limit, ensure that you set this property accordingly.

Placeholder

Avoid using the placeholder attribute as an alternative to a label. This is important because the placeholder text is overwritten as soon as the form is filled out. Labels are necessary to indicate the meaning of the form fields when the placeholders are no longer visible.

Description

The description field should be used, for example, for displaying units or currency. Do not use a description for help text or as a label replacement. Note that the description is not placed in a new line in size S. Therefore, only use the description property for small input fields with a short description.

Width

Editable and Enabled States

Editable

Property settings: editable = true, enabled = true

The input control is enabled and editable by default. Set the control to editable to allow the user to enter a value.

Not Editable

Property settings: editable = false, enabled = true

Use this state, for example, to display data only.

Disabled

Property settings: editable = not relevant, enabled = false

Set the control to disabled in an edit scenario to indicate that the user cannot change the control, for example, due to missing access rights or previous conditions not having been fulfilled or selected.

Text Align

Align left if:

  • Text is used. Also use left alignment for a phone number, URL, password, and email address.

Align right if:

  • Amounts and decimal numbers are used.
  • Values need to be added and compared.

Value Help

Show the value help option to help the user select the correct value (such as a customer ID) from a large data set via the:

Use this option in combination with the autocomplete suggestion feature.

When the user clicks or taps the value help icon, the data entered into the input field must be transferred to the processing dialog so that the user does not have to enter the search term again. Likewise, data entered in the processing dialog must be transferred back to the input field.

Autocomplete Suggestion

Use the autocomplete suggestion feature to display real-time suggestions and to help the user enter information more accurately and efficiently. If you expect the suggest values to be longer than the input field itself, you can change the width via the maxSuggestionWidth property.

Single Value with Autocomplete

Use the single-value autocomplete feature if you want to search by only one attribute, such as an ID or a customer name.

Two Values with Autocomplete

Use the two-value autocomplete feature if you want to search by two attributes, such as a customer name and an ID. This ensures that the search is carried out for both attributes.

Tabular Autocomplete

If you need to display more than two attributes, use the tabular autocomplete feature. Try to keep the number of columns to a minimum, and focus on the columns that are really relevant for the use case. Define appropriate responsive behavior for sizes S and M. For more information, see responsive table.

The width of the columns is distributed equally by default. To avoid truncation, accurately estimate the primary attribute length and set a minimum width for this column.

Creating and Editing Objects

Sometimes a new object needs to be created if the user cannot find a specific item via autocomplete or value help. In this case, we recommend that you place the New action next to the input field.

If you want the user to be able to edit a selected object directly, you should place the Edit link next to the input field.

If both actions are needed, they should be toggled based on the content of the input field. If a valid object is selected, you should display Edit. If the input field is empty or the object is not valid, you should display New. This pattern can also be applied for the multi-input fieldcombo boxmulti-combo box, and select controls.

Input field – New and Edit actions
Input field – New and Edit actions

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

Upload Collection

The upload collection control allows users to upload single or multiple files from a device (desktop, tablet, or phone) to the SAP Fiori app. Typically, uploaded files appear in an Attachments tab. However, files can also be displayed elsewhere.

Information
The upload collection replaces the deprecated sap.ca.ui.FileUpload control. Please refrain from using the old CA control.

Usage

Use the upload collection control if:

  • You want to show a list of uploaded files that can be modified.
  • You want to allow users to add or remove files, and to change the file names.
  • You are still using the old sap.ca.ui.FileUpload control.

Do not use the upload collection control if:

Responsiveness

The upload collection control supports small, medium, and large containers.

Upload collection – Size S
Upload collection – Size S
Upload collection – Size M
Upload collection – Size M
Upload collection – Size L/XL
Upload collection – Size L/XL

Layout

The toolbar at the top of the upload collection control contains an Attachments header with a counter on the left, and an Add button ( ) for adding new items on the right. You can overwrite both the default text Attachments and the counter (property: numberOfAttachmentsText).

Files are listed vertically. Each item has a Rename ( ) and a Remove ( ) button.

While most file types have generic icons (for example documents, spreadsheets, or presentations), image files have a small thumbnail preview.

Layout – Items
Layout – Items

Attributes and Statuses

You can display additional attributes and statuses below the file name. Attributes can include the name of the person who uploaded the file, the upload date, the version number, file size, and so on.

App developers can also set individual statuses. These statuses usually refer to an object’s state in a workflow (such as Approved or Overdue).

If multiple attributes or statuses are displayed, they are separated by a bullet.

Layout – Attributes and statuses
Layout – Attributes and statuses

Types

The upload collection control offers two different modes: UploadCollection and UploadCollectionForPendingUpload.

The classic upload collection allows users to upload single or multiple files directly to the app, where these files are displayed as a list.

In contrast, the upload collection for pending upload requires the user to first add multiple files to a list (usually presented in a dialog) and then explicitly trigger the upload for the entire list.

When the dialog with the list is confirmed, the user returns to the app screen with the upload collection set to busy until the upload is finished.

Behavior and Interaction

Uploading Files

The Add button ( ) triggers a native operating system dialog that allows users to select the files they want to upload. You can decide whether the dialogs should allow users to select multiple items, or only one item.

Interaction – Upload (1)
Interaction – Upload (1)

Once the files have been selected and the dialog has been closed, the uploading process is shown in the list.

Users can cancel individual uploads by pressing the Remove  button provided on each item.

Interaction – Upload (3)
Interaction – Upload (3)

Opening Files

The user can click or tap the icons or thumbnails in front of the attachment. Opening files is handled differently depending on the operating system.

On a desktop device, clicking the file name or icon of a file opens the respective program that has been assigned to this file type. Mobile devices usually open a dialog in which the user can select an app that supports this file type.

Renaming Files

The rename function works identically on desktop and mobile devices.

The user clicks or taps the Rename button.

The file name becomes an input field in which the existing name is highlighted. At the same time, the Rename and Delete buttons are replaced by two options: OK and Cancel.

When the user starts typing, the highlighted text is overwritten. Alternatively, the user can use the mouse or keyboard to change the selected text.

There are three ways in which to validate the new file name:

  • The user clicks or taps somewhere outside the input field to change the focus.
  • The user clicks OK.
  • The user presses ENTER.

Editing Files

If users need to edit more than just the name of uploaded files, applications can implement an edit dialog with all the elements that can be changed by the user.

The image shows an example of how to structure such a dialog. The fields depend entirely on the use case and can be freely determined by each application.

Further details about editing parts of an object in a dialog can be found in the article manage objects – parts of an object. If multiple files need to be edited simultaneously, make sure to follow the guidelines for mass editing.

Interaction - Example of edit dialog
Interaction - Example of edit dialog

Deleting Files

The delete function works identically on desktop and mobile devices.

As soon as the user clicks or taps the Delete button on a file, a dialog appears asking the user to confirm the deletion of the respective file.

The file name has to be specified in the dialog. Delete confirms the deletion and the file is removed from the list. Cancel aborts the process, closes the dialog, and brings the user back to the file list without making any changes.

Interaction – Delete
Interaction – Delete

Custom and Bulk Actions

App developers can introduce their own actions and apply an action to multiple objects (bulk actions).

Place both custom and bulk actions in the toolbar of the upload collection control. For the order of the actions, apply the same rules as for other toolbars.

If you want to use custom or bulk actions, you must use multiple selection (property: mode = MultiSelect). This mode removes the actions from each item. Instead, offer all necessary actions in the toolbar.

Interaction – Multiselection of files
Interaction – Multiselection of files

Handling Duplicates

Some applications may allow duplicate files and file names. This section covers steps to prevent duplicates.

Duplicate File Name During Renaming

In this example, there are two different image files: Product Picture – Front and Product Picture – Back.

The user types in a name that is identical to one that already exists.

When the user clicks OK or tries to remove the focus from the input field, the field is highlighted (semantic color: error).

Duplicate Files During Upload

Information
Duplicate files are not recognized by the upload control. If needed, this feature must be implemented manually.

If a duplicate is recognized during the upload process, a dialog appears that allows the user to do one of the following:

1) This text explains the current conflict (no actions possible).

2) With Upload and replace, the current file is replaced with the newly updated one.

3) With Upload and rename automatically, the current file is kept and an incrementally increasing number is added to the newly uploaded file, such as “Technical Specs_2”.

4) With Skip this file, the file is not uploaded and the current file is kept instead.

5) If Do this for all n conflicts is checked, the selected action is applied to all remaining conflicts.

6) The OK button confirms selected action(s).

7) The Cancel button cancels the entire upload process.

Interaction – Upload duplicate – Details
Interaction – Upload duplicate – Details

Styles

The showSeparators property allows you to display dividers between each item. The default value is All, meaning that all dividers are shown. We recommend that you only turn off the separators if you expect to have just a few items since they can help to maintain a better overview in long lists.

Styles – Separators (default)
Styles – Separators (default)
Styles – No separators
Styles – No separators

Guidelines

When to Show/Deactivate/Hide Actions

Apps can control the visibility and the active state for all actions at item level. This applies to the Edit and Delete buttons.

The properties are as follows:

  • VisibleEdit
  • VisibleDelete
  • EnableEdit
  • EnableDelete

All the properties are set to true by default.

If users are not allowed to edit uploaded files, all the Edit buttons should be set to invisible. The same applies to the Delete function.

Identical actions should be placed directly beneath one another.

Do not leave buttons enabled, only to show an error message informing the user that the function is not available.

Identical actions should always appear beneath one another.

Do
Show identical actions beneath each other
Show identical actions beneath each other

If users are not allowed to use a certain function, these buttons should not be shown at all.

Do
Hide functions if the user doesn't have authorization
Hide functions if the user doesn't have authorization

If certain actions are unavailable in some cases, such as for files from other users, we recommended that you disable these actions.

Do
Disable functions not available for a specific file
Disable functions not available for a specific file

Identical actions should be placed directly beneath one another. In the example opposite, the Delete buttons on the lower two items should be visible but disabled.

Don't
Do not position the same actions differently
Do not position the same actions differently

Do not disable all actions. If users are not allowed to use a certain action, these buttons should not be shown at all.

Don't
Don't disable all actions
Don't disable all actions
Information
If you want users to be able to upload only specific file types, we recommend doing this via mime types.
You should also inform users on the UI about the file types they are allowed to upload.

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

Upload Collection

The upload collection control allows users to upload single or multiple files from a device (desktop, tablet, or phone) to the SAP Fiori app. Typically, uploaded files appear in an Attachments tab. However, files can also be displayed elsewhere.

Information
The upload collection replaces the deprecated sap.ca.ui.FileUpload control. Please refrain from using the old CA control.

Usage

Use the upload collection control if:

  • You want to show a list of uploaded files that can be modified.
  • You want to allow users to add or remove files, and to change the file names.
  • You are still using the old sap.ca.ui.FileUpload control.

Do not use the upload collection control if:

Responsiveness

The upload collection control supports small, medium, and large containers.

Upload collection – Size S
Upload collection – Size S
Upload collection – Size M
Upload collection – Size M
Upload collection – Size L/XL
Upload collection – Size L/XL

Layout

The toolbar at the top of the upload collection control contains an Attachments header with a counter on the left, and an Add button ( ) for adding new items on the right. You can overwrite both the default text Attachments and the counter (property: numberOfAttachmentsText).

Files are listed vertically. Each item has a Rename ( ) and a Remove ( ) button.

While most file types have generic icons (for example documents, spreadsheets, or presentations), image files have a small thumbnail preview.

Layout – Items
Layout – Items

Attributes and Statuses

You can display additional attributes and statuses below the file name. Attributes can include the name of the person who uploaded the file, the upload date, the version number, file size, and so on.

App developers can also set individual statuses. These statuses usually refer to an object’s state in a workflow (such as Approved or Overdue).

If multiple attributes or statuses are displayed, they are separated by a bullet.

Layout – Attributes and statuses
Layout – Attributes and statuses

Types

The upload collection control offers two different modes: UploadCollection and UploadCollectionForPendingUpload.

The classic upload collection allows users to upload single or multiple files directly to the app, where these files are displayed as a list.

In contrast, the upload collection for pending upload requires the user to first add multiple files to a list (usually presented in a dialog) and then explicitly trigger the upload for the entire list.

When the dialog with the list is confirmed, the user returns to the app screen with the upload collection set to busy until the upload is finished.

Behavior and Interaction

Uploading Files

The Add button ( ) triggers a native operating system dialog that allows users to select the files they want to upload. You can decide whether the dialogs should allow users to select multiple items, or only one item.

Interaction – Upload (1)
Interaction – Upload (1)

Once the files have been selected and the dialog has been closed, the uploading process is shown in the list.

Users can cancel individual uploads by pressing the Remove  button provided on each item.

Interaction – Upload (3)
Interaction – Upload (3)

Opening Files

The user can click or tap the icons or thumbnails in front of the attachment. Opening files is handled differently depending on the operating system.

On a desktop device, clicking the file name or icon of a file opens the respective program that has been assigned to this file type. Mobile devices usually open a dialog in which the user can select an app that supports this file type.

Renaming Files

The rename function works identically on desktop and mobile devices.

The user clicks or taps the Rename button.

The file name becomes an input field in which the existing name is highlighted. At the same time, the Rename and Delete buttons are replaced by two options: OK and Cancel.

When the user starts typing, the highlighted text is overwritten. Alternatively, the user can use the mouse or keyboard to change the selected text.

There are three ways in which to validate the new file name:

  • The user clicks or taps somewhere outside the input field to change the focus.
  • The user clicks OK.
  • The user presses ENTER.

Editing Files

If users need to edit more than just the name of uploaded files, applications can implement an edit dialog with all the elements that can be changed by the user.

The image shows an example of how to structure such a dialog. The fields depend entirely on the use case and can be freely determined by each application.

Further details about editing parts of an object in a dialog can be found in the article manage objects – parts of an object. If multiple files need to be edited simultaneously, make sure to follow the guidelines for mass editing.

Interaction - Example of edit dialog
Interaction - Example of edit dialog

Deleting Files

The delete function works identically on desktop and mobile devices.

As soon as the user clicks or taps the Delete button on a file, a dialog appears asking the user to confirm the deletion of the respective file.

The file name has to be specified in the dialog. Delete confirms the deletion and the file is removed from the list. Cancel aborts the process, closes the dialog, and brings the user back to the file list without making any changes.

Interaction – Delete
Interaction – Delete

Clickable Attributes

Object attributes can be made clickable. This can be very helpful to provide users with a direct way to access certain information such as a person’s profile, contact data, or the version history of a file.

Examples:

Uploaded By: John Miller

Last Edited By: Donna Moore

Version 1.1

Do not use more than two or three linked attributes per item. Excessive use of clickable attributes will overload the UI with interactive elements and have a negative impact on usability.

Information
If your attribute is a label or value pair, please notice that currently both label and value are linked (instead of just the value). We plan to separate them into a read-only label and clickable value.

Custom and Bulk Actions

App developers can introduce their own actions and apply an action to multiple objects (bulk actions).

Place both custom and bulk actions in the toolbar of the upload collection control. For the order of the actions, apply the same rules as for other toolbars.

If you want to use custom or bulk actions, you must use multiple selection (property: mode = MultiSelect). This mode removes the actions from each item. Instead, offer all necessary actions in the toolbar.

Interaction – Multiselection of files
Interaction – Multiselection of files

Uploading a New Version

With SAPUI5 version 1.38 and higher, the old version of an upload collection will be automatically replaced when the user uploads a newer version. This change no longer requires the user to delete the old version manually.

To upload a new version, the user needs to select a file and click Upload New Version. This button needs to be provided by the application as a custom action (see previous section). The following dialog (identical to standard uploading procedure) allows the user to pick a new file to replace the old one.

Developer Hint
The parameter UploadCollectionItem can be used to update a file with a newer version. The old version will be removed from the list automatically while the new version is uploaded. For more information, visit UI5 Explored.

Handling Duplicates

Some applications may allow duplicate files and file names. This section covers steps to prevent duplicates.

Duplicate File Name During Renaming

In this example, there are two different image files: Product Picture – Front and Product Picture – Back.

The user types in a name that is identical to one that already exists.

When the user clicks OK or tries to remove the focus from the input field, the field is highlighted (semantic color: error).

Duplicate Files During Upload

Information
Duplicate files are not recognized by the upload control. If needed, this feature must be implemented manually.

If a duplicate is recognized during the upload process, a dialog appears that allows the user to do one of the following:

1) This text explains the current conflict (no actions possible).

2) With Upload and replace, the current file is replaced with the newly updated one.

3) With Upload and rename automatically, the current file is kept and an incrementally increasing number is added to the newly uploaded file, such as “Technical Specs_2”.

4) With Skip this file, the file is not uploaded and the current file is kept instead.

5) If Do this for all n conflicts is checked, the selected action is applied to all remaining conflicts.

6) The OK button confirms selected action(s).

7) The Cancel button cancels the entire upload process.

Interaction – Upload duplicate – Details
Interaction – Upload duplicate – Details

Styles

The showSeparators property allows you to display dividers between each item. The default value is All, meaning that all dividers are shown. We recommend that you only turn off the separators if you expect to have just a few items since they can help to maintain a better overview in long lists.

Styles – Separators (default)
Styles – Separators (default)
Styles – No separators
Styles – No separators

Guidelines

When to Show/Deactivate/Hide Actions

Apps can control the visibility and the active state for all actions at item level. This applies to the Edit and Delete buttons.

The properties are as follows:

  • VisibleEdit
  • VisibleDelete
  • EnableEdit
  • EnableDelete

All the properties are set to true by default.

If users are not allowed to edit uploaded files, all the Edit buttons should be set to invisible. The same applies to the Delete function.

Identical actions should be placed directly beneath one another.

Do not leave buttons enabled, only to show an error message informing the user that the function is not available.

Identical actions should always appear beneath one another.

Do
Show identical actions beneath each other
Show identical actions beneath each other

If users are not allowed to use a certain function, these buttons should not be shown at all.

Do
Hide functions if the user doesn't have authorization
Hide functions if the user doesn't have authorization

If certain actions are unavailable in some cases, such as for files from other users, we recommended that you disable these actions.

Do
Disable functions not available for a specific file
Disable functions not available for a specific file

Identical actions should be placed directly beneath one another. In the example opposite, the Delete buttons on the lower two items should be visible but disabled.

Don't
Do not position the same actions differently
Do not position the same actions differently

Do not disable all actions. If users are not allowed to use a certain action, these buttons should not be shown at all.

Don't
Don't disable all actions
Don't disable all actions
Information
If you want users to be able to upload only specific file types, we recommend doing this via mime types.
You should also inform users on the UI about the file types they are allowed to upload.

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

Upload Collection

The upload collection control allows users to upload single or multiple files from a device (desktop, tablet, or phone) to the SAP Fiori app. Typically, uploaded files appear in an Attachments tab. However, files can also be displayed elsewhere.

Information
The upload collection replaces the deprecated sap.ca.ui.FileUpload control. Please refrain from using the old CA control.

Usage

Use the upload collection control if:

  • You want to show a list of uploaded files that can be modified.
  • You want to allow users to add or remove files, and to change the file names.
  • You are still using the old sap.ca.ui.FileUpload control.

Do not use the upload collection control if:

Responsiveness

The upload collection control supports small, medium, and large containers.

Upload collection – Size S
Upload collection – Size S
Upload collection – Size M
Upload collection – Size M
Upload collection – Size L/XL
Upload collection – Size L/XL

Layout

The toolbar at the top of the upload collection control contains an Attachments header with a counter on the left, and an Add button ( ) for adding new items on the right. You can overwrite both the default text Attachments and the counter (property: numberOfAttachmentsText).

Files are listed vertically. Each item has a Rename ( ) and a Remove ( ) button.

While most file types have generic icons (for example documents, spreadsheets, or presentations), image files have a small thumbnail preview.

Layout – Items
Layout – Items

Attributes and Statuses

You can display additional attributes and statuses below the file name. Attributes can include the name of the person who uploaded the file, the upload date, the version number, file size, and so on.

App developers can also set individual statuses. These statuses usually refer to an object’s state in a workflow (such as Approved or Overdue).

If multiple attributes or statuses are displayed, they are separated by a bullet.

Layout – Attributes and statuses
Layout – Attributes and statuses

Technical Statuses

In contrast to the statuses mentioned above, technical statuses are not bound to a workflow or business process. Their main use is to show the current editing status of an object (Draft, Locked, Unsaved Changes). For further uses and more details see the object display components and draft handling articles.

Layout – Technical statuses
Layout – Technical statuses

Types

The upload collection control offers two different modes: UploadCollection and UploadCollectionForPendingUpload.

The classic upload collection allows users to upload single or multiple files directly to the app, where these files are displayed as a list.

In contrast, the upload collection for pending upload requires the user to first add multiple files to a list (usually presented in a dialog) and then explicitly trigger the upload for the entire list.

When the dialog with the list is confirmed, the user returns to the app screen with the upload collection set to busy until the upload is finished.

Behavior and Interaction

Uploading Files

As long as no files have been added to the upload collection, applications need to show a mock-entry that provides users with a hint on how to upload their files.

Interaction – Upload (1)
Interaction – Upload (1)

The Add button ( ) triggers a native operating system dialog that allows users to select the files they want to upload. You can decide whether the dialogs should allow users to select multiple items, or only one item.

Interaction – Upload (2)
Interaction – Upload (2)

Once the files have been selected and the dialog closes, the uploading progress is shown in the list.

Users can cancel individual uploads by pressing the Remove  button provided on each item.

Interaction – Upload (4)
Interaction – Upload (4)

Opening Files

The user can click or tap the icons or thumbnails in front of the attachment. Opening files is handled differently depending on the operating system.

On a desktop device, clicking the file name or icon of a file opens the respective program that has been assigned to this file type. Mobile devices usually open a dialog in which the user can select an app that supports this file type.

Renaming Files

The rename function works identically on desktop and mobile devices.

The user clicks or taps the Rename (  ) button.

The file name becomes an input field in which the existing name is highlighted. At the same time, the Rename  (  ) and Remove  buttons are replaced by two options: OK and Cancel.

When the user starts typing, the highlighted text is overwritten. Alternatively, the user can use the mouse or keyboard to change the selected text.

There are three ways in which to validate the new file name:

  • The user clicks or taps somewhere outside the input field to change the focus.
  • The user clicks OK.
  • The user presses ENTER.

Editing Files

If users need to edit more than just the name of uploaded files, applications can implement an edit dialog with all the elements that can be changed by the user.

The image shows an example of how to structure such a dialog. The fields depend entirely on the use case and can be freely determined by each application.

Further details about editing parts of an object in a dialog can be found in the article manage objects – parts of an object. If multiple files need to be edited simultaneously, make sure to follow the guidelines for mass editing.

Interaction – Example of edit dialog
Interaction – Example of edit dialog

Deleting Files

The delete function works identically on desktop and mobile devices.

As soon as the user clicks or taps the Remove  button on a file, a dialog appears asking the user to confirm the deletion of the respective file.

The file name has to be specified in the dialog. Delete confirms the deletion and the file is removed from the list. Cancel aborts the process, closes the dialog, and brings the user back to the file list without making any changes.

Interaction – Delete
Interaction – Delete

Clickable Attributes

Object attributes can be made clickable. This can be very helpful to provide users with a direct way to access certain information such as a person’s profile, contact data, or the version history of a file.

Examples:

Uploaded By: John Miller

Last Edited By: Donna Moore

Version 1.1

Do not use more than two or three linked attributes per item. Excessive use of clickable attributes will overload the UI with interactive elements and have a negative impact on usability.

Information
If your attribute is a label or value pair, please notice that currently both label and value are linked (instead of just the value). We plan to separate them into a read-only label and clickable value.

Custom and Bulk Actions

App developers can introduce their own actions and apply an action to multiple objects (bulk actions).

Place both custom and bulk actions in the toolbar of the upload collection control. For the order of the actions, apply the same rules as for other toolbars.

If you want to use custom or bulk actions, you must use multiple selection (property: mode = MultiSelect). This mode removes the actions from each item. Instead, offer all necessary actions in the toolbar.

Interaction – Multi selection
Interaction – Multi selection

Uploading a New Version

With SAPUI5 version 1.38 and higher, the old version of an upload collection will be automatically replaced when the user uploads a newer version. This change no longer requires the user to delete the old version manually.

To upload a new version, the user needs to select a file and click Upload New Version. This button needs to be provided by the application as a custom action (see previous section). The following dialog (identical to standard uploading procedure) allows the user to pick a new file to replace the old one.

Developer Hint
The parameter UploadCollectionItem can be used to update a file with a newer version. The old version will be removed from the list automatically while the new version is uploaded. For more information, visit UI5 Explored.

Handling Duplicates

Some applications may allow duplicate files and file names. This section covers steps to prevent duplicates.

Duplicate File Name During Renaming

In this example, there are two different image files: Product Picture – Front and Product Picture – Back.

Interaction – Validation for renaming (1)
Interaction – Validation for renaming (1)
Interaction – Validation for renaming (2)
Interaction – Validation for renaming (2)

The user types in a name that is identical to one that already exists.

Interaction – Validation for renaming (3)
Interaction – Validation for renaming (3)

When the user clicks OK or tries to remove the focus from the input field, the field is highlighted (semantic color: error).

Interaction – Validation for renaming (4)
Interaction – Validation for renaming (4)

Placing the focus back on the field shows the error message (form field validation).

Interaction – Validation for renaming (5)
Interaction – Validation for renaming (5)

Duplicate Files During Upload

Information
Duplicate files are not recognized by the upload control. If needed, this feature must be implemented manually.

If a duplicate is recognized during the upload process, a dialog appears that allows the user to do one of the following:

1) This text explains the current conflict (no actions possible).

2) With Upload and replace, the current file is replaced with the newly updated one.

3) With Upload and rename automatically, the current file is kept and an incrementally increasing number is added to the newly uploaded file, such as “Technical Specs_2”.

4) With Skip this file, the file is not uploaded and the current file is kept instead.

5) If Do this for all n conflicts is checked, the selected action is applied to all remaining conflicts.

6) The OK button confirms selected action(s).

7) The Cancel button cancels the entire upload process.

Interaction – Upload duplicate – Details
Interaction – Upload duplicate – Details

Styles

The showSeparators property allows you to display dividers between each item. The default value is All, meaning that all dividers are shown. We recommend that you only turn off the separators if you expect to have just a few items since they can help to maintain a better overview in long lists.

Styles – Separators (default)
Styles – Separators (default)
Styles – No separators
Styles – No separators

Guidelines

When to Show/Deactivate/Hide Actions

Apps can control the visibility and the active state for all actions at item level. This applies to the Edit and Delete buttons.

The properties are as follows:

  • VisibleEdit
  • VisibleDelete
  • EnableEdit
  • EnableDelete

All the properties are set to true by default.

If users are not allowed to edit uploaded files, all the Edit buttons should be set to invisible. The same applies to the Delete function.

Identical actions should be placed directly beneath one another.

Do not leave buttons enabled, only to show an error message informing the user that the function is not available.

Identical actions should always appear beneath one another.

Do
Show identical actions beneath each other
Show identical actions beneath each other

If users are not allowed to use a certain function, these buttons should not be shown at all.

Do
Hide functions if the user doesn't have authorization
Hide functions if the user doesn't have authorization

If certain actions are unavailable in some cases, such as for files from other users, we recommended that you disable these actions.

Do
Disable functions not available for a specific file
Disable functions not available for a specific file

Do not disable all actions. If users are not allowed to use a certain action, these buttons should not be shown at all.

Don't
Don't disable all actions
Don't disable all actions

Identical actions should be placed directly beneath one another. In the example opposite, the Remove buttons on the lower two items should be visible but disabled.

Don't
Do not position the same actions differently
Do not position the same actions differently
Information
If you want users to be able to upload only specific file types, we recommend doing this via mime types.
You should also inform users on the UI about the file types they are allowed to upload.

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

Upload Collection

The upload collection control allows users to upload single or multiple files from a device (desktop, tablet, or phone) to the SAP Fiori app. Typically, uploaded files appear in an Attachments tab. However, files can also be displayed elsewhere.

Information
The upload collection replaces the deprecated sap.ca.ui.FileUpload control. Please refrain from using the old CA control.

Usage

Use the upload collection control if:

  • You want to show a list of uploaded files that can be modified.
  • You want to allow users to add or remove files, and to change the file names.
  • You are still using the old sap.ca.ui.FileUpload control.

Do not use the upload collection control if:

Responsiveness

The upload collection control supports small, medium, and large containers.

Upload collection - Size S
Upload collection - Size S
Upload collection - Size M
Upload collection - Size M
Upload collection - Size L
Upload collection - Size L

Layout

The toolbar at the top of the upload collection control has an Attachments header and a counter on the left, and an Add button ( ) for adding new items on the right.

Files are listed vertically. Each item has a Rename ( ) and a Remove ( ) button.

While most file types have generic icons (for example documents, spreadsheets, or presentations), image files have a small thumbnail preview.

Layout – Items
Layout – Items

Behavior and Interaction

Uploading Files

The Add button ( ) triggers a native operating system dialog that allows users to select the files they want to upload. You can decide whether the dialogs should allow users to select multiple items, or only one item.

Interaction – Upload (1)
Interaction – Upload (1)

Once the files have been selected and the dialog has been closed, the uploading process is shown in the list.

Users can cancel individual uploads by pressing the Remove  button provided on each item.

Interaction – Upload (3)
Interaction – Upload (3)
Information
Before version 1.32, all uploads are bundled into a single request. As a result, all uploads show the same progress and, if one of them is cancelled, all of them are aborted. Version 1.32 fixes this.

Opening Files

The user can click or tap the icons or thumbnails in front of the attachment. Opening files is handled differently depending on the operating system.

On a desktop device, clicking the file name or icon of a file opens the respective program that has been assigned to this file type. Mobile devices usually open a dialog in which the user can select an app that supports this file type.

Renaming Files

The rename function works identically on desktop and mobile devices.

The user clicks or taps the Rename button.

The file name becomes an input field in which the existing name is highlighted. At the same time, the Rename and Delete buttons are replaced by two options: OK and Cancel.

When the user starts typing, the highlighted text is overwritten. Alternatively, the user can use the mouse or keyboard to change the selected text.

There are three ways in which to validate the new file name:

  • The user clicks or taps somewhere outside the input field to change the focus.
  • The user clicks OK.
  • The user presses ENTER.

Editing Files

If users need to edit more than just the name of uploaded files, applications can implement an edit dialog with all the elements that can be changed by the user.

The image shows an example of how to structure such a dialog. The fields depend entirely on the use case and can be freely determined by each application.

Further details about editing parts of an object in a dialog can be found in the article manage objects – parts of an object. If multiple files need to be edited simultaneously, make sure to follow the guidelines for mass editing.

Interaction - Example of edit dialog
Interaction - Example of edit dialog

Deleting Files

The delete function works identically on desktop and mobile devices.

As soon as the user clicks or taps the Delete button on a file, a dialog appears asking the user to confirm the deletion of the respective file.

The file name has to be specified in the dialog. Delete confirms the deletion and the file is removed from the list. Cancel aborts the process, closes the dialog, and brings the user back to the file list without making any changes.

Interaction – Delete
Interaction – Delete

Handling Duplicates

Some applications may allow duplicate files and file names. This section covers steps to prevent duplicates.

Duplicate File Name During Renaming

In this example, there are two different image files: Product Picture – Front and Product Picture – Back.

The user types in a name that is identical to one that already exists.

When the user clicks OK or tries to remove the focus from the input field, the field is highlighted (semantic color: error).

Duplicate Files During Upload

Information
Duplicate files are not recognized by the upload control. If needed, this feature must be implemented manually.

If a duplicate is recognized during the upload process, a dialog appears that allows the user to do one of the following:

1) This text explains the current conflict (no actions possible).

2) With Upload and replace, the current file is replaced with the newly updated one.

3) With Upload and rename automatically, the current file is kept and an incrementally increasing number is added to the newly uploaded file, such as “Technical Specs_2”.

4) With Skip this file, the file is not uploaded and the current file is kept instead.

5) If Do this for all n conflicts is checked, the selected action is applied to all remaining conflicts.

6) The OK button confirms selected action(s).

7) The Cancel button cancels the entire upload process.

Interaction – Upload duplicate – Details
Interaction – Upload duplicate – Details

Styles

The showSeparators property allows you to display dividers between each item. The default value is All, meaning that all dividers are shown. We recommend that you only turn off the separators if you expect to have just a few items since they can help to maintain a better overview in long lists.

Styles – Separators (default)
Styles – Separators (default)
Styles – No separators
Styles – No separators

Guidelines

When to Show/Deactivate/Hide Actions

Apps can control the visibility and the active state for all actions at item level. This applies to the Edit and Delete buttons.

The properties are as follows:

  • VisibleEdit
  • VisibleDelete
  • EnableEdit
  • EnableDelete

All the properties are set to true by default.

If users are not allowed to edit uploaded files, all the Edit buttons should be set to invisible. The same applies to the Delete function.

Identical actions should be placed directly beneath one another.

Do not leave buttons enabled, only to show an error message informing the user that the function is not available.

Identical actions should always appear beneath one another.

Do
Show identical actions beneath each other
Show identical actions beneath each other

If users are not allowed to use a certain function, these buttons should not be shown at all.

Do
Hide functions if the user doesn't have authorization
Hide functions if the user doesn't have authorization

If certain actions are unavailable in some cases, such as for files from other users, we recommended that you disable these actions.

Do
Disable functions not available for a specific file
Disable functions not available for a specific file

Identical actions should be placed directly beneath one another. In the example opposite, the Delete buttons on the lower two items should be visible but disabled.

Don't
Do not position the same actions differently
Do not position the same actions differently

Do not disable all actions. If users are not allowed to use a certain action, these buttons should not be shown at all.

Don't
Don't disable all actions
Don't disable all actions
Information
If you want users to be able to upload only specific file types, we recommend doing this via mime types.
You should also inform users on the UI about the file types they are allowed to upload.

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

Upload Collection

The upload collection control allows users to upload single or multiple files from a device (desktop, tablet, or phone) to the SAP Fiori app. Typically, uploaded files appear in an Attachments tab. However, files can also be displayed elsewhere.

Information
The upload collection replaces the deprecated sap.ca.ui.FileUpload control. Please refrain from using the old CA control.

Usage

Use the upload collection control if:

  • You want to show a list of uploaded files that can be modified.
  • You want to allow users to add or remove files, and to change the file names.
  • You are still using the old sap.ca.ui.FileUpload control.

Do not use the upload collection control if:

Responsiveness

The upload collection control supports small, medium, and large containers.

Upload collection – Size S
Upload collection – Size S
Upload collection – Size M
Upload collection – Size M
Upload collection – Size L/XL
Upload collection – Size L/XL

Layout

The toolbar at the top of the upload collection control has an Attachments header and a counter on the left, and an Add button ( ) for adding new items on the right.

Files are listed vertically. Each item has a Rename ( ) and a Remove ( ) button.

While most file types have generic icons (for example documents, spreadsheets, or presentations), image files have a small thumbnail preview.

Layout – Items
Layout – Items

Attributes and Statuses

You can display additional attributes and statuses below the file name. Attributes can include the name of the person who uploaded the file, the upload date, the version number, file size, and so on.

App developers can also set individual statuses. These statuses usually refer to an object’s state in a workflow (such as Approved or Overdue).

If multiple attributes or statuses are displayed, they are separated by a bullet.

Layout – Attributes and statuses
Layout – Attributes and statuses

Types

The upload collection control offers two different modes: UploadCollection and UploadCollectionForPendingUpload.

The classic upload collection allows users to upload single or multiple files directly to the app, where these files are displayed as a list.

In contrast, the upload collection for pending upload requires the user to first add multiple files to a list (usually presented in a dialog) and then explicitly trigger the upload for the entire list.

When the dialog with the list is confirmed, the user returns to the app screen with the upload collection set to busy until the upload is finished.

Behavior and Interaction

Uploading Files

The Add button ( ) triggers a native operating system dialog that allows users to select the files they want to upload. You can decide whether the dialogs should allow users to select multiple items, or only one item.

Interaction – Upload (1)
Interaction – Upload (1)

Once the files have been selected and the dialog has been closed, the uploading process is shown in the list.

Users can cancel individual uploads by pressing the Remove  button provided on each item.

Interaction – Upload (3)
Interaction – Upload (3)
Information
Before version 1.32, all uploads are bundled into a single request. As a result, all uploads show the same progress and, if one of them is cancelled, all of them are aborted. Version 1.32 fixes this.

Opening Files

The user can click or tap the icons or thumbnails in front of the attachment. Opening files is handled differently depending on the operating system.

On a desktop device, clicking the file name or icon of a file opens the respective program that has been assigned to this file type. Mobile devices usually open a dialog in which the user can select an app that supports this file type.

Renaming Files

The rename function works identically on desktop and mobile devices.

The user clicks or taps the Rename button.

The file name becomes an input field in which the existing name is highlighted. At the same time, the Rename and Delete buttons are replaced by two options: OK and Cancel.

When the user starts typing, the highlighted text is overwritten. Alternatively, the user can use the mouse or keyboard to change the selected text.

There are three ways in which to validate the new file name:

  • The user clicks or taps somewhere outside the input field to change the focus.
  • The user clicks OK.
  • The user presses ENTER.

Editing Files

If users need to edit more than just the name of uploaded files, applications can implement an edit dialog with all the elements that can be changed by the user.

The image shows an example of how to structure such a dialog. The fields depend entirely on the use case and can be freely determined by each application.

Further details about editing parts of an object in a dialog can be found in the article manage objects – parts of an object. If multiple files need to be edited simultaneously, make sure to follow the guidelines for mass editing.

Interaction - Example of edit dialog
Interaction - Example of edit dialog

Deleting Files

The delete function works identically on desktop and mobile devices.

As soon as the user clicks or taps the Delete button on a file, a dialog appears asking the user to confirm the deletion of the respective file.

The file name has to be specified in the dialog. Delete confirms the deletion and the file is removed from the list. Cancel aborts the process, closes the dialog, and brings the user back to the file list without making any changes.

Interaction – Delete
Interaction – Delete

Handling Duplicates

Some applications may allow duplicate files and file names. This section covers steps to prevent duplicates.

Duplicate File Name During Renaming

In this example, there are two different image files: Product Picture – Front and Product Picture – Back.

The user types in a name that is identical to one that already exists.

When the user clicks OK or tries to remove the focus from the input field, the field is highlighted (semantic color: error).

Duplicate Files During Upload

Information
Duplicate files are not recognized by the upload control. If needed, this feature must be implemented manually.

If a duplicate is recognized during the upload process, a dialog appears that allows the user to do one of the following:

1) This text explains the current conflict (no actions possible).

2) With Upload and replace, the current file is replaced with the newly updated one.

3) With Upload and rename automatically, the current file is kept and an incrementally increasing number is added to the newly uploaded file, such as “Technical Specs_2”.

4) With Skip this file, the file is not uploaded and the current file is kept instead.

5) If Do this for all n conflicts is checked, the selected action is applied to all remaining conflicts.

6) The OK button confirms selected action(s).

7) The Cancel button cancels the entire upload process.

Interaction – Upload duplicate – Details
Interaction – Upload duplicate – Details

Styles

The showSeparators property allows you to display dividers between each item. The default value is All, meaning that all dividers are shown. We recommend that you only turn off the separators if you expect to have just a few items since they can help to maintain a better overview in long lists.

Styles – Separators (default)
Styles – Separators (default)
Styles – No separators
Styles – No separators

Guidelines

When to Show/Deactivate/Hide Actions

Apps can control the visibility and the active state for all actions at item level. This applies to the Edit and Delete buttons.

The properties are as follows:

  • VisibleEdit
  • VisibleDelete
  • EnableEdit
  • EnableDelete

All the properties are set to true by default.

If users are not allowed to edit uploaded files, all the Edit buttons should be set to invisible. The same applies to the Delete function.

Identical actions should be placed directly beneath one another.

Do not leave buttons enabled, only to show an error message informing the user that the function is not available.

Identical actions should always appear beneath one another.

Do
Show identical actions beneath each other
Show identical actions beneath each other

If users are not allowed to use a certain function, these buttons should not be shown at all.

Do
Hide functions if the user doesn't have authorization
Hide functions if the user doesn't have authorization

If certain actions are unavailable in some cases, such as for files from other users, we recommended that you disable these actions.

Do
Disable functions not available for a specific file
Disable functions not available for a specific file

Identical actions should be placed directly beneath one another. In the example opposite, the Delete buttons on the lower two items should be visible but disabled.

Don't
Do not position the same actions differently
Do not position the same actions differently

Do not disable all actions. If users are not allowed to use a certain action, these buttons should not be shown at all.

Don't
Don't disable all actions
Don't disable all actions
Information
If you want users to be able to upload only specific file types, we recommend doing this via mime types.
You should also inform users on the UI about the file types they are allowed to upload.

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

Upload Collection

The upload collection control allows users to upload single or multiple files from a device (desktop, tablet, or phone) to the SAP Fiori app. Typically, uploaded files appear in an Attachments tab. However, files can also be displayed elsewhere.

Information
The upload collection replaces the deprecated sap.ca.ui.FileUpload control. Please refrain from using the old CA control.

Usage

Use the upload collection control if:

  • You want to show a list of uploaded files that can be modified.
  • You want to allow users to add or remove files, and to change the file names.
  • You are still using the old sap.ca.ui.FileUpload control.

Do not use the upload collection control if:

Responsiveness

The upload collection control supports small, medium, and large containers.

Upload collection – Size S
Upload collection – Size S
Upload collection – Size M
Upload collection – Size M
Upload collection – Size L/XL
Upload collection – Size L/XL

Layout

The toolbar at the top of the upload collection control contains an Attachments header with a counter on the left, and an Add button ( ) for adding new items on the right. You can overwrite both the default text Attachments and the counter (property: numberOfAttachmentsText).

Files are listed vertically. Each item has a Rename ( ) and a Remove ( ) button.

While most file types have generic icons (for example documents, spreadsheets, or presentations), image files have a small thumbnail preview.

Layout – Items
Layout – Items

Attributes and Statuses

You can display additional attributes and statuses below the file name. Attributes can include the name of the person who uploaded the file, the upload date, the version number, file size, and so on.

App developers can also set individual statuses. These statuses usually refer to an object’s state in a workflow (such as Approved or Overdue).

If multiple attributes or statuses are displayed, they are separated by a bullet.

Layout – Attributes and statuses
Layout – Attributes and statuses

Types

The upload collection control offers two different modes: UploadCollection and UploadCollectionForPendingUpload.

The classic upload collection allows users to upload single or multiple files directly to the app, where these files are displayed as a list.

In contrast, the upload collection for pending upload requires the user to first add multiple files to a list (usually presented in a dialog) and then explicitly trigger the upload for the entire list.

When the dialog with the list is confirmed, the user returns to the app screen with the upload collection set to busy until the upload is finished.

Behavior and Interaction

Uploading Files

The Add button ( ) triggers a native operating system dialog that allows users to select the files they want to upload. You can decide whether the dialogs should allow users to select multiple items, or only one item.

Interaction – Upload (1)
Interaction – Upload (1)

Once the files have been selected and the dialog has been closed, the uploading process is shown in the list.

Users can cancel individual uploads by pressing the Remove  button provided on each item.

Interaction – Upload (3)
Interaction – Upload (3)

Opening Files

The user can click or tap the icons or thumbnails in front of the attachment. Opening files is handled differently depending on the operating system.

On a desktop device, clicking the file name or icon of a file opens the respective program that has been assigned to this file type. Mobile devices usually open a dialog in which the user can select an app that supports this file type.

Renaming Files

The rename function works identically on desktop and mobile devices.

The user clicks or taps the Rename button.

The file name becomes an input field in which the existing name is highlighted. At the same time, the Rename and Delete buttons are replaced by two options: OK and Cancel.

When the user starts typing, the highlighted text is overwritten. Alternatively, the user can use the mouse or keyboard to change the selected text.

There are three ways in which to validate the new file name:

  • The user clicks or taps somewhere outside the input field to change the focus.
  • The user clicks OK.
  • The user presses ENTER.

Editing Files

If users need to edit more than just the name of uploaded files, applications can implement an edit dialog with all the elements that can be changed by the user.

The image shows an example of how to structure such a dialog. The fields depend entirely on the use case and can be freely determined by each application.

Further details about editing parts of an object in a dialog can be found in the article manage objects – parts of an object. If multiple files need to be edited simultaneously, make sure to follow the guidelines for mass editing.

Interaction - Example of edit dialog
Interaction - Example of edit dialog

Deleting Files

The delete function works identically on desktop and mobile devices.

As soon as the user clicks or taps the Delete button on a file, a dialog appears asking the user to confirm the deletion of the respective file.

The file name has to be specified in the dialog. Delete confirms the deletion and the file is removed from the list. Cancel aborts the process, closes the dialog, and brings the user back to the file list without making any changes.

Interaction – Delete
Interaction – Delete

Handling Duplicates

Some applications may allow duplicate files and file names. This section covers steps to prevent duplicates.

Duplicate File Name During Renaming

In this example, there are two different image files: Product Picture – Front and Product Picture – Back.

The user types in a name that is identical to one that already exists.

When the user clicks OK or tries to remove the focus from the input field, the field is highlighted (semantic color: error).

Duplicate Files During Upload

Information
Duplicate files are not recognized by the upload control. If needed, this feature must be implemented manually.

If a duplicate is recognized during the upload process, a dialog appears that allows the user to do one of the following:

1) This text explains the current conflict (no actions possible).

2) With Upload and replace, the current file is replaced with the newly updated one.

3) With Upload and rename automatically, the current file is kept and an incrementally increasing number is added to the newly uploaded file, such as “Technical Specs_2”.

4) With Skip this file, the file is not uploaded and the current file is kept instead.

5) If Do this for all n conflicts is checked, the selected action is applied to all remaining conflicts.

6) The OK button confirms selected action(s).

7) The Cancel button cancels the entire upload process.

Interaction – Upload duplicate – Details
Interaction – Upload duplicate – Details

Styles

The showSeparators property allows you to display dividers between each item. The default value is All, meaning that all dividers are shown. We recommend that you only turn off the separators if you expect to have just a few items since they can help to maintain a better overview in long lists.

Styles – Separators (default)
Styles – Separators (default)
Styles – No separators
Styles – No separators

Guidelines

When to Show/Deactivate/Hide Actions

Apps can control the visibility and the active state for all actions at item level. This applies to the Edit and Delete buttons.

The properties are as follows:

  • VisibleEdit
  • VisibleDelete
  • EnableEdit
  • EnableDelete

All the properties are set to true by default.

If users are not allowed to edit uploaded files, all the Edit buttons should be set to invisible. The same applies to the Delete function.

Identical actions should be placed directly beneath one another.

Do not leave buttons enabled, only to show an error message informing the user that the function is not available.

Identical actions should always appear beneath one another.

Do
Show identical actions beneath each other
Show identical actions beneath each other

If users are not allowed to use a certain function, these buttons should not be shown at all.

Do
Hide functions if the user doesn't have authorization
Hide functions if the user doesn't have authorization

If certain actions are unavailable in some cases, such as for files from other users, we recommended that you disable these actions.

Do
Disable functions not available for a specific file
Disable functions not available for a specific file

Identical actions should be placed directly beneath one another. In the example opposite, the Delete buttons on the lower two items should be visible but disabled.

Don't
Do not position the same actions differently
Do not position the same actions differently

Do not disable all actions. If users are not allowed to use a certain action, these buttons should not be shown at all.

Don't
Don't disable all actions
Don't disable all actions
Information
If you want users to be able to upload only specific file types, we recommend doing this via mime types.
You should also inform users on the UI about the file types they are allowed to upload.

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

Carousel

The carousel is a control for browsing through a set of items. It always displays one item at a time. From the displayed item, the user can navigate to either the next or the previous item. The interaction resembles browsing through the pages of a book.

Optionally, a paging indicator displays the user’s current position inside the set of items.

The control is best known for browsing through a set of images, as it works best when the single items are represented in a way that the user can easily distinguish. Nonetheless, the carousel is not limited to displaying images; it can contain every sap.m control.

Usage

Use the carousel if:

  • You have strong visual representations of the items you want to display.
  • You want to display the items one after the other.

Do not use the carousel if:

  • The items you want to display need to be visible at the same time.
  • The items you want to display are uniform.

Responsiveness

The size of the control’s content area is automatically adjusted to the amount of space available.

When used in non-touch mode, the user can navigate with forward and backward icons displayed on the left and right side of the control.

On touch devices, the carousel control makes use of the swipe gesture to navigate through the items. Therefore, the forward and backward icons are not displayed on touch devices.

The paging indicator (when activated) is visible on each form factor. The paging indicator wraps if not all items fit in one line.

Carousel (size S)
Carousel (size S)

Carousel (size M)
Carousel (size M)

Carousel (size L)
Carousel (size L)

Layout

The carousel control mainly consists of a content area in which the different items are displayed and cycled through.

Optionally, a paging indicator can be displayed floating either above the top or at the bottom of the content area.

On non-touch devices, icons for navigating to the next or previous item are displayed floating above the left and right side of the content area.

Schematic layout of carousel
Schematic layout of carousel

Behavior and Interaction

The current item is displayed in the content area.

Navigating

When the user navigates from a displayed item to another item, the item is moved out of the content area and the next or previous item (depending on the direction of navigation) appears with a sliding transition.

On touch devices, navigation is performed with swipe gestures (swipe right or swipe left).

On non-touch devices, navigation is provided by icons.

When the item set contains only one item, the navigation is deactivated.

Navigation to previous item
Navigation to previous item
Forward navigation
Forward navigation

Looping

The carousel can be set to loop (property: loop). In this case, the carousel jumps back to the first item once all items have been displayed. If looping is not enabled, there is no forward navigation on the last item.

Paging

The current position inside the set of items is displayed using an optional paging indicator (properties: showPageIndicator, pageIndicatorPlacement).

Paging indicator
Paging indicator

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

  • No links

Implementation

Carousel

The carousel is a control for browsing through a set of items. It always displays one item at a time. From the displayed item, the user can navigate to either the next or the previous item. The interaction resembles browsing through the pages of a book.

Optionally, a paging indicator displays the user’s current position inside the set of items.

The control is best known for browsing through a set of images, as it works best when the single items are represented in a way that the user can easily distinguish. Nonetheless, the carousel is not limited to displaying images; it can contain every sap.m control.

Usage

Use the carousel if:

  • You have strong visual representations of the items you want to display.
  • You want to display the items one after the other.

Do not use the carousel if:

  • The items you want to display need to be visible at the same time.
  • The items you want to display are uniform.

Responsiveness

The size of the control’s content area is automatically adjusted to the amount of space available.

When used in non-touch mode, the user can navigate with forward and backward icons displayed on the left and right side of the control.

On touch devices, the carousel control makes use of the swipe gesture to navigate through the items. Therefore, the forward and backward icons are not displayed on touch devices.

The paging indicator (when activated) is visible on each form factor. The paging indicator wraps if not all items fit in one line.

Carousel (size S)
Carousel (size S)

Carousel (size M)
Carousel (size M)

Carousel (size L)
Carousel (size L)

Layout

The carousel control mainly consists of a content area in which the different items are displayed and cycled through.

Optionally, a paging indicator can be displayed floating either above the top or at the bottom of the content area.

On non-touch devices, icons for navigating to the next or previous item are displayed floating above the left and right side of the content area.

Schematic layout of carousel
Schematic layout of carousel

Behavior and Interaction

The current item is displayed in the content area.

Navigating

When the user navigates from a displayed item to another item, the item is moved out of the content area and the next or previous item (depending on the direction of navigation) appears with a sliding transition.

On touch devices, navigation is performed with swipe gestures (swipe right or swipe left).

On non-touch devices, navigation is provided by icons.

When the item set contains only one item, the navigation is deactivated.

Navigation – Previous
Navigation – Previous
Navigation – Next (hover)
Navigation – Next (hover)

Looping

The carousel can be set to loop (property: loop). In this case, the carousel jumps back to the first item once all items have been displayed. If looping is not enabled, there is no forward navigation on the last item.

Paging

The current position inside the set of items is displayed using an optional paging indicator (properties: showPageIndicator, pageIndicatorPlacement).

Paging indicator
Paging indicator

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

  • No links

Implementation

Rating Indicator

The rating indicator can be used to rate content or to indicate a rating. It enables users to rate an item on a numeric scale. The most popular scale is 1 (lowest) to 5 (highest).

Rating indicator
Rating indicator

Responsiveness

The rating indicator runs on all form factors and therefore works on all devices. It is embedded in a container and thus behaves as part of it.

Rating indicator as part of the form – Size S (for example, smartphone)
Rating indicator as part of the form – Size S (for example, smartphone)
Rating indicator as part of the form – Sizes M and L (for example, tablet and desktop)
Rating indicator as part of the form – Sizes M and L (for example, tablet and desktop)

Layout

Context

Use the rating indicator in forms, tables, or in a dialog box.

Rating indicator as part of a form
Rating indicator as part of a form
Rating indicator as part of a table
Rating indicator as part of a table
Rating indicator as part of a dialog box
Rating indicator as part of a dialog box

Popover with Details

In collaborative rating scenarios, the rating indicator shows an average of all ratings. You may show the sum of ratings in brackets behind the rating indicator as a text or link. You may also add a popover that shows the detailed ratings for the average of all ratings.

Details for rating in popover
Details for rating in popover

Behavior and Interaction

Hover

When the user hovers over the rating indicator, a different icon or image is shown (property: iconHovered). This is an orange star by default.

Select

If enabled for rating, the rating that the user previously selected is shown. When the user performs a rating, an event is triggered.

Properties

Rating Symbols

You can also specify the URLs for the images or icons that are used as rating symbols (property: iconUnselected). Five star symbols are used by default. Although you can use other images or icons, we generally recommend that you use the star symbol. You can only choose 1 symbol for the unselected and 1 for the hovered state.

Number of Rating Symbols

You can specify the number of rating symbols (property: maxValue). We recommend using a maximum of 7 symbols, although 5 symbols are preferred.

Float Values

Float values can be visualized as a half or full star (property: visualMode).

Size of Rating Symbols

The recommended sizes of the image or icon to be displayed are:

  • Small: 1 rem (16 px)
  • Normal: 1.375 rem (22 px) – default
  • Large: 2 rem (32 px)
Possible sizes of rating indicator: small, medium, large
Possible sizes of rating indicator: small, medium, large

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

  • No links

Implementation

Select

The select control (also known as a dropdown) is commonly used to enable users to select an item from a predefined list.

Usage

Use select if:

  • Users need to select one item exclusively from a short list of options (for example, fewer than 12 items).
  • The values of the option list are of secondary importance and do not need to be displayed right away.

Do not use select if:

  • Users need to choose between two options, such as On or Off and Yes or No. In this case, consider using a switch control instead.
  • Users need to pick one item from a very large set of options. In this case, consider using the combo box instead.
  • You need to display more than one attribute. In this case, consider using the input field with a select dialog or a value help dialog instead.
  • The user needs to search on multiple attributes. In this case, consider using the input field with select dialog or value help dialog instead.
  • Your use case requires all available options to be displayed right away, without any user interaction. In this case, consider using radio buttons or a radio button group instead.

Responsiveness

The display of the select control depends on the device. On smartphones, the selection list takes up the whole screen. On desktop and tablet devices, it appears as a popover.

Size S

Select option list in full screen (size S)
Select option list in full screen (size S)

Size M

Select option list – The option list opens above the field if there is not enough space below it (size M)
Select option list – The option list opens above the field if there is not enough space below it (size M)

Size L

Select option list – The option list opens above the field if there is not enough space below it (size L)
Select option list – The option list opens above the field if there is not enough space below it (size L)

Layout

The select control can be placed in toolbars, such as chart toolbarsfooter toolbars, or header toolbars, as well as in forms or tables:

Components

Select Trigger

The trigger to open the option list is either the Select field (1), which also displays the current selection, or an icon (3).

Option List

The option list (2) displays all the items available to the user. The selection is always highlighted. Selecting another option from the list moves the highlight to the selected option.

Anatomy of the select control
Anatomy of the select control

Behavior and Interaction

Clicking/Tapping

The Select field always displays the current selection. The user clicks or taps the field to display a list of options to choose from. Once the user selects an option, the list box closes and the selected option is displayed in the field. If there is no Select field but an icon, the user clicks the icon to open the list of options. The currently selected item is always highlighted in the list to help the user identify what has been selected.

Guidelines

Option List

The option list contains text values only. Keep the text values as short as possible because the list uses single lines only. Values that are too long may be truncated.

If you need to indicate that none of the selection options are selected, or you need to allow the user not to select an option, provide (None) (1) as an option and place it at the beginning of the list.

If you need to indicate that all items apply, for example, as a list filter, provide All as an option and place it at the beginning of the list.

If your use case requires a blank input field instead of (None), use a combo box instead.

If the select control is placed in a toolbar as an icon-only version for grouping or filtering a set of items, consider the following guideline:

Sort, Group, and Filter:

  • (Not sorted)
    Note: In most cases, this option is not necessary; just show the default sort settings instead.
  • (Not filtered)
  • (Not grouped)

For more information about the toolbar, see toolbar overview.

Define a default selection whenever possible (2). If the selected item is not specified, the first one is selected.

(1) Selection option list with (None); (2) first value selected
(1) Selection option list with (None); (2) first value selected

Label

The select control can be displayed with or without a label. If the field is attached to another field, you do not need to define a second label.

Information

Do not provide a blank value to indicate that nothing is selected.

Sorting

The sort option list contains all the items that are available to the user. Choose one of the following styles to order the content:

Logical: Sort items into a meaningful order. Group related options together and show the most common options first, followed by less common options. Sort the options alphabetically if more than eight select options are available. This helps the user find the right option quickly.

Example of logical sorting
Example of logical sorting

Alphabetical: Sort currencies, names, and similar content alphabetically.

Example of alphabetical sorting
Example of alphabetical sorting

Numeric: Sort numeric values into a sequential order, with the lowest number first.

Example of numeric sorting
Example of numeric sorting

Chronological: Sort time-related information into chronological order, with the most recent first.

Example of chronological sorting
Example of chronological sorting

Width

You can adjust the width of the option list to some extent. The width of the select control is set to Auto by default, while the maximum width is set to 100%. The option list adapts its length to the longest entry by default.

The select control is usually used in forms, where the width is determined by the form element or container in which the select control is embedded. Therefore, we do not recommend defining a fixed width, but rather working with proper layout containers, like the form, simple form, or responsive grid layout, and with the layout data property, where the width is defined.

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

Do not allow the control to auto-adjust based on the selection.

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

Information
If localized text is not an issue, such as with currency codes, consider using a smaller width.

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

Select

The select control (also known as a dropdown) is commonly used to enable users to select an item from a predefined list.

Usage

Use select if:

  • Users need to select one item exclusively from a short list of options (for example, fewer than 12 items).
  • The values of the option list are of secondary importance and do not need to be displayed right away.

Do not use select if:

  • Users need to choose between two options, such as On or Off and Yes or No. In this case, consider using a switch control instead.
  • Users need to pick one item from a very large set of options. In this case, consider using the combo box instead.
  • You need to display more than one attribute. In this case, consider using the input field with a select dialog or a value help dialog instead.
  • The user needs to search on multiple attributes. In this case, consider using the input field with select dialog or value help dialog instead.
  • Your use case requires all available options to be displayed right away, without any user interaction. In this case, consider using radio buttons or a radio button group instead.
Do
(Left) Sort items with more than eight entries alphabetically; (Right) Sort units into a logical order if the list does not exceed eight items.
(Left) Sort items with more than eight entries alphabetically; (Right) Sort units into a logical order if the list does not exceed eight items.
Don't
(Left) Incorrect alphabetical order instead of logical order; (Right) Incorrect control for selecting elements.
(Left) Incorrect alphabetical order instead of logical order; (Right) Incorrect control for selecting elements.

Responsiveness

The display of the select control depends on the device. On smartphones, the selection list takes up the whole screen. On desktop and tablet devices, it appears as a popover.

Size S

Select option list in full screen (size S)
Select option list in full screen (size S)

Size M

Select option list – The option list opens above the field if there is not enough space below it (size M)
Select option list – The option list opens above the field if there is not enough space below it (size M)

Size L

Select option list – The option list opens above the field if there is not enough space below it (size L)
Select option list – The option list opens above the field if there is not enough space below it (size L)

Layout

The select control can be placed in toolbars, such as chart toolbarsfooter toolbars, or header toolbars, as well as in forms or tables:

Components

Select Trigger

The trigger to open the option list is either the Select field (1), which also displays the current selection, or an icon (3).

Option List

The option list (2) displays all the items available to the user. The selection is always highlighted. Selecting another option from the list moves the highlight to the selected option.

Anatomy of the select control
Anatomy of the select control

Select Trigger

The trigger to open the option list is either the Select field (1), which also displays the current selection, or an icon (3).

Option List

The option list (2) displays all the items available to the user. The selection is always highlighted. Selecting another option from the list moves the highlight to the selected option.

Anatomy of the select control
Anatomy of the select control

Behavior and Interaction

Clicking/Tapping

The Select field always displays the current selection. The user clicks or taps the field to display a list of options to choose from. Once the user selects an option, the list box closes and the selected option is displayed in the field. If there is no Select field but an icon, the user clicks the icon to open the list of options. The currently selected item is always highlighted in the list to help the user identify what has been selected.

Guidelines

Option List

The option list contains text values only. Keep the text values as short as possible because the list uses single lines only. Values that are too long may be truncated.

If you need to indicate that none of the selection options are selected, or you need to allow the user not to select an option, provide (None) (1) as an option and place it at the beginning of the list.

If you need to indicate that all items apply, for example, as a list filter, provide All as an option and place it at the beginning of the list.

If your use case requires a blank input field instead of (None), use a combo box instead.

If the select control is placed in a toolbar as an icon-only version for grouping or filtering a set of items, consider the following guideline:

Sort, Group, and Filter:

  • (Not sorted)
    Note: In most cases, this option is not necessary; just show the default sort settings instead.
  • (Not filtered)
  • (Not grouped)

For more information about the toolbar, see toolbar overview.

Define a default selection whenever possible (2). If the selected item is not specified, the first one is selected.

(1) Selection option list with (None); (2) first value selected
(1) Selection option list with (None); (2) first value selected

Label

The select control can be displayed with or without a label. If the field is attached to another field, you do not need to define a second label.

Information

Do not provide a blank value to indicate that nothing is selected.

Sorting

The sort option list contains all the items that are available to the user. Choose one of the following styles to order the content:

Logical: Sort items into a meaningful order. Group related options together and show the most common options first, followed by less common options. Sort the options alphabetically if more than eight select options are available. This helps the user find the right option quickly.

Example of logical sorting
Example of logical sorting

Alphabetical: Sort currencies, names, and similar content alphabetically.

Example of alphabetical sorting
Example of alphabetical sorting

Numeric: Sort numeric values into a sequential order, with the lowest number first.

Example of numeric sorting
Example of numeric sorting

Chronological: Sort time-related information into chronological order, with the most recent first.

Example of chronological sorting
Example of chronological sorting

Width

You can adjust the width of the option list to some extent. The width of the select control is set to Auto by default, while the maximum width is set to 100%. The option list adapts its length to the longest entry by default.

The select control is usually used in forms, where the width is determined by the form element or container in which the select control is embedded. Therefore, we do not recommend defining a fixed width, but rather working with proper layout containers, like the form, simple form, or responsive grid layout, and with the layout data property, where the width is defined.

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

Do not allow the control to auto-adjust based on the selection.

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

Information
If localized text is not an issue, such as with currency codes, consider using a smaller width.

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

Action Sheet

An action sheet consists of a list of options from which the user can select to complete an action. Actions can be clustered if there is not enough space on the screen.

Responsiveness

The action sheet is fully responsive. On phones, the actions are displayed as a list inside a dialog. On tablets and desktop devices, the actions are displayed in a popover.

Size S (Smartphone)

Action sheet dialog
Action sheet dialog

Size M (Tablet)

Action sheet popover
Action sheet popover

Size L (Desktop)

Action sheet popover
Action sheet popover

Layout

All elements in the action sheet are left-aligned. Actions are always arranged in order of importance, from top to bottom. The Cancel button uses a negative button type and is centered to differentiate it from the other app actions.

Action sheet popover
Action sheet popover
Action sheet popover
Action sheet popover

Components

The following UI elements can be placed in the action sheet:

Behavior and Interaction

Clicking/Tapping

Depending on the device, a click or tap on the overflow icon (“…”) opens either a popover or a dialog. The user can trigger an action or close the action sheet by clicking or tapping anywhere on the screen. On a phone, the dialog can be closed only with the Cancel button.

If the user triggers an action, the action sheet closes automatically and the system provides a message toast.

Guidelines

  • Never use only icons in the action sheet. Display text only or a combination of icons and text.
  • On smartphones, you must provide a Cancel button to enable the user to close the dialog without triggering an action.
  • Avoid scrolling in actions sheets. If you include too many buttons in an action sheet, users have to scroll to see all the actions in the list. Not only does it take users longer to distinguish between actions, but they also find it difficult to scroll without tapping a button by mistake.
Action sheet dialog
Action sheet 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

Action Sheet

An action sheet consists of a list of options from which the user can select to complete an action. Actions can be clustered if there is not enough space on the screen.

Responsiveness

The action sheet is fully responsive. On phones, the actions are displayed as a list inside a dialog. On tablets and desktop devices, the actions are displayed in a popover.

Size S (Smartphone)

Action sheet dialog
Action sheet dialog

Size M (Tablet)

Action sheet popover
Action sheet popover

Size L (Desktop)

Action sheet popover
Action sheet popover

Layout

All elements in the action sheet are left-aligned. Actions are always arranged in order of importance, from top to bottom. The Cancel button uses a negative button type and is centered to differentiate it from the other app actions.

Action sheet popover
Action sheet popover
Action sheet popover
Action sheet popover

Components

The following UI elements can be placed in the action sheet:

Behavior and Interaction

Clicking/Tapping

Depending on the device, a click or tap on the overflow icon (“…”) opens either a popover or a dialog. The user can trigger an action or close the action sheet by clicking or tapping anywhere on the screen. On a phone, the dialog can be closed only with the Cancel button.

If the user triggers an action, the action sheet closes automatically and the system provides a message toast.

Guidelines

  • Never use only icons in the action sheet. Display text only or a combination of icons and text.
  • On smartphones, you must provide a Cancel button to enable the user to close the dialog without triggering an action.
  • Avoid scrolling in actions sheets. If you include too many buttons in an action sheet, users have to scroll to see all the actions in the list. Not only does it take users longer to distinguish between actions, but they also find it difficult to scroll without tapping a button by mistake.
Action sheet dialog
Action sheet 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

Select

The select control (also known as a dropdown) is commonly used to enable users to select an item from a predefined list.

Usage

Use select if:

  • Users need to select one item exclusively from a short list of options (for example, fewer than 12 items).
  • The values of the option list are of secondary importance and do not need to be displayed right away.

Do not use select if:

  • Users need to choose between two options, such as On or Off and Yes or No. In this case, consider using a switch control instead.
  • Users need to pick one item from a very large set of options. In this case, consider using the combo box instead.
  • You need to display more than one attribute. In this case, consider using the input field with a select dialog or a value help dialog instead.
  • The user needs to search on multiple attributes. In this case, consider using the input field with select dialog or value help dialog instead.
  • Your use case requires all available options to be displayed right away, without any user interaction. In this case, consider using radio buttons or a radio button group instead.
Do
(Left) Sort items with more than eight entries alphabetically; (Right) Sort units into a logical order if the list does not exceed eight items.
(Left) Sort items with more than eight entries alphabetically; (Right) Sort units into a logical order if the list does not exceed eight items.
Don't
(Left) Incorrect alphabetical order instead of logical order; (Right) Incorrect control for selecting elements.
(Left) Incorrect alphabetical order instead of logical order; (Right) Incorrect control for selecting elements.

Responsiveness

The display of the select control depends on the device. On smartphones, the selection list takes up the whole screen. On desktop and tablet devices, it appears as a popover.

Size S

Select option list in full screen (size S)
Select option list in full screen (size S)

Size M

Select option list – The option list opens above the field if there is not enough space below it (size M)
Select option list – The option list opens above the field if there is not enough space below it (size M)

Size L

Select option list – The option list opens above the field if there is not enough space below it (size L)
Select option list – The option list opens above the field if there is not enough space below it (size L)

Layout

The select control can be placed in toolbars, such as chart toolbarsfooter toolbars, or header toolbars, as well as in forms or tables:

Select control placed in a chart toolbar
Select control placed in a chart toolbar
Select control placed in a form
Select control placed in a form
Pressed state in a footer toolbar (sizes M and L)
Pressed state in a footer toolbar (sizes M and L)
Pressed state in a header toolbar (sizes M and L)
Pressed state in a header toolbar (sizes M and L)
Select control placed in a table
Select control placed in a table

Components

Select Trigger

The trigger to open the option list is either the Select field (1), which also displays the current selection, or an icon (3).

Option List

The option list (2) displays all the items available to the user. The selection is always highlighted. Selecting another option from the list moves the highlight to the selected option.

Anatomy of the select control
Anatomy of the select control

Select Trigger

The trigger to open the option list is either the Select field (1), which also displays the current selection, or an icon (3).

Option List

The option list (2) displays all the items available to the user. The selection is always highlighted. Selecting another option from the list moves the highlight to the selected option.

Anatomy of the select control
Anatomy of the select control

Behavior and Interaction

Clicking/Tapping

The Select field always displays the current selection. The user clicks or taps the field to display a list of options to choose from. Once the user selects an option, the list box closes and the selected option is displayed in the field. If there is no Select field but an icon, the user clicks the icon to open the list of options. The currently selected item is always highlighted in the list to help the user identify what has been selected.

Guidelines

Option List

The option list contains text values only. Keep the text values as short as possible because the list uses single lines only. Values that are too long may be truncated.

If you need to indicate that none of the selection options are selected, or you need to allow the user not to select an option, provide (None) (1) as an option and place it at the beginning of the list.

If you need to indicate that all items apply, for example, as a list filter, provide All as an option and place it at the beginning of the list.

If your use case requires a blank input field instead of (None), use a combo box instead.

If the select control is placed in a toolbar as an icon-only version for grouping or filtering a set of items, consider the following guideline:

Sort, Group, and Filter:

  • (Not sorted)
    Note: In most cases, this option is not necessary; just show the default sort settings instead.
  • (Not filtered)
  • (Not grouped)

For more information about the toolbar, see toolbar overview.

Define a default selection whenever possible (2). If the selected item is not specified, the first one is selected.

(1) Selection option list with (None); (2) first value selected
(1) Selection option list with (None); (2) first value selected

Label

The select control can be displayed with or without a label. If the field is attached to another field, you do not need to define a second label.

Information

Do not provide a blank value to indicate that nothing is selected.

Sorting

The sort option list contains all the items that are available to the user. Choose one of the following styles to order the content:

Logical: Sort items into a meaningful order. Group related options together and show the most common options first, followed by less common options. Sort the options alphabetically if more than eight select options are available. This helps the user find the right option quickly.

Example of logical sorting
Example of logical sorting

Alphabetical: Sort currencies, names, and similar content alphabetically.

Example of alphabetical sorting
Example of alphabetical sorting

Numeric: Sort numeric values into a sequential order, with the lowest number first.

Example of numeric sorting
Example of numeric sorting

Chronological: Sort time-related information into chronological order, with the most recent first.

Example of chronological sorting
Example of chronological sorting

Width

You can adjust the width of the option list to some extent. The width of the select control is set to Auto by default, while the maximum width is set to 100%. The option list adapts its length to the longest entry by default.

The select control is usually used in forms, where the width is determined by the form element or container in which the select control is embedded. Therefore, we do not recommend defining a fixed width, but rather working with proper layout containers, like the form, simple form, or responsive grid layout, and with the layout data property, where the width is defined.

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

Do not allow the control to auto-adjust based on the selection.

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

Information
If localized text is not an issue, such as with currency codes, consider using a smaller width.

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

Action Sheet

An action sheet consists of a list of options from which the user can select to complete an action. Actions can be clustered if there is not enough space on the screen.

Responsiveness

The action sheet is fully responsive. On phones, the actions are displayed as a list inside a dialog. On tablets and desktop devices, the actions are displayed in a popover.

Size S (Smartphone)

Action sheet dialog
Action sheet dialog

Size M (Tablet)

Action sheet popover
Action sheet popover

Size L (Desktop)

Action sheet popover
Action sheet popover

Layout

All elements in the action sheet are left-aligned. Actions are always arranged in order of importance, from top to bottom. The Cancel button uses a negative button type and is centered to differentiate it from the other app actions.

Action sheet popover
Action sheet popover
Action sheet popover
Action sheet popover

Components

The following UI elements can be placed in the action sheet:

Behavior and Interaction

Clicking/Tapping

Depending on the device, a click or tap on the overflow icon (“…”) opens either a popover or a dialog. The user can trigger an action or close the action sheet by clicking or tapping anywhere on the screen. On a phone, the dialog can be closed only with the Cancel button.

If the user triggers an action, the action sheet closes automatically and the system provides a message toast.

Guidelines

  • Never use only icons in the action sheet. Display text only or a combination of icons and text.
  • On smartphones, you must provide a Cancel button to enable the user to close the dialog without triggering an action.
  • Avoid scrolling in actions sheets. If you include too many buttons in an action sheet, users have to scroll to see all the actions in the list. Not only does it take users longer to distinguish between actions, but they also find it difficult to scroll without tapping a button by mistake.
Action sheet dialog
Action sheet 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

Select Dialog

The select dialog enables users to select one or more items from a comprehensive list. The select dialog comes with a list of entries and a search field to filter the list.

A more enhanced dialog for single selection and multiselection is the value help dialog as it offers range selection and excluding functions.

Usage

Use the select dialog if:

  • Users need to select one or more entries from a comprehensive list that contains multiple attributes or values.

Do not use the select dialog if:

  • Users need to pick one item from a predefined set of options that contains one attribute or value only such as languages. In this case, consider using the combo box or select instead.
  • Your use case requires more enhanced functionalities such as a selection based on ranges. For the selection of values, consider using the value help dialog instead.
  • Your use case requires tabs, filters, or an Add New functionality in the select dialog. In this case, use a standard dialog instead.

Responsiveness

The display of the select control depends on the device. On phones, the selection list takes up the whole screen. On desktop and tablet devices it appears as a popover.

Size S

Single-select dialog in full screen on smartphone
Single-select dialog in full screen on smartphone
Multi-select dialog in full screen on smartphone
Multi-select dialog in full screen on smartphone

Size M

Single-select dialog on tablet
Single-select dialog on tablet
Multi-select dialog on tablet
Multi-select dialog on tablet

Size L

Single-select dialog on desktop
Single-select dialog on desktop
Multi-select dialog on desktop
Multi-select dialog on desktop

Components

Dialog Header

You need to set the title of the dialog header (1). We recommend the following form:

Single selection

Select <Entity>

Example: Select Product

Multi-selection

Select <Entities>

Example: Select Products

Search

The first element in the dialog is a standard search field (2).

Info Toolbar

The info toolbar (3) is only available in multi-selection mode. It shows the number of selected items in the following form:

Selected <Entities>: <Number>

Example: Selected Products: 2

Content

The content area (4) can be filled with any list content inherited from the list item base, such as standard list items, display list items, and feed list items. You can set the content to be displayed as grouped.

Button Toolbar

The button toolbar (5) contains two buttonsOK and Cancel. OK takes over the selection, while Cancel resets the selection to the state it was in when the dialog was opened. Do not use Add or Select instead of OK.

Components of the select dialog – Left: single select; right: multi select
Components of the select dialog – Left: single select; right: multi select

Behavior and Interaction

The select dialog can be called up from any control. The most common trigger is an input field with selection icon, also known as a “value help field”, or F4. Alternative triggers are buttons or icons, which add items to an existing list or the info bar in the master list in order to apply a contextual filter.

Single Select

Once users select an entry, the select dialog is closed and the selected entry is taken over. If applicable, the entry is displayed in the field from which the dialog was triggered.

Multi-Select

In the multi-select version of the select dialog, checkboxes are provided for choosing multiple entries. The selection is taken over when the user closes the dialog via OK. Cancel closes the dialog without taking over the selected values. An infobar indicates the number of selected items.

Search

The user can search items.

Guidelines

Search Behavior

There are two types of search behaviors available:

(1) A live search, also known as “search-as-you-type” (property: liveChange), which is triggered by each character that the user enters or deletes.

(2) A manual search, which is triggered explicitly after the user enters text in the search field and clicks or taps the Search icon or presses the Enter key.

App developers need to decide which search to use. We recommend implementing the live search whenever possible. Use the manual search only if the amount of data is too large and your app would otherwise run into performance issues. For more information, check out the article on searching.

Remembering Selections

If your use case requires the memorization of selections in a dialog in order to allow for corrections, you can set the rememberSelections function in the select dialog to true. When users exit the dialog with cancel, the selection is restored to the state when the dialog was opened.

Selection is remembered after reopening the dialog
Selection is remembered after reopening the dialog

By default, the selection is reset once the dialog is closed. This allows a new selection when opening the dialog again. As an example, this functionality makes sense when users need to add multiple items to a table.

Selection is reset after closing the dialog
Selection is reset after closing the 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

  • No links

Select Dialog

The select dialog enables users to select one or more items from a comprehensive list. The select dialog comes with a list of entries and a search field to filter the list.

A more enhanced dialog for single selection and multiselection is the value help dialog as it offers range selection and excluding functions.

Usage

Use the select dialog if:

  • Users need to select one or more entries from a comprehensive list that contains multiple attributes or values.

Do not use the select dialog if:

  • Users need to pick one item from a predefined set of options that contains one attribute or value only such as languages. In this case, consider using the combo box or select instead.
  • Your use case requires more enhanced functionalities such as a selection based on ranges. For the selection of values, consider using the value help dialog instead.
  • Your use case requires tabs, filters, or an Add New functionality in the select dialog. In this case, use a standard dialog instead.

Responsiveness

The display of the select control depends on the device. On phones, the selection list takes up the whole screen. On desktop and tablet devices it appears as a popover.

Size S

Single-select dialog in full screen on smartphone
Single-select dialog in full screen on smartphone
Multi-select dialog in full screen on smartphone
Multi-select dialog in full screen on smartphone

Size M

Single-select dialog on tablet
Single-select dialog on tablet
Multi-select dialog on tablet
Multi-select dialog on tablet

Size L

Single-select dialog on desktop
Single-select dialog on desktop
Multi-select dialog on desktop
Multi-select dialog on desktop

Components

Dialog Header

You need to set the title of the dialog header (1). We recommend the following form:

Single selection

Select <Entity>

Example: Select Product

Multi-selection

Select <Entities>

Example: Select Products

Search

The first element in the dialog is a standard search field (2).

Info Toolbar

The info toolbar (3) is only available in multi-selection mode. It shows the number of selected items in the following form:

Selected <Entities>: <Number>

Example: Selected Products: 2

Content

The content area (4) can be filled with any list content inherited from the list item base, such as standard list items, display list items, and feed list items. You can set the content to be displayed as grouped.

Button Toolbar

The button toolbar (5) contains two buttonsOK and Cancel. OK takes over the selection, while Cancel resets the selection to the state it was in when the dialog was opened. Do not use Add or Select instead of OK.

Components of the select dialog – Left: single select; right: multi select
Components of the select dialog – Left: single select; right: multi select

Behavior and Interaction

The select dialog can be called up from any control. The most common trigger is an input field with selection icon, also known as a “value help field”, or F4. Alternative triggers are buttons or icons, which add items to an existing list or the info bar in the master list in order to apply a contextual filter.

Single Select

Once users select an entry, the select dialog is closed and the selected entry is taken over. If applicable, the entry is displayed in the field from which the dialog was triggered.

Multi-Select

In the multi-select version of the select dialog, checkboxes are provided for choosing multiple entries. The selection is taken over when the user closes the dialog via OK. Cancel closes the dialog without taking over the selected values. An infobar indicates the number of selected items.

Search

The user can search items.

Guidelines

Search Behavior

Two types of search behavior are available:

(1) A live search, also known as “search-as-you-type” (property: liveChange), which is triggered by each character that the user enters or deletes

(2) A manual search, which is triggered explicitly after the user enters text in the search field and clicks or taps the Search icon or presses the Enter key

App developers need to decide which search to use. We recommend implementing the live search whenever possible. Use the manual search only if the amount of data is too large and your app would otherwise run into performance issues. For more information, check out the Search article.

Remember Selections

If your use case requires selections in a dialog to be remembered so that the user can make corrections, you can set the rememberSelections function in the select dialog to ‘true’. When users exit the dialog by clicking or tapping Cancel, the selection is restored to the state it was in when the dialog was opened.

Selection is remembered after the dialog is reopened
Selection is remembered after the dialog is reopened

Once the dialog is closed, the selection is reset by default. This allows users to make a new selection when they reopen the dialog. This functionality makes sense, for example, when users need to add multiple items to a table.

Selection is reset after the dialog is closed
Selection is reset after the dialog is closed

Resources

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

Elements and Controls

Implementation

  • No links

Select Dialog

The select dialog enables users to select one or more items from a comprehensive list. The select dialog comes with a list of entries and a search field to filter the list.

A more enhanced dialog for single selection and multiselection is the value help dialog as it offers range selection and excluding functions.

Usage

Use the select dialog if:

  • Users need to select one or more entries from a comprehensive list that contains multiple attributes or values.

Do not use the select dialog if:

  • Users need to pick one item from a predefined set of options that contains one attribute or value only such as languages. In this case, consider using the combo box or select instead.
  • Your use case requires more enhanced functionalities such as a selection based on ranges. For the selection of values, consider using the value help dialog instead.
  • Your use case requires tabs, filters, or an Add New functionality in the select dialog. In this case, use a standard dialog instead.

Responsiveness

The display of the select control depends on the device. On phones, the selection list takes up the whole screen. On desktop and tablet devices it appears as a popover.

Size S

Single select dialog in full screen on smartphone
Single select dialog in full screen on smartphone
Multi-select dialog in full screen on smartphone
Multi-select dialog in full screen on smartphone

Size M

Single select dialog on tablet
Single select dialog on tablet
Multi-select dialog on tablet
Multi-select dialog on tablet

Size L

Single select dialog on desktop
Single select dialog on desktop
Multi-select dialog on desktop
Multi-select dialog on desktop

Components

Dialog Header

You need to set the title of the dialog header (1). We recommend the following form:

Single selection

Select <Entity>

Example: Select Product

Multi-selection

Select <Entities>

Example: Select Products

Search

The first element in the dialog is a standard search field (2).

Info Toolbar

The info toolbar (3) is only available in multi-selection mode. It shows the number of selected items in the following form:

Selected <Entities>: <Number>

Example: Selected Products: 2

Content

The content area (4) can be filled with any list content inherited from the list item base, such as standard list items, display list items, and feed list items. You can set the content to be displayed as grouped.

Button Toolbar

The button toolbar (5) contains two buttonsOK and Cancel. OK takes over the selection, while Cancel resets the selection to the state it was in when the dialog was opened. Do not use Add or Select instead of OK.

Components of the select dialog. Left: single select, right: multi select
Components of the select dialog. Left: single select, right: multi select

Behavior and Interaction

The select dialog can be called up from any control. The most common trigger is an input field with selection icon, also known as a “value help field”, or F4. Alternative triggers are buttons or icons, which add items to an existing list or the info bar in the master list in order to apply a contextual filter.

Single Select

Once users select an entry, the select dialog is closed and the selected entry is taken over. If applicable, the entry is displayed in the field from which the dialog was triggered.

Multi-Select

In the multi-select version of the select dialog, checkboxes are provided for choosing multiple entries. The selection is taken over when the user closes the dialog via OK. Cancel closes the dialog without taking over the selected values. An info bar indicates the number of selected items.

Search

The user can search items.

Guidelines

Search Behavior

Two types of search behavior are available:

(1) A live search, also known as “search-as-you-type” (property: liveChange), which is triggered by each character that the user enters or deletes

(2) A manual search, which is triggered explicitly after the user enters text in the search field and clicks or taps the Search icon or presses the Enter key

Although app developers need to decide themselves which search to use, we recommend implementing the live search whenever possible. Use the manual search only if the amount of data is too large and your app would otherwise run into performance issues. For more information, check out the article on search.

Remember Selections

If your use case requires selections in a dialog to be remembered so that the user can make corrections, you can set the rememberSelections function in the select dialog to ‘true’. When users exit the dialog by clicking or tapping Cancel, the selection is restored to the state it was in when the dialog was opened.

Selection is remembered after the dialog is reopened
Selection is remembered after the dialog is reopened

Once the dialog is closed, the selection is reset by default. This allows users to make a new selection when they reopen the dialog. This functionality makes sense, for example, when users need to add multiple items to a table.

Selection is reset after the dialog is closed
Selection is reset after the dialog is closed

Resources

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

Elements and Controls

Implementation

  • No links

Multi-Input Field

A multi-input field allows the user to enter multiple values, which are displayed as tokens. These can be displayed in single and multiline mode. To help the user enter a valid value, you can enable the autocomplete suggestions feature and the value help option.

Usage

Use the multi-input field if:

  • You want the user to select multiple ranges (with the value help option and the value help dialog).
  • The data set to choose from is expected to increase over time (for example, to more than 200 values).
  • You need to provide the value help option to help users select or search multiple business objects.

Do not use the multi-input field if:

  • You want the user to select one entry only. In this case, use the input field or combo box instead.
  • You want the user to select from a pre-defined set of options only. In this case, use the multi-combo box instead.

Responsiveness

In the examples below, the autocomplete feature is shown in different sizes for single and multiline modes.

Single Line Mode (Default)

Size S (Smartphones)

  • Cozy mode.
  • When the user taps the multi-input field, a new full-screen dialog opens in which the autocomplete suggestions can be selected. When the user makes a selection, the dialog closes and the token is displayed.
  • The user can review the tokens by swiping them to the left or right.
Autocomplete feature on a smartphone (size S)
Autocomplete feature on a smartphone (size S)
Users can review tokens by swiping left and right on touch devices
Users can review tokens by swiping left and right on touch devices

Size M (Tablets)

  • Cozy mode.
  • The user can review tokens by swiping them to the left or right.
  • The autocomplete suggestions appear below or above the multi-input field.
Autocomplete on a tablet (size M)
Autocomplete on a tablet (size M)

Size L (Desktops)

  • Compact mode.
  • The user can review tokens by pressing the right or left arrows on the keyboard.
  • The autocomplete suggestions appear below or above the multi-input field.
Autocomplete on a desktop (size L)
Autocomplete on a desktop (size L)

Multiline Mode

Size S (Smartphones)

  • Cozy mode.
  • When the user taps the multi-input field, a new full-screen dialog opens in which the suggested items can be selected. When the user makes a selection within that dialog, the token is displayed in the input field. When the user enters a new search term, the display area of the token is replaced by the autocomplete suggestions.
Smartphone multiline mode – Closed
Smartphone multiline mode – Closed
Smartphone multiline mode – Open
Smartphone multiline mode – Open
Autocomplete on smartphone - Multiline mode
Autocomplete on smartphone - Multiline mode

Size M (Tablets)

  • Cozy mode.
  • When the user taps or focuses on the multi-input field, the single-line field expands to a multiline field. All tokens are displayed.
Tablet multiline mode – No token selcted
Tablet multiline mode – No token selcted
Tablet multiline mode active – Expanded
Tablet multiline mode active – Expanded
Tablet multiline mode – Suggest
Tablet multiline mode – Suggest

Size L (Desktops)

  • Compact mode.
  • When the user focuses on the multi-input field, it expands to a multiline field.
  • The autocomplete suggestions open below the multi-input field.
Desktop multiline mode – Not focused
Desktop multiline mode – Not focused
Desktop multiline mode active – Expanded
Desktop multiline mode active – Expanded
Desktop multiline mode – Suggest
Desktop multiline mode – Suggest

Types

The input types of the multi-input are identical to those of the input field. For more information, see input field.

Behavior and Interaction

Single Line Mode

Adding a Token

The user can add a token via autocomplete suggestions or value help. When an item is selected from the autocomplete box, the corresponding token is created. The input is ready for the next entry. Tokens are placed next to each other on one line.

Developer Hint
Values that are entered can also be tokenized when the user presses Enter. The app development team can perform a custom validation of the entered data and decide whether a token should be created.

Reviewing Tokens

The user can review tokens by using the left or right cursor keys on a desktop, or by swiping to the left or right on a smartphone or tablet.

Left/right keyboard cursor
Left/right keyboard cursor
Swiping left/right on a touch device
Swiping left/right on a touch device

Deleting Tokens

The user can delete tokens by pressing the Backspace or Delete button (when selected) on a desktop’s keyboard, or by tapping the Delete icon on a mobile device.

Using Value Help

You can enable the value help option to provide a more advanced dialog for finding the relevant business object. Two dialogs can be used at present:

Multiline Mode

Single line mode is active by default, so to activate multiline mode, you need to enable it (property: enableMultiLineMode).

Adding Token

The user can add a token via autocomplete suggestions or value help. The token is created by selecting an item from the autocomplete box. The input is ready for the next entry. Tokens are placed next to each other. If there is not enough space on one line, the control expands.

Reviewing Tokens

When the multi-input field is not focused, it is shown in collapsed mode. The token that was entered last is displayed. If there is more than one token, the number of hidden tokens is shown next to the last token.

When tokens are entered into the multi-input field, the control expands to show all tokens. On screen size S, a new dialog is opened to review the tokens.

Copying and Pasting Data from a Spreadsheet or Text File

The multi-input control can handle paste actions containing, for example, multiple items that have been selected in a column of a spreadsheet or text file. The user simply selects a whole column in the spreadsheet and copies it. When items are entered into the multi-input field, the user just pastes them from the clipboard and each item is represented as a token.

Guidelines

  • Use the multiline mode instead of the single line mode (default). This provides greater flexibility for displaying multiple tokens.
  • Give the control a width that is appropriate for the range of values that are going to be entered. Try to avoid setting a fixed width on this control. Instead, embed it in a proper layout (such as a form, simple form, or grid layout) and work with the layout data property.
  • Provide meaningful labels for all input fields. Do not use the placeholder as a replacement for the label. The placeholder should only provide an additional hint.
  • The multi-input field can currently contain tokens and one free text value. If you allow only validated values, display an error or warning when the user tries to leave the field to indicate that the value entered is invalid, or remove the value.

Properties

Since the multi-input field is derived from the input field, refer to the properties in the input field 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

Multi-Input Field

A multi-input field allows the user to enter multiple values, which are displayed as tokens. These can be displayed in single and multiline mode. To help the user enter a valid value, you can enable the autocomplete suggestions feature and the value help option.

Usage

Use the multi-input field if:

  • You want the user to select multiple ranges (with the value help option and the value help dialog).
  • The data set to choose from is expected to increase over time (for example, to more than 200 values).
  • You need to provide the value help option to help users select or search multiple business objects.

Do not use the multi-input field if:

  • You want the user to select one entry only. In this case, use the input field or combo box instead.
  • You want the user to select from a pre-defined set of options only. In this case, use the multi-combo box instead.

Responsiveness

In the examples below, the autocomplete feature is shown in different sizes for single and multiline modes.

Single Line Mode (Default)

Size S (Smartphones)

  • Cozy mode.
  • When the user taps the multi-input field, a new full-screen dialog opens in which the autocomplete suggestions can be selected. When the user makes a selection, the dialog closes and the token is displayed.
  • The user can review the tokens by swiping them to the left or right.
Autocomplete feature on a smartphone (size S)
Autocomplete feature on a smartphone (size S)
Users can review tokens by swiping left and right on touch devices
Users can review tokens by swiping left and right on touch devices

Size M (Tablets)

  • Cozy mode.
  • The user can review tokens by swiping them to the left or right.
  • The autocomplete suggestions appear below or above the multi-input field.
Autocomplete on a tablet (size M)
Autocomplete on a tablet (size M)

Size L (Desktops)

  • Compact mode.
  • The user can review tokens by pressing the right or left arrows on the keyboard.
  • The autocomplete suggestions appear below or above the multi-input field.
Autocomplete on a desktop (size L)
Autocomplete on a desktop (size L)

Multiline Mode

Size S (Smartphones)

  • Cozy mode.
  • When the user taps the multi-input field, a new full-screen dialog opens in which the suggested items can be selected. When the user makes a selection within that dialog, the token is displayed in the input field. When the user enters a new search term, the display area of the token is replaced by the autocomplete suggestions.
Smartphone multiline mode – Closed
Smartphone multiline mode – Closed
Smartphone multiline mode – Open
Smartphone multiline mode – Open
Autocomplete on smartphone - Multiline mode
Autocomplete on smartphone - Multiline mode

Size M (Tablets)

  • Cozy mode.
  • When the user taps or focuses on the multi-input field, the single-line field expands to a multiline field. All tokens are displayed.
Tablet multiline mode – No token selcted
Tablet multiline mode – No token selcted
Tablet multiline mode active – Expanded
Tablet multiline mode active – Expanded
Tablet multiline mode – Suggest
Tablet multiline mode – Suggest

Size L (Desktops)

  • Compact mode.
  • When the user focuses on the multi-input field, it expands to a multiline field.
  • The autocomplete suggestions open below the multi-input field.
Desktop multiline mode – Not focused
Desktop multiline mode – Not focused
Desktop multiline mode active – Expanded
Desktop multiline mode active – Expanded
Desktop multiline mode – Suggest
Desktop multiline mode – Suggest

Types

The input types of the multi-input are identical to those of the input field. For more information, see input field.

Behavior and Interaction

Single Line Mode

Adding a Token

The user can add a token via autocomplete suggestions or value help. When an item is selected from the autocomplete box, the corresponding token is created. The input is ready for the next entry. Tokens are placed next to each other on one line.

Developer Hint
Values that are entered can also be tokenized when the user presses Enter. The app development team can perform a custom validation of the entered data and decide whether a token should be created.

Reviewing Tokens

The user can review tokens by using the left or right cursor keys on a desktop, or by swiping to the left or right on a smartphone or tablet.

Left/right keyboard cursor
Left/right keyboard cursor
Swiping left/right on a touch device
Swiping left/right on a touch device

Deleting Tokens

The user can delete tokens by pressing the Backspace or Delete button (when selected) on a desktop’s keyboard, or by tapping the Delete icon on a mobile device.

Using Value Help

You can enable the value help option to provide a more advanced dialog for finding the relevant business object. Two dialogs can be used at present:

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

Multiline Mode

Single line mode is active by default, so to activate multiline mode, you need to enable it (property: enableMultiLineMode).

Adding Token

The user can add a token via autocomplete suggestions or value help. The token is created by selecting an item from the autocomplete box. The input is ready for the next entry. Tokens are placed next to each other. If there is not enough space on one line, the control expands.

Reviewing Tokens

When the multi-input field is not focused, it is shown in collapsed mode. The token that was entered last is displayed. If there is more than one token, the number of hidden tokens is shown next to the last token.

When tokens are entered into the multi-input field, the control expands to show all tokens. On screen size S, a new dialog is opened to review the tokens.

Copying and Pasting Data from a Spreadsheet or Text File

The multi-input control can handle paste actions containing, for example, multiple items that have been selected in a column of a spreadsheet or text file. The user simply selects a whole column in the spreadsheet and copies it. When items are entered into the multi-input field, the user just pastes them from the clipboard and each item is represented as a token.

Guidelines

  • Use the multiline mode instead of the single line mode (default). This provides greater flexibility for displaying multiple tokens.
  • Give the control a width that is appropriate for the range of values that are going to be entered. Try to avoid setting a fixed width on this control. Instead, embed it in a proper layout (such as a form, simple form, or grid layout) and work with the layout data property.
  • Provide meaningful labels for all input fields. Do not use the placeholder as a replacement for the label. The placeholder should only provide an additional hint.
  • The multi-input field can currently contain tokens and one free text value. If you allow only validated values, display an error or warning when the user tries to leave the field to indicate that the value entered is invalid, or remove the value.

Properties

Since the multi-input field is derived from the input field, refer to the properties in the input field 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

Multi-Input Field

A multi-input field allows the user to enter multiple values, which are displayed as tokens. These can be displayed in single and multiline mode. To help the user enter a valid value, you can enable the autocomplete suggestions feature and the value help option.

Usage

Use the multi-input field if:

  • You want the user to select multiple ranges (with the value help option and the value help dialog).
  • The data set to choose from is expected to increase over time (for example, to more than 200 values).
  • You need to provide the value help option to help users select or search multiple business objects.

Do not use the multi-input field if:

  • You want the user to select one entry only. In this case, use the input field or combo box instead.
  • You want the user to select from a pre-defined set of options only. In this case, use the multi-combo box instead.

Responsiveness

In the examples below, the autocomplete feature is shown in different sizes for single and multiline modes.

Single Line Mode (Default)

Size S (Smartphones)

  • Cozy mode.
  • When the user taps the multi-input field, a new full-screen dialog opens in which the autocomplete suggestions can be selected. When the user makes a selection, the dialog closes and the token is displayed.
  • The user can review the tokens by swiping them to the left or right.
Autocomplete feature on a smartphone (size S)
Autocomplete feature on a smartphone (size S)
Users can review tokens by swiping left and right on touch devices
Users can review tokens by swiping left and right on touch devices

Size M (Tablets)

  • Cozy mode.
  • The user can review tokens by swiping them to the left or right.
  • The autocomplete suggestions appear below or above the multi-input field.
Autocomplete on a tablet (size M)
Autocomplete on a tablet (size M)

Size L (Desktops)

  • Compact mode.
  • The user can review tokens by pressing the right or left arrows on the keyboard.
  • The autocomplete suggestions appear below or above the multi-input field.
Autocomplete on a desktop (size L)
Autocomplete on a desktop (size L)

Multiline Mode

Size S (Smartphones)

  • Cozy mode.
  • When the user taps the multi-input field, a new full-screen dialog opens in which the suggested items can be selected. When the user makes a selection within that dialog, the token is displayed in the input field. When the user enters a new search term, the display area of the token is replaced by the autocomplete suggestions.
Smartphone multiline mode – Closed
Smartphone multiline mode – Closed
Smartphone multiline mode – Open
Smartphone multiline mode – Open
Autocomplete on smartphone - Multiline mode
Autocomplete on smartphone - Multiline mode

Size M (Tablets)

  • Cozy mode.
  • When the user taps or focuses on the multi-input field, the single-line field expands to a multiline field. All tokens are displayed.
Tablet multiline mode – No token selcted
Tablet multiline mode – No token selcted
Tablet multiline mode active – Expanded
Tablet multiline mode active – Expanded
Tablet multiline mode – Suggest
Tablet multiline mode – Suggest

Size L (Desktops)

  • Compact mode.
  • When the user focuses on the multi-input field, it expands to a multiline field.
  • The autocomplete suggestions open below the multi-input field.
Desktop multiline mode – Not focused
Desktop multiline mode – Not focused
Desktop multiline mode active – Expanded
Desktop multiline mode active – Expanded
Desktop multiline mode – Suggest
Desktop multiline mode – Suggest

Types

The input types of the multi-input are identical to those of the input field. For more information, see input field.

Behavior and Interaction

Single Line Mode

Adding a Token

The user can add a token via autocomplete suggestions or value help. When an item is selected from the autocomplete box, the corresponding token is created. The input is ready for the next entry. Tokens are placed next to each other on one line.

Developer Hint
Values that are entered can also be tokenized when the user presses ENTER. The app development team can perform a custom validation of the entered data and decide whether a token should be created.
Adding tokens
Adding tokens
Adding a second token
Adding a second token
Information
For information on how to manage leading and treading whitespace (blanks) when copying and pasting text into input controls, please see removing leading and trailing whitespace.

Reviewing Tokens

The user can review tokens by using the left or right cursor keys on a desktop, or by swiping to the left or right on a smartphone or tablet.

Left/right keyboard cursor
Left/right keyboard cursor
Swiping left and right on a touch device
Swiping left and right on a touch device

Deleting Tokens

The user can delete tokens by pressing the Backspace or Del button (when selected) on a desktop’s keyboard, or by tapping the Delete icon on a mobile device.

Deleting tokens
Deleting tokens

Using Value Help

You can enable the value help option to provide a more advanced dialog for finding the relevant business object. Two dialogs can be used at present:

Value help with select dialog
Value help with select dialog
Value help with value help dialog
Value help with value help dialog

Multiline Mode

Single line mode is active by default, so to activate multiline mode, you need to enable it (property: enableMultiLineMode).

Adding a Token

The user can add a token via autocomplete suggestions or value help. The token is created by selecting an item from the autocomplete box. The input is ready for the next entry. Tokens are placed next to each other. If there is not enough space on one line, the control expands.

Adding a token
Adding a token

Reviewing Tokens

When the multi-input field is not focused, it is shown in collapsed mode. The token that was entered last is displayed. If there is more than one token, the number of hidden tokens is shown next to the last token.

When tokens are entered into the multi-input field, the control expands to show all tokens. On screen size S, a new dialog is opened to review the tokens.

Reviewing tokens
Reviewing tokens

Copying and Pasting Data from a Spreadsheet or Text File

The multi-input control can handle paste actions containing, for example, multiple items that have been selected in a column of a spreadsheet or text file. The user simply selects a whole column in the spreadsheet and copies it. When items are entered into the multi-input field, the user just pastes them from the clipboard and each item is represented as a token.

Guidelines

  • Use the multiline mode instead of the single line mode (default). This provides greater flexibility for displaying multiple tokens.
  • Give the control a width that is appropriate for the range of values that are going to be entered. Try to avoid setting a fixed width on this control. Instead, embed it in a proper layout (such as a form, simple form, or grid layout) and work with the layout data property.
  • Provide meaningful labels for all input fields. Do not use the placeholder as a replacement for the label. The placeholder should only provide an additional hint.
  • The multi-input field can currently contain tokens and one free text value. If you allow only validated values, display an error or warning when the user tries to leave the field to indicate that the value entered is invalid, or remove the value.

Properties

Since the multi-input field is derived from the input field, refer to the properties in the input field 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

Object Status

The object status is a short text that represents the semantic status of an object. It has a semantic color and an optional icon. As such, you will mostly find the object status in the object header and in the table as a status attribute of a line item.

Usage

Use the object status if:

  • You need to display the semantic status of an object: negative (property: error), critical (property: warning), positive (property: success), or neutral (property: none).
  • You need to indicate that the current object instance is locked by another user.

Do not use the object status if:

  • You want to use it for decoration.
  • You want to display system messages.

Responsiveness

The object status wraps if it becomes too long for the screen width available.

Components

The object status consists of the following:

  • A semantically colored text (property: text)
  • An optional icon (property: icon)
  • A title that serves as a label (property: title)

It is mainly used with semantically colored text only.

Semantic colors
Semantic colors

Guidelines

  • Use semantic text only and avoid using it with an icon.
  • Use the following semantics to indicate the status: negative (property: error), critical (property: warning), positive (property: success), or neutral (property: none).
Use semantic text only
Use semantic text only
  • Only use icons that are unambiguous and easily understood, such as the locked item icon. If you think your icon would need a descriptive text to be understood, use text only.
  • In the case of locked items, you may add some information about who currently has access to the locked item in question.
Locked status
Locked status
Status indicating that the item is locked by a certain user
Status indicating that the item is locked by a certain user
  • Do not use the title of the object status outside the object header. Even though both wrap, you should keep the text as short as possible.
Avoid long titles and text if possible
Avoid long titles and text if possible
  • When an object status is used in a table, it should be center-aligned. 

Object status should be aligned to the center
Object status should be aligned to the center

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

No link

Implementation

Object Number

The object number is a short text that represents the numeric (key) attribute of an object and its unit. The number has a semantic color, and the unit inherits the same color from its number. The number can be displayed in emphasized format (default) when used for the key attribute, and non-emphasized when used for any other numeric attribute of the item.

The object number is mostly used to indicate the key attribute of an object in the object header and in the table as an attribute of a line item.

Usage

Use the object number if:

  • You want to display the key attribute of an object. (In this case, keep the emphasized  default setting (property: emphasized).)
  • You need to display one or more numeric attributes of an object that, for example, you want to compare (property: emphasized set to false).

Do not use the object number if:

  • You want to use it for decoration.
  • You want to display system messages.

Responsiveness

The object number does not wrap or truncate. For large numbers, you need to consider using the appropriate formatting.

Components

The object number consists of the following:

  • A semantically colored text (property: number), which can be set to non-emphasized when used in the content area (property: emphasized)
  • An optional unit (property: unit)
Example
Example

Guidelines

Use the following semantics to indicate the status: negative (property: error), critical (property: warning), positive (property: success), neutral (property: none).

Neutral object number (856.74 euro) used as key attribute in the object header
Neutral object number (856.74 euro) used as key attribute in the object header

If the object number is the key attribute of the object inside the content area, the number should be shown emphasized when used as line item status in a table.

Object number with key attribute
Object number with key attribute

The object number can also be used to visualize other semantic numeric attributes. In that case they are not emphasized, unless they are the key attribute (e.g. a sum).

Object number used as attribute (weight) and as as key attribute (price)
Object number used as attribute (weight) and as as key attribute (price)

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

No link

Implementation

Object Header

Information
Do not use the object header control for the object page floorplan. For object pages, always use the snapping header control.

The object header usually represents an object instance. As such, it contains the most important information a user needs to see in order to understand what the object is about and what its status is. It is the first control on a page dedicated to a single object instance, usually the object view or flat object view.

The control can also be used as the header of other pages, such as a full screen. In that case, the object header contains the most important aggregated information of the items that are listed below.

Usage

Use the object header:

  • As the first component on a page that handles a single object instance (object view or flat object view) to enable the user identify it easily.
  • As the header of other pages, such as a full screen. In this case, the object header contains the most important aggregated information of the items that are listed below.

Do not use the object header:

  • Inside the content area as a work-around for visualizing something that is not possible with current means.

Responsiveness

The object header generally adjusts to different screen sizes. To achieve this, there is a built-in rule set that defines which content wraps or truncates when necessary, and how attributes and status texts are arranged depending on the screen size.

The object header has two flags that influence its appearance and resizing behavior: Responsive and FullScreenOptimized.
Object header – Split-screen layout (Responsive = true, FullScreenOptimized = false)
Object header – Split-screen layout (Responsive = true, FullScreenOptimized = false)

Responsive

As of SAPUI5 1.28, the app team should generally set the Responsive flag to ‘true’. In this case, the attributes are the first set of entries in the header, followed by the second set of statuses. The on-screen distribution differs from previous SAPUI5 versions. Even if there are many attributes and only a few statuses, use of the space is now optimized as the entries fill the respective columns equally.

Object header – Smartphone size (Responsive = true, FullScreenOptimized = false)
Object header – Smartphone size (Responsive = true, FullScreenOptimized = false)

Full Screen Optimized

The second attribute, FullScreenOptimized, should be activated when the header makes full use of the screen width and is not used in a split-screen layout.

Object header – Full screen optimized (responsive = true, FullScreenOptimized = true)
Object header – Full screen optimized (responsive = true, FullScreenOptimized = true)

Attribute/Status Distribution

The following table shows how the attributes are distributed automatically when the Responsive flag is set to ‘true’ on various screen sizes.

Screen Size 2 Attributes 3 Attributes 4 Attributes 5+ Attributes
Desktop (full screen) Next to the title area (1 column of 1-2 attributes) Next to the title area (1 column of 3 attributes) Underneath the title area (4 columns split by 1/1/1/1) Underneath the title area (4 columns split by 2/1/1/1)
Desktop (split screen layout) Underneath (2 columns split by 1/1 Underneath (2 columns split by 2/1) Underneath (2 columns split by 2/2) Underneath (3 columns split by 2/2/1)
Tablet (full screen – landscape) Underneath (2 columns split by 1/1) Underneath (3 columns split by 1/1/1) Underneath (3 columns split by 2/1/1) Underneath (3 columns split by 2/2/1)
Tablet (split screen layout) or Tablet (full screen – portrait) Underneath (2 columns split by 1/1) Underneath (2 columns split by 2/1) Underneath (2 columns split by 2/2) Underneath (2 columns split by 3/2)
Smartphone Underneath (1 column of 1-2 attributes) Underneath (1 column of 3 attributes) Underneath (1 column of 4 attributes) Underneath (1 column of 5+ attributes)

Prior to SAPUI5 1.28 (Responsive Set to ‘False’)

The Responsive flag is deactivated by default in apps that were built before SAPUI5 1.28. As mentioned above, this mainly impacts the attributes and status arrangement. If the Responsive flag is turned off, all attributes are left-aligned in the object header and all statuses are right-aligned, regardless of their individual number.
The object header still reacts correctly to resizing, but does not make optimal use of the space available.

For example, three attributes and one status with Responsive and FullScreenOptimized both set to ‘false’ results in two columns: the first (left) column contains three attributes, and the other column (right) has one status.  Altogether, this is three rows in height, whereas the same number of entries on a desktop full screen with the two flags set to ‘true’ results in a height of just one row (spread over four columns).

Components

Title

  • The object header has a mandatory title that serves as the key identifier of the object instance (property: title).
  • Long titles wrap once before they truncate on the second line.
  • A title can be actionable (property: titleActionable), in which case, it looks like a link and triggers an event, which usually results in a quick view.
  • An additional icon or image that identifies the object (property: icon) can be shown in front of the title. The icon or image can also be set to actionable (property: IconActionable).
  • Additionally, the title can show a title selector (which is visualized like a menu). It is mainly used to provide navigation targets, allowing the object to be opened in a different app.
Object header (Responsive=false) – Title not actionable
Object header (Responsive=false) – Title not actionable
Object header (Responsive=false) – Title actionable
Object header (Responsive=false) – Title actionable
Object header (Responsive=false) – Title selector
Object header (Responsive=false) – Title selector

Object Number

  • The object number contains the key attribute of the object instance.
  • The object number consists of text that represents the key attribute of an object, usually a number (property: number) and its unit (property: numberUnit). The object number has a semantic color (property: state). The unit inherits the semantic color of its number.
  • As usual in SAP Fiori, the semantic colors available are negative (property: error), critical (property: warning), positive (property: success), and neutral (property: none).
Object header (Responsive=false) – Negative object number
Object header (Responsive=false) – Negative object number

Object Attribute

  • The object header can contain 0 to n attributes (property: objectAttribute).
  • The attributes are listed first in the list of attributes in the object header.
  • Attributes can be text (property: text) or actionable (property: actionable), in which case, they are rendered similar to links.
Object header (Responsive=false) – Attribute active
Object header (Responsive=false) – Attribute active

Object Status

  • The object header can contain a list of 0 to n object statuses (property: objectStatus).
  • The statuses are listed as the second set of attributes in the object header.
  • The status has a semantic color.
  • Statuses can be text or icons. A combination of the two is technically also possible, in which case, the icon is placed in front of the text. We generally recommend that you use text only (see guidelines below).
  • A progress indicator may also be shown as a status. If used, the progress indicator should be the last item in the list of statuses.

Object header (Responsive=true) – one object marker, three object attributes, and one object status
Object header (Responsive=true) – one object marker, three object attributes, and one object status

Object Marker

The object marker allows you to express the technical status of an object.

  • Objects can be flagged and marked as favorites. The object header provides flags for both (properties: markFavorite, markFlagged).
  • To show them in the object header, you also need to activate the respective flag (property: showMarkers).
  • When they are used and shown, they appear directly behind the title.

Object header (Responsive=false) – Two object markers, three object attributes, and one object status
Object header (Responsive=false) – Two object markers, three object attributes, and one object status

Intro

  • As mentioned above, another component from the early days of SAP Fiori called the intro (property: intro) is available.
  • It is now shown directly below the title in a smaller font size.
  • The intro can call an event if it is set to actionable (property: introActionable).
  • Previously, the intro appeared above the title, and was used to indicate the origin of an object (for example, Forwarded by…, On behalf of …). It now tends to be used as a short subtitle.
Object header (Responsive=true) – Intro text used as subtitle
Object header (Responsive=true) – Intro text used as subtitle
Object header (Responsive=false) – Intro text
Object header (Responsive=false) – Intro text

Condensed

  • The object header provides a condensed flag for cases in which it is used as a page header with little information (property: condensed).
  • When turned on, the object header displays only the title, object number, and one attribute.
Object header – Condensed mode
Object header – Condensed mode

Guidelines

Settings

  • Set the object header responsiveness flag to ‘true’ (property: responsive) to make optimal use of the screen real estate.
  • If your app runs in full-screen mode (not master/details), make optimal use of the header area by setting the respective property to ‘true’ (property: FullScreenOptimized).
  • If you need to enforce the sequence and stable display of the attributes independently of the screen size, such as for an address, you might still decide to set the Responsive property to ‘false’ as an exception.

Title

  • The object header contains a mandatory title, which serves as the key identifier of the object instance (property: title). The title should be easily readable text without any IDs. If an ID is essential to the user, for example, to distinguish between identical titles, it can be put in brackets, such as Product ABC (1234567). If it is usually a long number, you can also consider adding it as a first attribute. In that case, however, you must give it a label (property: title of the Object Attribute).
  • Although the title can be truncated, keep it as short as possible and only as long as necessary.
  • If you make the title actionable and use an image or icon as well, both should be actionable and trigger the same event.
  • If you do use a title selector, it should open an action sheet that allows the user to choose from different options.

Object Number

  • The object number contains the key attribute of the object instance, which is usually a numeric attribute. In rare cases, it can also be used with text if that is the key attribute of the item. Be careful when you use text because it often leads to issues during translation if the text is too long.
  • As usual with SAP Fiori, the semantic colors available are negative (property: error), critical (property: warning), positive (property: success), and neutral (property: none).
  • For very long numbers, use a formatter.
  • The object number can be left blank if there is no key attribute worth showing.

Object Attribute

  • These object attributes do not generally need a label if it is clear what they refer to. If attributes are not distinct, you can use a label (property: title).
  • To facilitate recognition of the object header, we recommend using no more than four attributes.

Object Status

  • Although it is technically possible to show icons together with text, we recommend using text only.
    • Only use icons that are clear and unambiguous. If you think your icon would need a descriptive text to be understood, use text only.
    • In the case of locked items, however, you may also add further information about who has locked the item (when available).
  • The same rule for choosing semantic colors as elsewhere in SAP Fiori applies for the statuses negative (property: error), critical (property: warning), positive (property: success), and neutral (property: none).
  • In terms of indicating status priority, the general guidance is: very high (property: error), high (property: warning), medium, low, or other (property: none).
  • You can also show a progress indicator as a status. If you use it, the progress indicator should be the last item in the list of statuses.
  • As with the attributes, statuses do not need a label if it is clear what they refer to. If statuses are not distinct, you can use a label (property: title).
  • Here, too, we recommend that you have no more than four entries in the status list (including progress indicators and flag or favorite).

Intro

  • The intro usually contains a short subtitle and should only be used when necessary.
  • Do not use the intro for standard attributes.

Master/Details

  • When used in the details area of the split screen (master/details) and the master list contains object list items, the object header should show the same information as the object list item, plus additional information if necessary.
  • Unlike the object list item, the object number uses large number formatting because the object header has more space for handling long text.

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

Object Identifier

The object identifier is a short text that represents the key identifier of an object.

You can find the object identifier in the table as the identifier of a line item.

Usage

Use the object identifier if:

  • You want to indicate the key identifier of the object.

Do not use the object identifier if:

  • You intend to use it for decoration.

Responsiveness

The object identifier text wraps when the screen size becomes too small to display the full text on one line.

Components

The object identifier is characterized by the following:

  • A title text (property: title)
Object identifier - Text only
Object identifier - Text only
  • An optional additional descriptive text (property: text)
Object identifier with subtitle
Object identifier with subtitle
  • The title can be set to active, in which case, it looks like a link and can fire an event (property: titleActive).
Object identifier - Actionable
Object identifier - Actionable
  • Both texts wrap if the space available becomes too limited.
Object identifier - Long texts wrap
Object identifier - Long texts wrap

Guidelines

  • The object identifier should be easily readable, preferably with just the display text but no ID. If the ID is necessary to distinguish between items that use the same title, it should appear in brackets, such as “Product ABC (1234567)”. Whether you include the ID in the text property can also depend on how long you expect the text to be.
  • The object identifier can also be represented as a link, in which case, the event would open the quick view of the object.

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

No link

Implementation

Object Header

The object header usually represents an object instance. As such, it contains the most important information a user needs to see in order to understand what the object is about and what its status is. It is the first control on a page dedicated to a single object instance, usually the object view or flat object view.

The control can also be used as the header of other pages, such as a full screen. In that case, the object header contains the most important aggregated information of the items that are listed below.

Usage

Use the object header:

  • As the first component on a page that handles a single object instance (object view or flat object view) to enable the user identify it easily.
  • As the header of other pages, such as a full screen. In this case, the object header contains the most important aggregated information of the items that are listed below.

Do not use the object header:

  • Inside the content area as a work-around for visualizing something that is not possible with current means.

Responsiveness

In general, the object header adjusts to different screen sizes. In order to achieve this, there is a built-in rule set which defines which content wraps or truncates when necessary:

  • The object title wraps one time before it truncates.
  • The attributes wrap once and then get cut off in the second line.
  • The status is a single line and does not wrap.
Object header - Long text example (on large screen)
Object header - Long text example (on large screen)
Object header - Long text example (on small screen)
Object header - Long text example (on small screen)

Please note: The object header provides a responsive flag. However, we do not recommend turning this feature on at the present time. This is currently being fixed and we will update this article as soon as it is running properly.

Components

Title

  • The object header has a mandatory title that serves as key identifier of the object instance (property: title).
  • Very long titles wrap two times before they truncate in the third line.
  • A title can be actionable (property: titleActionable). In this case, it shows as a link and can trigger an event. Typically, the title links to a company or employee overview.
  • The title can show an additional icon or image in front of the title that identifies the object (property: icon). The icon/ image can be set to actionable as well (property: IconActionable).
  • The title can also show a title selector (which is visualized like a menu). It is mainly used to provide navigation targets allowing the object to be opened in a different app.
Object header - Title not actionable
Object header - Title not actionable
Object header - Title actionable
Object header - Title actionable
Object header - Title selector
Object header - Title selector

Object Number

  • The object number holds the key attribute of the object instance.
  • The object number consists of piece of text representing the key attribute of an object, usually a number (property: number), and its unit (property: numberUnit). The object number has a semantic color (property: state). The unit inherits the semantic color from its number.
  • As usual in SAP Fiori, available semantic colors are negative (property: error), critical (property: warning), positive (property: success), neutral (property:none).
Object header - Negative object number
Object header - Negative object number

Object Attribute

  • The object header can hold 0…n attributes (property: objectAttribute).
  • The attributes are listed on the left hand side of the object header.
  • Attributes can either be text (property: text) or actionable (property: actionable). In the latter case, the header renders like a link.
Object header - Attribute active
Object header - Attribute active

Object Status

  • The object header can hold a list of 0…n object status (property: objectStatus).
  • The status are listed on the right hand side in the object header
  • The status has a semantic color.
  • Status can be text or icons. Technically, a combination of the two is also possible, in that case the icon comes before the text. In general, we recommend using text only (see guidelines below).
  • It is also allowed to show a progress indicator as status. If used, the progress indicator should be the last item in the list of status.
Object header - Flag, favorite and two object status
Object header - Flag, favorite and two object status

Flag and Favorite

  • Objects can be shown flagged and marked as favorite. The object header provides flags for both (properties: markFavorite, markFlagged).
  • To show them in the object header the respective (property: showMarkers) flag needs to be turned on additionally.
  • When used and shown, they appear as the first entries in the list of status.

Intro

  • From the first SAP Fiori days, there is another component available called Intro (property: intro).
  • It is shown on top of the title
  • The intro can call an event when it is set to actionable (property: introActionable).
  • This component is used rather rarely nowadays. It was mainly used to indicate the origin of an object. As such it displayed information which forwarded the object, on behalf of whom I need to work on etc. on top of the object identifier.
Object header - Intro text
Object header - Intro text

Condensed

  • The object header provides a condensed flag for cases where it is used as page header with very little information (property: condensed)
  • When turned on, the object header only displays the title, the object number and one attribute
Object header - Condensed mode
Object header - Condensed mode

Guidelines

Title

  • The Object Header contains a mandatory title, that serves as key identifier of the object instance (property: title). The title should be in general a human readable text (no IDs). In case an ID is absolutely crucial to the user, e.g. to distinguish same named titles it can be put in brackets, e.g. “Product ABC (1234567)”. If this is usually a very long number you can also consider adding it as first attribute. But in that case give it a label (property: title of the Object Attribute).
  • Though the title can truncate you should keep the title as short as possible and only as long as needed.
  • In case you make the title actionable and use an image/icon as well, both should be actionable and in general trigger the same event.
  • If used at all, the title selector should usually opening an action sheet, allowing the user to choose from different options.

Object Number

  • The Object Number holds the key attribute of the Object Instance, which is usually a numeric attribute. In rare cases it can also be used with text, if that is the key attribute of the item. Be careful when using text, as it will usually cause issues during translation if the texts get to long.
  • As usual throughout SAP Fiori available semantic colors are Negative (property: error), Critical (property: warning), Positive (property: success), Neutral (property:none).
  • For very long numbers use a formatter.
  • The Object Number can be left blank in case there is no key attribute that makes sense to be shown.

Object Attribute

  • In general these object attributes do not need a label if it is clear what they are referring to. If attributes are not distinct, you can use a “label” (property: title).
  • In order to anticipate the Object Header fast, we do not recommend using more than 4 attributes.

Object Status

  • Though it is technically possible to show icons together with text, we recommend using text only.
    • Use icons only when they are obvious and understood. If you feel your icon would need a descriptive text in order to be understood, use text only.
    • In case of locked items it is though allowed to add the additional information who is currently locking the item (when available).
  • The same rule for choosing semantic color as elsewhere in SAP Fiori applies for the status:Negative (property: error), Critical (property: warning), Positive (property: success), Neutral (property:none).
  • For showing priorities within the status general guidance is: Very high (property: error) High (property: warning), Medium, Low, Other (property:none).
  • It is also allowed to show a progress indicator as status. If used the progress indicator should be the last item in the list of status.
  • Similar to the attributes, the status do not need a label if it is clear what they are referring to. If status are not distinct, you can use a “label” (property: title).
  • Also here in general it is not recommended having more than four entries in the status list (including Progress Indicators and Flag/Favorite).

Intro

  • The intro should not be used if not absolutely necessary. Usually it contains information in approvals about the origin (e.g. “Forwarded by XY”, “On behalf of YZ”).
  • Do not use the intro for standard attributes.

Master/Detail

  • When used in the Details Area of the Split Screen (Master/Detail), and the master list contains Object List Items, the Object Header should in general show the same information as the Object List Item plus additional information if necessary.
  • In contrary to the Object List Item, the Object Number would use large number formatting, as the Object Header has more space to handle long text.

Resources

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

Object Header

The object header usually represents an object instance. As such, it contains the most important information a user needs to see in order to understand what the object is about and what its status is. It is the first control on a page dedicated to a single object instance, usually the object view or flat object view.

The control can also be used as the header of other pages, such as a full screen. In that case, the object header contains the most important aggregated information of the items that are listed below.

Usage

Use the object header:

  • As the first component on a page that handles a single object instance (object view or flat object view) to enable the user identify it easily.
  • As the header of other pages, such as a full screen. In this case, the object header contains the most important aggregated information of the items that are listed below.

Do not use the object header:

  • Inside the content area as a work-around for visualizing something that is not possible with current means.

Responsiveness

The object header generally adjusts to different screen sizes. To achieve this, there is a built-in rule set that defines which content wraps or truncates when necessary, and how attributes and status texts are arranged depending on the screen size.

The object header has two flags that influence its appearance and resizing behavior: Responsive and FullScreenOptimized.
Object header – Split-screen layout (Responsive = true, FullScreenOptimized = false)
Object header – Split-screen layout (Responsive = true, FullScreenOptimized = false)

Responsive

As of SAPUI5 1.28, the app team should generally set the Responsive flag to ‘true’. In this case, the attributes are the first set of entries in the header, followed by the second set of statuses. The on-screen distribution differs from previous SAPUI5 versions. Even if there are many attributes and only a few statuses, use of the space is now optimized as the entries fill the respective columns equally.

Object header – Smartphone size (Responsive = true, FullScreenOptimized = false)
Object header – Smartphone size (Responsive = true, FullScreenOptimized = false)

Full Screen Optimized

The second attribute, FullScreenOptimized, should be activated when the header makes full use of the screen width and is not used in a split-screen layout.

Object header – Full screen optimized (responsive = true, FullScreenOptimized = true)
Object header – Full screen optimized (responsive = true, FullScreenOptimized = true)

Attribute/Status Distribution

The following table shows how the attributes are distributed automatically when the Responsive flag is set to ‘true’ on various screen sizes.

Screen Size 2 Attributes 3 Attributes 4 Attributes 5+ Attributes
Desktop (full screen) Next to the title area (1 column of 1-2 attributes) Next to the title area (1 column of 3 attributes) Underneath the title area (4 columns split by 1/1/1/1) Underneath the title area (4 columns split by 2/1/1/1)
Desktop (split screen layout) Underneath (2 columns split by 1/1 Underneath (2 columns split by 2/1) Underneath (2 columns split by 2/2) Underneath (3 columns split by 2/2/1)
Tablet (full screen – landscape) Underneath (2 columns split by 1/1) Underneath (3 columns split by 1/1/1) Underneath (3 columns split by 2/1/1) Underneath (3 columns split by 2/2/1)
Tablet (split screen layout) or Tablet (full screen – portrait) Underneath (2 columns split by 1/1) Underneath (2 columns split by 2/1) Underneath (2 columns split by 2/2) Underneath (2 columns split by 3/2)
Smartphone Underneath (1 column of 1-2 attributes) Underneath (1 column of 3 attributes) Underneath (1 column of 4 attributes) Underneath (1 column of 5+ attributes)

Prior to SAPUI5 1.28 (Responsive Set to ‘False’)

The Responsive flag is deactivated by default in apps that were built before SAPUI5 1.28. As mentioned above, this mainly impacts the attributes and status arrangement. If the Responsive flag is turned off, all attributes are left-aligned in the object header and all statuses are right-aligned, regardless of their individual number.
The object header still reacts correctly to resizing, but does not make optimal use of the space available.

For example, three attributes and one status with Responsive and FullScreenOptimized both set to ‘false’ results in two columns: the first (left) column contains three attributes, and the other column (right) has one status.  Altogether, this is three rows in height, whereas the same number of entries on a desktop full screen with the two flags set to ‘true’ results in a height of just one row (spread over four columns).

Components

Title

  • The object header has a mandatory title that serves as the key identifier of the object instance (property: title).
  • Long titles wrap once before they truncate on the second line.
  • A title can be actionable (property: titleActionable), in which case, it looks like a link and triggers an event, which usually results in a quick view.
  • An additional icon or image that identifies the object (property: icon) can be shown in front of the title. The icon or image can also be set to actionable (property: IconActionable).
  • Additionally, the title can show a title selector (which is visualized like a menu). It is mainly used to provide navigation targets, allowing the object to be opened in a different app.
Object header (Responsive=false) – Title not actionable
Object header (Responsive=false) – Title not actionable
Object header (Responsive=false) – Title actionable
Object header (Responsive=false) – Title actionable
Object header (Responsive=false) – Title selector
Object header (Responsive=false) – Title selector

Object Number

  • The object number contains the key attribute of the object instance.
  • The object number consists of text that represents the key attribute of an object, usually a number (property: number) and its unit (property: numberUnit). The object number has a semantic color (property: state). The unit inherits the semantic color of its number.
  • As usual in SAP Fiori, the semantic colors available are negative (property: error), critical (property: warning), positive (property: success), and neutral (property: none).
Object header (Responsive=false) – Negative object number
Object header (Responsive=false) – Negative object number

Object Attribute

  • The object header can contain 0 to n attributes (property: objectAttribute).
  • The attributes are listed first in the list of attributes in the object header.
  • Attributes can be text (property: text) or actionable (property: actionable), in which case, they are rendered similar to links.
Object header (Responsive=false) – Attribute active
Object header (Responsive=false) – Attribute active

Object Status

  • The object header can contain a list of 0 to n object statuses (property: objectStatus).
  • The statuses are listed as the second set of attributes in the object header.
  • The status has a semantic color.
  • Statuses can be text or icons. A combination of the two is technically also possible, in which case, the icon is placed in front of the text. We generally recommend that you use text only (see guidelines below).
  • A progress indicator may also be shown as a status. If used, the progress indicator should be the last item in the list of statuses.

Object header (Responsive=true) – Favorite, three object attributes, and one object status
Object header (Responsive=true) – Favorite, three object attributes, and one object status

Flag and Favorite

  • Objects can be shown flagged and marked as favorites. The object header provides flags for both (properties: markFavorite, markFlagged).
  • To show them in the object header, you also need to activate the respective flag (property: showMarkers).
  • When they are used and shown, they appear directly behind the title.
Object header (Responsive=false) – Flag, favorite, two object attributes, and two object statuses
Object header (Responsive=false) – Flag, favorite, two object attributes, and two object statuses

Intro

  • As mentioned above, another component from the early days of SAP Fiori called the intro (property: intro) is available.
  • It is now shown directly below the title in a smaller font size.
  • The intro can call an event if it is set to actionable (property: introActionable).
  • Previously, the intro appeared above the title, and was used to indicate the origin of an object (for example, Forwarded by…, On behalf of …). It now tends to be used as a short subtitle.
Object header (Responsive=true) – Intro text used as subtitle
Object header (Responsive=true) – Intro text used as subtitle
Object header (Responsive=false) – Intro text
Object header (Responsive=false) – Intro text

Condensed

  • The object header provides a condensed flag for cases in which it is used as a page header with little information (property: condensed).
  • When turned on, the object header displays only the title, object number, and one attribute.
Object header – Condensed mode
Object header – Condensed mode

Guidelines

Settings

  • Set the object header responsiveness flag to ‘true’ (property: responsive) to make optimal use of the screen real estate.
  • If your app runs in full-screen mode (not master/details), make optimal use of the header area by setting the respective property to ‘true’ (property: FullScreenOptimized).
  • If you need to enforce the sequence and stable display of the attributes independently of the screen size, such as for an address, you might still decide to set the Responsive property to ‘false’ as an exception.

Title

  • The object header contains a mandatory title, which serves as the key identifier of the object instance (property: title). The title should be easily readable text without any IDs. If an ID is essential to the user, for example, to distinguish between identical titles, it can be put in brackets, such as Product ABC (1234567). If it is usually a long number, you can also consider adding it as a first attribute. In that case, however, you must give it a label (property: title of the Object Attribute).
  • Although the title can be truncated, keep it as short as possible and only as long as necessary.
  • If you make the title actionable and use an image or icon as well, both should be actionable and trigger the same event.
  • If you do use a title selector, it should open an action sheet that allows the user to choose from different options.

Object Number

  • The object number contains the key attribute of the object instance, which is usually a numeric attribute. In rare cases, it can also be used with text if that is the key attribute of the item. Be careful when you use text because it often leads to issues during translation if the text is too long.
  • As usual with SAP Fiori, the semantic colors available are negative (property: error), critical (property: warning), positive (property: success), and neutral (property: none).
  • For very long numbers, use a formatter.
  • The object number can be left blank if there is no key attribute worth showing.

Object Attribute

  • These object attributes do not generally need a label if it is clear what they refer to. If attributes are not distinct, you can use a label (property: title).
  • To facilitate recognition of the object header, we recommend using no more than four attributes.

Object Status

  • Although it is technically possible to show icons together with text, we recommend using text only.
    • Only use icons that are clear and unambiguous. If you think your icon would need a descriptive text to be understood, use text only.
    • In the case of locked items, however, you may also add further information about who has locked the item (when available).
  • The same rule for choosing semantic colors as elsewhere in SAP Fiori applies for the statuses negative (property: error), critical (property: warning), positive (property: success), and neutral (property: none).
  • In terms of indicating status priority, the general guidance is: very high (property: error), high (property: warning), medium, low, or other (property: none).
  • You can also show a progress indicator as a status. If you use it, the progress indicator should be the last item in the list of statuses.
  • As with the attributes, statuses do not need a label if it is clear what they refer to. If statuses are not distinct, you can use a label (property: title).
  • Here, too, we recommend that you have no more than four entries in the status list (including progress indicators and flag or favorite).

Intro

  • The intro usually contains a short subtitle and should only be used when necessary.
  • Do not use the intro for standard attributes.

Master/Details

  • When used in the details area of the split screen (master/details) and the master list contains object list items, the object header should show the same information as the object list item, plus additional information if necessary.
  • Unlike the object list item, the object number uses large number formatting because the object header has more space for handling long text.

Resources

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

Elements and Controls

Implementation

Chart Types

The following chart types are available in vizFrame:

Bar Chart

  • Simple
  • With dual axis

Bubble Chart

  • With horizontal value axis
  • With horizontal time axis

Bullet Chart

  • Vertical
  • Horizontal

For guidelines, see bullet chart.

Combined Column and Line Chart

  • With categorical axis

Combined Column and Line Chart

  • With categorical axis
  • With time axis
  • With time axis and dual axis

Combined Stacked Column and Line Chart

  • With categorical axis
  • With dual axis

Column Chart

  • With categorical axis
  • With time axis
  • With dual axis

For guidelines, see column chart.

Donut Chart

  • Donut chart
  • Pie chart

Heatmap

  • Heatmap chart

Line Chart

  • With categorical axis
  • With time axis
  • With dual axis

Scatter Chart

  • With horizontal value axis
  • With horizontal time axis

Stacked Bar Chart

  • Simple
  • 100%
  • With dual axis

Stacked Column Chart

  • With categorical axis
  • With dual axis
  • 100% with categorical axis
  • 100% with dual axis

Waterfall Chart

  • Horizontal
  • Vertical

For guidelines, see waterfall chart.

Resources

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

Elements and Controls

Chart Types

The following chart types are available in vizFrame:

Bar Chart

  • Simple
  • With dual axis

Bubble Chart

  • With horizontal value axis
  • With horizontal time axis

Bullet Chart

  • Vertical
  • Horizontal

For guidelines, see bullet chart.

Combined Column and Line Chart

  • With categorical axis
  • With time axis
  • With time axis and dual axis

Combined Stacked Column and Line Chart

  • With categorical axis
  • With dual axis

Column Chart

  • With categorical axis
  • With time axis
  • With dual axis

For guidelines, see column chart.

Donut Chart

  • Donut chart
  • Pie chart

Heatmap

  • Heatmap chart

Line Chart

  • With categorical axis
  • With time axis
  • With dual axis

Scatter Chart

  • With horizontal value axis
  • With horizontal time axis

Stacked Bar Chart

  • Simple
  • 100%
  • With dual axis

Stacked Column Chart

  • With categorical axis
  • With dual axis
  • 100% with categorical axis
  • 100% with dual axis

Waterfall Chart

  • Horizontal
  • Vertical

For guidelines, see waterfall chart.

Resources

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

Elements and Controls

Chart Types

The following chart types are available in vizFrame:

Bar Chart

  • Simple
  • With dual axis

Bubble Chart

  • With horizontal value axis
  • With horizontal time axis

Bullet Chart

  • Vertical
  • Horizontal

For guidelines, see bullet chart.

Combined Column and Line Chart

  • With categorical axis
  • With categorical axis and dual axis
  • With time axis
  • With time axis and dual axis

Combined Stacked Column and Line Chart

  • With categorical axis
  • With dual axis

Column Chart

  • With categorical axis
  • With time axis
  • With dual axis

For guidelines, see column chart.

Donut Chart

  • Donut chart
  • Pie chart

Heatmap

  • Heatmap chart

Line Chart

  • With categorical axis
  • With time axis
  • With dual axis

Scatter Chart

  • With horizontal value axis
  • With horizontal time axis

Stacked Bar Chart

  • Simple
  • 100%
  • With dual axis

Stacked Column Chart

  • With categorical axis
  • With dual axis
  • 100% with categorical axis
  • 100% with dual axis

Waterfall Chart

  • Horizontal
  • Vertical

For guidelines, see waterfall chart.

Resources

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

Elements and Controls

Chart Types

The following chart types are available in vizFrame:

Bar Chart

  • Simple
  • With dual axis

Bubble Chart

  • With horizontal value axis
  • With horizontal time axis

Bullet Chart

  • Vertical
  • Vertical with Time Axis
  • Horizontal

For guidelines, see bullet chart.

Combined Column and Line Chart

  • With categorical axis
  • With categorical axis and dual axis
  • With time axis
  • With time axis and dual axis

Combined Stacked Column and Line Chart

  • With categorical axis
  • With dual axis

Column Chart

  • With categorical axis
  • With time axis
  • With dual axis

For guidelines, see column chart.

Donut Chart

  • Donut chart
  • Pie chart

Heatmap

  • Heatmap chart

Line Chart

  • With categorical axis
  • With time axis
  • With dual axis

Scatter Chart

  • With horizontal value axis
  • With horizontal time axis

Stacked Bar Chart

  • Simple
  • 100%
  • With dual axis

Stacked Column Chart

  • With categorical axis
  • With dual axis
  • With time axis
  • 100% with categorical axis
  • 100% with dual axis
  • 100% with time axis

Waterfall Chart

  • Horizontal
  • Vertical
  • Vertical with time axis

For guidelines, see waterfall chart.

Resources

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

Elements and Controls

Implementation

No links.

Column Chart

Column charts are used to compare multiple values over time, or values that have an intrinsic order (such as age, ranges, or ratings). In this case, there is an idea of a progression or a trend, and the best way to represent these values is to use the horizontal axis.

Column chart with a time category
Column chart with a time category
Column Chart with a category with intrinsic order
Column Chart with a category with intrinsic order

Column Chart vs. Bar Chart

Use a column chart if:

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

Use a bar chart if:

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

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

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

Time Axis

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

The time axis has three main advantages:

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

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

Labels

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

  • First, check that the category has an intrinsic order. If not, consider using a bar chart instead.
  • If the category is time-based, use a time axis.
  • If it is not possible to use a time axis, the only solution is to abbreviate the labels.

Resources

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

Elements and Controls

Implementation

No links.

Chart Types

The following chart types exist in SAP Fiori and are accessible through the vizFrame:

  • Bar Chart
  • Column Chart
  • Stacked Bar (includes: Stacked bar 100%, dual Stacked bar and dual Stacked bar 100)
  • Stacked Column Chart (includes: StackedColumn 100%, dual StackedColumn and dual StackedColumn 100)
  • Line Chart
  • Combined Column Line Chart
  • Bubble Chart and Time Bubble Chart
  • Bullet Chart
  • Scatter Chart
  • Pie 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