SAP Fiori for SAP S/4HANA – Adding Custom Content to Business Roles
Latest Update May 2021: You can now watch an openSAP microlearning video showing how to add launchpad content at Creating Launchpad Content with the SAP Fiori Launchpad App Manager.
Continuing our epic blog series on Understanding Business Roles. If you have been following the series so far you now know:
- SAP Business Roles are out-of-the-box templates that you can use to create your own custom business roles
- How SAP Business Roles simplify deploying UX so that you can explore and fit-gap the user experience of SAP S/4HANA
- How SAP Business Roles simplify refining UX and the relationship between business roles and business catalogs
You have also become familiar with some of the tools to help you do this in Combining business catalogs into custom business roles.
In this blog post you will learn the best practice approaches and recommended tools for adding your own custom content to business roles. Like all best practices you should consider them a recommended starting point, informed by real customer experiences and feedback. By understanding the best practices, you can decide what fits with your situation, where you need to deviate, and the consequences of deviating from best practice.
At some point in every SAP S/4HANA project, you are likely to need to add custom content to your custom business roles. The decision to supplement the delivered user experience usually occurs towards the end of the Explore phase of SAP Activate methodology, or sometimes during the Realize phase depending on how much due diligence was done during the Explore phase. Your SAP S/4HANA project could be:
- An initial implementation or system conversion of SAP S/4HANA
- An upgrade from your current SAP S/4HANA release to a higher release, e.g. from SAP S/4HANA 1610 to SAP S/4HANA 1909 FPS02
- A Continuous Improvement project to introduce new business value in your current SAP S/4HANA release.
The custom content you need to add could be any or all of the following:
- Custom-built or partner-built SAP Fiori apps or SAPUI5 apps
- Custom-built or partner-built classic UIs (User Interfaces), such as SAP GUI transaction codes, Web Dynpro ABAP applications, or Web Client UIs
- App variants based on SAP Fiori apps
- Other web-based content, such as URLs, e.g. to SAP Cloud Solutions, and RSS Newsfeeds
You may also need to add custom content to:
- Override SAP content, e.g. to adjust the texts on tiles or links; to add/remove parameters passed during app-to-app navigation
Adding custom content involves activities that are typically done in your development environment and are transported through to your production landscape. A typical flow for creating launchpad content is shown in this diagram and is explained further in this blog post.
From the previous blog posts in this series, you already know that you use business roles primarily to authorize users to access SAP Fiori launchpad content. Business roles also provide users with a default layout of the assigned launchpad content, which users can further adjust through personalization.
To create your own custom business catalogs containing your custom content, you will need to understand more terms that describe the underlying components of custom business catalogs, i.e. technical catalogs, and launchpad app descriptor items (a term combining even more terms: tile definitions, target mappings, and intents). You can understand all of these terms by looking at the delivered SAP content, and then apply them to your own custom content.
This diagram gives a summary of the relationships between different technical components of the business role.
Tip: For SAP S/4HANA AnyPremise customers, Spaces and Pages will become available with SAP S/4HANA 2020.
Explaining these terms using the delivered SAP content is the focus of this blog post which contains:
- Why custom business catalogs are needed for custom content
- Summary flow for creating custom launchpad content
- Understanding launchpad app descriptor items
- Understanding technical catalogs versus business catalogs
In this blog post you will step by step learn the terms, recommended tools and process you need to create custom launchpad content in SAP S/4HANA. If you are looking for a quick introduction and the main points, then you should refer to Best Practices for Managing Launchpad Content.
In upcoming blog posts you will find:
- Overview of the tools for maintaining custom content
- Examples of how to create custom content using the tools.
Important: As in the previous blog post How SAP Business Roles simplify refining SAP User Experience, you will not learn anything new about the default layout in this blog post. If you want to find out more about launchpad layout and how it is changing, refer to Leading Practices for Home Page Design and Manage Spaces and Pages for SAP Fiori launchpad.
Why custom business catalogs are needed for custom content
As explained in previous blog posts, conceptually a business role consists of a number of business catalogs. A business catalog contains a collection of related SAP Fiori apps, classic UIs, and other web content (e.g. URLs) and the navigations between them.
For delivered SAP Business Roles, these consist of a number of SAP business catalogs. When you create a custom business role you can assign a mix of SAP business catalogs and/or custom business catalogs.
You can see the relationship between business roles and business catalogs in the SAP Fiori launchpad content manager client-specific (customizing) scope, i.e. SAP GUI Transaction /UI2/FLPCM_CUST.
Important: You cannot change SAP Business Roles or SAP Business Catalogs directly. However, you can copy business roles and business catalogs into the customer namespace and then adjust your copy. Copy and then adjust your copy is the recommended approach to minimize effort in creating your own custom business roles and business catalogs.
That means adding custom content involves creating your own custom business catalogs, which you can then assign to your custom business roles. You can mix and match your custom content with SAP content by using your desired combination of custom and SAP business catalogs.
Important: Ideally as your skills and knowledge grow, you should focus your custom business roles on custom business catalogs that you control. This avoids unintended impacts on your launchpad content and related authorizations when upgrading to a higher SAP S/4HANA release or Feature Pack Stack (FPS). SAP Business Catalogs are usually changed in the new SAP S/4HANA release/FPS to adjust delivered content to new possibilities in the new release, e.g. to include new SAP Fiori apps, or remove superseded predecessor apps and classic UIs.
Creating your own custom business catalogs helps you better manage the pace of change for your users as you implement or upgrade or execute continuous improvement projects in your current SAP S/4HANA release. That is, using custom business catalogs enables you to adjust your SAP S/4HANA user experience in a graceful manner, taking on new SAP Fiori apps only after you have had the opportunity to assess them and discuss their fit to your business with your business stakeholders.
Summary flow for creating custom launchpad content
To add your own custom content to your custom business catalogs you will need to:
- Create one or more launchpad app descriptor items (tile definitions and target mappings) in a custom technical catalog
- You will need to create at least one launchpad app descriptor item per SAP Fiori app, classic UI, or URL you want to add
- Assign the launchpad app descriptor items (tile definitions and target mappings) to your custom business catalog indirectly, i.e. by referencing the launchpad app descriptor items from your technical catalog into your business catalog
You can then add your custom business catalogs to your custom business roles, generate authorizations and verify your launchpad content is activated as already explained in this step-by-step guide on how to combine existing launchpad content into custom business roles
Understanding launchpad app descriptor items
Before any target application – such as SAP Fiori app, classic UI, or URL – can be used from the SAP Fiori launchpad it needs to be described to the launchpad. This description is needed to instruct the launchpad on:
- Appearance – What should be shown for this item, e.g. on the Home Page, in the App Finder, in the Home/App Title navigation button, when searching for apps & UIs in the Fiori Search, in dynamic List of Links dialogs, in Related Apps buttons, etc.
- Behaviour – What technically should be launched when this item is selected – i.e. the target application or UI or URL – and what parameter values should be passed on launch
- Relevance – What device types are appropriate to this item, and therefore whether the item should be visible or hidden on a certain device type
The new term for this description is launchpad app descriptor item. You will start to see this term used in SAP S/4HANA 2020 documentation aligned to some new tooling. However, the concept applies equally to all SAP S/4HANA releases.
Outlook: From SAP S/4HANA 2020, launchpad app descriptor item will not just be a concept – it will be a transportable entity in the upcoming SAP Fiori launchpad app manager introduced with SAP S/4HANA 2020. In releases earlier than SAP S/4HANA 2020, in the SAP Fiori launchpad designer, launchpad app descriptors do not exist as an entity – tile definitions and target mappings are maintained as individual entities within a technical catalog.
A launchpad app descriptor item typically includes:
- One or more Tile Definitions
- A Target Mapping
The Tile Definition and Target Mapping are logically linked via Intents.
The launchpad app descriptor item is stored in a technical catalog.
You can see the launchpad app descriptor items – i.e. tile definitions and target mappings – in the SAP Fiori launchpad content manager, for example in the Content in Catalog pane of the Catalogs tab.
For each of these terms – tile definition, target mapping, and intents – you can find a brief explanation of the most common meanings and use cases below.
Refer to the section Setting up Launchpad Content in your SAP Fiori launchpad guide for your SAP S/4HANA release for further variations and explicit parameter/value settings needed.
Understanding Tile Definitions
A tile definition instructs the launchpad what to show on the launchpad, primarily on the home page or pages. The tile definition is used to define what the tile looks like when added to a page or in the App Finder.
Here are some examples of tiles and links.
A tile definition consists of texts, icons, and may also include dynamic information such as a count or aggregated figure (e.g. % budget used). The texts are also used for links, e.g. when a tile is displayed as a link on the home page or pages.
Tip: A tile definition can also include a list of keywords that business users can use to search for the tile using Fiori Search. For example, organizational terms and nicknames. To help transition business users coming from SAP Business Suite, it is useful to include the older equivalent SAP GUI transaction code as a keyword for a successor SAP Fiori app. This is the reason the SAP GUI transaction code is added to the keywords during the replication of the catalog when classic UIs (that are SAP GUI transactions) are maintained in the Mass Maintenance App Descriptor tool (or upcoming launchpad app manager).
Here is an example tile definition in the Launchpad Designer.
Find out more about Tile Definitions in the Configuring Tiles section of the SAP Fiori launchpad guide for your SAP S/4HANA release in the SAP Help Portal.
Understanding Target Mappings
A target mapping describes what to launch when the tile (or link) is selected.
In essence a target mapping includes:
- Title: a link text which is shown e.g. when using the link from the Fiori Search results, or List of Links dialogs.
- Application type:e. the UI Technology of the target application which could be SAP Fiori (SAPUI5) app, classic UI type (SAP GUI Transaction, SAP Web Dynpro ABAP application, Web Client UI), or URL
- System Alias: for classic UIs and URLs the system alias logically indicates the source system for the target application. Using a logical system alias enables the physical host/port details to be substituted as you transport your launchpad content from Development to Productive environments
- Technical id: of the target application to be launched, e.g. SAP Fiori technical app id, GUI Transaction Code, Web Dynpro ABAP application id, Web Client UI id, and for URLs the relative URL itself
- The parameters to be passed, e.g. User Defaults to pre-fill entry fields
- The device types supported – desktop (Large), tablet (Medium), and/or phone (Small)
Here is an example of a List of Links dialog – by selecting the hyperlink on the Journal Entry number you can quickly navigate to other apps related to journal entries.
Below you can see an example of a target mapping for a SAP Fiori app F0712 Manage Supplier Line Items shown in the Launchpad Designer.
Here is another example of a target mapping for a SAP GUI Transaction. Note: Some of the fields are not editable because this is maintained using the Mass Maintenance App Descriptor tool and then replicated to the frontend technical catalog.
Find out more about target mappings and the specific settings for different UI technologies in in the Configuring Target Mappings section of the SAP Fiori launchpad guide for your SAP S/4HANA release in the SAP Help Portal.
Intents are part of the intent-based navigation that controls app-to-app navigation, and navigation from tiles or links to apps. They are the logical connection that controls navigation between any SAP Fiori app and any other SAP Fiori app, classic UI, or URL.
An intent consists of two components:
- Semantic Object, e.g. PurchaseRequisition, Customer, Product, Employee, SalesOrder, AccountingDocument
- Action, e.g. manage, edit, approve, import.
Both the tile definition and the target mapping include the semantic object and semantic action in their definition.
At runtime, when a business user selects a tile or link, the intent is used (in combination with the device type and other parameters) to determine which app or UI is launched via a URL fragment pattern containing the semantic object, the action, and the parameter/value pairs to be passed.
#<semantic object>-<action>?<semantic object parameter>=<value1>
You can see this pattern whenever you navigate from a tile or link, e.g. you see the example of a link from a journal entry with Semantic Object = AccountingDocument and action = analyzeGLLineItem.
The relevant target mapping is launched based on the semantic object, semantic action, device type, and other parameters specified in the target mapping.
In practice, it is the Semantic Object that is critical to most app-to-app navigation, particularly dynamically derived navigation lists, such as those used in Fiori Search results, List of Links dialogs and Related Apps buttons.
Important: These dynamic navigation use cases are why it is so critical to use the given SAP Semantic Object id that best fits your use case when you are creating custom content. That is, so your custom created navigations are dynamically proposed alongside SAP delivered navigations.
As of SAP S/4HANA 1909, SAP delivers more than 2.6K Semantic Objects found in SAP GUI transaction /UI2/SEMOBJ_SAP.
Tip: You should only create custom Semantic Objects if there is truly no SAP equivalent available. For example, when you create a custom application for business entities that are specific to your organization and have no SAP equivalent. Custom semantic objects should be in the customer namespace, i.e. by convention start with Z or Y. Find out more about Semantic objects in the section About Navigation in the SAP Fiori launchpad administrator guide for your SAP S/4HANA release
The action is freely definable, apart from a small requirement that it must start with a lowercase letter and must not contain any spaces. Ideally the action should be a verb (i.e. an action word indicating what it is doing). The action differentiates between different target mappings related to the same semantic object. Target mappings may point to different apps, or to the same app but with different parameters.
Important: The action primarily impacts the target app resolution. It does not have any direct impact on authorizations. For example, copying a PurchaseOrder-manage target mapping to create a PurchaseOrder-display target mapping does NOT create a display only version of the target application. What the business user can perform with the target application depends on their authorizations. These authorizations are maintained in the technical authorizations role that represents the business role, e.g. using SAP GUI transaction PFCG.
Find out more about intents in the Intent-based Navigation section of the SAP Fiori launchpad guide for your SAP S/4HANA release
Launchpad app descriptor item FAQ
Why might you need more than 1 tile per target mapping?
Typical scenario is different business roles use the same app but in slightly different contexts or with slightly different history. So they may need different terminology on the tile definition to help them understand the context quickly.
Why can I see target mappings without tile definitions in SAP Business catalogs?
If you only intend to use an app or UI as the target of an app-to-app navigation, then technically a target mapping alone is sufficient. However, since the business may want to show this app as a tile to smooth processes, and/or a business user might want to use personalization to add that app or UI to their home page, it is good practice to create a tile definition as a default display for any app that can be launched directly from the launchpad. Object Pages (aka factsheets) that are only used for the Fiori Search are a notable exception.
Can I navigate from a classic UI to an SAP Fiori app using an intent?
In theory yes, the intent itself is a generic pattern. In practice, you should treat this as NOT possible. Why? Technically your classic UI just needs to provide a URL link that can be tailored to create the intent fragment. However there can be other challenges – e.g. the URL would most likely open in a new tab, there could be problems with data loss handling, releasing of locks, and closing of SAP GUI sessions.
For my own custom content, where do I create these launchpad app descriptor items?
In a custom Technical Catalog using one of the relevant tools.
Which brings us to the next section on business catalogs vs. technical catalogs.
Business Catalogs versus Technical Catalogs
As you learnt earlier, a business catalog contains a collection of related SAP Fiori apps and classic UIs, and the navigations between them. So why do we need technical catalogs?
Technical catalogs solve 2 problems:
- Reuse of apps, classic UIs, and navigations
- Managing the different sources of apps vs classic UIs
The distinction between technical catalogs and business catalogs is primary logical rather than physical. Technically they both store launchpad app descriptor items in the same way.
What distinguishes a technical catalog from a business catalog are a combination of purpose, naming convention, and scope.
A quick way to remember the difference is:
- Technical catalogs contain original launchpad app descriptor items and are always created in the cross-client (CONF) scope
- Business catalogs contain references to launchpad app descriptor items stored in technical catalogs and can be created in the client-specific (CUST) or cross-client (CONF) scope depending on your reuse needs
The primary purpose of a technical catalog is reuse. Technical catalogs provide a central source of launchpad app descriptor items that can be referenced by business catalogs. That is:
- You create launchpad app descriptor items in your custom technical catalogs
- You can create launchpad app descriptor items from scratch or copy them from SAP technical catalogs and then adjust them as needed
- In your custom business catalog you create references to the launchpad app descriptor items (tile definitions and target mappings) you want to combine into your business role
By creating references, changes made to the launchpad app descriptor items in the technical catalog are immediately propagated to all business catalogs referencing the technical catalog. In other words, if you want to share a specific app or UI across multiple business catalogs and/or multiple business roles, references reduce the maintenance effort of maintaining consistency between all of the business catalogs and business roles.
The secondary purpose of a technical catalog is to manage different sources. This is especially helpful where:
- Content is stored on frontend server vs backend server
- Content is general vs. analytical (where there can be some additional requirements)
- Content is mass maintained using different tools
When it comes to naming conventions, technical catalogs delivered by SAP have the prefix SAP_TC_. This naming convention makes it easy to identify technical catalogs from business catalogs when structuring launchpad content.
Tip: The recommended prefix was not always applied historically, so you will also see catalogs with the naming pattern SAP_<xxx_> TC_<yyyy>.
For example, you can see technical catalogs behind both SAP content and your custom content in the launchpad content manager. In the client-specific (customizing) scope, i.e. SAP GUI Transaction /UI2/FLPCM_CUST, select your business role to see your assigned business catalogs.
Use the Catalog View to examine the business catalog. Here you can see the tiles and target mappings that are contained in the catalog. The Reference Detail column confirms they are referenced from a technical catalog.
You can use the Change Layout… feature to find the technical catalogs.
Select the Original Tile Catalog ID and Original Target Mapping Catalog ID fields in the right hand pane and use the arrows to move them to the left hand pane and then adjust the sequence of columns in the table.
You can then see the source technical catalogs.
Since technical catalogs act as reusable containers of launchpad app descriptor items for a variety of launchpad content, and since target applications require code and are cross-client by definition, technical catalogs are always created in the cross-client configuration (CONF) scope.
You can see the original technical catalogs in the cross-client scope of the Fiori launchpad content manager, i.e. SAP GUI Transaction /UI2/FLPCM_CONF. For example, the technical catalog SAP_TC_EAM_COMMON holds only SAP Fiori (SAPUI5) apps. The Reference Detail column confirms this is the original catalog.
Similarly, the SAP_TC_EAM_BE_APPS only holds classic UIs as you can see from the App Type column.
Technical catalogs FAQ
Can I put any launchpad app descriptor items in any technical catalog?
For optimal efficiency of maintaining your launchpad content, do NOT mix classic UIs with SAPUI5, SAP Fiori apps or URLs in the same technical catalog. This is because these apps belong to different software components (frontend vs. backend). In other words, you should split apps into separate catalogs to enable clean transports for different software layers – frontend and backend. If your SAP Fiori frontend server is deployed in embedded mode where frontend and backend components are on the same server, there are potentially fewer restrictions and fewer splits needed.
Similarly, do not attempt to mix content maintained with the analytical tools into the same technical catalog as non-analytical content.
Hmmm… I can see historically SAP hasn’t always used technical catalogs? Why is that?
Like most best practices, what works well and what doesn’t work quite as well has been revealed over time. Historically different approaches have been tried, and some of these are still retained for compatibility reasons to minimize impact on customers. These days we use internal development tools to enforce best practices. That is part of the reason why content may be adjusted as part of each SAP S/4HANA release – this has already happened for many catalogs in releases 1610, 1709, 1809, and 1909. You should expect similar changes in future SAP S/4HANA releases.
What’s the impact of doing everything in business catalogs?
The primary impact is loss of reuse of apps and related authorizations: across business catalogs; and across clients. If you are starting with a small number of business roles and business catalogs this may not be a big challenge. As you scale and grow your user experience, the need for reuse will also grow, and exceptions become increasingly difficult to manage. You are recommended to start with best practices of using both technical catalogs and business catalogs.
What’s the impact of breaking the reference between a technical catalog and a business catalog?
The primary impact is loss of reuse. Breaking the reference creates a copy of the launchpad app descriptor item (tile definition, target mapping, or both) in the business catalog. When you subsequently change the launchpad app descriptor item in the technical catalog, the copy in the business catalog will no longer be updated. Over time this significantly adds to maintenance effort. This is especially true during upgrades when you may need to compare your copies back to any changes in the equivalent original SAP launchpad app descriptor items.
Why can’t I just assign technical catalogs directly to business roles?
The primary impact are “too much content” issues, such as confusion, unclear authorizations, and loss of segregation of duties. Since technical catalogs are treated as reusable sources of launchpad app descriptor items, the content doesn’t need to consider the specific access needs of different business users. Each business catalog acts as a container of content that is needed for a specific business use case. This makes business catalogs the correct layer to manage authorizations including segregation of duties.
How many launchpad app descriptor items should I include in a single technical catalog?
This is primarily driven by maintenance effort in the various tools and performance. Performance relates to runtime where business catalogs need to dynamically derive the launchpad app descriptor item details from the technical catalog. In practice 1-100 launchpad app descriptor items – i.e. no more than 100 tile definitions + 100 target mappings – is a good rule of thumb to avoid maintenance becoming unwieldy. You can compare this to SAP technical catalogs in the launchpad designer and in the Fiori launchpad content manager.
Can I put tile definitions and target mappings in separate technical catalogs?
Technically yes, however this is NOT recommended. Separating the tile definitions from the target mappings tends to exacerbate loss of information needed for visibility, i.e. it becomes difficult to check if you have a tile definition for each and every target mapping, leading to unexpected impacts and errors when business users click on tiles or links.
Becoming a SAP Fiori for SAP S/4HANA guru
You’ll find much more on our SAP Fiori for SAP S/4HANA wiki
Brought to you by the S/4HANA RIG