PracticePracticetypeA convention or specification you conform to rather than install. The answer itself, not evidence about one.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 →Reference

abap2UI5 protocol

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

abap2UI5 is server-driven UI: the browser sends one JSON roundtrip per user event (the event, the model delta, the draft id) and the backend runs the app's main( ) and answers with the views and the model, with messages and frontend actions queued beside them. Three backends and three frontends spoke that format before anyone wrote it down; this repository writes it down in eight specification files, every MUST and SHOULD naming the ABAP class or JavaScript module it was derived from, beside three view profiles (the full UI5 XML vocabulary, a 61-control portable subset, and the agent snapshot that carries the screen as data) and JSON Schemas 2020-12 for the request, the response, the snapshot and the portable profile. Two suites then test an implementation: abap2ui5-conformance backend plays the frontend over HTTP against conformance apps a backend serves under fixed class names, shipped as ABAP classes and as cap2UI5 twins, and abap2ui5-conformance frontend plays the backend with recorded and synthetic responses through one adapter per frontend. It carries two frontends of its own as well: a prototype mapping a response onto an Adaptive Card 1.5, and abap2ui5-tui, which runs an abap2UI5 app as a keyboard-driven text screen against an SAP system or either reference backend.

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.
Serves
Optional
abap2UI5abap2UI5artifactThe 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.abapGitabapGitartifactGetting the ABAP conformance apps into the system the backend suite drives; for cap2UI5 the same apps ship as JavaScript twins instead.

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

Neither suite has been run against an ABAP system: the reference backends are the framework transpiled to Node and cap2UI5 on CAP, so what a check does on a real system is open. The portable profile is a subset of 61 controls, filled from a census of 247 core apps of which 64.8 % run unchanged, so an app outside it renders placeholders in the terminal and Adaptive Cards renderers.

What it declares

Every artifact

Type
Practice
Origin
By a community org
Use as
A reference
Runtime
Node.js

Connections4

abap2UI5 protocol connectionsabap2UI5 protocolPROVIDES→ provides1provides stated Specifies the roundtrip that carries an abap2UI5 app's views, model, messages and actions between the backend in the ABAP system and a frontend, as RFC 2119 statements derived from the implementations, and ships two frontends that render it without a browser: Adaptive Cards and a terminal screen. abap2UI5/protocol — README: https://github.com/abap2ui5/protocol abap2UI5/protocol — README: https://github.com/abap2ui5/protocol abap2UI5/protocol — AGENTS.md: https://raw.githubusercontent.com/abap2UI5/protocol/main/AGENTS.mdUI written in ABAPNEEDS→ connects to1connects to stated 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. 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→ optionally needs2optionally needs stated 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. abap2UI5/protocol — frontend conformance suite: https://raw.githubusercontent.com/abap2UI5/protocol/main/conformance/frontend/README.mdabap2UI5ifoptionally needs stated If: the backend under test serves the ABAP conformance apps from an ABAP system Getting the ABAP conformance apps into the system the backend suite drives; for cap2UI5 the same apps ship as JavaScript twins instead. abap2UI5/protocol — conformance apps: https://raw.githubusercontent.com/abap2UI5/protocol/main/conformance/apps/README.mdabapGitif

README

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

abap2UI5 protocol

The written, versioned contract between abap2UI5 frontends and backends - with JSON Schemas and conformance suites, so either side can be swapped.

abap2UI5 is server-driven UI ("UI5 over the wire"): the browser frontend sends one JSON roundtrip per user event - the event, the model delta, the draft id - and the backend runs the app's main( ) and answers with views, the model, messages and frontend actions. That protocol is spoken today by three backends (abap2UI5 on an ABAP system, the same framework transpiled to Node as @abap2ui5/node-runtime, cap2UI5 on CAP) and three frontends (the UI5 SPA, the MCP server's agent client, the ABAP frontend simulator). This repository writes it down.

The layers

 profiles/   view profiles - what is inside a view string
   ui5        full UI5 XML + the .eB/.eF wire forms + the boot page   (the UI5 SPA)
   portable   a 61-control subset every renderer renders              (Web Components, native, ...)
   semantic   agent snapshot v1 - the screen as data                  (agents, test drivers)
 ---------------------------------------------------------------------------------
 spec/       the core protocol - mandatory for every frontend and backend
   transport  one endpoint, GET page / POST roundtrip, headers, CSRF, HEAD, sap-contextid
   request    S_FRONT, events and their arguments, the model delta (__delta), CONFIG
   response   S_FRONT, T_SYSTEM / T_CUSTOM, the five view slots, MODEL, processing order
   actions    follow-up actions, messages
   sessions   drafts, draft ids as snapshots, expiry, failed roundtrips
   navigation app start resolution, app stack, routes, app-state hash, ROUTER action
   errors     the 500 text body and what a frontend does with it
   versioning PROTOCOL 2, compatible changes
 schema/     JSON Schemas (2020-12): request, response, snapshot, portable profile
 conformance/
   backend    the backend suite - plays the frontend over HTTP     (implemented)
   frontend   the frontend suite - plays the backend, adapters for (implemented)
              the UI5 SPA (Playwright), the agent client, the
              Web Components frontend, the Adaptive Cards and the
              terminal renderer
   apps       the conformance apps: ABAP classes + cap2UI5 twins
   hosts      the two reference backends, started with the apps deployed
 renderers/
   adaptive-cards  a portable renderer without a browser: response -> Adaptive
              Card 1.5, Action.Submit -> request                    (prototype)
   terminal   an abap2UI5 app in a terminal: keys in, text screen out,
              the CLI abap2ui5-tui (node runtime, cap2UI5, SAP systems)
   common     what both renderers share: view helpers, payload -> request
 traffic/    real traffic of both reference backends and three frontends

Start with spec/core.md. Every normative statement cites the source file and method it was derived from (spec/README.md).

Status

  • Protocol 2, specification revision 0.3, derived from abap2UI5 1.146.0 (commit b812079); the maintainer decided the ten open questions (spec/open-questions.md).
  • Backend suite: 76 checks (62 MUST, 14 SHOULD; 69 core, 7 UI5 profile). Both reference backends pass every check but error.no-reflection, new in revision 0.3 (the request URL reflected into the 500 body; fixed in abap2UI5 core, pinned until the runtime release carries it) - node-runtime 75/76, cap2ui5 74/76 with one SHOULD warning (conformance/RESULTS.md).
  • Schemas validate all 336 recorded requests, 320 responses and 18 agent snapshots, checked by the shipped validator and by ajv.
  • Portable profile v1 filled from a census of 247 core apps (73.7 % by controls, 64.8 % run unchanged).
  • Frontend suite: 81 checks (66 MUST, 15 SHOULD; 66 core, 8 portable, 4 UI5, 3 semantic), scripted from the recorded traffic. The official UI5 SPA passes every MUST but one - message box details stay empty on OpenUI5

    = 1.120 (fix under way); the agent client (mcp-server a4d9f07), the Adaptive Cards renderer and the terminal renderer pass every check that applies to them (61, 66 and 72 - the terminal's include the router checks); the Web Components frontend 68 of 68, with one intermittent failure (conformance/RESULTS.md).

  • Adaptive Cards renderer (prototype, renderers/adaptive-cards/): all 65 portable controls mapped onto Adaptive Cards 1.5, the way back from an Action.Submit to the next request, golden cards of recorded traffic.
  • Terminal renderer (renderers/terminal/): an abap2UI5 app in a terminal - npx abap2ui5-tui <url> --app <CLASS> against the node runtime, cap2UI5 or an SAP system (basic auth, cookies, CSRF, sap-contextid), all 65 portable controls as keyboard-driven widgets, a hash history so Back works, --print for logs, CI and screen readers; pure Node, no dependencies.
  • Not yet run against an ABAP system.

Run the backend suite

npm ci

# against any backend that serves the conformance apps
npx abap2ui5-conformance backend --url http://localhost:3000/ --profile ui5

# against the reference backends
npm run conformance:node-runtime        # transpiles the ABAP apps, serves, runs
npm ci --prefix conformance/hosts/cap2ui5
npm run conformance:cap2ui5

To test your backend: deploy the conformance apps (abapGit for ABAP; the JS twins for cap2UI5), point --url at the endpoint. Options, the library API and the check list: conformance/backend/README.md.

Run the frontend suite

npx abap2ui5-conformance frontend --adapter ui5      # the UI5 SPA (ABAP2UI5_HOME=<abap2UI5 checkout>) in Chromium
npx abap2ui5-conformance frontend --adapter agent    # the agent client of abap2UI5/mcp-server
npx abap2ui5-conformance frontend --adapter adaptive-cards   # the Adaptive Cards renderer of this package
npx abap2ui5-conformance frontend --adapter terminal         # the terminal renderer of this package

Run an app in the terminal

npm run serve:node-runtime &                     # the conformance apps on http://localhost:3000/
npx abap2ui5-tui http://localhost:3000/ --app Z2UI5_CL_CONF_BIND
npx abap2ui5-tui "https://host/sap/bc/z2ui5?sap-client=100" --app Z2UI5_CL_MY_APP --user ME --print

Keys, options and the control mapping: renderers/terminal/README.md.

Adapters, options and the check list: conformance/frontend/README.md.

Develop

npm test                 # schemas, traffic, docs, portable profile, CLI, both backends,
                         # the frontend suite (agent client, Adaptive Cards and terminal
                         # renderer; UI5 SPA with a checkout + Chromium), the golden
                         # cards and screens, the terminal against the node runtime
                         # (PROTOCOL_SKIP_BACKENDS=1 / PROTOCOL_SKIP_BROWSER=1 skip the slow parts)
npm run record           # re-record traffic/ from both backends
npm run lint:abap        # abaplint over the ABAP conformance apps
npm run generate         # regenerate the check lists, the portable-profile sections and
                         # the Adaptive Cards and terminal mapping tables
npm run demo:adaptive-cards -- slots.popup-destroy 0 1   # a recorded response as card JSON

Node 22 or later. The package has no runtime dependencies; the dev dependencies are the reference backend (@abap2ui5/node-runtime, the transpiler, express), abaplint, ajv, and for the UI5 adapter playwright-core and the @openui5/sap.m source packages (UI5 without a CDN).

abap2UI5 (backend + UI5 frontend) · cap2UI5 · mcp-server (agent client, snapshot implementation) · headless-frontend · linter

License

MIT

MIT, read

History

Latest

v0.1.0

Other 6

Notes

First version.

  • Specification of protocol 2 (revision 0.1), derived from abap2UI5 1.146.0: core (spec/core.md), transport, request, response, actions, sessions, navigation, errors, versioning - every normative statement traced to its source.
  • View profiles: UI5 (profiles/ui5.md); portable v1 (profiles/portable.md, portable-v1.json, portable-coverage.md) from a census of 247 core apps and 642 samples-controls ports; semantic - agent snapshot v1, moved here from abap2UI5/mcp-server as the normative version.
  • JSON Schemas (2020-12) for the request, the response, the snapshot and the portable profile.
  • Backend conformance suite (abap2ui5-conformance backend, library runBackendSuite): 75 checks, profiles core and ui5.
  • Conformance apps Z2UI5_CL_CONF_* in ABAP (abapGit) and as cap2UI5 apps; reference hosts for @abap2ui5/node-runtime and cap2UI5.
  • Recorded traffic of both reference backends (suite, UI5 frontend code, agent client). Both pass every MUST; cap2UI5 warns on error.details.
UI written in ABAP
  1. custom-controlsThirteen custom UI5 controls for abap2UI5 apps
  2. abap2UI5 frontend-webcomponentabap2UI5 frontend rendering with UI5 Web Components
  3. abap2UI5 Layout EditorDrag-and-drop UI5 view editor that writes an abap2UI5 app class

Details

Sources3
GitHub APIdiscovered herechecked
github.com/abap2UI5/protocoltree, 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
runtimesnode
discovered viaGitHub API
first seen in the atlas
ecosystem and domainabap, ui-and-frontend-bridge
Contributors1

From the repository’s contributor list, .

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