logo

Are you need IT Support Engineer? Free Consultant

Deploy a SAP Fiori Elements App from BAS to S/4HAN…

  • By sujay
  • 30/06/2026
  • 41 Views

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

Abhishekpandey_2-1782799035796.Png

Wizard Step 2 — Category: Full-Stack

Abhishekpandey_3-1782799035802.Png

Wizard Step 3 — Type: Full-Stack Node.JS

Abhishekpandey_4-1782799035809.Png

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.

Abhishekpandey_5-1782799035814.Png

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

Abhishekpandey_6-1782799035818.Png

Template Selection — List Report Page

Abhishekpandey_7-1782799035824.Png

Data Source — Connect to a System

  • Data Source: Connect to a System
  • System: Your S/4HANA destination (e.g. GIE_080 (S4HC))

Abhishekpandey_8-1782799035826.Png

Once connected, choose your OData V4 service.

Abhishekpandey_9-1782799035830.Png

Entity Selection

  • Main Entity: Root CDS entity exposed by the service
  • Automatically add table columns: Yes
  • Table Type: Responsive

Abhishekpandey_10-1782799035832.Png

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

Abhishekpandey_11-1782799035837.Png

📝  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.

Abhishekpandey_12-1782799035843.Png

📝  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.

Abhishekpandey_13-1782799035848.Png

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

Abhishekpandey_14-1782799035854.Png

Select your transport request and click Finish.

Abhishekpandey_15-1782799035861.Png

Click Publish Locally.

Abhishekpandey_16-1782799035870.Png

⚠️  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.

Abhishekpandey_17-1782799035876.Png

 

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.

Abhishekpandey_18-1782799035883.Png

 

Abhishekpandey_19-1782799035890.Png

 

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

Abhishekpandey_20-1782799035898.Png

⚠️  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:

  1. Click Add → Create New Space

Abhishekpandey_21-1782799035905.Png
Abhishekpandey_22-1782799035908.Png

  1. Open the space/page → Edit → click Select Catalogs

Abhishekpandey_23-1782799035910.Png
Abhishekpandey_24-1782799035916.Png

  1. Tick your catalog → Select
  2. On the Manually Selected tab, drag the tile into the page
  3. Add a Section Title, then Save.

Hard-refresh the Fiori Launchpad (Ctrl+Shift+R). Navigate to your space.

Abhishekpandey_26-1782799035924.Png
Abhishekpandey_28-1782799035933.Png

 

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.

Source link

Leave a Reply

Your email address will not be published. Required fields are marked *

Chat with us on WhatsApp!