PackagePackagetypeA library you install and call yourself.See every one →What this type is →by a community orgby a community orgoriginPublished by a community organisation, so it outlives any one maintainer.See every one →

abap2UI5

One ABAP class implementing z2ui5_if_app is the whole app: the browser loads a generic UI5 shell once, and every interaction after that is an HTTP roundtrip back into ABAP.

A UI5 app normally means a frontend project and a service to feed it, deployed and transported apart from the ABAP that holds the logic. abap2UI5 keeps all of it in ABAP: views are UI5 XML built with z2ui5_cl_ui5_view_builder, client->_bind( ) ties an ABAP variable to a control, client->_event( ) names a UI5 event that main checks, and the app object is serialised and restored on each request so its attributes keep their values. It runs on a single HTTP handler inside the system's own logon and authorisations, and installs through abapGit with no deployment of its own. The same code runs from NW 7.02 to ABAP Cloud, downported to the 702 branch and linted against it on every merge.

Facts

Last pushLicenceMIT

Where it sits

Lives in
Provides
UI written in ABAPABAPUI written in ABAPcapabilityProducing a web user interface from ABAP code, with the application’s backend language also defining what the user sees and how it behaves.
Requires
abapGitabapGitartifactNamed as a dependency in its documentation.

Who is behind it

abap2UI5abap2UI5OrganisationMaintains this
In the atlas: maintains 18
@abap2UI5
maintainerabapsheepPersonContributes to this
In the atlas: contributes to 6
@abapsheep
LennartPersonContributes to this
In the atlas: contributes to 1
@abs-lme
axelmohnenPersonContributes to this
In the atlas: contributes to 4
@axelmohnen
Sven TreutlerPersonContributes to this
In the atlas: contributes to 3
@bibber0612
choper725PersonContributes to this
In the atlas: contributes to 3
@choper725
Christian GünterPersonContributes to this
In the atlas: maintains 1, contributes to 12
@christianguenter2
Christian WildtPersonContributes to this
In the atlas: contributes to 8
@cwildt
feng1976PersonContributes to this
In the atlas: contributes to 2
@feng1976
Francisco MilánPersonContributes to this
In the atlas: contributes to 5
@francisco-milan
Furkan COSGUNPersonContributes to this
In the atlas: maintains 6, contributes to 8
@furkancosgun
24 contributors

What it declares

Every artifact

Type
Package
Origin
By a community org
Runtime
build time

As a package

Where it runs
Inside its host
Distributed through
abapGit

Parts and add-ons37

Parts 8

Desktop apps1
abap2UI5 mobile shellby a community orgA generic native iOS and Android shell that loads one abap2UI5 endpoint in a WebView and hands the ABAP app the phone's scanner, push token and biometric check through a JavaScript bridge.
Starting point
IDE extensions1
abap2UI5 for VS Codeby a community orgA VS Code extension for abap2UI5 apps: F9 starts the app class in a preview beside the source, Ctrl+F3 activates the class and reloads it, and the abap2UI5 linter runs in the editor while you type.
ConsiderationFunctional boundaryThe embedded preview needs a system that accepts basic auth: the documentation states that pure SSO or SAML without a basic-auth fallback is not supported, and points at `external` mode, which opens the app in the normal browser with the existing SAP session. On the web only the language half runs; the preview with its proxy, traffic log and screenshot, Ctrl+F3 activation, the render gate, the workspace-wide check and the MCP servers are desktop-only. The agent app tools send nothing until `abap2ui5.agent.enableAppTools` is switched on in User settings, because an event they fire runs as the configured user and changes data on the system for real.
MCP servers1
@abap2ui5/mcp-serverby a community orgAn MCP server that puts the abap2UI5 development loop on the machine an agent runs on: check the view the ABAP builds, photograph it, deploy the class into a sandbox, boot the app headless and read the errors.
ConsiderationFunctional boundaryEvery gate here runs off-system, so what the class does on a real system and what the view does on the oldest UI5 release it has to serve are what the `pitfalls` catalogues carry and no local run can see. It runs abap2UI5 app classes, so ABAP that is not one has nothing here to deploy into. In system mode the sandbox tools are not offered, and an `app_act` event runs on the system as the configured user.
Packages2
abap2UI5 frontendby a community orgThe abap2UI5 frontend as installable ABAP artefacts: per system type one generated branch carrying the BSP or HTTP service with its handler, pulled into the system with abapGit.
ConsiderationFunctional boundaryThe frontend is optional: where abap2UI5 apps are reached through the framework's own HTTP service, nothing from here is installed. In S/4 Public Cloud that endpoint needs `S_DEVELOP` authorisation, which the installation guide states makes it unfit for production, and the separate frontend app with an extra tile is what it names for business users. The `cloud_new` and `standard_new` branches need an abap2UI5 newer than 1.146.0 on the system.
abap2UI5-localby a community orgThe whole abap2UI5 framework folded into the local classes of one HTTP handler, so an app runs without the framework installed as a package.
ConsiderationFunctional boundaryNot where the framework code itself has to change: `input/` and the three installable branches are overwritten by the workflows on every upstream push, and a framework change is a pull request to abap2UI5. Bug reports and feature requests also go to the abap2UI5 repository rather than this one.
Samples3
abap2UI5 samplesby a community org129 abap2UI5 sample apps, one ABAP class each, pulled into a system with abapGit and read in the order the catalogue lists them.
ReferenceConsiderationFunctional boundaryA sample that needs something the system provides is not here — the samples-stack repository holds the OData, RAP, WebSocket and launchpad demos, and samples-controls the rebuilds of the UI5 Demo Kit originals. Every class in `src/` keeps to controls and properties available since UI5 1.71 and not deprecated, apart from two clipboard samples marked `(UI5 1.119+)`, so a newer control is not demonstrated here. Numbers are handed out per repository and reused across the three, so `493` alone does not name a sample: `Z2UI5_CL_SMP_APP_493` is the Hello World here.
abap2UI5/samples-controlsby a community orgThe UI5 Demo Kit rebuilt in ABAP: the official demo kit samples of ten UI5 libraries as ready-to-run abap2UI5 apps, installed into a system with abapGit.
ReferenceConsiderationFunctional boundaryThe 221 ports under `src/02` need a UI5 runtime newer than 1.71: they install and activate on any release, and on an older UI5 the newer control does not render. The `src/03` collection is hand-written for SAPUI5-only controls and needs a SAPUI5 bootstrap. There are no per-library branches, so pulling the whole repository is the one way in and the activation takes a few minutes.
abap2UI5/samples-stackby a community orgTen self-contained ABAP packages, each putting an abap2UI5 app in front of one technology the system already runs: OData V2, Smart Controls, RAP with and without draft, business events, ABAP locks, WebSockets, MIME and the Fiori Launchpad.
ReferenceConsiderationFunctional boundaryNot the place to learn abap2UI5 itself: every package starts from a technology the system already provides, and the framework basics and the control gallery are the other two sample repositories, abap2UI5/samples and abap2UI5/samples-controls. Three packages are out of reach on ABAP Cloud, and `05` needs the 2021 release that carries RAP business events.

Add-ons 29

Apps10
abap2UI5 for Excelby a community orgAn Office add-in that runs an abap2UI5 app in Excel's task pane, where the app reads and writes the workbook through the z2ui5.cc.ExcelBridge control.
Starting point
abap2UI5-addons/table-content-loaderindependently maintainedAn abap2UI5 developer tool that moves the content of an ABAP table in and out of JSON, CSV or XLSX files, with a preview before download or saving to the database.
ConsiderationFunctional boundaryNot an end-user app: it reads from any table the user names and writes into tables of the Z/Y namespace, with no authorisation check of its own, so the README asks a project to add its own checks on `S_TABU_DIS`/`S_TABU_NAM` and to restrict who may run it before it is used beyond a development system. XLSX upload and download are not ready for ABAP Cloud yet, and of the upload apps only the JSON one writes the file's rows back to the database.
admin-cockpitby a community orgAn abap2UI5 app that shows usage, errors, response times, the draft table and a security traffic light of an abap2UI5 installation.
ConsiderationFunctional boundaryIt sees [abap2UI5](artifact:abap2ui5-abap2ui5) only: the figures come from the framework's HTTP handler, its monitor hook and its draft table, so nothing outside abap2UI5 appears in them. The usage, error and performance tabs stay empty until the handler line is in place or the user exit sets `check_monitor_active`. Recording which employee used which application, when and how fast, is subject to works council co-determination in Germany (§ 87 (1) no. 6 BetrVG); user tracking is `HASH` by default, `NAME` stores user names, and the request recorder keeps the complete request and response of every roundtrip for two days by default.
config-managementby a community orgKeeps the theme, UI5 bootstrap source, custom CSS and Content-Security-Policy of an abap2UI5 page in database tables instead of in code, with a popup app to edit them.
ConsiderationFunctional boundary`APP_TITLE` is not applied by the exit: the `title` field was removed from `z2ui5_if_ui5_exit=>ty_s_http_config` in abap2UI5 1.145.0, so an app that wants it as its browser tab title sets it while it runs. The live theme preview runs the frontend action `THEMING` / `setTheme` and needs UI5 1.118 or later; on an older release a saved theme applies with the next page load. The code is written for ABAP 7.50 and the README states there is no downported 7.02 version, no 702 branch and no workflow that builds one.
http-connectorby a community orgAn add-on that makes the abap2UI5 apps of one ABAP system reachable through another: a thin ICF handler on the consumer system forwards every roundtrip to the source system through an SM59 destination.
ConsiderationFunctional boundaryStateful apps do not work through it: an app calling `client->set_session_stateful( )` needs the ICF session of the system it runs on, and the consumer opens a new HTTP connection per request without forwarding the `sap-contextid` header that addresses that session. Request headers do not cross either, and a user exit on the source system sees the path of the node `/sap/bc/z2ui5_http_srv` rather than the consumer's. For ABAP Cloud there is only the `cloud` branch, which the README describes as an unmaintained prototype from 2025-11, consumer side only and with no CI.
rfc-connectorby a community orgCalls abap2UI5 apps of another system over RFC: an ICF handler on the system the browser talks to forwards each roundtrip through an SM59 destination to the system the apps run on.
ConsiderationFunctional boundaryFor an app that calls `client->set_session_stateful( )`, which needs the ICF session of the system it runs on; apps keeping their state in the draft table, the abap2UI5 default, work unchanged. For an app that reads a request header through the user exit on the source system, because the consumer forwards method, body, path, query string and status, not headers.
sapguiindependently maintainedThirty classic transactions, SE80 and SE16N among them, rebuilt as abap2UI5 apps and installed with abapGit into a standard ABAP system.
ConsiderationFunctional boundaryNot on ABAP Cloud: the system tables and the classic Workbench APIs the screens use are not released for the ABAP Cloud language version, and there is no 7.02 version below the 7.50 floor either. Not where the full original function is needed, since only the listed transactions exist and about 300 buttons and fields are shown disabled. The authorization checks are rebuilt rather than the originals, which is why the README asks that the screens be tried with a restricted user on a sandbox before the ICF service is opened to more people.
se16nindependently maintainedAn abap2UI5 app that browses and filters the content of a table in the browser, on ABAP Cloud systems that have no SE16N as well as on premise.
ConsiderationFunctional boundaryNot as it stands on a system past development: it reads the contents of any table the user names without an authorisation check of its own, so access is bounded only by whatever restrictions exist on the underlying handler or service. The README asks for your own checks first, naming `AUTHORITY-CHECK` on `S_TABU_DIS`/`S_TABU_NAM`, and for a restriction on who may run the app. There is no 7.02 downport either, because the selection-screen dependency has no `702` branch.
sql-consoleindependently maintainedA browser-based SQL console built on abap2UI5, in an Open SQL and a native ADBC variant, that shows a query's result as a filterable table without Eclipse or SAP GUI.
ConsiderationFunctional boundaryIt runs whatever SQL a user types without an authorisation check of its own, and the native path additionally uses ADBC, which bypasses ABAP authorisations and client separation; the README asks anyone running it beyond a development system to add authorisation checks and restrict who may start the app. The native console needs Standard ABAP, so on ABAP Cloud only the Open SQL console is available.
table-maintenanceindependently maintainedA browser-based table maintenance UI, built on abap2UI5, for editing custom and customising table entries with no Eclipse or SAP GUI install.
ConsiderationFunctional boundaryThe app writes to whatever table is passed in the URL parameter `table` and carries no authorisation check of its own, so past a development system it needs authorisation checks added and a restriction on who may run it.
CLI tools1
@abap2ui5/linterby a community orgA command line that checks an abap2UI5 app class together with the UI5 view its builder chain produces, with no SAP system and no UI5 project.
ConsiderationFunctional boundaryEvent roundtrips and visual fidelity stay with a live run: the documentation leaves those to the project's MCP server and to [abap2UI5 for VS Code](artifact:abap2ui5-vscode-extension). A class that builds view parts in helper methods without the handle idiom cannot be statically reconstructed, and the render gate is then skipped with a notice while the property gate runs on what was reconstructed. A screenshot is not a preview of the app: nothing round-trips, no event reaches ABAP, and a table filled by a SELECT photographs empty unless a mock JSON file sits beside the source.
MCP servers1
abap-agent-runtimeby a community orgAn ABAP-native MCP endpoint inside the SAP system: an agent reads the screen of an opted-in abap2UI5 app as structured data, fills its fields and fires its events as the logged-on SAP user.
ConsiderationFunctional boundaryStateful apps cannot be operated: a stateful session lives in one HTTP request and an MCP call is one request, so `app_start` refuses them. The repository carries no release yet and states the addon has not been run in production use, the 7.02 downport is lint-only with no 7.02 system having run it, and the ABAP Cloud HTTP service setup is written down but still to verify on your own system.
Packages11
@abap2ui5/embed-controlby a community orgA UI5 custom control that runs an abap2UI5 app inside a host UI5 app, with the abap2UI5 frontend loaded from the backend the app talks to.
ConsiderationFunctional boundaryThe page and the [abap2UI5](artifact:abap2ui5-abap2ui5) service have to share an origin: an `endpoint` that resolves to another origin is refused, and abap2UI5 rejects a POST whose `Origin` names another host. A host that routes by the URL hash, such as a Fiori elements app or an app with a UI5 router, needs abap2UI5 1.146.0 or later, because 1.145.0 clears the host's hash after every roundtrip. One frontend per page: the first control that starts decides which endpoint the frontend comes from.
abap-cloud-guiindependently maintainedA report-style programming model for abap2UI5: one class produces a selection screen with a WRITE list or an ALV grid, running as a UI5 app on ABAP Cloud as well as on NetWeaver 7.02.
ConsiderationFunctional boundaryNot a way to run existing reports unchanged: a report is rewritten as a class, and `CALL SCREEN`, dynpro modules, batch input, `SUBMIT` and native SQL are refused by the converter rather than mapped. Not an SAP GUI in the browser either: the programming model is classic and the screens are UI5, and the README points at abap2UI5-addons/sapgui for SE16N or SM37. Output has gaps the README names — ALV cells show dates and times as the model carries them rather than in the user's format, print is a text file because ABAP Cloud has no spool, and value tables for F4 are read on premise only.
abap2UI5 frontend-webcomponentby a community orgAn alternative abap2UI5 frontend: one ES module registering <abap2ui5-app>, which renders the views an unchanged abap2UI5 app class sends with UI5 Web Components and no UI5 core.
ConsiderationFunctional boundaryNot for views built from controls outside the portable profile: sap.ui.table, sap.f, sap.uxap, sap.ui.comp and z2ui5.cc custom controls render as a visible unsupported-control box and are listed in the diagnostics, and `CONTROL_BY_ID` and `BINDING_CALL` stay unsupported. Nine frontend actions the profile allows, `DOWNLOAD_B64_FILE` and `SYSTEM_LOGOUT` among them, are skipped and reported rather than run, and formatters other than the profile's `Formatter.Date*` render a placeholder.
abap2UI5 headless frontendby a community orgPlays the frontend's side of the abap2UI5 request/response contract in ABAP, so an app class is driven and asserted on from a plain ABAP Unit test.
ConsiderationFunctional boundaryThere is no control tree: visibility and enablement are not evaluated, and `set_value( )` is not checked against the bound paths. The frontend `CONFIG` (device, UI5 version, focus, scroll) is not sent at all, so an app that branches on device or theme sees initial values. It drives `z2ui5_cl_ui5_handler` and the draft service, which the README states are not part of abap2UI5's released API in `src/02`, so a core change there can require a change here.
abap2UI5-addons/popupsby a community orgReady-made dialogs for an abap2UI5 app: confirm, inform, select from a list, file up- and download, table, text edit, PDF, HTML, messages, range, value help and search help, each opened with one factory( ) call.
ConsiderationFunctional boundaryThe value-help and search-help popups read whichever DDIC check table the user selects without an authorisation check of their own, so the README asks for your own checks and a restriction on which tables may be browsed before they are used beyond a development system. The transport-request popup works only on-premise, and the search help does not yet run on the Cloud stack.
custom-controlsby a community orgThirteen custom controls for abap2UI5, a signature pad and a scanner that reads several barcodes at once among them, each one an ABAP builder class with a single render( ) method and all of them shipped in a BSP of their own.
ConsiderationFunctional boundaryNeeds Standard ABAP 7.50 or higher, and an abap2UI5 whose frontend reserves the resourceRoot `z2ui5_cci`: a frontend predating that rename reserves `z2ui5ccc` and cannot resolve the controls. Frontend artefacts only one company needs, such as an in-house reuse library, a corporate icon font or company CSS, are what [abap2UI5-addons/custom-controls-customer](https://github.com/abap2UI5-addons/custom-controls-customer) is for, the same mechanism under the second reserved root `z2ui5_ccc`. ExportSpreadsheet needs SAPUI5: under OpenUI5 `sap.ui.export` is missing and the button renders disabled.
launchpad-kpiby a community orgAn OData service and a one-method ABAP interface that put a number from an abap2UI5 app on a SAP Fiori launchpad tile.
ConsiderationFunctional boundaryThere is nothing here for ABAP for Cloud: the requirements name Standard ABAP releases only, and a CDS/SADL based OData service for `ABAP for Cloud` compatibility stands under Limitations & Todo.
layout-managementindependently maintainedAn abap2UI5 addon that renders an internal table or a structure as a UI5 table or form with a settings popup, where the user lays it out and saves the result as a layout variant.
ConsiderationFunctional boundaryThe layout is rendered into an [abap2UI5](artifact:abap2ui5-abap2ui5) view and its events are passed on from the app's `main` method, so there is nothing here for a UI outside an abap2UI5 app. Shared layouts stay denied until a class implementing `z2ui5_if_layo_auth` exists in the system, so an installation whose key users are to maintain shared layouts has that class and its authorization object to write first.
lock-managerby a community orgHolds an SAP lock across the HTTP roundtrips of a stateless abap2UI5 app, by making a background job the owner of the kernel lock and a database registry the record of who holds it.
ConsiderationFunctional boundaryWhere the release and programming model offer durable locks, as RAP draft handling does, the README states that those solve the problem at the kernel level and the lock manager is for where that is not an option. A running handler occupies one background work process for as long as any lock is held, and only generated `ENQUEUE_*` modules can be locked.
rap-extby a community orgFloorplan classes that read a CDS entity's UI annotations at runtime and render a list report, worklist, tree, object page, overview page, value help or action dialog as an abap2UI5 app.
ConsiderationFunctional boundaryNot the whole addon in ABAP Cloud: the DDIC annotation service is not released there, so the annotations come through XCO instead, a database table is read-only, the DDL source is not read, and the cloud path was written without a cloud system to run it on. Not for a plain internal table, since it renders from CDS annotations; the README points at `z2ui5_cl_ui5_view_builder` for that case. As of 2026-10 the maintainer states that none of it has been clicked through in an SAP system: the RAP write path and the reading of metadata extensions were written from documentation and pass the three offline gates only.
selection-screenindependently maintainedSelect-options with saved variants for an abap2UI5 app, built from a database table name or from an internal table the app passes in.
ConsiderationFunctional boundaryThe `PARAMETERS`-style selection screen with event blocks is not here: `z2ui5_cl_sel_screen` and `z2ui5_cl_sel_screen_sel` are a skeleton whose methods are still empty, and the README points at [abap-cloud-gui](artifact:abap2ui5-addons-abap-cloud-gui) for a full report-style screen.
Samples3
abap2UI5-addons/open-source-libsby a community orgEleven abap2UI5 apps, one per open-source ABAP library, each putting its library to work in the browser on the developer's own system.
ReferenceConsiderationFunctional boundaryNot on ABAP Cloud: most of the libraries use APIs that are not released there, and the repository has no ABAP Cloud gate yet. Not beyond a development system without authorisation checks added first — the samples carry none of their own, the abap-fm-logger sample reads the log table `ZAFL_LOG` with whatever the logged calls received and returned, and the abap_fm_json sample calls function modules, limited to a hard-coded whitelist.
app-templateby a community orgStarter repository for an abap2UI5 app: one ABAP class with a unit test, abaplint and the abap2UI5 linter run by CI on every push, and the files an agent reads first.
Starting point
custom-controls-customerby a community orgA template repository for a customer's own UI5 artefacts in abap2UI5: an icon font, CSS, a reuse library or a custom control, served from a BSP of their own under the resourceRoot z2ui5_ccc.
Starting point
Web tools3
abap2UI5 Layout Editorby a community orgA browser editor that lays out a UI5 view by drag and drop and writes it out as one abap2UI5 app class, pulled into the system with abapGit.
ConsiderationFunctional boundaryThe class has to be moved by hand: an abapGit pull of the exported ZIP, or a paste into ADT or SE24. The palette is held to the 121 controls of UI5 1.71, and a control inserted by its class name instead comes from whatever UI5 the canvas has loaded, with nothing checking it against 1.71 - *Checks* reports that. An app class that builds no view, or more than one, is refused.
abap2UI5 Playgroundby a community orgABAP in the editor on the left and the abap2UI5 app it builds on the right, both inside one browser tab: the framework is transpiled to JavaScript at build time and the class in the editor is compiled when Run is pressed.
ConsiderationFunctional boundaryA `SELECT` from a business table has nothing to select from: the database in the page holds the framework's own tables, and nothing can reach outside the browser, so an app that reads a system's data cannot be tried here. Only the UI5 libraries built in are available and a control from anywhere else will not load; what the transpiler cannot compile is reported in the output panel rather than run. State lives in the tab — a reload, and a press of Run, starts over on a fresh database.
web-abap2UI5by a community orgA build pipeline and the page it deploys: the abap2UI5 backend downported, transpiled to JavaScript and webpacked into one script that runs inside a browser tab, with no server and no SAP system behind it.
ConsiderationFunctional boundaryIt is not the framework and takes no framework fixes: those belong upstream in abap2UI5, and nothing under `src/`, `downport/`, `output/` and `build/` here is a source file. The build is frozen on pinned commits with no scheduled rebuild, so it does not show what abap2UI5 main does today, samples in subfolders of the samples repository are excluded because they require a real SAP system, and a known upstream transpiler issue leaves `check_on_init( )` always false, so backend-built view XML may not be returned.

Connections63

abap2UI5 connectionsabap2UI5PROVIDES→ provides1provides authored Renders a UI5 front end driven entirely from ABAP classes running in the system. abap2UI5/abap2UI5 — repository: https://github.com/abap2UI5/abap2UI5UI written in ABAP→ provides through a part6provides through a part derived Through: @abap2ui5/mcp-serverAgent access to your codeprovides through a part derived Through: @abap2ui5/mcp-server, abap2UI5 for VS CodeAgent access to your systemsprovides through a part derived Through: abap2UI5 for VS CodeAgent guidanceprovides through a part derived Through: abap2UI5 for VS CodeEditor supportprovides through a part derived Through: abap2UI5 mobile shellMobile appsprovides through a part derived Through: @abap2ui5/mcp-serverUnit testingUSED BY← connected from10connected from derived Loads the abap2UI5 frontend once per page from the endpoint and sends each control's roundtrips to it, one session per control. Through: inverted from its connects edge @abap2ui5/embed-control — README: https://raw.githubusercontent.com/abap2UI5/embed-control/main/packages/embed-control/README.md@abap2ui5/embed-controlconnected from derived If: System mode: `A2UI5_MCP_SYSTEM_URL` is set Starting an app on a real system and firing its events over the abap2UI5 JSON protocol at the launch URL, logged on as the configured user; the client does the CSRF token handshake and keeps the stateful session's `sap-contextid`. Through: inverted from its connects edge abap2UI5/mcp-server — README, system mode variables: https://github.com/abap2ui5/mcp-server abap2UI5/mcp-server — README, system mode, protocol client: https://github.com/abap2ui5/mcp-server@abap2ui5/mcp-serverifconnected from derived The host page loads the abap2UI5 frontend from the service and the embedded app posts its roundtrips back to it, both on one origin: abap2UI5 refuses a POST from another origin. Through: inverted from its connects edge abap2UI5-addons/office-addin — README, How it works: https://github.com/abap2ui5-addons/office-addinabap2UI5 for Excelconnected from derived launching the app and every event roundtrip: the preview's local auth proxy and the agent app tools post to the abap2UI5 endpoint the launch URL names, with the stored SAP credentials attached Through: inverted from its connects edge abap2UI5/vscode-extension — README, Agent app tools on the system: https://github.com/abap2ui5/vscode-extension abap2UI5 — VS Code Extension, Why there is a local proxy: https://abap2ui5.github.io/docs/advanced/vscode.htmlabap2UI5 for VS Codeconnected from derived The installed app calls the abap2UI5 service of the system it runs on: the endpoint in its manifest for every interaction, and on the `_new` branches `?z2ui5-bundle` to load the frontend itself. Through: inverted from its connects edge abap2UI5/frontend — README: https://github.com/abap2ui5/frontend abap2UI5/frontend — README of the branch standard_new: https://raw.githubusercontent.com/abap2UI5/frontend/main/result/standard_new/README.mdabap2UI5 frontendconnected from derived Every interaction is a roundtrip to the abap2UI5 HTTP service the `endpoint` attribute names: the app start, each event with the delta of the edited paths, the `sap-contextid` session and, where a token layer asks for one, the CSRF token. Through: inverted from its connects edge abap2UI5/frontend-webcomponent — README: https://github.com/abap2ui5/frontend-webcomponent abap2UI5/frontend-webcomponent — README: https://github.com/abap2ui5/frontend-webcomponentabap2UI5 frontend-webcomponentconnected from derived The shell loads the one configured abap2UI5 endpoint into the WebView, and every interaction after that is a JSON roundtrip over HTTPS to the ABAP backend. Through: inverted from its connects edge abap2UI5/mobile-shell — PLAN.md: https://raw.githubusercontent.com/abap2UI5/mobile-shell/main/PLAN.md abap2UI5/mobile-shell — PLAN.md, architecture: https://raw.githubusercontent.com/abap2UI5/mobile-shell/main/PLAN.mdabap2UI5 mobile shellconnected from derived Both of its client sides call an abap2UI5 endpoint on an SAP system: the backend suite plays the frontend over HTTP against the conformance apps, and the terminal renderer's session sends keys as roundtrip requests and renders the answer as a screen. Through: inverted from its connects edge abap2UI5/protocol — conformance: https://raw.githubusercontent.com/abap2UI5/protocol/main/conformance/README.md abap2UI5/protocol — terminal renderer: https://raw.githubusercontent.com/abap2UI5/protocol/main/renderers/terminal/README.md abap2UI5/protocol — backend conformance suite: https://raw.githubusercontent.com/abap2UI5/protocol/main/conformance/backend/README.mdabap2UI5 protocolconnected from derived The forwarded roundtrip: the consumer handler sends method, body and query string over HTTP to the source system, where the connector's own ICF node hands the request to the framework by calling `z2ui5_cl_ui5_http_handler`. Through: inverted from its connects edge abap2UI5-addons/http-connector — README, Usage: https://github.com/abap2ui5-addons/http-connector abap2UI5-addons/http-connector — AGENTS.md, What this depends on in the core: https://raw.githubusercontent.com/abap2UI5-addons/http-connector/standard/AGENTS.mdhttp-connectorconnected from derived Each browser request is forwarded over RFC to the source system, where `z2ui5_cl_ui5_http_handler=>_main` runs one abap2UI5 roundtrip and the response body and status travel back. Through: inverted from its connects edge abap2UI5-addons/rfc-connector — README: https://github.com/abap2ui5-addons/rfc-connector abap2UI5-addons/rfc-connector — AGENTS.md: https://raw.githubusercontent.com/abap2UI5-addons/rfc-connector/main/AGENTS.mdrfc-connector← needed by36needed by derived The abap2UI5 installation the embedded app runs on: its HTTP service serves the frontend the control loads and answers the roundtrips. 1.145.0 is the floor the package records. Through: inverted from its requires edge @abap2ui5/embed-control — README: https://raw.githubusercontent.com/abap2UI5/embed-control/main/packages/embed-control/README.md@abap2ui5/embed-controlneeded by derived the app classes it checks: the view it judges is reconstructed from the class's `z2ui5_cl_ui5_view_builder` chain, and a class that builds its view with the frozen predecessor of that builder cannot be read by those rules Through: inverted from its requires edge abap2UI5 — abap2UI5 linter: https://abap2ui5.github.io/docs/advanced/linter.html abap2UI5 — abap2UI5 linter, The abap2UI5 rules: https://abap2ui5.github.io/docs/advanced/linter.html@abap2ui5/linterneeded by derived The backend the deployed apps run on: `build_backend` downloads the released backend of a framework checkout where there is one, and otherwise installs the framework already transpiled from npm and transpiles only the deployed apps against it. Through: inverted from its requires edge abap2UI5 documentation — MCP Server, Level 3: https://abap2ui5.github.io/docs/advanced/mcp_server.html@abap2ui5/mcp-serverneeded by derived The framework whose apps the endpoint operates and whose draft carries a session between calls; installed first. Through: inverted from its requires edge abap-agent-runtime — README, Installation steps: https://github.com/abap2ui5-addons/abap-agent-runtime abap-agent-runtime — README, badges: https://github.com/abap2ui5-addons/abap-agent-runtimeabap-agent-runtimeneeded by derived The framework it extends: a report class is started and runs as an [abap2UI5](artifact:abap2ui5-abap2ui5) app, and the README lists abap2UI5 under Requirements and first in the install order. Through: inverted from its requires edge abap2UI5-addons/abap-cloud-gui — README: https://github.com/abap2ui5-addons/abap-cloud-gui abap2UI5-addons/abap-cloud-gui — README, Requirements: https://github.com/abap2ui5-addons/abap-cloud-guiabap-cloud-guineeded by derived The framework the add-in shows: it needs the abap2UI5 release that carries the `z2ui5.cc.ExcelBridge` control, and until one exists, abap2UI5 from `main`. Through: inverted from its requires edge abap2UI5-addons/office-addin — README, Requirements: https://github.com/abap2ui5-addons/office-addinabap2UI5 for Excelneeded by derived the apps it develops: F9 launches an app class against a system running abap2UI5, and the view checks and the systemless preview work on the view that class's builder chain produces Through: inverted from its requires edge abap2UI5/vscode-extension — README: https://github.com/abap2ui5/vscode-extensionabap2UI5 for VS Codeneeded by derived The framework in the backend the frontend artefacts pair with; the `cloud_new` and `standard_new` branches need a release newer than 1.146.0, whose `?z2ui5-bundle` the embed control loads the frontend from. Through: inverted from its requires edge abap2UI5/frontend — README: https://github.com/abap2ui5/frontend abap2UI5/frontend — README: https://github.com/abap2ui5/frontendabap2UI5 frontendneeded by derived The framework whose app classes it renders: the element is pointed at an abap2UI5 HTTP service with `endpoint`, and the views, events and model it works on are that framework's protocol. Through: inverted from its requires edge abap2UI5/frontend-webcomponent — README: https://github.com/abap2ui5/frontend-webcomponent abap2UI5/frontend-webcomponent — README: https://github.com/abap2ui5/frontend-webcomponentabap2UI5 frontend-webcomponentneeded by derived The framework the simulator drives, installed in the same system, at a version that speaks wire protocol 2 — a response naming another protocol is refused with `PROTOCOL_MISMATCH`. Through: inverted from its requires edge abap2UI5/headless-frontend — README: https://github.com/abap2ui5/headless-frontendabap2UI5 headless frontendneeded by derived the generated class: it implements `z2ui5_if_app` and builds its view with `z2ui5_cl_ui5_view_builder`, so the system needs a release that ships that class; the editor's output is verified against 1.147.0 Through: inverted from its requires edge abap2UI5/layout-editor — README, What the generated class needs: https://github.com/abap2ui5/layout-editorabap2UI5 Layout Editorneeded by derived The backend the shell points at: the WebView renders the regular abap2UI5 frontend, and the sample app needs a release carrying the framework control `z2ui5.cc.NativeBridgeScan`. Through: inverted from its requires edge abap2UI5/mobile-shell — README: https://github.com/abap2ui5/mobile-shell abap2UI5/mobile-shell — PLAN.md: https://raw.githubusercontent.com/abap2UI5/mobile-shell/main/PLAN.mdabap2UI5 mobile shellneeded by derived the framework that answers in the page: its sources are transpiled to JavaScript at build time, at a pinned commit, and the roundtrip the app makes is served by them rather than by a system Through: inverted from its requires edge abap2UI5/playground — README, What it can and cannot do: https://github.com/abap2ui5/playgroundabap2UI5 Playgroundneeded by derived The framework that renders the samples; this repository ships the app classes only. Through: inverted from its requires edge abap2UI5/samples — README: https://github.com/abap2ui5/samplesabap2UI5 samplesneeded by derived Every package in `src/` is an abap2UI5 app, so the framework is installed before the samples. Through: inverted from its requires edge abap2UI5-addons/open-source-libs — README: https://github.com/abap2ui5-addons/open-source-libsabap2UI5-addons/open-source-libsneeded by derived The framework the popups are apps of: each popup implements an abap2UI5 app and is opened with `client->nav_app_call( )`. The README lists it under Requirements and the abaplint configs pin it to a release tag. Through: inverted from its requires edge abap2UI5-addons/popups — AGENTS.md, Project Overview: https://raw.githubusercontent.com/abap2UI5-addons/popups/main/AGENTS.md abap2UI5-addons/popups — README, Installation requirements: https://github.com/abap2ui5-addons/popupsabap2UI5-addons/popupsneeded by derived The framework the app runs in: its screens are abap2UI5 apps, and the start page is opened like any other abap2UI5 app with `?app_start=z2ui5_cl_tcl_app_00`. Through: inverted from its requires edge abap2UI5-addons/table-content-loader — README: https://github.com/abap2UI5-addons/table-content-loader abap2UI5-addons/table-content-loader — README: https://github.com/abap2UI5-addons/table-content-loaderabap2UI5-addons/table-content-loaderneeded by derived The framework every port is built on: each sample is rebuilt as an abap2UI5 app implementing `z2ui5_if_app`, and the README names abap2UI5 as this repository's one dependency. Through: inverted from its requires edge abap2UI5/samples-controls — README, Try it in 60 seconds: https://github.com/abap2ui5/samples-controls abap2UI5/samples-controls — README, Generate: https://github.com/abap2ui5/samples-controlsabap2UI5/samples-controlsneeded by derived Every sample is an [abap2UI5](artifact:abap2ui5-abap2ui5) app class started with `?app_start=<class name>`, so the framework has to be installed first. Through: inverted from its requires edge abap2UI5/samples-stack — README, Setup: https://github.com/abap2ui5/samples-stackabap2UI5/samples-stackneeded by derived The cockpit is itself an [abap2UI5](artifact:abap2ui5-abap2ui5) app and is installed next to the framework; branch `main` needs an abap2UI5 that carries the monitor hook `z2ui5_if_ui5_monitor`. Through: inverted from its requires edge abap2UI5-addons/admin-cockpit — AGENTS.md: https://raw.githubusercontent.com/abap2UI5-addons/admin-cockpit/main/AGENTS.md abap2UI5-addons/admin-cockpit — README: https://github.com/abap2ui5-addons/admin-cockpitadmin-cockpitneeded by derived The framework the starter app is written against, installed in the system with abapGit; the local gates lint against release 1.145.0 or newer, pinned in `abaplint.jsonc`. Through: inverted from its requires edge abap2UI5/app-template — README, Quick start: https://github.com/abap2ui5/app-templateapp-templateneeded by derived The framework it extends: it stores the settings of the abap2UI5 page, and the user exit `z2ui5_if_ui5_exit` applies them to every page abap2UI5 serves. The README names release 1.145.0 or later. Through: inverted from its requires edge abap2UI5-addons/config-management — AGENTS.md: https://raw.githubusercontent.com/abap2UI5-addons/config-management/main/AGENTS.md abap2UI5-addons/config-management — README: https://github.com/abap2ui5-addons/config-managementconfig-managementneeded by derived The framework the controls run in: it is listed as the dependency and depended on at runtime, and the installed release has to reserve the resourceRoot `z2ui5_cci` in the frontend manifest, otherwise a control stays blank. Through: inverted from its requires edge abap2UI5-addons/custom-controls — AGENTS.md: https://raw.githubusercontent.com/abap2UI5-addons/custom-controls/main/AGENTS.md abap2UI5-addons/custom-controls — README: https://github.com/abap2ui5-addons/custom-controlscustom-controlsneeded by derived The framework in the backend this BSP extends: it reserves the resourceRoot `z2ui5_ccc` the artefacts are served under, and the ABAP class `z2ui5_cl_ccc` builds into an abap2UI5 view. On an older framework the check app renders an empty page and the browser console shows a failed request for `z2ui5_ccc/cc/Extension.js`. Through: inverted from its requires edge abap2UI5-addons/custom-controls-customer — README, Installation: https://github.com/abap2ui5-addons/custom-controls-customer abap2UI5-addons/custom-controls-customer — README, How it works: https://github.com/abap2ui5-addons/custom-controls-customercustom-controls-customerneeded by derived The framework whose apps and whose roundtrip it forwards: installed on both systems, newer than 1.146.0 on the consumer for the query string of `z2ui5_cl_ui5_util_http`, and 1.143.0 or newer on the source for `z2ui5_cl_ui5_http_handler`. Through: inverted from its requires edge abap2UI5-addons/http-connector — README, Installation: https://github.com/abap2ui5-addons/http-connector abap2UI5-addons/http-connector — AGENTS.md: https://raw.githubusercontent.com/abap2UI5-addons/http-connector/standard/AGENTS.mdhttp-connectorneeded by derived The framework the apps it reports on are written in, installed before this repository; the README lists it under Requirements and as step 1 of the installation. Through: inverted from its requires edge abap2UI5-addons/launchpad-kpi — README: https://github.com/abap2ui5-addons/launchpad-kpi abap2UI5-addons/launchpad-kpi — README, Installation: https://github.com/abap2ui5-addons/launchpad-kpilaunchpad-kpineeded by derived The addon runs as part of an [abap2UI5](artifact:abap2ui5-abap2ui5) app and calls the framework's utility class `z2ui5_cl_util` directly; its own documentation calls abap2UI5 a hard dependency, installed before this repository. Through: inverted from its requires edge abap2UI5-addons/layout-management — AGENTS.md, Utility Access: https://raw.githubusercontent.com/abap2UI5-addons/layout-management/main/AGENTS.mdlayout-managementneeded by derived The framework it is an addon to: the AGENTS.md file lists it as the dependency and the README lists it under the installation requirements. Through: inverted from its requires edge abap2UI5-addons/lock-manager — AGENTS.md: https://raw.githubusercontent.com/abap2UI5-addons/lock-manager/main/AGENTS.md abap2UI5-addons/lock-manager — README: https://github.com/abap2ui5-addons/lock-managerlock-managerneeded by derived The framework the floorplans run on: they are [abap2UI5](artifact:abap2ui5-abap2ui5) apps, called with `nav_app_call` and built with the core's `z2ui5_cl_ui5_view_builder`, and the README names abap2UI5 as a requirement and the first install step. Through: inverted from its requires edge abap2UI5-addons/rap-ext — README, intro: https://github.com/abap2ui5-addons/rap-extrap-extneeded by derived The framework it extends: 1.143.0 or newer on both the consumer and the source system, the first release carrying the `z2ui5_cl_ui5_http_handler` the connector calls. Through: inverted from its requires edge abap2UI5-addons/rfc-connector — AGENTS.md: https://raw.githubusercontent.com/abap2UI5-addons/rfc-connector/main/AGENTS.mdrfc-connectorneeded by derived The framework the apps are written against: every screen is an ABAP class that [abap2UI5](artifact:abap2ui5-abap2ui5) renders as a UI5 page, and the README names it as the only dependency, installed with its HTTP handler before this repository. Through: inverted from its requires edge abap2UI5-addons/sapgui — README, Requirements: https://github.com/abap2ui5-addons/sapguisapguineeded by derived The framework the app runs on: it is started like any other [abap2UI5](artifact:abap2ui5-abap2ui5) app, and the README lists abap2UI5 under its requirements and as the first thing to install. Through: inverted from its requires edge abap2UI5-addons/se16n — README: https://github.com/abap2ui5-addons/se16nse16nneeded by derived The framework it extends: its classes render into an [abap2UI5](artifact:abap2ui5-abap2ui5) view and are driven from an app's `main` method, and the core has to be installed first. Through: inverted from its requires edge abap2UI5-addons/selection-screen — AGENTS.md, What this repository is: https://raw.githubusercontent.com/abap2UI5-addons/selection-screen/main/AGENTS.md abap2UI5-addons/selection-screen — README: https://github.com/abap2ui5-addons/selection-screenselection-screenneeded by derived The framework the console runs on: the README lists abap2UI5 under its requirements and as the first install step, and both consoles are started like any abap2UI5 app with `?app_start=` and the app class. Through: inverted from its requires edge abap2UI5-addons/sql-console — README: https://github.com/abap2UI5-addons/sql-console abap2UI5-addons/sql-console — README: https://github.com/abap2UI5-addons/sql-consolesql-consoleneeded by derived The framework it runs on: it is one generic [abap2UI5](artifact:abap2ui5-abap2ui5) app, and the README's installation order puts abap2UI5 in the system first. Through: inverted from its requires edge abap2UI5-addons/table-maintenance — README: https://github.com/abap2UI5-addons/table-maintenance abap2UI5-addons/table-maintenance — README: https://github.com/abap2UI5-addons/table-maintenancetable-maintenanceneeded by derived the backend the pipeline downports, transpiles and bundles; `ci/clone.mjs` fetches it at the commit pinned in `ci/pins.json`, together with the samples repository Through: inverted from its requires edge web-abap2UI5 — AGENTS.md, What this repo is: https://raw.githubusercontent.com/abap2UI5/web-abap2UI5/main/AGENTS.mdweb-abap2UI5← optionally used by1optionally used by derived If: the frontend suite runs with --adapter ui5 The frontend under test when the frontend suite runs its `ui5` adapter: the official UI5 SPA is loaded from an abap2UI5 checkout and driven in Chromium. Through: inverted from its requires edge abap2UI5/protocol — frontend conformance suite: https://raw.githubusercontent.com/abap2UI5/protocol/main/conformance/frontend/README.mdabap2UI5 protocolifNEEDS→ needs1needs authoredabapGitLINEAGE← has part8has part derived Through: inverted from its part_of edge@abap2ui5/mcp-serverhas part derived Through: inverted from its part_of edgeabap2UI5 for VS Codehas part derived Through: inverted from its part_of edgeabap2UI5 frontendhas part derived Through: inverted from its part_of edgeabap2UI5 mobile shellhas part derived Through: inverted from its part_of edgeabap2UI5 sampleshas part derived Through: inverted from its part_of edgeabap2UI5-localhas part derived Through: inverted from its part_of edgeabap2UI5/samples-controlshas part derived Through: inverted from its part_of edgeabap2UI5/samples-stack

README

quoted from abap2UI5/abap2UI5 under MIT, read
abap2UI5/abap2UI5/README.mdOn GitHub

Build UI5 Apps Purely in ABAP – no JavaScript, OData, or RAP needed.

Just like the good old days when Selection Screens and ALVs delivered full UIs from a few lines of ABAP. Designed with a minimal system footprint, it runs in both on-premise and cloud environments.

GitHub stars License: MIT ABAP NW 7.02 to ABAP Cloud LinkedIn

test check_gates abaplint

1,533 ABAP unit tests · 86 JS unit specs · 17 browser test suites · 52 CI gates · 25 workflows · ABAP 7.02 → Cloud · UI5 1.71 → 2.x — counted from this repository by npm run facts

Documentation • Samples • AI Studio • Build with AI • Issues • Slack • Sponsor

Why abap2UI5?

  • Code, Not Configuration – An app is one ABAP class and nothing else: no designer metadata, no generated artefacts, no frontend project. It is written in ADT or SE80, reviewed as a diff, transported and debugged like every other class – so your existing ABAP change process governs it without a single new rule
  • User-Friendly – Implement a single interface to build a complete UI5 app, purely in ABAP
  • Minimal Footprint – Needs only a simple HTTP handler – no BSP, OData, CDS, or RAP
  • Cloud & On-Premise Ready – Runs in ABAP Cloud and Standard ABAP environments
  • Broad Compatibility – Supports all ABAP releases from NW 7.02 to ABAP Cloud
  • Easy Installation – Install via abapGit – no extra app deployment needed
  • Seamless Integration – Runs in Launchpads and on BTP alongside your RAP and Fiori Elements apps

Quick Start

Check out the Getting Started Guide and jump in:

CLASS zcl_my_app DEFINITION PUBLIC.
  PUBLIC SECTION.
    INTERFACES z2ui5_if_app.
ENDCLASS.

CLASS zcl_my_app IMPLEMENTATION.
  METHOD z2ui5_if_app~main.
    client->message_box_display( `Hello World` ).
  ENDMETHOD.
ENDCLASS.

That's it – your first UI5 app is ready and abap2UI5 handles the rest! 🎉

One thing stays yours: the framework performs no authority check of its own, so an app that guards business data checks its authorizations at the top of main, like a transaction does – see the security model.

Next stop: the sample catalogue – hundreds of ready-to-run apps, from data binding basics to OData, RAP, and Launchpad integration, searchable by control and by the UI5 release your system runs, and most of them one click from running in the browser – and the docs for everything else.

Build with AI

No setup at all: the AI Studio builds an app from a description in the browser – describe it, watch the class being written, run and fixed against the real framework, then download it for abapGit. Bring your own API key (Anthropic, or any OpenAI-compatible server such as Ollama); nothing leaves your browser but the request to the model.

Working with Claude Code? Two commands install the abap2UI5 plugin – the agent skills for writing an app (template, view builder, and the ABAP and UI5 traps a green lint misses) plus the MCP server, which validates, deploys, runs and screenshots apps without an SAP system:

/plugin marketplace add abap2UI5/abap2UI5
/plugin install abap2ui5@abap2ui5

It adds the commands /abap2ui5:new-app (describe an app, get a validated class), /abap2ui5:check (run the gates, fix the safe findings), /abap2ui5:add-ai (a chat or a summarize-this-data panel in an existing app, local provider first, then a real model), /abap2ui5:find-sample and /abap2ui5:explain, plus an abap2ui5-reviewer subagent and a hook that runs the abap2UI5 linter on every class the agent edits, so it fixes what it broke right away (in projects that have the linter installed; silent everywhere else).

Only the MCP server, without the skills:

claude mcp add abap2ui5 -- npx --yes -p @abap2ui5/mcp-server abap2ui5-mcp

Working with GitHub Copilot? The same skills, commands (/abap2ui5-new-app and so on), reviewer agent and MCP server come as a Copilot plugin, without the lint hook – copilot plugin install abap2UI5/abap2UI5:plugin-copilot in the Copilot CLI; the folder plugin-copilot/ also holds the commands as VS Code prompt files.

Any other agent that reads SKILL.md gets the four skills with npx skills add abap2UI5/abap2UI5 (from skills/); register the MCP server in that agent as npx --yes -p @abap2ui5/mcp-server abap2ui5-mcp (stdio).

Everything else – other assistants, editors and the full setup – is in Developing with AI, and AI Assistants below has a prompt to paste into any of them.

How It Works

Your entire app is one ABAP class implementing z2ui5_if_app. The browser loads a generic UI5 shell once; after that, every user interaction is one HTTP/JSON roundtrip: the framework restores your app's state, calls main, and sends the view back:

loop [each interaction] GET UI5 shell (once) event + model view + model Browser ABAP

Everything in between is handled for you:

  • Data Binding – client->_bind( var ) connects an ABAP variable to a UI5 control; user input flows back before main runs
  • Events – client->_event( |SAVE| ) wires any UI5 event to a name you check with client->get_event( )
  • Rendering – views are plain UI5 XML built in ABAP with z2ui5_cl_ui5_view_builder; every control, property, and aggregation is available 1:1
  • State – your app object is serialized and restored on every request, so attributes simply keep their values

Popups, navigation, messages, and frontend actions travel the same protocol – you never touch JSON, HTTP, or JavaScript. The architecture is described in UI5 Over-the-Wire.

Enterprise Readiness

Every line below ends with the place that proves it.

  • Security – Apps run entirely inside your SAP authentication and authorization: a single HTTP endpoint, standard SAP logon, no separate user store. The default Content Security Policy carries neither unsafe-eval nor inline script, and a CI gate holds the shipped policy to that claim – Security model · SECURITY.md · CodeQL · npm audit, weekly · SBOM on every release
  • Accessibility – Views are standard UI5 views, so every control is as accessible as UI5 makes it; the framework keeps the focus across a roundtrip, lets an app announce a change to a screen reader and switch to a high-contrast theme, and its error overlay is a tested alertdialog – Accessibility
  • Review – Everything a review board asks for, in one list – The review pack
  • Stability – Every change is CI-tested against Standard ABAP and ABAP Cloud, and every merge is downported and linted against NW 7.02 before the 702 branch is published – backed by ABAP unit tests, JS unit tests and browser tests on UI5 1.71 and on the current release – test · check_gates · UI5 2.x · Verified on
  • Compatibility – One source for NW 7.02 to ABAP Cloud and for UI5 1.71 to 2.x. The public API is snapshotted, a change to it fails the pull request, and every deprecation is announced in the changelog and tracked until it is removed – API snapshot · changelog.txt · Removal plan
  • No Lock-In – MIT license, unlimited users, no per-user fees; apps are plain ABAP classes in your system – versioned, transported and tested like any other ABAP code. A build in your own namespace is one workflow run – LICENSE · build-rename
  • Support – Community support via Slack and GitHub, commercial options listed in SUPPORT.md; a security report is acknowledged within three business days – SECURITY.md
  • Governance – Code first: an app is a class, so development, review, transport and release follow the ABAP process you already run; authorization and logon are SAP's, every roundtrip can be logged, and Basis has four settings to change – What you keep
  • Fit – Where abap2UI5 is the right tool, and where RAP and Fiori Elements are – When to use it, and when not

AI Assistants

abap2UI5 apps are a perfect fit for AI assistants: one ABAP class and nothing else – no service, no frontend project, no deployment pipeline. One file to write, over 700 samples to learn from, and the abap2UI5 linter to verify the result without an SAP system.

Paste this into ChatGPT, Claude, Copilot or any other assistant before asking for code:

Before writing any abap2UI5 code, read these three files and follow them. They
describe the current APIs and take precedence over anything you already know:
- https://abap2ui5.github.io/docs/llms.txt (the documentation, one line per chapter)
- https://raw.githubusercontent.com/abap2UI5/abap2UI5/main/docs/agents/building-apps.md (the app-building guide that ships with the framework)
- https://raw.githubusercontent.com/abap2UI5/abap2UI5/main/llms.txt (the map of the code)

The shape of an abap2UI5 app:
1. An app is ONE ABAP class implementing z2ui5_if_app. Everything enters main( ),
   which dispatches in ONE IF/ELSEIF chain, never in separate IF blocks:
   client->check_on_init( ) (only when there is something to seed - seed, then
   display), client->check_on_navigated( ) (display; true on first start too)
   and client->check_on_event( `X` ).
2. Build the view with z2ui5_cl_ui5_view_builder and its verbs ele / tag / a / end /
   stringify.
3. Bind with client->_bind( ). It is bidirectional; only what the user edited comes back.
4. Every roundtrip is a fresh ABAP session. Nothing survives on the server except
   the app class itself, which is serialized.

Before building something from scratch, check whether it exists: the sample
catalog's index at https://abap2ui5.github.io/playground/samples/apps.json lists
every sample of all three sample repositories with title, summary and keywords,
and https://abap2ui5.github.io/playground/samples/<class>/ prints each one's ABAP.

When you are done, check the result with the abap2UI5 linter
(npx @abap2ui5/linter src) - it reads the view your ABAP builds and needs no
SAP system. If something is not covered by those files, say so instead of
inventing it.

Claude Code users get the skills and the mcp-server — validate, deploy, and screenshot apps without an SAP system — as one plugin: see Build with AI. The full setup is described in Developing with AI.

References

More talks, features & blog posts (2023–2024)

Credits

This project thrives thanks to its contributors and these outstanding open-source projects:

Get Involved

We welcome all contributions! Here's how you can help:

  • Issues - Report issues and provide feedback
  • Contribution - Contribute code and documentation (CONTRIBUTING.md is the in-repo guide)
  • LinkedIn - Follow abap2UI5 for updates and community highlights
  • Sponsor - Sponsor our work to support ongoing innovation

Share your knowledge, hunt for bugs, submit a PR, give us a ⭐, or tell your colleagues about abap2UI5. Every contribution counts!

MIT, read

History

Latest

v1.148.0

Breaking 1, Changed 4

Notes

! @abap2ui5/node-runtime: @abaplint/transpiler-cli and @abaplint/runtime 2.14.5, open-abap-core 9c1271b. The runtime brings ASSIGN COMPONENT of a component whose name has a dash (abaplint/transpiler#1996), rescale( ) (#1997) and CREATE DATA ... TYPE (name) with a lower-case type name (#1998); open-abap-core cl_abap_refdescr=>create( ) with kind and type kind (open-abap/open-abap-core#1310), cl_abap_tstmp=>add( ) / subtractsecs( ) keeping the fraction of a timestampl (#1311), describe_by_data( ) of a REF TO data without a runtime type (#1312) and the sXML JSON reader delivering duplicate keys in document order (#1313). Eight framework unit tests that were skipped on Node run there now ! @abap2ui5/node-runtime: abap2ui5-transpile transpiles the framework and your classes together - BREAKING for a host that loads apps/index.mjs. npx abap2ui5-transpile abap abap2ui5 transpiles the package's downport/, open-abap-core and express-icf-shim at the commits the package records (abap2ui5.openAbapCore, the new abap2ui5.expressIcfShim) and your classes in one run, with the transpiler the package names, into abap2ui5/: a complete runtime of your own with the layout of the package's output/, and a host.mjs in it - the package's exports, running on that output. import { serve } from "./abap2ui5/host.mjs" instead of from "@abap2ui5/node-runtime"; there is no apps/index.mjs to import any more. Your classes no longer load on the package's output/ through rewritten imports: one transpile with one transpiler version, as the transpiler's maintainer asked for in abaplint/transpiler#1999. Your tables are created in the SQLite database like the framework's. A process runs one output - importing the package next to an output's host.mjs is refused before it would load a second runtime. About ten seconds for the framework's thousand objects. --shim names an express-icf-shim checkout of your own, like --core; --keep and the apps folder are gone ! @abap2ui5/node-runtime: abap2ui5-own-apps is deprecated - "Your own apps" no longer uses it; it stays, unchanged, for the hosts that call it ! @abap2ui5/node-runtime: srv/host.mjs is srv/hostcore.mjs bound to output/ (srv/framework.mjs, srv/claim.mjs) - the exports and their behaviour are unchanged, importing the package still boots output/

  1. v1.147.0

    Features 1

    Notes
    • Various improvements for AIs
  2. v1.146.0

    Features 1

    Notes
    • Various improvements for AIs
  3. v1.145.0

    Features 1

    Notes
    • Various improvements for AIs
  4. v1.144.1

    Features 1

    Notes
    • Various improvements for AIs
  5. v1.144.0

    Features 1

    Notes
    • Various improvements for AIs
  6. v1.143.0

    Features 1

    Notes
    • Various improvements for AIs
  7. v1.142.0

    Features 5, Fixes 3

    Notes
    • New frontend action functions: control_by_id, binding_call
    • New frontend events like SYSTEM_LOGOUT, KEYBOARD_SET_MODE
    • Extended DebugTool with error/log tabs and export (renamed to Developer Tools)
    • Speed: Introduced Delta data transfer: only changed fields/rows sent to the backend
    • Compatibility: UI5 1.71 / UI5 2.x compatibility fixes (lazy module loading, lifecycle, aggregation escaping)
    • Security: error message sanitization, security response headers, fatal-error overlay
    • Samples repository fully reworked
    • Various small improvements and bugfixes
  8. v1.141.0

    Features 5, Changed 3, Fixes 2

    Notes
    • Added Image Editor popup for image manipulation
    • Added Camera Selector control with facing mode support
    • Added Camera Picture control with configurable height/width ! Implemented security headers in HTTP response handling
    • Added experimental check_on_event method for improved event handling
    • Added experimental _event_nav_app_leave method for navigation ! Improved error handling with enhanced error popup ! Updated ajson library to latest version
    • Code quality improvements: refactoring, formatting, and ABAP Cloud ATC findings
    • Various bug fixes and performance improvements
  9. v1.140.0

    Features 3, Fixes 4

    Notes
    • New User Exit Logic with greater customization options
    • Added Data Binding with References
    • Optimized Data Binding Logic for faster performance
    • ABAP Cloud Compatibility Adjustments
    • Bug fixes for Data Loss Protection
    • Bug fixes for Stateful Functionality
    • Various bug fixes and performance improvements
  10. v1.139.0

    Features 2, Fixes 2

    Notes
    • Improved documentation
    • Added multiple new control properties
    • Fixed Launchpad compatibility issues
    • Various bug fixes and performance improvements
  11. v1.138.0

    Features 3, Fixes 2

    Notes
    • Introduced a Copy to Clipboard feature for improved usability
    • Enhanced the BAL message popup with multiple improvements
    • Resolved serialization issues for numeric values
    • Fixed Launchpad compatibility problems with older UI5 versions
    • Updated the bundled ajson library to the latest version
  12. v1.137.0

    Features 2, Fixes 4

    Notes
    • Introduced App State feature
    • Added App State Persistence for Navigation
    • Fixed long string bugs for older releases
    • Resolved popup_get_value issues
    • Ensured Launchpad compatibility with OpenUI5 2.x
    • Multiple Bugfixes and new Properties added
  13. v1.136.0

    Features 6

    Notes
    • Extended Model Handling with OData Support
    • UI5 2.x Compatibility
    • New Documentation
    • Navigation Container in Popover
    • New UI Controls: AvatarGroup, Viz Charts, and more
    • SetMaxWidth for Launchpads
  14. v1.135.0

    Features 5, Fixes 1

    Notes
    • Stateful Session Handling
    • Object List Item now supports "type" attribute
    • Message Strip with formatted text options
    • Customizable Icons for Links, Expandable Text with class attributes
    • Improved Frontend File Organization
    • Various Bugfixes For Launchpad Compatibility
  15. v1.134.0

    Features 4, Fixes 2

    Notes
    • Tile Controls
    • Color Control
    • Multiselect Feature for Popup to Select
    • Data Loss Feature
    • Separated Custom Controls & Layouts from abap2UI5 Core
    • Multiple Bugfixes and new Properties added
  16. v1.133.0

    Features 4, Fixes 3

    Notes
    • Added Controls & Properties for Splitter, Grid, Generic Tag, Content Areas, Step Input, News Content, Numeric Content etc.
    • Shell Bar Properties & Events
    • Side Navigation Properties & Events
    • Color Picker Properties
    • Updates for Layout Management of Table Popups
    • Low Release Compatibility of Method to Read Fixed Values
    • Multiple Bugfixes and new Properties added
  17. v1.132.0

    Features 2, Fixes 5

    Notes
    • Added Properties for Multi Input, Slider, Search Field etc.
    • Added Date Range Selection Control etc.
    • Bugfix Generic Tile & Avatar Control
    • Bugfix Binding with Custom Mapper
    • Bugfix Downport Functionality
    • Bugfix ABAP 750 Syntax
    • Multiple Bugfixes and new Properties added
  18. v1.131.0

    Features 2, Fixes 2

    Notes
    • Radio Button, Radio Button Group, Date Range Selector
    • Popup Layout V2
    • Fix Launchpad Title
    • Syntax Fixes for v750
  19. v1.130.0

    Features 3, Fixes 2

    Notes
    • Wizard Control, Wizard Steps
    • Frontend Info CC with Device Information
    • Improved Binding Logic, bind_clear replaced
    • Multiple Fixes for Focus CC
    • Message Strip Visible Property
  20. v1.129.0

    Features 3, Fixes 1

    Notes
    • New Attributes for FilterGroupItem Control
    • New Attributes for VariantManagement Control
    • Fixed Issues with Data Model & Binding Logic
    • Addressed Fixes for SAP Fiori Launchpad Integration
  21. v1.128.0

    Features 1, Fixes 3

    Notes
    • Popover and Message Toast Adjustments
    • Fixes for Launchpad Compatibility
    • Fixes for Data Binding with Generic Data References
    • New Properties for the XML View
  22. v1.127.0

    Features 3, Fixes 1

    Notes
    • New Properties for Range Slider and Status Indicator
    • Message Toast & Message Box Improvements
    • Adjustments for the Support of Automatic Renaming
    • Bugfixes and Small Improvements
  23. v1.126.0

    Features 1, Fixes 2

    Notes
    • Fixes and XML View Extensions
    • Improved Support for Attributes created with RTTI
    • Update Spreadsheet CC for OpenUI5 Compatibility
  24. v1.125.0

    Features 4, Fixes 1

    Notes
    • Binding Fixes for Attributes created with RTTI
    • XML View Extensions
    • Replace Magic Numbers and Fixes for Auto Renaming
    • Download base64 Files
    • Features for Interactive Charts
  25. v1.124.0

    Features 2, Fixes 3

    Notes
    • Data Binding Improvements
    • Popup Handling
    • App in App Handling
    • New XML Properties for MultiInput and Table
    • Table with Column Menu
  26. v1.123.0

    Features 3, Fixes 2

    Notes
    • Card Control added
    • Nested View Data Binding Fix
    • Boolean Type Conversion Fix
    • Popover in Popup
    • New Control Properties added
  27. v1.122.0

    Features 2, Fixes 2

    Notes
    • New Control Properties added
    • Improved F4-Dialog with Description
    • Fixes JSON Handling for Type P
    • Launchpad Fixes for BTP Compatibility and Title Handling
  28. v1.121.0

    Features 1, Fixes 2

    Notes
    • Launchpad Compatibility
    • Custom Control Message Manager
    • Fixes for low UI5 releases
  29. v1.120.0

    Features 2, Fixes 2

    Notes
    • Templating
    • Popup & Layout Functionality
    • Debugging Tools XML Output
    • Messaging
  30. v1.119.0

    Features 2, Changed 1

    Notes
    • Source Code View for Debugging Tools
    • New Parameters for the UI5 Tree Control ! New Design for Start Page
  31. v1.118.0

    Changed 1, Fixes 1

    Notes

    ! /ui2/cl_json replaced with aJson

    • Compatibility Fixes for Low Releases
  32. v1.117.0

    Features 3, Fixes 1

    Notes
    • NavContainer in Popups
    • New properties added to XML View
    • Improvements POPUP_TO_SELECT (title, sorting, descriptions)
    • Fixes for ABAP for Cloud Readiness
  33. v1.116.0

    Features 3, Fixes 2

    Notes
    • StartUp App with Value Help
    • Popup Error, Popup Range, Popup Table
    • Custom Control Chart.js
    • Popup Model Handling
    • Bugfixes
  34. v1.115.0

    Features 1, Fixes 1

    Notes
    • Binding Logic
    • Popups (Confirm, Inform, Select Entry, PDF View, Message View)
  35. v1.114.0

    Changed 1, Fixes 2

    Notes
    • Cross App Navigation
    • Table Output ! Debugger Tools
  36. v1.113.0

    Features 1, Changed 1

    Notes
    • New Debugging Tools ! UI5 Module Loading
UI written in ABAP
  1. abap2UI5-localabap2UI5 folded into the local classes of one HTTP handler
  2. abap-cloud-guiReport-style programming model for abap2UI5 on ABAP Cloud
  3. custom-controlsThirteen custom UI5 controls for abap2UI5 apps
  4. http-connectorForwards abap2UI5 roundtrips to another system over HTTP
  5. layout-managementTable and form layouts with saved variants for abap2UI5
  6. abap2UI5 for ExcelOffice add-in running an abap2UI5 app in Excel's task pane
  7. abap2UI5-addons/popupsReady-made dialogs for abap2UI5 apps
  8. rap-extFloorplans rendered from CDS UI annotations as abap2UI5 apps
  9. selection-screenSelect-options with saved variants for abap2UI5 apps
  10. abap2UI5 frontend-webcomponentabap2UI5 frontend rendering with UI5 Web Components
  11. abap2UI5 frontendabap2UI5 frontend as ABAP artefacts installed with abapGit
  12. abap2UI5 Layout EditorDrag-and-drop UI5 view editor that writes an abap2UI5 app class
  13. abap2UI5 protocolVersioned specification of the abap2UI5 roundtrip protocol
  14. ZFPM_TOOLSEdits, copies and transports a whole FPM hierarchy at once
  15. ZWD_CALENDAR_VHWeb Dynpro ABAP calendar value help for date fields
  16. abap_mustacheMustache template engine for ABAP

Details

Sources3
GitHub APIdiscovered herechecked
github.com/abap2UI5/abap2UI5tree, pushes, contributors, CIchecked
README.mdquoted, and what the entry declareschecked

Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.

Compatibility and provenance
runtimesbuild-time
discovered viaGitHub API
first seen in the atlas
ecosystem and domainabap, ui-and-frontend-bridge
abaplint
issues under its own abaplint configuration0
lines77,058
statements37,500
objects130
files292
analysed, main
abaplint version2.120.84
Flavors2
Standard ABAP
“Supports all ABAP releases from NW 7.02 to ABAP Cloud” — abap2UI5/abap2UI5 — READMEchecked
ABAP Cloud
“Supports all ABAP releases from NW 7.02 to ABAP Cloud” — abap2UI5/abap2UI5 — READMEchecked
Contributors24
History in the atlas1
  1. First seen.
For your agent
Ref
artifact:abap2ui5-abap2ui5
JSON
/artifacts/abap2ui5-abap2ui5.json
MCP
Connecting an agent