Most tutorials about deploying Fiori apps from Business Application Studio (BAS) stop at ‘Deployment Successful.' But deployment is only the midpoint. For a user to actually find and launch your app in the SAP Fiori Launchpad, you need to wire up four more things: a crossNavigation inbound in the manifest, an IAM App, a Business Catalog, and a Launchpad Space. Get any one of these wrong and you hit silent failures — the app exists in the system but never shows as a tile.
Audience
This guide targets developers building SAP Fiori Elements applications in SAP Business Application Studio for SAP S/4HANA Cloud Public Edition using OData V4 services.
Prerequisites
- SAP Business Technology Platform (BTP) subaccount with SAP Business Application Studio subscription
- S/4HANA Cloud system with an active OData V4 service
- A BTP Destination configured for your S/4HANA system
- Eclipse ADT connected to your S/4HANA system
Architecture Overview
OData V4 Service (S/4HANA ABAP)
│
▼
Fiori Elements List Report App ◄── Generated in SAP BAS
│
npm run deploy (deploy-to-abap, ui5-deploy.yaml, gCTS transport)
│
▼
BSP Application + LADI /NAMESPACE/MYAPP_UI5R (auto-created on deploy)
│
▼
IAM App (External App type) ◄── Created in ADT, Published Locally
│
▼
Business Catalog ◄── Created in ADT, Published Locally
│
▼
Business Role ◄── Assigned in Maintain Business Roles
│
▼
Launchpad Space / Page ◄── Tile visible to user
BAS is accessed through the SAP BTP Cockpit — not through the S/4HANA Fiori Launchpad. Open BTP Cockpit → Subaccount → Instances and Subscriptions.
Find SAP Business Application Studio → click Go to Application. You land in the SAP Build Lobby.
In the SAP Build Lobby, click Create (top right) to launch the Create Project wizard.
Wizard Step 1 — Objective: Application
Wizard Step 2 — Category: Full-Stack
Wizard Step 3 — Type: Full-Stack Node.JS
Wizard Step 4 — Name and Dev Space
Provide a project name (e.g. myapp-audit-log) and create or select a Full-Stack dev space.
Click Review then Create. SAP Build provisions the dev space and scaffolds the project.
With the project open in BAS, press Ctrl+Shift+P and run: Fiori: Open Application Generator
Template Selection — List Report Page
Data Source — Connect to a System
- Data Source: Connect to a System
- System: Your S/4HANA destination (e.g. GIE_080 (S4HC))
Once connected, choose your OData V4 service.
Entity Selection
- Main Entity: Root CDS entity exposed by the service
- Automatically add table columns: Yes
- Table Type: Responsive
Click Finish. BAS generates and opens the project.
The SAP Fiori Launchpad discovers launchable applications through inbound navigation definitions stored in the application descriptor (manifest.json). During deployment, these inbounds are converted into Launchpad App Descriptor Items (LADI). Without them, the application can be deployed successfully but cannot be exposed through the Launchpad.
⚠️ This is where most guides go wrong by omission.
By default the Fiori generator creates an application-type app with no crossNavigation block. If you deploy as-is, the BAS terminal shows:
warn No LADI was created as no inbound is defined in manifest.json
warn App descriptor of type ‘application' does not define a launchable inbound
Without a Launchpad App Descriptor Item (LADI), you cannot create an IAM App that references your app, and therefore cannot add a tile to a Business Catalog.
Fix: Open webapp/manifest.json and add a crossNavigation block inside sap.app:
“sap.app”: {
“id”: “com.mycompany.myauditlog”,
“type”: “application”,
“crossNavigation”: {
“inbounds”: {
“MyAuditLog-display”: {
“semanticObject”: “MyAuditLog”,
“action”: “display”,
“title”: “{{flpTitle}}”,
“subTitle”: “{{flpSubtitle}}”,
“signature”: {
“parameters”: {},
“additionalParameters”: “allowed”
}
}
}
}
}
Also add the keys to webapp/i18n/i18n.properties:
flpTitle=My Audit Log App
flpSubtitle=View sales order change history
📝 Tip on additionalParameters: Setting it to “” produces a harmless warning. Use the explicit string “allowed” or “ignored” to avoid it.
The deploy-to-abap task requires a gCTS transport — a Workbench Request with target 1GT. A normal transport fails with:
Request does not have transport target 1GT
In ADT: Transport Organizer → right-click your user node → Create → Transport Request:
- Type: Workbench Request
- Target: 1GT
Note the transport number (e.g. GIEK9xxxxx) — you will plug it into ui5-deploy.yaml.
Create ui5-deploy.yaml in the project root:
specVersion: “4.0”
metadata:
name: com.mycompany.myauditlog
type: application
builder:
resources:
excludes:
– /test/**
– /localService/**
customTasks:
– name: deploy-to-abap
afterTask: generateCachebusterInfo
configuration:
target:
destination: GIE_080
authenticationType: reentranceTicket
app:
name: /MYNAMESPACE/MYAUDITLOG
description: My Audit Log App
package: /MYNAMESPACE/MY_PACKAGE
transport: GIEK9xxxxx
exclude:
– /test/
– /localService/
⚠️ app.name must use your registered ABAP namespace prefix (e.g. /MYNAMESPACE/). Using a Z* name in a namespaced package causes: Customer object WAPA cannot be assigned to package
Open a terminal in the project root and run:
npm install
npm run build
npm run deploy
A successful deployment shows:
Inbound MyAuditLog-display was converted to LADI /MYNAMESPACE/MYAUDITLOG_UI5R
Launchpad App Descriptor Item /MYNAMESPACE/MYAUDITLOG_UI5R was created
SAPUI5 Application has been uploaded and registered successfully
Deployment Successful.
📝 Note the LADI ID (/MYNAMESPACE/MYAUDITLOG_UI5R) — you need it for the IAM App in the next step.
A Launchpad App Descriptor Item (LADI) is generated during deployment from the crossNavigation section of the application descriptor. It contains the metadata that allows the SAP Fiori Launchpad to discover the application.
In ADT: right-click your package → New → Other ABAP Repository Object → search for IAM App.
Fill in:
- Name: /MYNAMESPACE/MYAUDITLOG_APP
- Description: My Audit Log Fiori App
- App Type: External App ← critical (see gotcha below)
- Fiori Launchpad App Descr Item ID: /MYNAMESPACE/MYAUDITLOG_UI5R
Select your transport request and click Finish.
Click Publish Locally.
⚠️ Do NOT select ‘Fiori App' or ‘UI Adaptation App' as the type. The UI5R descriptor created by deploy-to-abap is only compatible with External App. Wrong type gives:
UI5R can only be used in Adaptation UI Apps
📝 Publishing auto-generates _UI5A and _UI5_EXT runtime artifacts. Always reference the IAM App by its logical name /MYNAMESPACE/MYAUDITLOG_APP, not the runtime objects.
In ADT: right-click your package → New → Other ABAP Repository Object → Business Catalog.
Name it (e.g. /MYNAMESPACE/MYAUDITLOG_BC), select your transport, click Finish.
In the Apps tab, click Add and search for your logical IAM App name.
Save, then click Publish Locally.
⚠️ The catalog MUST be Published before it appears in:
• The Maintain Business Roles app's Business Catalog picker
• The Select Catalogs dialog in the Launchpad page editor
If you can see a colleague's catalog but not yours, come back and verify the Publication State.
In the Fiori Launchpad, open the Maintain Business Roles app:
- Open your role → Edit
- Business Catalogs tab → Add → search for /MYNAMESPACE/MYAUDITLOG_BC → OK
- Set Access Category to Unrestricted
- Save
⚠️ The Select Catalogs dialog in the page editor (next step) only lists catalogs already assigned to the role that owns the space. Skip this step and your catalog won't appear in the dialog even if it's published.
In Maintain Business Roles → your role → Launchpad Spaces tab:
- Click Add → Create New Space
- Open the space/page → Edit → click Select Catalogs
- Tick your catalog → Select
- On the Manually Selected tab, drag the tile into the page
- Add a Section Title, then Save.
Hard-refresh the Fiori Launchpad (Ctrl+Shift+R). Navigate to your space.
Symptom | Root Cause | Fix |
warn No LADI was created | No crossNavigation.inbounds in manifest.json | Add the crossNavigation block before deploying |
Request does not have transport target 1GT | Wrong transport type | Create a gCTS transport (target 1GT) in ADT |
Customer object WAPA cannot be assigned to package | Z* app name in a namespaced package | Use namespaced app name: /MYNAMESPACE/MYAPP |
UI5R can only be used in Adaptation UI Apps | Wrong IAM App type | Create IAM App with type External App |
My catalog missing from Select Catalogs | Not published or not assigned to the role | Publish in ADT + assign to Business Role + reload |
403 Forbidden on BSP URL | UCON blocks direct access | Access via the Launchpad tile, not the direct URL |
Although deploying a SAPUI5 application from SAP Business Application Studio is straightforward, making it available to end users requires several additional configuration steps within SAP S/4HANA Cloud. Each artifact—crossNavigation, LADI, IAM App, Business Catalog, Business Role, and Launchpad Space—depends on the previous one. Understanding this dependency chain makes troubleshooting much easier when an application deploys successfully but does not appear in the SAP Fiori Launchpad.
Tested on SAP S/4HANA Cloud Public Edition, SAP Build / BAS (2024/2025 release), @SAP-ux/ui5-deploy task via specVersion: ‘4.0' ui5-deploy.yaml.



