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-local

The whole abap2UI5 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 abapGit 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

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.
Part of
abap2UI5abap2UI5artifactOne 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.
Optional
abapGitabapGitartifactPulling the repository into the system, as the alternative to copying the handler class by hand.installation

Who is behind it

abap2UI5abap2UI5OrganisationMaintains this
In the atlas: maintains 18
@abap2UI5
maintaineroblomov-devPersonContributes to this
In the atlas: maintains 4, contributes to 44
@oblomov-dev
1 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

Connections3

README

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

update_input generate_standard generate_702 generate_cloud

abap2UI5-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
BranchContentLast generated
standardStandard ABAP (if_http_extension)last generated
702Downport for old releases (NW 7.02+)last generated
cloudABAP for Cloud (if_http_service_extension)last generated
Installation
  1. Create a new HTTP handler in your system.
  2. Copy & paste the handler class from this repository.
  3. Add your abap2UI5 app as a local class and start it via your new HTTP endpoint.
  4. 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
Screenshot 2025-02-13 at 13 24 18
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 abap2UI5 main; 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.jsonc points at /input) and pushes the refresh to main.
  • Each artifact branch has its own workflow (generate_standard, generate_702, generate_cloud) which runs after every input refresh (and on every push to main). It merges the sources from input/ into the single locals include z2ui5_cl_abap2ui5_local.clas.locals_imp.abap via .github/scripts/build_locals_imp.py (runs abapmerge, re-adds the local zif_app/zcx_error additions, renames the persistence table to z2ui5_t_99 and 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 current main — so every branch always shows 1 commit ahead of main and never behind. To change a branch README, edit its template on main — 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)
  • 702 branch 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.

MIT, read

History

Latest

v1.138.0

  1. v1.137.0

UI written in ABAP
  1. abap2UI5UI5 apps written as one ABAP class, rendered by a generic shell
  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/abap2UI5-localtree, 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
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
“This repository works in both ABAP for Cloud and Standard ABAP. For old releases use the branch `702`.” — abap2UI5/abap2UI5-local — READMEchecked
ABAP Cloud
“This repository works in both ABAP for Cloud and Standard ABAP. For old releases use the branch `702`.” — abap2UI5/abap2UI5-local — READMEchecked
Contributors1

From the repository’s contributor list, .

History in the atlas1
  1. First seen.
For your agent
Ref
artifact:abap2ui5-abap2ui5-local
JSON
/artifacts/abap2ui5-abap2ui5-local.json
MCP
Connecting an agent