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 frontend

The 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.

abap2UI5 apps run through the framework's own HTTP service, and this repository publishes the separate frontend app a system installs beside it: one branch per system type, carrying the BSP Z2UI5 or the HTTP service Z2UI5 with its handler class and ICF nodes. Six branches are published: cloud, cloud_v2, standard and standard_v2 carry a generated copy of the abap2UI5 webapp, while cloud_new and standard_new carry one view with the z2ui5.embed.Container control, which loads the frontend from the backend it runs against, so an abap2UI5 update needs no frontend pull. Every branch names the same objects and the same launchpad component z2ui5, so a system switches by pulling another branch into the same abapGit repository and launchpad target mappings keep working. Nothing here is written by hand: every branch is built in abap2UI5 from app/webapp and frontend/ and pushed in, and the guard check fails every pull request opened here.

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.
Requires
abap2UI5abap2UI5artifactThe 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.abapGitabapGitartifactPulling the branch that matches the system into a package of your own; a system moves between branches by pulling another one into the same abapGit repository.

Who is behind it

abap2UI5abap2UI5OrganisationMaintains this
In the atlas: maintains 18
@abap2UI5
maintainerabapsheepPersonContributes to this
In the atlas: contributes to 6
@abapsheep
axelmohnenPersonContributes to this
In the atlas: contributes to 4
@axelmohnen
Christian GünterPersonContributes to this
In the atlas: maintains 1, contributes to 12
@christianguenter2
oblomov-devPersonContributes to this
In the atlas: maintains 4, contributes to 44
@oblomov-dev
4 contributors

Before choosing this

Conditions

PracticalFunctional boundary

The 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.

What it declares

Every artifact

Type
Package
Origin
By a community org

As a package

Where it runs
does not say
Distributed through
abapGit

Connections8

abap2UI5 frontend connectionsabap2UI5 frontendPROVIDES→ provides1provides stated Delivers the browser side of abap2UI5 as ABAP artefacts to install: per system type a BSP or HTTP service with its handler, carrying either a generated copy of the abap2UI5 webapp or, on the `_new` branches, one view with the embed control that loads the frontend from the backend. abap2UI5/frontend — README: https://github.com/abap2ui5/frontend abap2UI5/frontend — README of the branch cloud_new: https://raw.githubusercontent.com/abap2UI5/frontend/main/result/cloud_new/README.mdUI written in ABAPUSED BY← connected from1connected from derived the embed control loads the abap2UI5 frontend bundle from the system at runtime Through: inverted from its connects edge office-addin: AGENTS.md: https://raw.githubusercontent.com/abap2UI5-addons/office-addin/main/AGENTS.mdabap2UI5 for Excel← needed by1needed by derived the UI5 half of the app: the frontend is pinned by commit, built against OpenUI5 into the site's own `dist/app/`, and runs in the iframe beside the editor Through: inverted from its requires edge abap2UI5/playground — README, Development: https://github.com/abap2ui5/playground abap2UI5/playground — README, How it works: https://github.com/abap2ui5/playgroundabap2UI5 Playground← optionally used by1optionally used by derived If: abap2UI5 runs in BSP or launchpad mode The frontend BSP that resolves `z2ui5_ccc` against this BSP, needed when abap2UI5 runs in BSP or launchpad mode. Through: inverted from its requires edge abap2UI5-addons/custom-controls-customer — README, Installation: https://github.com/abap2ui5-addons/custom-controls-customercustom-controls-customerifNEEDS→ connects to1connects to stated 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. 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→ needs2needs stated 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. abap2UI5/frontend — README: https://github.com/abap2ui5/frontend abap2UI5/frontend — README: https://github.com/abap2ui5/frontendabap2UI5needs stated Pulling the branch that matches the system into a package of your own; a system moves between branches by pulling another one into the same abapGit repository. abap2UI5/frontend — README of the branch standard_new: https://raw.githubusercontent.com/abap2UI5/frontend/main/result/standard_new/README.md abap2UI5/frontend — README of the branch standard_new: https://raw.githubusercontent.com/abap2UI5/frontend/main/result/standard_new/README.mdabapGitLINEAGE→ part of1part of stated abap2UI5/frontend — repository facts: https://github.com/abap2ui5/frontend abap2UI5/frontend — README: https://github.com/abap2ui5/frontendabap2UI5

README

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

frontend_check frontend_deploy

abap2UI5 frontend

This repository contains an abap2UI5 frontend artefacts service. For more information on installation, check out the installation guide.

This repository is generated — it does not take manual pull requests

It is not where the frontend is written, it is where the frontend is published. Every branch here is built in abap2UI5 and pushed in — first as result/<branch> folders into one commit on main, then fanned out by the deliver workflow — so frontend changes belong there and bug reports belong in its issues. The guard check fails every pull request opened here by default; maintaining this repository's own docs is the one exception, unlocked by a maintainer with the maintenance label. Full rationale: CONTRIBUTING.md.

abap2UI5/abap2UI5                       abap2UI5/frontend
                   frontend_deploy                        deliver
  app/webapp/  ──▶  tools/out/  ──────▶  main           ──────────▶  cloud
  (the webapp)      (each branch         result/<branch>             cloud_v2
   + frontend/       built at deploy     (all six trees,             standard
     abap, embed     time, git-ignored,  one commit per              standard_v2
                     never committed)    change)                     cloud_new
                                                                     standard_new
                                                                     (each: main
                                                                     + one commit)

                                         standard_<name> is built on demand
                                         and pushed straight onto its branch
Branch

Every branch is generated in abap2UI5 — the webapp lives in app/webapp there, everything else a branch is built from in frontend/ — and built there by tools/build-branches.mjs into the git-ignored tools/out/, never committed on that side. Its frontend_deploy workflow writes the six stamped trees as result/<branch> folders into one commit on main here, and the deliver workflow turns each folder into its branch: one commit on top of main, carrying the folder's content and nothing else. So every branch is always exactly one commit ahead of main, main's history shows every change a branch ever received, and what arrives on a branch is what a pull request over there reviewed. Pull the one that matches your system:

NameSystemUI5Built by
cloudS/4 Public Cloud, BTP ABAP Environmentclassicnpm run frontend:cloud
cloud_v2S/4 Public Cloud, BTP ABAP Environmentlegacy-free (UI5 2.x)npm run frontend:cloud_v2
standardS/4 Private Cloud, S/4 On-Premise, R/3 NetWeaver >750classicnpm run frontend:standard
standard_v2S/4 Private Cloud, S/4 On-Premiselegacy-free (UI5 2.x)npm run frontend:standard_v2
cloud_newS/4 Public Cloud, BTP ABAP Environmentembed controlnpm run frontend:cloud_new
standard_newS/4 Private Cloud, S/4 On-Premise, R/3 NetWeaver >750embed controlnpm run frontend:standard_new

The _new branches carry no copy of the abap2UI5 frontend: their app is one view with one z2ui5.embed.Container, a custom control that loads the frontend from the backend it runs against (?z2ui5-bundle) — the frontend always has the version of the backend it talks to, and an abap2UI5 update needs no frontend pull any more. Same objects, names, endpoints and launchpad settings as cloud and standard - a system switches between the branches by pulling another one, and launchpad target mappings and external links keep working (checked on every build by tools/check-identity.mjs); they need an abap2UI5 newer than 1.146.0. The app lives in frontend/embed of abap2UI5, the control is developed in abap2UI5/embed-control and published as @abap2ui5/embed-control, and each of the two branches has a README of its own.

main carries this repository's own docs plus the machine-written result/ trees — it is not a source either: a hand edit to result/ is overwritten by the next delivery.

Where to change what

Nothing in this repository is written by hand any more. A change made to a generated branch or to result/ is discarded on the next delivery, without a trace in the history:

ContentOwned by
result/ on mainabap2UI5 — its frontend_deploy workflow commits the six finished trees, one commit per content change
every branch (cloud, cloud_v2, standard, standard_v2, cloud_new, standard_new)the deliver workflow here — each branch is main plus one commit carrying its result/<branch> content
standard_<name>abap2UI5 — built on demand by a frontend_deploy dispatch and pushed straight onto the branch
the app of cloud_new and standard_newabap2UI5, frontend/embed — the control it holds is abap2UI5/embed-control's, pinned as @abap2ui5/embed-control
this repository's docs (main)here, as a maintenance pull request

So a frontend change belongs in abap2UI5: edit app/webapp there and run npm run app2abap to regenerate the embedded ABAP resources under src/01/03. No delivery tree is committed with it: frontend_check builds all six branches from the pull request into the git-ignored tools/out/ and checks the BSP packaging against the webapp being changed, and frontend_deploy runs the same build on main, stamps the trees and delivers them into result/ on main here, from where deliver fans them out into the branches. (npm run frontend:build is that build on your machine, npm run frontend:verify compares it with what is published here.)

The _new branches take the other route to the same place. Nothing of app/webapp is generated into them: their app in frontend/embed is one view with one z2ui5.embed.Container, and the control fetches the abap2UI5 frontend from the backend at runtime — so a change to the frontend reaches a system on these branches with the backend, without a delivery here. What is delivered is the app itself, the control at the version pinned in frontend/embed/package.json and in the root package.json of abap2UI5 (both, or the build fails), and the ABAP artefacts. The control is developed in abap2UI5/embed-control and published as @abap2ui5/embed-control: a limitation of the control is fixed there, one of the frontend in app/webapp, and neither is worked around in the app.

Because the overwrite is not loud — the change is merged, works, and vanishes on some later unrelated run — the convention is enforced rather than trusted: the guard workflow fails every pull request opened here, and a change to this repository's own docs is unlocked by a maintainer applying the maintenance label.

Renaming

Need the BSP under a different name (e.g. a second copy in the same system)? Run the frontend_deploy workflow in abap2UI5 with a branch name of the form standard_<name> — plain (ZMYUI5) or in a registered namespace (/ABAPGIT/ → BSP /ABAPGIT/UI5, handler /ABAPGIT/CL_LP_HANDLER) — it generates and pushes a branch standard_<name> / standard_v2_<name> with the whole deployment identity (BSP, SICF nodes, handler class) renamed. For a backend that was itself renamed with the build-rename workflow, append __<name> (standard_#abap2ui5#__#abap2ui5#): the handler then calls that backend's cl_http_handler. Details in tools/bsp_rename.

Sibling BSPs

app/webapp/manifest.json reserves two resourceRoots that point next to this BSP, so a system can add frontend artefacts without a change here:

resourceRootSibling BSPBuilt from
z2ui5_cciZ2UI5_CCIabap2UI5-addons/custom-controls — community custom controls
z2ui5_cccZ2UI5_CCCabap2UI5-addons/custom-controls-customer — a customer's own reuse library, icon font or CSS

Neither BSP has to be installed: the browser requests nothing from a resourceRoot until a view names the namespace. Both entries come from abap2UI5 app/webapp — see "Where to change what" above.

Dependencies
  • abap2UI5 — the frontend artefacts pair with the abap2UI5 framework installed in the backend
Issues

For bug reports or feature requests, please open an issue in the abap2UI5 repository.

MIT, read

History

Latest

v1.142.0-standard

  1. v1.142.0-cloud

  2. v1.140.0-cloud

  3. v1.139.0-cloud

  4. v1.138.0-cloud

  5. v1.135.0-cloud

  6. v1.133.0

  7. v1.130.0

  8. v1.129.0

  9. v1.128.0

  10. v1.124.0

  11. v1.122.0

  12. v1.114.0

  13. v1.113.0

  14. v1.112.0

  15. v1.100.0

UI written in ABAP
  1. abap2UI5-localabap2UI5 folded into the local classes of one HTTP handler
  2. abap2UI5UI5 apps written as one ABAP class, rendered by a generic shell
  3. abap-cloud-guiReport-style programming model for abap2UI5 on ABAP Cloud
  4. custom-controlsThirteen custom UI5 controls for abap2UI5 apps
  5. http-connectorForwards abap2UI5 roundtrips to another system over HTTP
  6. layout-managementTable and form layouts with saved variants for abap2UI5
  7. abap2UI5 for ExcelOffice add-in running an abap2UI5 app in Excel's task pane
  8. abap2UI5-addons/popupsReady-made dialogs for abap2UI5 apps
  9. rap-extFloorplans rendered from CDS UI annotations as abap2UI5 apps
  10. selection-screenSelect-options with saved variants for abap2UI5 apps
  11. abap2UI5 frontend-webcomponentabap2UI5 frontend rendering with UI5 Web Components
  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/frontendtree, 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
Contributors4

From the repository’s contributor list, .

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