abap2UI5
Version 1.147.0

Native Mobile Shell ​

abap2UI5/mobile-shell runs abap2UI5 apps in a native app on iOS and Android. The app is a generic shell: it knows one URL, shows the regular abap2UI5 frontend in a webview, and offers the page a small bridge to what a browser cannot reach - the native barcode scanner, push notifications, the biometric unlock. Every screen still comes from the ABAP class, so a change to an app never needs a new release in an app store.

Preview — proof of concept

The shell is a proof of concept, not a product: it has no releases, and parts of it - the onboarding flow of the SAP BTP SDK, push notifications - need accounts with SAP, Google and Apple to switch on. Its PLAN.md has the state of every phase.

Where It Fits ​

There are two ways to bring an abap2UI5 app to a phone:

Mobile Start SAP's own app mirrors the tiles of your SAP Build Work Zone site. Available today, no development - but the app sees only what a mobile browser sees
Native mobile shell An app of your own, built on the SAP mobile stack (SAP Mobile Services and the SAP BTP SDK for iOS and Android), with native device features through a bridge

Both are online-only. abap2UI5 sends every event to the server and gets the next view back, so the offline features of the SAP mobile stack do not apply; this is a decision, not a gap.

How It Works ​

device
├── native shell app       onboarding, app lock, push, managed configuration
│   └── webview            the abap2UI5 frontend, loaded from your system
│         └── window.abap2ui5Native   the bridge
└── HTTPS ── SAP Mobile Services ── your ABAP system with abap2UI5

The shell injects a small script into the page that defines window.abap2ui5Native: device information, a native toast, the barcode scanner, the push token and a biometric confirmation, each as a method that returns a promise. In a plain browser the object does not exist, and an app falls back to what the browser can do.

Scanning From ABAP ​

The framework ships the custom control z2ui5.cc.NativeBridgeScan for the scanner: a button that calls the shell's scanner, writes the result into its bound value and fires OnScan; a canceled or failed scan fires OnError. Outside the shell it renders an invisible placeholder, so the same view runs unchanged in a browser - showInBrowser shows the button anyway, and a press then fires OnError. The control ships with abap2UI5 1.147.0 and later.

The sample app in the repository's abap/src is the worked example.

Distribution ​

The shell reads its settings from the device management your organization already uses: the abap2UI5 URL, a forced app lock and screenshot protection come in as managed configuration on Android and iOS, so no user has to type an address. A device without such management is set up by scanning a QR code with the URL. The repository's distribution guide has the details and the checklist for production.

Edit this page on GitHub ↗ Last updated:
On this page