SampleSampletypeA worked example you read or clone. Evidence: it demonstrates, it never provides.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/samples-stack

Ten self-contained ABAP packages, each putting an abap2UI5 app in front of one technology the system already runs: OData V2, Smart Controls, RAP with and without draft, business events, ABAP locks, WebSockets, MIME and the Fiori Launchpad.

abap2UI5 makes no assumption about where an app's data comes from, which leaves open how an app reaches what a system already has. Each package here answers that for one technology: src/01 attaches two OData V2 models to one view through cs_event-set_odata_model, src/03 and src/04 consume a RAP business object with EML and with draft handling, src/07 pushes a news feed from ABAP through an AMC channel into every open browser tab with the z2ui5:Websocket control, src/10 reaches a language model over an HTTPS destination behind one ABAP interface, Z2UI5_IF_SMPS_LLM. The ten are unrelated: none depends on another, and because abapGit imports a whole repository, every package also lives on a generated branch of its own that carries just that package and the overview app. Three cannot run on ABAP Cloud: 06 locks through ENQUEUE_E_TABLE and holds a stateful ICF session, 07 needs on-premise APC/AMC, 08 reads the MIME repository over an ICF path. main as a whole asks for ABAP Platform 1909, because the EML packages do.

Facts

Last pushLicenceMIT

Where it sits

Lives in
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
abap2UI5abap2UI5artifactEvery sample is an abap2UI5 app class started with ?app_start=<class name>, so the framework has to be installed first.abapGitabapGitartifactThe ABAP objects reach a system as an abapGit pull — main for all ten packages, or the branch that carries one.
Optional
SAP-samples/abap-platform-refscen-flightSAP-samples/abap-platform-refscen-flightartifactThe two OData V2 service paths the 01 sample points at are the flight reference scenario's; any two OData V2 services of the system do as well once the paths are swapped.ABAP AI SDKABAP AI SDKartifactOne of the three language-model providers the 10 package ships, Z2UI5_CL_SMPS_LLM_ISLM, calls the ABAP AI SDK instead of HTTP of its own, and activates only where SAP ships the SDK.SAP Destination serviceSAP Destination serviceartifactOn ABAP Cloud the 10 package's transport class resolves a destination of the BTP subaccount through cl_http_destination_provider=>create_by_cloud_destination, with the communication arrangement for SAP_COM_0276 in the ABAP environment.

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 the place to learn abap2UI5 itself: every package starts from a technology the system already provides, and the framework basics and the control gallery are the other two sample repositories, abap2UI5/samples and abap2UI5/samples-controls. Three packages are out of reach on ABAP Cloud, and 05 needs the 2021 release that carries RAP business events.

What it declares

Every artifact

Type
Sample
Origin
By a community org
Use as
A reference

As a sample

Form
does not say

Connections6

abap2UI5/samples-stack connectionsabap2UI5/samples-stackNEEDS→ needs2needs stated Every sample is an [abap2UI5](artifact:abap2ui5-abap2ui5) app class started with `?app_start=<class name>`, so the framework has to be installed first. abap2UI5/samples-stack — README, Setup: https://github.com/abap2ui5/samples-stackabap2UI5needs stated The ABAP objects reach a system as an abapGit pull — `main` for all ten packages, or the branch that carries one. abap2UI5/samples-stack — README, Setup: https://github.com/abap2ui5/samples-stackabapGit→ optionally needs3optionally needs stated If: the `10` samples are configured for the ABAP AI SDK provider One of the three language-model providers the `10` package ships, `Z2UI5_CL_SMPS_LLM_ISLM`, calls the ABAP AI SDK instead of HTTP of its own, and activates only where SAP ships the SDK. abap2UI5/samples-stack — src/10 README, What you need: https://raw.githubusercontent.com/abap2UI5/samples-stack/main/src/10/README.mdABAP AI SDKifoptionally needs stated If: the `10` AI samples run on an ABAP Cloud system On ABAP Cloud the `10` package's transport class resolves a destination of the BTP subaccount through `cl_http_destination_provider=>create_by_cloud_destination`, with the communication arrangement for `SAP_COM_0276` in the ABAP environment. abap2UI5/samples-stack — src/10 README, What you need: https://raw.githubusercontent.com/abap2UI5/samples-stack/main/src/10/README.mdSAP Destination serviceifoptionally needs stated If: the `01` OData sample is run against the service paths it ships with The two OData V2 service paths the `01` sample points at are the flight reference scenario's; any two OData V2 services of the system do as well once the paths are swapped. abap2UI5/samples-stack — src/01 README, What you need: https://raw.githubusercontent.com/abap2UI5/samples-stack/main/src/01/README.md abap2UI5/samples-stack — src/01 README, What you need: https://raw.githubusercontent.com/abap2UI5/samples-stack/main/src/01/README.mdSAP-samples/abap-platform-refscen-flightifLINEAGE→ part of1part of stated abap2UI5/samples-stack — README, The learning path: https://github.com/abap2ui5/samples-stack abap2UI5 documentation — llms.txt, Beyond the documentation: https://abap2ui5.github.io/docs/llms.txtabap2UI5

README

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

abap version namespace abap2UI5 AI-ready: llms.txt · skills · MCP

abap-standard check-abap2UI5 check-app-rules
check-overview check-samples-md check-keywords
check-abapdoc check-prose-names check-catalogue
create-package-branches

abap2UI5 — samples-stack

Learn how abap2UI5 plays with your stack — OData, RAP, Smart Controls, WebSockets, the Fiori Launchpad, language models and more.

abap2UI5 is more than a standalone framework for building apps. At its core it is deliberately agnostic: it makes no assumption about where your data comes from, which model backs your UI, or which stack you have already invested in. That neutrality is what makes it flexible — whenever it is useful, abap2UI5 plugs into what your system already offers.

This repository shows exactly that. OData, Smart Controls, RAP with and without draft, RAP business events, stateful sessions and ABAP locks, WebSockets via AMC/APC, the MIME repository, the Fiori Launchpad, a large language model over HTTPS — abap2UI5 works alongside each of them, and each one keeps doing what it is good at. Nothing here replaces an existing technology; everything here complements one. Whether you use any of it is entirely up to you — everything is possible, nothing is required.

The samples live in their own repository simply because they reach beyond a plain abap2UI5 installation: they use something the system provides, so the basic samples in abap2UI5/samples stay install-and-run.

Every area is self-contained and brings its own README. Pick the one you came for and try it out — the others can wait until you need them.

Looking for one particular sample? https://abap2ui5.github.io/playground/samples/ is this catalogue as a searchable page — together with the other two sample repositories: filter by the technology you came for and by the release your system runs, and every card says what the sample needs from that system before you install anything.

Building with an AI coding agent? The AI page of the documentation sets up the skills and the MCP server — whose sample search covers every sample here: claude mcp add abap2ui5 -- npx --yes -p @abap2ui5/mcp-server abap2ui5-mcp. The Claude Code plugin is two commands: /plugin marketplace add abap2UI5/abap2UI5, then /plugin install abap2ui5@abap2ui5.

Which package do I need?

Most readers need exactly one. The fourteen areas are unrelated technologies, none depends on another — so find the row that says what you came to do, take that package, and skip the rest:

You want to …PackageIt needs
Bind a view straight to an OData V2 service you already runsrc/01 — ODataan activated OData V2 service
Get columns, filters and value help for free from OData metadata — SmartTable, SmartField, SmartFilterBarsrc/02 — Smart ControlsSAPUI5 + an activated Gateway service
Put a screen in front of a RAP business object, in plain ABAP with EMLsrc/03 — RAP≥ 1909; the business object ships with the package
Add draft handling on top — edit, resume, discard, activatesrc/04 — RAP with Draft≥ 1909; the draft business object ships with the package
React to what a business object announces, while it happenssrc/05 — Business Events≥ 2021, the release that carries RAP business events
Keep session state and an ABAP ENQUEUE lock alive between two clickssrc/06 — Stateful Sessions / Lockson-premise; the lock table ships with the package
Push messages from ABAP into every open browser tab, without JavaScriptsrc/07 — AMC/APCon-premise; activate one ICF node in SICF
Play or serve a file the MIME repository already holdssrc/08 — MIME Play Audioon-premise; activate one ICF service in SICF
Expose your app in the Fiori Launchpad — tile, startup parameters, cross-app navigationsrc/09 — Launchpada launchpad with a tile pointing at abap2UI5
Call a large language model from your app — a chat, or a table summarized by AIsrc/10 — AI / LLMan HTTPS destination to an LLM endpoint (SM59 or BTP), or SAP's ABAP AI SDK
Upload a file into a RAP business object through an action with a deep parametersrc/11 — RAP File Upload≥ 2025, the release that carries deep action parameters with @Semantics.largeObject; the business object ships with the package
Ask a business object what is allowed, call actions with parameters, factory actions and default values, validate while the user typessrc/12 — RAP Actions & Permissions≥ 2025; the business object ships with the package
Read an uploaded Excel file, export a table as Excel, send it as a mail attachmentsrc/13 — Excel & E-Mail≥ 2023 or ABAP Cloud; outbound mail configured for the mail sample
Render Adobe Forms to PDF and download one or several as a ZIPsrc/14 — Adobe Formson-premise; Adobe Document Services configured

Each package README opens with a What you need section that turns the last column into concrete steps; the table below adds the exact release floors.

What is in here

PackageTopicPlays together withRuns on
src/01OData — bind a table to an OData V2 modelan activated OData V2 serviceCloud + Standard ≥ 7.40 SP08
src/02Smart Controls — sap.ui.comp driven by OData metadataSAPUI5 + an activated Gateway serviceCloud + Standard ≥ 7.40 SP08
src/03RAP — consume a business object with EMLABAP Platform >= 1909; the BO ships with this repoCloud + Standard ≥ 7.54 (1909)
src/04RAP with Draft — use draft handlingas aboveCloud + Standard ≥ 7.54 (1909)
src/05Business Events — react to RAP events, log them, show themas aboveCloud + Standard ≥ 7.56 (2021)
src/06Stateful Sessions / Locks — sticky session, ENQUEUEABAP Standard (on-premise), the table Z2UI5_T_SMPS_01Standard only, ≥ 7.40 SP08
src/07AMC/APC — a news feed over WebSocketon-premise APC/AMC, the ICF node Z2UI5_APC_SMP_2Standard only, ≥ 7.50
src/08MIME Play Audio — play a sound from the MIME repositorythe ICF service /SAP/PUBLIC/BC/ABAP/mime_demoStandard only, ≥ 7.50
src/09Launchpad — startup parameters, shell title, cross-app navigationa Fiori Launchpad with a tile pointing at abap2UI5Cloud + Standard ≥ 7.40 SP08
src/10AI / LLM — chat with a language model, summarize a table with AIan HTTPS destination to an LLM endpoint (SM59 or BTP), or SAP's ABAP AI SDKCloud + Standard ≥ 7.40 SP08
src/11RAP File Upload — a file into a business object, as a deep action parameterABAP Platform >= 2025; the BO ships with this repoCloud + Standard ≥ 8.16 (2025)
src/12RAP Actions & Permissions — feature control, parameters, factory actions, defaults, projectionsABAP Platform >= 2025; the BO ships with this repoCloud + Standard ≥ 8.16 (2025)
src/13Excel & E-Mail — read and write .xlsx with XCO, send it by mailthe XCO XLSX library; outbound mail for the mail sampleCloud + Standard ≥ 7.58 (2023)
src/14Adobe Forms — render forms to PDF, one file or a ZIPAdobe Document Services (ADS)Standard only, ≥ 7.50

The numbering is a reading order, not a dependency chain: 01 starts where most systems already are — an activated OData service — and each package from there reaches a little deeper into the stack. Enter wherever your system is today.

The learning path

This repository is step 3 of 3 — the place to connect abap2UI5 with the technologies you already run. If you are new to abap2UI5, start one step earlier:

RepositoryWhat you learnWhere to start
1️⃣samplesthe abap2UI5 basics — bindings, events, popups, navigation, complete appsrun Z2UI5_CL_SMP_APP_000
2️⃣samples-controlshow to use every UI5 control — the UI5 Demo Kit rebuilt with abap2UI5run z2ui5_cl_smpc_app_000
3️⃣samples-stack — 📍 you are herehow abap2UI5 plays with your stack — OData, RAP, WebSockets, the Fiori Launchpad and morepick your technology in the table above
Reading the Runs on column

Cloud is the ABAP Cloud stack — a BTP ABAP Environment or an on-stack cloud development tenant. Three packages cannot go there, and it is the technology, not the sample, that keeps them out: 06 locks through the function modules ENQUEUE_E_TABLE / ENQUEUE_READ and holds a stateful ICF session, 07 needs on-premise APC/AMC, 08 reads the MIME repository over an ICF path, 14 renders Adobe Forms through the classic FP_JOB_OPEN runtime. None of those is a released ABAP Cloud API.

Standard is the on-premise release, given as the SAP_BASIS version with the ABAP Platform name where there is one — 7.54 is 1909, 7.56 is 2021. The number is the higher of two floors:

  • the ABAP the package is written in. Unlike the other sample repositories this one is not downported to 7.02, so 7.40 SP08 is the floor everywhere. These syntax floors are measured, not estimated: one abaplint run per release over the tree, and the number in the table is the lowest release the package parses clean at.
  • the technology the package plays with. EML lifts 03 and 04 to 1909, RAP business events lift 05 to 2021, a deep action parameter carrying a file lifts 11 to 2025, default functions and the RAP context class lift 12 to 2025, the XCO XLSX library and the ABAP Cloud mail API lift 13 to 2023. If one of them does not activate on your system, that package is out of reach and nothing else in this repository is affected.
  • the HTTP client of the stack. 10 calls a language model over HTTPS, and the two stacks release different clients for that — cl_http_client on an SM59 destination on Standard, cl_web_http_client_manager on ABAP Cloud. So the package carries one small transport class per stack, each activating on its own stack only, and the samples pick whichever is there at runtime.

The repository as a whole therefore asks for 1909, because 03–05 do. A single package can ask for much less — which matters if you are only here for one of them.

Setup

  1. Install abap2UI5.
  2. Pull this repository with abapGit — main for all fourteen packages, or the branch of the single package you came for (see One package at a time). main as a whole runs on ABAP Platform >= 1909 or a BTP ABAP Environment — that is what EML asks for, which is why it is the one sample repository without a 7.02 downport.
  3. Set up whatever the package you picked builds on — its README says so in one short section.
  4. Start an app with ?app_start=<class name>.

Every sample here is called Z2UI5_CL_SMPS_APP_<no>, and the tables in the package READMEs give you the number — so the MIME sample is ?app_start=z2ui5_cl_smps_app_487.

A number on its own does not name a sample. Numbers are handed out per repository and the class prefix is what qualifies them: Z2UI5_CL_SMPS_APP_493 is the classic FilterBar sample here, while Z2UI5_CL_SMP_APP_493 in abap2UI5/samples is Hello World. So are 489 and 490. There is no shared number space between the three sample repositories, and there is not meant to be one — the prefix already says which repository you are in. Always name a sample by its class.

The overview app

You do not have to look a number up. ?app_start=z2ui5_cl_smps_app_000 lists every sample of this repository, one collapsible section per package, and starts each one in a new browser tab — so the overview stays where it is and several samples can run side by side. Its header button, Regenerate Demo Data, deletes every travel of both RAP packages — yours included — and creates the demo set again.

It is also the honest answer to what does my system actually support: the overview looks every sample up at runtime instead of referencing it statically, so a package your release cannot activate — or one you never installed — is listed with its Open button disabled and a Status saying so, rather than taking the whole overview down. Start it first, and the list tells you which of the fourteen packages this system can run.

One package at a time

abapGit imports a whole repository — there is no way to pull half of one. On main that means a system that came for 01 also gets the three on-premise packages and the three that need 1909, and reports activation errors for technology it never asked for.

So every package additionally lives on its own branch. Each branch carries the number of the package it holds, so the abapGit branch dropdown lists them in the same reading order as the table above. Pick one and you import that package, the overview app and nothing else:

BranchPackageRuns on
01-odatasrc/01 — ODataCloud + Standard ≥ 7.40 SP08
02-smart-controlssrc/02 — Smart ControlsCloud + Standard ≥ 7.40 SP08
03-rapsrc/03 — RAPCloud + Standard ≥ 7.54 (1909)
04-rap-draftsrc/04 — RAP with DraftCloud + Standard ≥ 7.54 (1909)
05-business-eventssrc/05 — Business EventsCloud + Standard ≥ 7.56 (2021)
06-stateful-lockssrc/06 — Stateful Sessions / LocksStandard only, ≥ 7.40 SP08
07-amc-apcsrc/07 — AMC/APCStandard only, ≥ 7.50
08-mimesrc/08 — MIME Play AudioStandard only, ≥ 7.50
09-launchpadsrc/09 — LaunchpadCloud + Standard ≥ 7.40 SP08
10-ai-llmsrc/10 — AI / LLMCloud + Standard ≥ 7.40 SP08

The overview app ships on every branch and keeps listing every sample in the repository, so it stays the catalogue of what the other branches hold — the ones that are not on your branch simply show up with a disabled Open button.

These branches are generated: create-package-branches rebuilds and force-pushes every one of them on every push to main, and abaplint checks each one at the release that package declares before it is pushed. Work on main — issues and pull requests against a generated branch go nowhere, and a commit pushed to one is gone at the next build.

Namespace

Every object carries the token SMPS behind its type token — the scheme the samples repository uses with its SMP token:

Z2UI5_CL_SMPS_<object>    classes, including the behavior pools and event handlers
Z2UI5_T_SMPS_<object>     persistent tables
Z2UI5_D_SMPS_<object>     draft tables
Z2UI5_E_SMPS_<object>     data elements
Z2UI5_R_SMPS_<object>     CDS entities and their behavior definitions
Z2UI5_SD_SMPS_<object>    service definitions
Z2UI5_SB_SMPS_<object>    service bindings

Runnable samples are Z2UI5_CL_SMPS_APP_<no>, so the class name is what you pass to ?app_start=.

Class names are capped at 25 characters, tables at 16. Both limits and the patterns themselves are enforced by the object_naming rule in abaplint.jsonc; the comment there explains where the numbers come from. The other object types have no object_naming key in abaplint, so for those the scheme is convention only.

One group sits outside the scheme: the objects abaplint cannot name-check at all — the AMC channel, the APC push channel with its ICF node, and the two MIME objects. They carry the older SMP token (Z2UI5_AMC_SMP_2, Z2UI5_APC_SMP_2, z2ui5_smp_error.mp3, z2ui5_smp_success.mp3).

Checks

Locally, everything CI runs, in one command:

npm ci
npm run check

Individually: npm run lint (abaplint), npm run check:abap2ui5 (the app class and the view it builds, with a headless render of every view) and npm run check:overview. npm run fmt:chains applies the house chain layout. AGENTS.md has the conventions those checks enforce.

Every check-* workflow below is a step of npm run check, and every step has its workflow — which is what makes a green run here mean a green run there. The last row is a build-and-publish job, not a check, and runs only in CI. The node checks carry no dependencies, so they take seconds.

WorkflowWhat it does
abap-standardabaplint ./abaplint.jsonc — syntax v757, the on-premise release
check-abap2UI5abap2ui5lint — the app class and the view it produces, together; also writes the two badges above
check-overviewthe hand-kept indexes: every sample is listed in the overview app, the package table matches .github/packages.json, and the Which package do I need? table routes to every package
check-samples-mdSAMPLES.md still is what the generator would write — and every app that exists is in an entry
check-keywordsevery app carries @keywords and @summary, and the overview's detail line still is the class's @summary
check-page-titlesevery sample's main page title starts with abap2UI5 -
check-abapdocevery "! block documents the declaration below it, rather than attaching to nothing
check-atcthe extended-check (SLIN/ATC) findings a script can decide — a SELECT without WHERE that does not say so, sy-subrc after a dynamic ASSIGN, a text symbol passed as a string
check-app-rulesthe shared abaplint rule block still matches its source in abap2UI5
check-prose-namesevery class name written in prose exists — including the sibling repositories'
check-framework-pinthe abaplint config pins abap2UI5 to a release tag, never to whatever is on main
check-released-apievery package whose Runs on says Cloud, linted at Cloud against the released objects — an API ABAP Cloud does not release is an error
check-cataloguecatalogue.json and catalogue-derived.json still are what the generators would write — the same catalogue as data, committed for tooling that fetches one file instead of scanning the tree — and with them every package has a README row that parses, every app sits in a package, and none is missing its @summary or @keywords
create-package-branchesrebuilds the fourteen per-package branches, each verified with abaplint at its own release before it is pushed

check-overview exists because the overview app names its samples as strings and resolves them at runtime — that is what lets it survive a package the system cannot activate, and it is also what stops the compiler from noticing a renamed or a newly added sample. The check notices instead, and it compares the Runs on column with the releases .github/packages.json declares, which is where the generated branches take theirs from. It runs node scripts/check-overview.mjs, needs no dependencies, and skips both full-tree halves on a checkout that carries only part of the repository.

This repository published its own searchable page until 2026-09-03 (web/, check-web, deploy-web, check-family-nav). It does not any more: one catalogue over all three sample repositories is published from the playground, and three pages that each had to explain that the other two existed were the reason for the shared family-nav block and the check policing its three copies.

What is left is the data. catalogue.json is what the tree holds; catalogue-derived.json beside it is what the linter knows — every control a sample builds, and the minimum UI5 release it needs — so that a reader filtering all three corpora at once can ask "which sample shows sap.m.Table" of this one too. Both are committed and gated by check-catalogue; check-web's two real assertions were never about the page and were already in generate-catalogue.mjs, which is why removing it loses nothing.

create-package-branches runs on pull requests too, everything except the push — so a change that would break one of the branches fails while it can still be fixed. Adding a package is one entry in .github/packages.json; neither the workflow nor the checks have to be touched.

There is no abap-702 counterpart: EML runs from ABAP Platform 1909 onwards, so unlike the other sample repositories this one needs no downport — the derived branches here split the tree by package, they do not downport it. There is no abap-cloud counterpart either — several packages here are on-premise by design (src/06 ENQUEUE, src/07 APC/AMC), so a cloud syntax check over the whole tree would report expected errors rather than useful ones.

Two things to know when you read the badges:

  • abaplint parses EML but does not resolve behavior definitions, so entity, alias and action names inside EML statements are not checked, and neither are the .asbdef files — the samples themselves are the reference here.
  • RAISE ENTITY EVENT and FOR ENTITY EVENT (src/05) are beyond the abaplint parser as well, so that package reports parser errors on syntax that activates fine in an ABAP system.

Troubleshooting

Pulling over an older checkout

The packages were renumbered once, so a system that pulled this repository before that has objects sitting in packages the folders no longer point at. abapGit moves most of them on the next pull, but a MIME object keeps the package it was created in, and you get a warning naming the package it came from:

SMIM 027C66AAA6591EDFA9BB6B42F39E45DD exists but package $..._07_01 is missing
(might have been lost during an upgrade, SAP Note 2478895)

Both of them belong to 08 now, the two sounds Z2UI5_CL_SMPS_APP_487 plays. The quickest way out is to delete them and let abapGit put them back where the tree says they go: SE80 → MIME Repository → SAP/PUBLIC/BC/ABAP/mime_demo, delete z2ui5_smp_error.mp3 and z2ui5_smp_success.mp3, then pull again. If the warning names other objects too, pull the DEVC entries alone first — that recreates every package of the current layout — and pull the rest afterwards.

Where to go from here

Take whichever package matches the technology you already run — an OData service, a Gateway service, a RAP business object, an APC channel — and put an abap2UI5 app in front of it. None of these packages depends on another, and none of them is a prerequisite for using abap2UI5 at all: they are options you can reach for when they help.

If you are not sure which package that is, start at https://abap2ui5.github.io/playground/samples/: pick the release your system runs and it shows you what is within reach, with the setup each sample needs on its card.

Something else you would like to see combined with abap2UI5? Open an issue or a pull request — the collection grows with the scenarios people bring to it.

MIT, read

Details

Sources3
GitHub APIdiscovered herechecked
github.com/abap2UI5/samples-stacktree, 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
lines15,644
statements7,767
objects120
files145
analysed, main
abaplint version2.120.84
Flavors2
Standard ABAP
“| [`src/06`](src/06) | **[Stateful Sessions / Locks](src/06/README.md)** — sticky session, `ENQUEUE` | ABAP Standard (on-premise), the table `Z2UI5_T_SMPS_01` | Standard only, ≥ 7.40 SP08 |” — abap2UI5/samples-stack — READMEchecked
ABAP Cloud
“| [`src/01`](src/01) | **[OData](src/01/README.md)** — bind a table to an OData V2 model | an activated OData V2 service | Cloud + Standard ≥ 7.40 SP08 |” — abap2UI5/samples-stack — READMEchecked
Contributors1

From the repository’s contributor list, .

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