Using the Key-User In-App Extensibility Tools in SAP S/4HANA Cloud Private Edition

Objectives

After completing this lesson, you will be able to:
  • Explain the SAP Fiori apps to use when identifying which extensions have been made or can be made
  • Change the UI of an app and create a custom field
  • Add a custom logic Business Add-In (BAdI)
  • Create a custom user interface
  • Create a custom business object
  • Customize Output Management templates
  • Transport Key User In-App extensions

In-App Extensibility Capabilities

In-App Key User Extensibility in SAP S/4HANA Cloud

In-app key user extensibility allows adapting standard functionalities to user requirements without the need for any external tools. Whether you want to apply small changes, such as hiding standard fields for specific user groups or including business logic that triggers a change to happen, there are a variety of apps on the SAP Fiori Launchpad designed to cover diverse extensibility needs. The SAP Fiori apps are targeted to administrators and other "specialists", who have a deep knowledge of the product or a line of business area, but not a deep technical knowledge in coding.

Image shows text with an overview of what you can do with the in-app key user extensibility tools. Details are in the following text.

Note

Check which role is required for your business user to access an application on the Fiori launchpad by looking up the relevant app in the SAP Fiori Apps Reference Library.

Here's a brief overview of what you can do with the in-app key user extensibility tools:

  • Change and adapt the UIs of SAP Fiori apps by moving fields around on the screen and/or adding additional fields that are available to be used for an app UI, but don't display by default.
  • Create custom fields that can be added to existing Fiori app UIs or to custom UIs.
  • Create your own custom templates or extend the standard forms and email templates that are associated to different business processes.
  • Enhance the current business process by creating custom business logic that triggers a change to occur.
  • Create a new custom user interface based on a custom business object, or that simply has an embedded URL to link to a company website or other webpage.
  • Create custom business objects that can be used for analytical scenarios or to generate a simplified application where the business object is a table with data that describes different attributes related to the object. For example, banking information is contained in the Bank business object, but there are many fields within the business object that describe its characteristics, including name, address, SWIFT code, and others.
  • Create customer-specific CDS Views that can be used in analytical scenarios or to generate an API to expose data for use in an external app.

Note

The management of data in an extension scenario deviates from the management of data in the standard scenarios. You are responsible for ensuring that the data used in an extension scenario is managed in accordance with any applicable legal requirements or business needs, such as data protection legislation or data life cycle requirements. Please note that the extensibility framework is currently not integrated in the privacy-by-default functionality. Therefore, the extensibility framework should not be used for the processing of personal data if this processing falls under any applicable data protection legislation.

Does this app support the in-app extensibility framework?

Before we can begin working with the extensibility apps on the launchpad, we need to understand how to determine whether or not an SAP Fiori app supports the extensibility framework, how to keep track of who is making changes, and whether or not an extension has been exported/imported to other systems. We'll take the Create Customer Projects and Plan Customer Projects apps as an example:

Screenshot with text instructions showing how to determine whether or not an SAP Fiori app supports the extensibility framework. Instructions are in the following text.
  1. First, look up the app using it's name in the SAP Fiori Apps Reference Library. If you are looking up an app from a test script, use the Overview Table to find the app ID. IDs are generally easier to use when searching the library. For example, Create Customer Projects and Plan Customer Projects display as two different apps on the launchpad, but they have the same app ID so you will only find one of them in the reference library (Plan Customer Projects).
  2. Next, scroll to the bottom of the information on the Product Features tab to find linked text that says, "Read more in App Documentation". Click the "App Documentation" - it points you to the app information in the SAP Help Portal.

    Note

    If the app is supported for all deployments of SAP S/4HANA, it's important to select "SAP S/4HANA Cloud" from the drop-down menu at the top of the screen. This makes sure you are sent to the app information in the public cloud area of the SAP Help Portal.
  3. In the SAP Help Portal, look for a section titled "App Extensibility" below the title of the app in the navigation menu. If the app isn't supported with the extensibility framework, you won't see this text. If the app is supported with the extensibility framework, you will see a dedicated section that you can select to find more information about the types of extensibility supported.
  4. After selecting the App Extensibility link, we see the business contexts available to make extensions to, and that both custom fields and custom logic are available. Custom fields are described in the UI Elements table, and custom logic is described in the BAdI (Business Add-In) table.

Extensibility Inventory App

After I make an extension, it needs to be exported from the customizing tenant of the development system, and imported to the test and production systems.

Screenshot of the Extensibility Inventory app.

The Extensibility Inventory app is used to track who last made changes to the specific extension, and whether it's been exported/imported. This app is the master library of all extensions made within the extensibility framework and helps you view associations or dependencies between them.

SAP Fiori User Interface Adaptation and Custom Fields

Adapt Fiori UI at Runtime

Even if an app doesn't support adding custom fields, most SAP Fiori apps support some type of UI adaptation. This type of customization is also referred to as "runtime authoring", because you are editing the application while it's running. Changes made in the UI adaptation mode can be saved and published to the transport log. Fields can be moved around by "dragging and dropping" or right-clicking with your mouse to see all options. If two fields are selected by holding the Shift key, they can be combined to display side-by-side. If you change your mind, they can be separated again, or you can undo the change.

Screenshots with text showing how to adapt SAP Fiori UI at runtime.

After changes are imported to the production system, end users will see the customized app screen. Only users with permission to turn on this runtime authoring mode will see the option available from the user menu when in an application. The key is to make sure you have permission to both the app you want to edit, and the Administrator or Extensibility Specialist business role to make the adaptation function available.

In addition, you can create variants of apps for specific use cases (countries, organizational units, user groups). UI changes made to the original app or a variant are not applied to other variants. However, if the UI of the original app gets changed outside of this authoring mode, for example in a release upgrade, the new UI changes will be applied on top of the changes already made to the original app and all variants of it.

Activate new version of app and publish

After you've made changes you're satisfied with, use the Navigation tab to test the app out as an end user. The Visualization tab shows you where changes have been made. If everything performs well, select the "wand" icon in the top left corner to activate a new version of the app. The "truck" icon will then become visible so you can publish the changes to the transport log. These changes will now be visible in the Extensibility Inventory app, and can be added to a software collection to export them from the customizing tenant of the development system.

Screenshots showing how to activate and publish new version of the app.

Learn more about Adapting SAP Fiori UIs at Runtime in the SAP Help Portal.

Try it yourself!

Learn how to adapt the UI of an app at runtime in this tutorial.

Custom Fields App

Custom fields are created in the Custom Fields app. You can make a single custom field available to be used across other related apps (important for continuity of data), reports, email/form templates, and APIs. After a field is created, it needs to be added to relevant app UIs using the UI adaption functionality previously discussed. For reports, it can depend as some reports are analytical dashboard apps where you would use Adapt UI, where others could be ad-hoc reports (like a custom CDS view) where you pick and choose which fields to include. Email and form templates use a separate editor to pull in custom fields.

Screenshots showing how to create a custom field. Details are in the previous and following text.

After making the field available for other related areas, select the Save button, then Publish. Publishing is a scheduled job that can take up to 30 minutes to fully process.

Note

  • Read access logging is not provided for custom fields.
  • Custom fields cannot be marked as relevant for Data Protection & Privacy (DP&P) and cannot be blocked or deleted. Generic mechanisms for DP&P compliance do not cover DP&P-relevant content in custom fields.

Learn more about the Custom Fields app in the SAP Help Portal.

Try it yourself!

Learn how to create a custom field, then add it to the UI of a document in this tutorial.

Custom Business Logic

Custom Logic App

Custom logic triggers something to happen in the system that doesn't already occur by default. SAP has a variety of released Business Add-Ins (BAdIs) that can be added to different applications using the Custom Logic app.

Screenshots from the Custom Logic app showing how to add a BAdI.

After you've identified a BAdI to implement, navigate to the Custom Logic app to select the correct BAdI. Because business logic is written in ABAP code, the View Documentation link provides information about what is possible to change/control within the code. After you create and publish the BAdI, you may choose to open the Code Editor to view the ABAP code that has been generated.

Custom Logic App

If you want to make further changes to the standard code, you can view the sample code that shows you correct syntax in this specific situation. The Custom Logic app is one of the few areas in the customizing tenant where you will see code, but only if you specifically look for it in the Code Editor. In most cases, there won't be any reason to do this, because the code for the BAdI that you select is already generated when you create and publish it. If you make changes to the code that are not supported, the editor simply won't allow you to save or publish. This is a very controlled method of making small changes that trigger other things to occur in the SAP S/4HANA Cloud system with no developer knowledge. After implementing a BAdI, you should always test it out.

Screenshot from the Custom Logic app highlighting where fine the Open Code Editor Button and highlighting the Show Sample Code and Copy to Clipboard buttons.

Learn more about the Custom Logic app in the SAP Help Portal.

Custom UIs

Create a custom app to display on the SAP Fiori Launchpad

You can create apps that display on the SAP Fiori Launchpad and link to external applications or websites with the Custom Tiles app. For example, you could link to a specific Build Workzone page the customer has created to provide HR information to their employees, or a custom application created with Build Apps.

Screenshot from the Custom Tiles app showing how to add the new app to an existing business catalog. Instructions are in the following text.

When you create a new app for the launchpad, always remember that end-users cannot access it unless they have permission (through a business catalog assigned to a business role) and the structure of where the app will display on the launchpad is defined (through a launchpad page assigned to a space, assigned to the same business role as the business catalog. From within the Custom Tile app, you can navigate directly to the Custom Catalog Extensions app, which is where you publish the tile to an existing business catalog. Afterward, you navigate to the Manage Launchpad Pages app to add the new tile to an existing launchpad page.

Assign the app to a business catalog, then to a launchpad page

For example, if we create a custom tile that links to a website relevant for all employees, I need to figure out which business catalog would be most suitable for this app. The Employee business role generally includes apps relevant for all employees in the organization, so I can navigate to the Maintain Business Roles app to look at the business catalogs assigned to this role. The existing HCM - Employee Self Service catalog looks like a good fit for my new app. Within the Custom Tiles apps, I can navigate directly to the Custom Catalog Extensions app to publish my new app to the HCM - Employee Self Service business catalog.

Screenshots from the Custom Catalog Extensions app with instructions on how to assign the app to a business catalog and a launchpad page. Instructions are in the previous and following text.

Next, I need to add the new app to a launchpad page assigned to a launchpad space that is already assigned to the Employee business role. Again, in the Maintain Business Roles app I can look up the assigned launchpad space and page(s) for the Employee business role. I see the space, SAP_BR_EMPLOYEE includes one page, BR_EMPLOYEE, with the apps My Inbox, My Outbox, and My Queries. You cannot edit an SAP-delivered space directly (IDs that start with SAP_ or BR_), but you can remove the original space and re-assign it in an editable form by selecting "Create Spaces Based on SAP-Delivered Spaces". This allows you to make a copy of the original space that you can make changes to. The space ID should change to ZBR_EMPLOYEE and the page ID should change to ZBR_EMPLOYEE.

If I am already in the Maintain Business Roles app looking at launchpad spaces assigned to the Employee business role, I can navigate directly to the Manage Launchpad Pages app by selecting the assigned space, then the assigned page I want to edit. After adding my new app to the launchpad page, I can save and navigate back to the Employee business role. Now, I assign the role to my user and refresh my browser to see the new app display on the launchpad.

Learn more about creating custom tiles in the SAP Help Portal.

Custom Business Objects

Create a custom business object

A business object is a term used to describe an artifact in an ERP system. A single business object can have one or more nodes (entities) that describe it in a hierarchical structure, one or more fields (attributes) that store data about the business object, and transactional operations that allow you to create, update, and delete business data for that object. A business object could be a document (customer invoice, employment contract), legal entities (customer, bank), or physical objects (material, inventory item).

Screenshots from the Custom Business Objects app showing how to create a custom business object. Instructions are in the previous and following text.

Before creating a custom business object, make sure it doesn't already exist in the SAP S/4HANA Cloud system. The Graph Navigator(select the sap.s4 entity) can be a resource to see entities that already exist in SAP S/4HANA Cloud and their attributes. In the event a business object doesn't exist for what the customer requires, you can use the Custom Business Objects app to create a custom business object. Custom business objects can be used to generate database tables, services (APIs), UIs, and applications.

After creating the initial business object information, select the relevant features. For example, check the box, User Interface to generate an app UI from the object. You could also check the box, Can Be Associated to allow yourself to create a custom field that you add to an app UI to call the business object in the future. One node is automatically generated to match the object name, and you can add additional nodes below it, if necessary. Last, enter data for the fields that will hold information that describes the object or is related to it. If we generate an app UI from the object, these fields will be visible on the screen when you open the app.

Assign the business object to a business catalog and view the app UI

After publishing the business object, you can add business logic. In addition, you'll see a link titled Maintain Catalogs on the general information tab. Select this link to jump into the Custom Catalog Extensions app where you need to assign the business object to an existing business catalog. After assigning the app to a catalog, assign the role that includes this catalog to your user and refresh your browser. Once you have permission to access the app UI, you'll see the link Go to Generated UI become available in the business object. Click this link to explore the new app. Remember the app will not display on the launchpad unless you add it to a launchpad page connected to a launchpad space that is mapped to the same business role as the business catalog.

Screenshot from the Custom Business Object app with instructions on how to add the business object to a business catalog. Instructions are in the previous and following text.

Last, consider how the business object will be used. Do you need to link to the business object from another application? If so, does that application support custom fields? In the Custom Fields app, you can create a custom field with an association to a standard business object that already exists in the system, or a custom business object you've created.

Learn more about the creating custom business objects in the SAP Help Portal and in this tutorial.

Customized Email and Form Templates

SAP S/4HANA Output Control and Output Parameter Determination

SAP S/4HANA Output Control is the framework used by business applications in SAP S/4HANA Cloud to perform different types of output. When a document is generated, the relevant output parameters (output channels, recipients, form templates) are automatically determined in the background with output parameter determination. Use the Output Parameter Determination app if you need to make changes to the standard output settings. For example, removing the default master form template and associating a custom master form template. The app allows you to create and maintain business rules in decision tables that determine what to output, who are the receiver(s), communication channel for the output, and the look of the output.

Diagram showing example of a decision table.

Forms and master forms are used to structure the content and layout of the output. To create documents out of these forms, Adobe Document Services is used. Documents can be output through the channels: PRINT, EMAIL, and EDI (electronic data interchange). Learn more about Adobe Document Services Configuration in the SAP Help Portal. For example, previewing a PDF form in Adobe Reader is considered "printing" a document on an ad-hoc basis. A previewed document could also be sent to a local printer in the customer's company network. In a cloud environment, the back-end system does not have a connection to the local printers in the customer's network, so a communication arrangement (integration) needs to be set up to establish this connection. To define the end-point where a document should be sent, a print queue needs to be set up in the Maintain Print Queues app to represent the output channel to a local printer. Additional details are described in the SAP Help Portal here.

Maintaining Output Templates

For business processes that generate form or email templates, there are already standard templates pre-loaded in the SAP S/4HANA Cloud system that are connected to the relevant business processes. For example, if a sales person creates and releases a sales order, the system determines the document should be sent by email to the customer. The system creates a PDF file using the form template defined in the output parameter determination settings, then sends the PDF as an email attachment to the customer. If no error is returned by the e-mail server, the email appears with the status Sent in the monitoring app, Display Email Transmissions.

Screenshots showing where the Forms Accelerator is located in SAP Best Practices for SAP S4HANA Cloud Private Edition. It's described in the following text.

One person on the implementation team should be identified to handle the end-to-end setup of the business process, Output Management (1LQ). This business process includes set-up instructions and a test script to address the setup of printers and email, defining output determination parameters and communication channels, and customizing master form templates with corporate branding (logo, header/footer.

Customizing individual form and email templates are also covered in the Output Management (1LQ) business process, however individual templates should be handled by the line of business (LoB) configuration expert responsible for configuring the business processes that generate these individual (application) form or email templates. There may be some overlap between forms relevant for different LoBs, so it's helpful to use the Forms accelerator document from SAP Signavio Process Navigator to identify which forms are mapped to different business processes. The Forms accelerator is located in the SAP Best Practices for SAP S/4HANA Cloud Private Edition solution scenario → Accelerators tab → Reference tab → Forms.

Maintain Email Templates

The standard email templates in the Maintain Email Templates app consist of fixed content (such as subject or disclaimer) and variable parts (such as the form of address). To make changes to a predelivered template, make a copy of the standard template and edit the custom template. For example, if a company is rolling out multiple countries, there may need to be language-specific variants defined for certain email templates.

Screenshots from Maintain Email Templates.

If a custom email template is created, either from scratch or by copying the standard template and editing, it needs to be assigned to the relevant business process. Learn more about assigning custom email templates to a business process.

Note

Customized templates are created in the customizing tenant of the development system and must be transported to the test and production systems to be usable/visible to end users in the relevant business processes.

Manage Logos and Manage Texts Apps

Use the Manage Logos app to upload, download, edit, and delete company logos that can be added to master form templates. The app also provides information about how many and which master forms use a specific logo.

Two screenshots: One of the Manage Logos app and one of the Manage texts app.

Use the Manage Texts app to create, edit, and delete standard texts that can be added to master form templates. For example, a standard company header or footer with address details. The app also provides information about how many and which master forms use a specific text.

Types of Form Templates

There are three types of form templates:

  • Master forms define the overall layout of the pages (for example, page size and orientation, title, or logo), and contain placeholders for the content of logos, sender addresses, and footer blocks that are dynamically filled based on the output parameter determination. Learn more about editing master form templates here.
  • Application forms provide the business content of the output by referencing one layout variant of a master form template and adding their content to the form. Learn more about editing application form templates here.
  • Standalone forms do not use a master page and combine content and layout in one form template.
Screenshot of an example form showing the Master Form fragment and the Application form content.

Note

Only print forms are supported within SAP S/4HANA Cloud. To use interactive forms, a customer would need to subscribe to the SAP Forms Service by Adobe running on the SAP Business Technology Platform and an integration needs to be set up to connect the service with the SAP S/4HANA Cloud system. Learn more about the technical setup of the SAP Forms Service by Adobe in the SAP Help Portal.

Maintain Form Templates

The standard form templates in the Maintain Form Templates app already include translations for the countries they are relevant for.

Two screenshots from the Maintain Form Templates app showing the Output Management Form Template screen and where to download a template.

To edit a form template, make a copy of the standard template and download the template in the original language. Templates can be downloaded in XDP (XML Data Package) or XSD (XML Schema Description) format:

  • XDP files are intended to be an XML-based companion to PDF that allows a PDF to be transformed into XML and back to PDF without losing information. These files can be opened in Adobe Livecycle Designer to make text and formatting changes. Adobe Livecycle Designer needs to be downloaded as a desktop application with the instructions provided here.
  • XSD files store content as plain text and therefore can be opened by any text editor program. Use this format if you do not have access to Adobe Livecycle Designer and only need to make text changes.

If a custom form template is created, either from scratch or by copying the standard template and editing, it needs to be assigned to the relevant business process. Learn more about assigning custom form templates to a business process.

Note

Customized templates are created in the customizing tenant of the development system and must be transported to the test and production systems to be usable/visible to end users in the relevant business processes.

Transporting In-App Extensions

Adaptation Transport Organizer (ATO)

The basic principle for the web-based extension tools like the SAP Fiori extensibility apps is that you do not need to specify any packages or transport requests in these applications. All enhancements are initially created as local objects that have not yet been assigned to a transport request. The transport of key user extensions is managed via the adaptation transport organizer (ATO). The ATO must be set up in order to use the SAP Fiori extensibility apps and those used to create packages and register extensions for transport.

Configure Software Packages SAP Fiori app

In the Configure Software Packages Fiori app, you configure software packages and assign them to transport requests and tasks for transporting extension items. Software packages need to be assigned to a transport request and task to be enabled for change recording.

Screenshot of the Configure Software Packages SAP Fiori app with the Add Registration button highlighted.

Register Extensions for Transport SAP Fiori app

In the Register Extensions for Transport app, you can assign extension items to software packages that are enabled for change recording. To transport extensions items to your Quality or Production system, an administrator needs to release the corresponding transport requests and transport extension items in the backend with the Transport Organizer (SE09) transaction.

Screenshot of the Register Extensions for Transport app with the Reassign to Package button highlighted.

Try it yourself!

Learn how to assign extensions to a software package and transport request in this tutorial.

Log in to track your progress & complete quizzes