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.
| 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) |
- 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
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>.
To avoid any side effects with other abap2UI5 installations, this version uses the separated tables for persistence. You can either pull this repository or manually create the following two table in your system:
@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.char(3) 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);
timestampl : timestampl;
data : abap.string(0);
}@EndUserText.label : 'abap2ui5 local utility'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #RESTRICTED
define table z2ui5_t_98 {
key mandt : abap.char(3) not null;
key id : abap.char(32) not null;
uname : abap.char(32);
handle : abap.char(32);
handle2 : abap.char(32);
handle3 : abap.char(32);
handle4 : abap.char(32);
handle5 : abap.char(32);
data : abap.string(0);
data2 : abap.string(0);
data3 : abap.string(0);
}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 tables toz2ui5_t_99/z2ui5_t_98and 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- Merged files created with abapmerge (fetched from npm by
build_locals_imp.py) 702branch created with abaplint
This repository works in both ABAP for Cloud and Standard ABAP. For old releases use the branch 702.
For bug reports or feature requests, please open an issue in the abap2UI5 repository.