Updated: December 19, 2016

Tree Table

sap.ui.table.TreeTable

Intro

A tree table holds a hierarchical set of data structured in rows and columns grouped into nodes. As for the ALV, it can provide additional details in several non-hierarchical columns per line item. 

Tree table
Tree table

Usage

Trees are used to display and work with large amounts of hierarchical data. They have a high data density and therefore convey an immediate feeling of complexity. Ideally, you should only show trees with a lot of hierarchical data as a last resort. Try the following instead:

  • Break down the data into manageable chunks and allow the user to navigate or drill down between them.
  • Use charts with drilldown functionality until the amount of data is more manageable.

Responsiveness

The tree table is desktop-only. It does not support touch devices and is not responsive. If using the tree table for desktop use cases, please be aware that you have to implement a fallback solution for mobile and for touch devices. This fallback solution does not need to support all use cases. Ideas for fallback solutions are:

  • Use navigation to different pages instead of a tree structure. This works well for structures which are not deep (up to 4 levels).
  • Remove levels until you have only one or two. Replace a one-level tree through a table, a two-level tree by a grouped table or by a split-screen layout.
  • Use filtering instead of a tree structure.

You can try to create a fallback based on these ideas. Nevertheless, a completely different solution (e.g. by showing charts in a read-only case) might fit better.

Tree table shown on a desktop
Tree table shown on a desktop
Tree table shown on a tablet
Tree table shown on a tablet

Types

In order to display a larger amount of rows on the same screen height, use the condensed mode. It renders less white space for each item.

Please be aware that the condensed mode is not touchable. Even on a desktop with touch screen, users will have a hard time selecting rows or using controls inside the cells.

Note: The condensed mode is not available on Internet Explorer 9. When using the condensed mode, provide a fallback.

Compact Mode

Tree table - Compact mode
Tree table - Compact mode

Condensed Mode

Tree table - Condensed mode
Tree table - Condensed mode

Components

Column Header

The column header provides the label for the corresponding column and access to the column header menu. The user can resize columns by dragging the separator line between two columns. Double-clicking the separator optimizes the column according to the length of the visible data and the label of the column header. Columns can be rearranged by dragging the column header to another position.

Tree table - Column header
Tree table - Column header

Line Item

A line item contains a set of cells and provides options for selecting the item.

To prevent adverse side effects when scrolling vertically, all line items must have the same height (sap.ui.table.TreeTable, property: rowHeight).

Tree table – Line item
Tree table – Line item

Tree Column

The first column (tree column) provides the hierarchical structure.

Tree table - Tree column
Tree table - Tree column

Expand/Collapse Button

The expand/collapse button is offered on container nodes to allow the child items of the corresponding container to be shown or hidden.

Tree table – Expand/collapse
Tree table – Expand/collapse

Container Node

A container node is a line item that contains child elements.

Tree table – Container node
Tree table – Container node

Leaf Node

A leaf node is a line item that does not contain child elements.

Tree table – Leave node
Tree table – Leave node

Cell

Each cell provides one data point. It can contain one of the following controls to display the data point: text, label, object status, icon, button, input, date picker, select, combo box, multi-combo box, checkbox, link, currency.

If you use text, use only single-line text to keep the same row height. Truncate if necessary as this prevents adverse side effects when scrolling vertically (sap.m.Text, property: wrapping, value: false).

Tree table – Cell
Tree table – Cell

 Tree Cell

A tree cell is a cell inside the tree column. Besides its data point, it provides a collapse/expand button on container nodes, and it indents the different hierarchy levels.

Tree table – Tree cell
Tree table – Tree cell

Column Header Menu

For the tree column, the column header menu can contain the menu item Freeze and a Filter field, in which the user enters free text.
For all other columns, only the free text filter is available.

Tree table – Tree column header menu
Tree table – Tree column header menu

Selection Cells

For multiselection tree tables, the first column contains checkboxes for selecting line items. Besides multiselection, the tree table offers a single-selection mode and also a read-only mode, in which line items are not selectable.

Tree table – Selection cells
Tree table – Selection cells

Select All

For multiselection tree tables, the column header can contain a checkbox above the selection cells for selecting or deselecting all line items.

Tree table - Select all
Tree table - Select all

Scrollbar

The tree table allows horizontal and vertical scrolling. You can add any number of line items to the tree table, which is known as “lazy loading”.

To prevent adverse side effects when scrolling vertically, all line items must have the same height (sap.ui.table.TreeTable, property: rowHeight).

Tree table – Vertical scroll bar
Tree table – Vertical scroll bar

Behavior and Interaction

Selection

The tree provides the following possibilities:

Tree table - No selection
Tree table - No selection
Tree table - Single selection
Tree table - Single selection
Tree table - Multiple selection
Tree table - Multiple selection

Column Header Menu

Filter

The column header menu can provide a search field for entering free text. If the user enters a term in the input field and triggers the search by pressing Enter, the tree is filtered by the tree column and the corresponding value. If no items match the filter values, the filtered tree table may be empty.

Tree table – Filter
Tree table – Filter

Freeze Columns

The Freeze/Unfreeze option is provided in the column header menu of all columns. Using Freeze on one column freezes all columns from the first one to the selected one.

Tree table–- Freeze
Tree table–- Freeze

Column Handling

Show/Hide Columns

Columns can be shown and hidden. If the tree column is hidden, the following column is the tree column.

Rearrange Columns

The user rearranges columns by dragging and dropping the corresponding column header. The tree column is always the first column and cannot be dragged.

Resize columns

Resizing columns works by dragging and dropping the column separator on the right side of the column.

Cell Content

The tree is traditional in that each cell can contain only one data point in one single line.

Apart from plain read-only text, cells can contain the following:

If you use text, use only single-line text to keep the same row height. Truncate if necessary as this prevents adverse side effects when scrolling vertically (sap.m.Text, property: wrapping, value: false).

Guidelines

Filtering

  • To filter, choose the filter bar instead of the built-in free text filter.
  • Only use the free text filter if the filter bar is too heavy.

Columns

  • For default delivery, reduce the number of columns to the absolute minimum. Ideally, the user should not need to scroll horizontally.
  • In the first column, show the hierarchical data, which should identify the line item. Choose the name over the ID, but if both are needed, show the name first, then the ID.
  • For default delivery, optimize column width for the largest data.
  • Specify initial column sizes in pixels. If the column width is defined in percentages, the text becomes truncated when the browser window size is reduced. However, if you define the column width in pixels, reducing the browser window size results in a scrollbar, which is what the user expects. Note that when the user changes the column width, the width is internally calculated in pixels.

Alignment of Cell Content

Align column headers according to their cell content:

  • Texts are left-aligned.
  • Numbers (except for IDs), dates, and times are right-aligned.
  • Single-word status information and icons are generally centered.

In addition, align amounts with currencies to the decimal point. You can do this with the sap.ui.unified.Currency control.

Note that most currencies have two digits after the decimal point, but there are exceptions, for example:

  • The Tunisian dinar has three digits.
  • The Japanese yen has no digits.

In tree tables with mixed currencies, all amounts still have to be aligned to the decimal point.

To enable positive and negative values to be identified more easily, position the minus sign to the right of the number. It is placed in the same position in every row.

For more information, see currency.

Formatting Cell Content

  • Note that there are different locale formats, so show dates, times, and numbers in the format corresponding to the user’s language.
  • If text and an ID are to be shown, show the ID in brackets after the corresponding text.
  • Where possible, show the unit of measurement together with the number within the lines, and not only on the column header.

Tree vs. Table

Trees are more complex than tables due to their hierarchical view. Users tend to have more problems finding items in hierarchical views than in flat lists, except where the hierarchical view is natural. By natural we mean that every child node should be part of only one parent, and this relationship between the child and parent is clear and well known.

Do
Example of an acceptable use of tree tables
Example of an acceptable use of tree tables
Do
A clear parent-child relationship
A clear parent-child relationship

When you use trees, you should choose broad hierarchies over deep hierarchies. Deep hierarchies make finding items more complicated. So try to reduce hierarchical levels where possible, especially if the hierarchy is not natural. Ideally, a tree should have a maximum of four levels, the first two of which should contain the most important items.

Don't
Avoid unnecessary depth in the hierarchy
Avoid unnecessary depth in the hierarchy
Do
Favor breadth over depth in the hierarchy
Favor breadth over depth in the hierarchy

You can use the following methods to reduce hierarchy levels:

  • Avoid single root nodes. A single root node is often used to provide a Select All feature. Since the tree control provides an extra space for a Select All feature, the root node is not usually needed.
  • When you use only two levels, choose a grouped table or grouped ALV over a tree table control. Expand all groups for the default delivery.
  • Container nodes at the top level can usually be replaced by tabs or value pickers.
  • Eliminate unnecessary mid-level containers, for example, by combining redundant ones.
  • Exercise care when using a tree due to its overall complexity. The hierarchical structure of the data does not necessarily mean that a tree control is required.

Design Concepts

The tree table can be used to display large amounts of hierarchical data. Unfortunately, tree tables have a high data density and therefore convey an immediate feeling of complexity. Ideally, tree tables with large amounts of data should only be shown if there is no other option. You should instead try the following:

  • Flatten the data. A list, table, or ALV is still complex, but less so than a tree table.
  • Break down the data into manageable chunks. Allow the user to navigate or drill down between them.
  • Use charts with drilldown functionality until the amount of data is more manageable.

Try to avoid horizontal scrolling in the default delivery.

Examples of Incorrect and Correct Usage

When using trees:

  • Prefer breadth over depths
  • Emphasize the important values. Do not let the user run into a “wall of text” without guidance. You can use bold text for this.
  • Try to keep the number of columns small, especially in case of many rows.
  • Optimize column width to its initial visible content. Do not automatically adapt column width based on content change.
Don't
Avoid: In default delivery, the first visible content should not be truncated
Avoid: In default delivery, the first visible content should not be truncated
  • Maintain a fixed layout, except when the user wants to change it.
  • In the default layout, use the tree column for the item name or data that identifies the row. This helps the user to choose between different items.
  • Create a clear and immediately understandable hierarchy. Use clear parent-child relationships. If this is not possible, add a child in different nodes to help the user find the element.
Do
Acceptable: repeat entries to optimize finding items
Acceptable: repeat entries to optimize finding items
  • Avoid showing an empty tree table.
  • Consider persisting the layout settings. When a user reopens the app, show the tree table with the same column sizes, column order, and view settings as last defined by this user.
  • Use the Select All feature only if it makes sense. Note that selecting a lot of data also takes time and might not be appropriate for all use cases. For example, a delete operation on two million database entries might not be very helpful in many cases.

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