Fiori Launchpad ​
Embed your abap2UI5 apps into the SAP Fiori Launchpad (FLP) on S/4 On-Premise or Private Cloud. Each app appears as a regular tile; inside the Launchpad shell, abap2UI5 apps can set their title, read startup parameters, and participate in cross-app navigation like any other Fiori app.
Installation ​
The Launchpad loads the abap2UI5 frontend from the UI5 ABAP repository of your system (as app z2ui5). Install the Launchpad connector from the abap2UI5-addons organization via abapGit — it ships the frontend app for the UI5 repository. After the import, check that the app index is up to date (see Troubleshooting below).
Target Mapping ​
Use these parameters for target mapping in your Launchpad configuration. abap2UI5 uses the app's class name as the Semantic Object so each app gets its own navigation target — replace Z2UI5_CL_MY_APP with your app class:
- Semantic Object:
Z2UI5_CL_MY_APP - Action:
display - URL:
/sap/bc/ui5_ui5/sap/z2ui5 - ID:
z2ui5 - Parameter:
app_start / Z2UI5_CL_MY_APP
Launchpad Features ​
Inside your app, the client API gives you access to the Launchpad context. Runnable samples: Z2UI5_CL_SMPS_APP_481 to Z2UI5_CL_SMPS_APP_484 in the samples-stack repository (package src/09).
Detect the Launchpad Context ​
client->get( )-check_launchpad_active tells you whether the app currently runs inside a Launchpad — useful to hide your own page header or to guard Launchpad-only features:
IF client->get( )-check_launchpad_active = abap_false.
client->message_box_display( `This feature needs the Launchpad.` ).
ENDIF.
Set the Tile Title Dynamically ​
Change the Launchpad shell title from ABAP at any time with the set_title_launchpad frontend event:
client->follow_up_action(
val = z2ui5_if_client=>cs_event-set_title_launchpad
t_arg = VALUE #( ( `My Dynamic Title` ) ) ).
Read Startup Parameters ​
Parameters from the target mapping (or the start URL) arrive as name/value pairs in client->get( )-t_comp_params:
DATA(lt_params) = client->get( )-t_comp_params.
DATA(lv_product) = VALUE #( lt_params[ n = `PRODUCT` ]-v OPTIONAL ).
Cross App Navigation ​
Navigating between Fiori apps goes through the Launchpad's own cross-app navigation rather than through an abap2UI5 roundtrip, so the shell's history and back button keep working. The intent, the parameters and the way back are on Navigation → Cross App.
Troubleshooting ​
Sometimes installation via abapGit causes cache-related issues. Here's how to clear them:
Cache Management ​
-
Recalculate the app index of z2ui5 with report
/UI5/APP_INDEX_CALCULATE -
Recalculate the index of the distribution layer with report
/UI5/APP_INDEX_CALCULATE(if the tab isn't visible, switch to another tab first — it usually shows up after that) -
Clear HTTP caches in transaction
SMICM -
Clear browser caches and hard reload
Manual Deployment ​
If clearing caches doesn't fix it, push the frontend app manually:
-
Download the webapp folder of the project.
-
Use the SAP program
/UI5/UI5_REPOSITORY_LOADto push the app to the server.
Launchpad KPIs ​
Extend your Fiori Launchpad with Key Performance Indicators (KPIs) via the abap2UI5 Launchpad KPI add-on.
Functionality ​
Approach ​
The integration has three steps: implement a simple interface, the Launchpad calls a generic OData proxy service, and the proxy delegates to your ABAP class to compute the KPI count.
(1/3) Implement the z2ui5_if_lp_kpi interface. The count method takes an optional filter string (from the OData $filter parameter) and returns the KPI as an integer:
INTERFACE z2ui5_if_lp_kpi
PUBLIC.
METHODS count
IMPORTING
filter TYPE string
RETURNING
VALUE(result) TYPE i.
ENDINTERFACE.
(2/3) Implement the interface in your app class next to z2ui5_if_app. The count method holds your KPI logic (e.g., counting open items from the database):
CLASS z2ui5_cl_lp_kpi_hello_world DEFINITION PUBLIC.
PUBLIC SECTION.
INTERFACES z2ui5_if_lp_kpi.
INTERFACES z2ui5_if_app.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_lp_kpi_hello_world IMPLEMENTATION.
METHOD z2ui5_if_lp_kpi~count.
"kpi calculation...
result = 10.
ENDMETHOD.
METHOD z2ui5_if_app~main.
"abap2UI5 app logic here...
ENDMETHOD.
ENDCLASS.
(3/3) A generic OData proxy service (Z2UI5_PROXY_KPI_SRV) handles the rest. It takes the $filter parameter with your class name, creates an instance of the class, calls count, and returns that many dummy OData entries. The Launchpad then shows the $count result as the tile KPI. Configure the tile with this endpoint:
.../sap/opu/odata/sap/Z2UI5_PROXY_KPI_SRV/ENTITYCollection/$count?$filter=CLASS eq 'z2ui5_cl_lp_kpi_hello_world'
Further Reading ​
The original article series with additional screenshots: