Semantic Object
A semantic object in SAP Fiori is the name of a business entity, such as PurchaseOrder or SalesOrder, that forms the first half of a navigation intent. Combined with an action, as in PurchaseOrder-display, the semantic object lets the launchpad find a matching target mapping without the calling app knowing which application will open.
Quick facts
- Type
- Navigation metadata (business-entity identifier)
- Layer
- Content, navigation & access
- Defined in
- /UI2/SEMOBJ_SAP (SAP-delivered) and /UI2/SEMOBJ (custom) on ABAP; app descriptor inbounds on SAP BTP
- Used by
- Tiles, target mappings, app descriptor inbounds and outbounds, smart links
- Example
- PurchaseOrder with actions display, manage and displayFactSheet
- Who works with it
- Launchpad administrators, SAP Fiori developers
- Applies to
- SAP S/4HANA (all deployment options), SAP BTP
Layer: Content, navigation & accessWhere it sits ▾
Layer: Content, navigation & access
Open the architecture map →The user opens the SAP Fiori Launchpad. The launchpad loads the spaces, pages and tiles granted by the user's business roles. No application code runs yet.
Related:SAP Fiori Launchpad · Business Role · Spaces and Pages
The tile does not contain an app. It fires an intent — a semantic object plus an action, such as PurchaseOrder-display — with optional parameters.
Related:Tile · Semantic Object · Intent-Based Navigation
The launchpad searches the target mappings in the catalogs of the user's roles and filters them by device type and parameters. If nothing matches, the user sees a navigation error.
Related:Target Mapping · Catalogs (Technical and Business) · /UI2/FLIA
The matching target mapping starts the target: a SAPUI5 or SAP Fiori elements app, an SAP GUI for HTML transaction, a Web Dynpro ABAP application or a URL.
Related:Target Mapping · SAP Fiori Elements · SAP GUI for HTML (Web GUI)
How does a semantic object work?
A semantic object is the noun of SAP Fiori navigation; the action is the verb. Together they form an intent, written in the launchpad URL as #SemanticObject-action, optionally followed by parameters.
- A tile, a link or an app requests an intent, for example
#PurchaseOrder-display?PurchaseOrder=4500000123. - The launchpad looks for target mappings with the same semantic object and action among the catalogs in the user's roles.
- The matching target mapping decides which app opens.
One semantic object usually carries many actions. In the SAP Fiori Apps Reference Library, PurchaseOrder-display resolves to the classic transaction ME23N through SAP GUI for HTML, PurchaseOrder-manage to the Manage Purchase Orders app and PurchaseOrder-displayFactSheet to a purchase order fact sheet. The calling app only names the business object and the intended operation. A semantic object is therefore a stable name for a business entity, independent of the UI technology that eventually handles it.
Where are semantic objects defined?
- ABAP-based launchpad (on-premise, Private Edition): SAP ships semantic objects with the UI components; transaction /UI2/SEMOBJ_SAP displays them. Custom semantic objects are created with /UI2/SEMOBJ or the Customizing activity for custom semantic objects in SPRO (UI Technologies, SAP Fiori, launchpad content). A custom entry with the same key as an SAP-delivered one overrides its attributes.
- SAP BTP and SAP Build Work Zone: each app declares the semantic objects and actions it accepts as inbounds in its app descriptor (
sap.app→crossNavigation→inbounds), where semantic object and action are mandatory. The semantic objects come from these descriptors rather than from an ABAP maintenance transaction. - SAP S/4HANA Cloud Public Edition: SAP-delivered semantic objects are used as shipped. For a custom app, the developer defines the tile, including its intent, as part of the application before deploying it.
The semantic object is defined once per landscape and then referenced everywhere navigation needs it.
How do apps use semantic objects for links?
Semantic objects drive more than tiles. In SAP Fiori elements, a field annotated with a semantic object (Common.SemanticObject in OData or CAP, @Consumption.semanticObject in ABAP CDS) is rendered as a link when the semantic object is valid in the launchpad. Clicking it lists every action the user can reach for that object; when only one target exists, the app navigates directly.
Freestyle SAPUI5 apps use the shell navigation service (sap.ushell.services.Navigation) to ask which links exist for a semantic object and to navigate. In both cases, the list of links is computed per user from the target mappings in that user's roles, so two users clicking the same supplier field can see different options.
A semantic object on a field is a request for navigation options, and the user's roles decide which options appear.
When should you create a custom semantic object?
Use this decision criterion: does the entity already exist as an SAP business object?
- Reuse the SAP semantic object when a custom app works on the same entity, for example a custom purchase order approval app at Alder Manufacturing. Reusing PurchaseOrder lets the custom app appear in the same link lists as standard apps and receive navigation from them. Add a distinct action rather than a new semantic object.
- Create a custom semantic object when the entity has no SAP equivalent, such as a custom tooling request that only exists in Alder Manufacturing's extension. Follow the naming conventions agreed for the landscape.
- Do not create one per app. A semantic object named after an app instead of an entity fragments navigation and hides the custom app from standard links.
A custom semantic object is justified by a new business entity, not by a new application.
What are common mistakes with semantic objects?
- Spelling and case mismatches. SAP describes target mappings as case-sensitive, so a tile that sends PurchaseOrder can fail to resolve against a target mapping defined for Purchaseorder. Copy semantic objects from the definition instead of typing them.
- Expecting a semantic object to grant access. A semantic object carries no authorization. Access comes from the catalogs in the user's roles, which contain the target mappings for that semantic object.
- Assuming a link means an app. Smart links only appear for targets the user can reach. A link that appears for a key user may not appear for a clerk, by design.
- Overriding SAP-delivered semantic objects casually. A custom entry with the same key changes attributes for every app that uses the object.
When navigation for a semantic object behaves unexpectedly, run /UI2/FLIA for the affected user and intent before changing any definition. Most semantic object problems are naming or role problems rather than definition problems.
Semantic object vs. target mapping: what is the difference?
| Semantic object | Target mapping | |
|---|---|---|
| What it is | Name of a business entity used in an intent | Rule that resolves an intent to an app |
| Where it is defined | /UI2/SEMOBJ_SAP and /UI2/SEMOBJ on ABAP; app descriptor on SAP BTP | Technical catalogs on ABAP; app descriptor inbounds on SAP BTP |
| Grants access? | No | Indirectly, through the catalogs in the user's roles |
| How many per entity | One semantic object, many actions | One or more per semantic object and action |
| Typical failure | Misspelled or undefined, so no intent matches | Missing from the user's catalogs or rules do not match |
The semantic object names what the user wants to work on; the target mapping decides which app does the work.
FAQ
Is a semantic object the same as a business object in the backend?
No. A semantic object is a navigation name used by the SAP Fiori Launchpad. It often matches a backend business object such as a purchase order, but it carries no data, logic or authorization. It only identifies the entity in an intent.
Can one semantic object open different apps?
Yes. Each action on the semantic object can resolve to a different app, and the same semantic object and action can resolve to different apps per role or device type, depending on which target mappings the user's catalogs contain.
How do I find which semantic objects an SAP Fiori app uses?
The SAP Fiori Apps Reference Library lists the intents of each app, for example PurchaseOrder-display for transaction ME23N. In an ABAP system, /UI2/FLIA shows the intents available to a given user, together with their catalogs and target mappings.
Do I need a custom semantic object for a custom SAPUI5 app?
Only when the app works on an entity that SAP does not model. If the app handles a standard entity such as a purchase order, reuse the SAP semantic object with its own action, so the custom app takes part in standard navigation.
Does a semantic object control who can open an app?
No. A semantic object is only a name. Who can open an app depends on the business catalogs in the user's roles, which contain the target mappings for that semantic object, and on the authorizations the app checks at runtime.
Sources
- SAP Help Portal: Defining Semantic Objects for Navigation (ABAP platform)
- SAP Help Portal: Intent-Based Navigation (SAP Fiori launchpad, ABAP platform)
- SAPUI5 SDK: Link Fields — semantic links in SAP Fiori elements for OData V4
- SAP Fiori Apps Reference Library: Manage Purchase Orders (Version 2), intent PurchaseOrder-manage
- SAP Help Portal: UI Development (SAP S/4HANA Cloud Public Edition)
- Applies to
- SAP S/4HANA on-premise · SAP S/4HANA Cloud Private Edition · SAP S/4HANA Cloud Public Edition · SAP BTP
- Last reviewed