abap2UI5 in company with other technologies.
abap2UI5 is more than a standalone framework for building apps. At its core it is deliberately agnostic: it makes no assumption about where your data comes from, which model backs your UI, or which stack you have already invested in. That neutrality is what makes it flexible — whenever it is useful, abap2UI5 plugs into what your system already offers.
This repository shows exactly that. OData, Smart Controls, RAP with and without draft, RAP business events, stateful sessions and ABAP locks, WebSockets via AMC/APC, the MIME repository — abap2UI5 works alongside each of them, and each one keeps doing what it is good at. Nothing here replaces an existing technology; everything here complements one. Whether you use any of it is entirely up to you — everything is possible, nothing is required.
The samples live in their own repository simply because they reach beyond a plain abap2UI5 installation: they use something the system provides, so the basic samples in abap2UI5/samples stay install-and-run.
Every area is self-contained and brings its own README. Pick the one you came for and try it out — the others can wait until you need them.
| Package | Topic | Plays together with |
|---|---|---|
src/01 |
OData — bind a table to an OData V2 model | an activated OData V2 service |
src/02 |
Smart Controls — sap.ui.comp driven by OData metadata |
SAPUI5 + an activated Gateway service |
src/03 |
RAP — consume a business object with EML | ABAP Platform >= 1909; the BO ships with this repo |
src/04 |
RAP with Draft — use draft handling | as above |
src/05 |
Business Events — react to RAP events, log them, show them | as above |
src/06 |
Stateful Sessions / Locks — sticky session, ENQUEUE |
ABAP Standard (on-premise), the table Z2UI5_T_SMPE_01 |
src/07 |
AMC/APC — a news feed over WebSocket | on-premise APC/AMC, the ICF node Z2UI5_APC_SMP_2 |
src/08 |
MIME Play Audio — play a sound from the MIME repository | the ICF service /SAP/PUBLIC/BC/ABAP/mime_demo |
The numbering is a reading order, not a dependency chain: 01 starts where most
systems already are — an activated OData service — and each package from there
reaches a little deeper into the stack. Enter wherever your system is today.
- Install abap2UI5.
- Pull this repository with abapGit. It runs on ABAP Platform >= 1909 or a BTP ABAP Environment — that is what EML asks for, which is why it is the one sample repository without a 7.02 downport.
- Set up whatever the package you picked builds on — its README says so in one short section.
- Start an app with
?app_start=<class name>.
Every sample of the abap2UI5 sample scheme is called Z2UI5_CL_SMPE_APP_<no>, and
the tables in the package READMEs give you the number, so sample 487 is
?app_start=z2ui5_cl_smpe_app_487. The RAP packages additionally come with an
overview app that lists and launches their samples:
?app_start=z2ui5_cl_smpe_app_00.
Every object carries the token SMPE behind its type token — the scheme the
samples repository uses with its SMP token:
Z2UI5_CL_SMPE_<object> classes, including the behavior pools and event handlers
Z2UI5_T_SMPE_<object> persistent tables
Z2UI5_D_SMPE_<object> draft tables
Z2UI5_E_SMPE_<object> data elements
Z2UI5_R_SMPE_<object> CDS entities and their behavior definitions
Z2UI5_SD_SMPE_<object> service definitions
Z2UI5_SB_SMPE_<object> service bindings
Runnable samples are Z2UI5_CL_SMPE_APP_<no>, so the class name is what you pass to
?app_start=.
Class names are capped at 25 characters, tables at 16. Both limits and the
patterns themselves are enforced by the object_naming rule in
abaplint.jsonc; the comment there explains where the numbers come
from. The other object types have no object_naming key in abaplint, so for those
the scheme is convention only.
One group sits outside the scheme: the objects abaplint cannot name-check at all —
the AMC channel, the APC push channel with its ICF node, and the two MIME objects.
They carry the older SMP token (Z2UI5_AMC_SMP_2, Z2UI5_APC_SMP_2,
z2ui5_smp_error.mp3, z2ui5_smp_success.mp3).
| Workflow | What it does |
|---|---|
abap-standard |
abaplint ./abaplint.jsonc — syntax v757, the on-premise release |
check-abap2UI5 |
abap2ui5lint — the app class and the view it produces, together |
There is no abap-702 counterpart and no derived branch: EML runs from ABAP
Platform 1909 onwards, so unlike the other sample repositories this one needs no
downport. There is no abap-cloud counterpart either — several packages here are
on-premise by design (src/06 ENQUEUE, src/07 APC/AMC), so a cloud syntax check
over the whole tree would report expected errors rather than useful ones.
Two things to know when you read the badges:
- abaplint parses EML but does not resolve behavior definitions, so entity, alias and
action names inside EML statements are not checked, and neither are the
.asbdeffiles — the samples themselves are the reference here. RAISE ENTITY EVENTandFOR ENTITY EVENT(src/05) are beyond the abaplint parser as well, so that package reports parser errors on syntax that activates fine in an ABAP system.
Take whichever package matches the technology you already run — an OData service, a Gateway service, a RAP business object, an APC channel — and put an abap2UI5 app in front of it. None of these packages depends on another, and none of them is a prerequisite for using abap2UI5 at all: they are options you can reach for when they help.
Something else you would like to see combined with abap2UI5? Open an issue or a pull request — the collection grows with the scenarios people bring to it.