The SAP Fiori launchpad enables you to specify that the same application is launched in different views or modes depending on the end user's role. To allow this, navigation between launchpad applications is based on abstract representations (intents) that are resolved to concrete navigation targets.
Each application within the launchpad has a resource locator (URL) by which it can be loaded. Instead of directly encoding the (technical) name of the target application into the URL hash, the launchpad performs an indirection by so-called intents.
An intent is a mechanism that allows users to perform actions on semantic objects (such as navigating to a sales order or displaying a fact sheet), without worrying about the UI technology or technical implementation of the navigation target.
Semantic object | Represents a business entity such as a customer, a sales order,
or a product. Using semantic objects, you can bundle applications
that reflect a specific scenario. They allow you to refer to objects
in a standardized way, abstracting from concrete implementations of
these objects. You can either use semantic objects shipped by SAP, or create new semantic objects. |
Action | Describes which operation (such as display or approvePurchaseOrders) is intended to be performed on a semantic object (such as Purchase Order or Product). |
Semantic object parameters | Define the instance of the semantic object (e.g. by specifying the employee ID). |
Intents have the following pattern:
#<semantic object>-<action>?<semantic object parameter>=<value1>
Example:
The intent #SalesOrder-displayFactSheet?SalesOrder=27 specifies that a fact sheet for the sales order no.27 is launched.
The intent-based fragment identifier #SalesOrder-displayFactSheet?SalesOrder=27 may be resolved to the following URL:
https://<server>:<port>/sap/bc/ui5_ui5/ShowEmployeeSalesOrders.html?id=27
However, the URL of the launchpad hides the actual URL under an intent-based URL.
For example:
https://<server>:<port>/sap/bc/ui5_ui5/ui2/ushell/shells/abap/FioriLaunchpad.html#SalesOrder-displayFactSheet?SalesOrder=27
The same intent can be resolved differently based on the role of the user that triggers the navigation. For example, you may want to define that a manager can display a different version of an employee fact sheet than regular employees. Thus, for managers the intent #factsheet-display should resolve to view1 of your application, while for regular employees it should resolve to view2.
The intent is resolved to the concrete navigation target by the launchpad target resolution service. The concrete application targets have to be configured by the administrator. In this configuration (called target mapping), admins map the combination of a semantic object and an action (both defined in the app launcher tile) to the navigation target by specifying launchpad role and instance as well as application alias or ID. This allows any link specifying an intent-based URL to trigger the correct application assigned to the user. Since target mappings are assigned to users as part of a catalog, they can be assigned to PFCG roles, while an intent is independent of a role and can therefore be resolved differently based on the role of the user that triggers the navigation.