abap2UI5-local
The whole abap2UI5abap2UI5One 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.community org, abap framework folded into the local classes of one HTTP handler, so an app runs without the framework installed as a package.
abap2UI5 is normally installed as a package in the system, which is not always possible and collides with an installation already there. This repository combines all of its artifacts into the local classes of one handler class, Z2UI5_CL_ABAP2UI5_LOCAL: you copy that class into your system and add your app as a local class beside it, or pull the repository with abapGitabapGitA Git client written in ABAP that runs inside the system, so objects are cloned, pulled and pushed without leaving it; with no package manager in ABAP, a cloned repository is how code is distributed.community org, abap and start the app over the ICF node /sap/bc/z2ui5_local?app_start=<your app class>. It writes to its own persistence tables, z2ui5_t_99 and z2ui5_t_98, to stay clear of another abap2UI5 installation in the same system. What you install sits on three generated branches: standard for if_http_extension, cloud for if_http_service_extension, and 702 downported for NetWeaver 7.02 and higher. The main branch carries the generation machinery and input/, a copy of abap2UI5's src/.
Facts
Where it sits
Who is behind it
In the atlas: maintains 18@abap2UI5maintaineroblomov-devContributes to this
In the atlas: maintains 4, contributes to 44@oblomov-dev1 contributor
Before choosing this
Conditions
PracticalFunctional boundary
Not 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.
What it declares
Every artifact
- Type
- Package
- Origin
- By a community org
As a package
- Where it runs
- Inside its host
- Distributed through
- abapGit
Connections
Producing a web user interface from ABAP code
Git client written in ABAP that runs inside the system
UI5 apps written as one ABAP class, rendered by a generic shell
Download
README
quoted from abap2UI5/abap2UI5-local under MIT, readabap2UI5-local
All abap2UI5 artifacts are combined into a single HTTP handler implementation as local classes. This approach makes your app completely independent of the rest of the system or any other abap2UI5 installation. It is for developers who want to run an abap2UI5 app without installing the framework as a package, or next to an existing installation. This is a delivery repository: the installable branches standard, 702 and cloud are generated by workflows and are never edited by hand, and main holds the generation machinery plus input/, a generated copy of abap2UI5's src/. Changes to the framework go to abap2UI5, see CONTRIBUTING.md.
Branches
| Branch | Content | Last generated |
|---|---|---|
standard | Standard ABAP (if_http_extension) | |
702 | Downport for old releases (NW 7.02+) | |
cloud | ABAP for Cloud (if_http_service_extension) |
Installation
- Create a new HTTP handler in your system.
- Copy & paste the handler class from this repository.
- Add your abap2UI5 app as a local class and start it via your new HTTP endpoint.
- Alternatively, pull this repository using abapGit and start via
/sap/bc/z2ui5_local?app_start=z2ui5_cl_my_local_app
Start via HTTP
The standard and 702 branches ship the ICF node z2ui5_local (service path /sap/bc/z2ui5_local, handler class Z2UI5_CL_ABAP2UI5_LOCAL). After pulling the repository, activate the node in transaction SICF (locate /sap/bc/z2ui5_local, right-click → Activate Service) and open your app in the browser:
https://<host>:<port>/sap/bc/z2ui5_local?sap-client=<client>&app_start=<your_app_class>
For example:
https://myhost:44300/sap/bc/z2ui5_local?app_start=z2ui5_cl_my_local_app
The cloud branch uses the HTTP service Z2UI5_SERVICE_HTTP instead (same handler class) — take the URL from its service binding in ADT and append ?app_start=<your_app_class>.
Approach
Persistence
To avoid any side effects with other abap2UI5 installations, this version uses a separate table for persistence (z2ui5_t_99, the framework's z2ui5_t_01 under another name). You can either pull this repository or manually create the table in your system. The DDL below is rendered from the table definition the repository ships (input/01/01/z2ui5_t_01.tabl.xml) and checked on every branch generation, so it always has the columns the class reads:
@EndUserText.label : 'abap2UI5-local'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #RESTRICTED
define table z2ui5_t_99 {
key mandt : abap.clnt not null;
key id : abap.char(32) not null;
id_prev : abap.char(32);
id_prev_app : abap.char(32);
id_prev_app_stack : abap.char(32);
uname : abap.char(32);
timestampl : timestampl;
data : abap.string(0);
}
The user exit lookup is switched off in this build: the folded class carries z2ui5_if_ui5_exit as a local interface, which a global exit class of a regular installation cannot implement (see disable_exit_lookup in build_locals_imp.py).
Generation
This main branch is the template branch — it carries the merge tooling and a snapshot of the upstream sources, the installable artifact lives on the generated branches:
input/holds a copy of the current abap2UI5 sources. Upstream's trigger_local workflow refreshes it on every push to abap2UI5main; the update_input workflow (monthly schedule as safety net, or Run workflow) does the same from this side. Both overwrite it with the latest upstream version, validates it with abaplint (abaplint.jsoncpoints at/input) and pushes the refresh tomain.- Each artifact branch has its own workflow (generate_standard, generate_702, generate_cloud) which runs after every
inputrefresh (and on every push tomain). It merges the sources frominput/into the single locals includez2ui5_cl_abap2ui5_local.clas.locals_imp.abapvia.github/scripts/build_locals_imp.py(runs abapmerge, re-adds the localzif_app/zcx_erroradditions, renames the persistence table toz2ui5_t_99and orders all definitions so the result compiles as one include), renders the branch README from its template in.github/readme/(replacing the{{VERSION}}placeholder with the current abap2UI5 version), validates everything with abaplint and force-pushes the branch content as exactly one commit on top of the currentmain— so every branch always shows 1 commit ahead ofmainand never behind. To change a branch README, edit its template onmain— edits made directly on a generated branch are overwritten on the next run.
Run it locally:
python3 .github/scripts/build_locals_imp.py input /tmp/locals_imp.abap
Credits
- Merged files created with abapmerge (fetched from npm by
build_locals_imp.py) 702branch created with abaplint
Compatibility
This repository works in both ABAP for Cloud and Standard ABAP. For old releases use the branch 702.
Issues
For bug reports or feature requests, please open an issue in the abap2UI5 repository.
History
Others providing
Compare all 17 on the UI written in ABAP page →- abap2UI5abap2UI5One 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.community org, abapUI5 apps written as one ABAP class, rendered by a generic shell
- abap-cloud-guiabap-cloud-guiA 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.independent, abapReport-style programming model for abap2UI5 on ABAP Cloud
- custom-controlscustom-controlsThirteen 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.community org, abapThirteen custom UI5 controls for abap2UI5 apps
- http-connectorhttp-connectorAn 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.community org, abapForwards abap2UI5 roundtrips to another system over HTTP
- layout-managementlayout-managementAn 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.independent, abapTable and form layouts with saved variants for abap2UI5
- abap2UI5 for Excelabap2UI5 for ExcelAn 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.community org, abapOffice add-in running an abap2UI5 app in Excel's task pane
- abap2UI5-addons/popupsabap2UI5-addons/popupsReady-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.community org, abapReady-made dialogs for abap2UI5 apps
- rap-extrap-extFloorplan 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.community org, abapFloorplans rendered from CDS UI annotations as abap2UI5 apps
- selection-screenselection-screenSelect-options with saved variants for an abap2UI5 app, built from a database table name or from an internal table the app passes in.independent, abapSelect-options with saved variants for abap2UI5 apps
- abap2UI5 frontend-webcomponentabap2UI5 frontend-webcomponentAn 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.community org, abapabap2UI5 frontend rendering with UI5 Web Components
- abap2UI5 frontendabap2UI5 frontendThe 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.community org, abapabap2UI5 frontend as ABAP artefacts installed with abapGit
- abap2UI5 Layout Editorabap2UI5 Layout EditorA 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.community org, abapDrag-and-drop UI5 view editor that writes an abap2UI5 app class
- abap2UI5 protocolabap2UI5 protocolThe abap2UI5 roundtrip written down: a versioned specification of the wire between frontends and backends, JSON Schemas for its messages, and two conformance suites that test either side.community org, abapVersioned specification of the abap2UI5 roundtrip protocol
- ZFPM_TOOLSZFPM_TOOLSA report that shows the development objects of an FPM hierarchy in one view and edits, copies, deletes, imports and exports the hierarchy as a whole rather than one object at a time.independent, abapEdits, copies and transports a whole FPM hierarchy at once
- ZWD_CALENDAR_VHZWD_CALENDAR_VHA value help for date fields in Web Dynpro ABAP screens that shows a calendar view, so the user picks a day from it instead of typing the date.independent, abapWeb Dynpro ABAP calendar value help for date fields
- abap_mustacheabap_mustacheA Mustache template engine for ABAP, rendering logic-less templates into HTML or any other text from a structure or table of any type, with partials and a separate Steampunk-compatible branch.independent, abapMustache template engine for ABAP
Details
Sources
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
abaplint
Flavors
“This repository works in both ABAP for Cloud and Standard ABAP. For old releases use the branch `702`.” — abap2UI5/abap2UI5-local — README
“This repository works in both ABAP for Cloud and Standard ABAP. For old releases use the branch `702`.” — abap2UI5/abap2UI5-local — README
Contributors
History in the atlas
- First seen.
For your agent
- Ref
artifact:abap2ui5-abap2ui5-local- JSON
- /artifacts/abap2ui5-abap2ui5-local.json
- MCP
- Connecting an agent