Skip to content

Two abap2UI5 apps side by side in the Fiori elements examples - #18

Merged
oblomov-dev merged 1 commit into
mainfrom
claude/abap2ui5-custom-control-blog-qkfc9t
Oct 13, 2026
Merged

oblomov-dev merged 1 commit into
mainfrom
claude/abap2ui5-custom-control-blog-qkfc9t

Conversation

@oblomov-dev

Copy link
Copy Markdown
Member

What changes

The object pages of both Fiori elements examples now run two abap2UI5 apps, each in a section of its own and in a session of its own.

  • fiori-elements (OData V4): a second custom section, placed after the first one (Abap2UI5SecondSection.fragment.xml). It is started with the same customer key.
  • fiori-elements-v2 (OData V2): a second object page extension after a new facet Language (Abap2UI5Languages.fragment.xml). It is started with the country alone.
    • A facet takes only one extension after it, so the metadata extension gets a second facet (a field group with Language).
    • The mock annotations (Z2UI5_UI_EMBED_COUNTRY_O2_VAN.xml) change in the same commit, as AGENTS.md asks.
  • abap/: a new class Z2UI5_CL_EMBED_LANGUAGES, the second app on a system. It lists the country's name in every language of the system, read from T005T joined with T002. The .clas.xml follows the existing CLAS sidecar.
  • build-bsp.mjs: the patch of the branch rap is now a list of replacements, so rap starts Z2UI5_CL_EMBED_COUNTRY and Z2UI5_CL_EMBED_LANGUAGES. SHOWN also checks AfterFacet|Countries|Language. Locally both sections of both examples still run the hello world app.
  • e2e:
    • One new test per example: two apps keep their states apart.
    • The existing tests take the first container and expect one start per section.
  • READMEs and AGENTS.md now describe two sections.

Why

An object page with more than one thing the annotations cannot express needs more than one embedded app. The examples now show that and test it: two controls on one page means two independent sessions and one frontend bundle per page. The branch rap gives a complete demo on a system, for example as a GIF for a blog post. Each section shows a different app built from real system data.

Checked

  • npm run lint, npm run format:check: clean.
  • npm run abaplint: 0 issues.
  • npx @abap2ui5/linter fiori-elements-v2/abap: 0 failing.
  • npm run build: succeeds.
  • ABAP2UI5_DIR=../abap2UI5 npm run bsp: out/rap/src/01 has the new class, and src/02 starts both classes.
  • npx playwright test --project fiori-elements --project fiori-elements-v2 against @abap2ui5/node-runtime 1.146.0 on port 3000: 10 passed, 2 of them new.
  • Not checked: activation of the changed metadata extension and the new class on a real system. abaplint does not activate CDS or RAP objects.

🤖 Generated with Claude Code

https://claude.ai/code/session_01B8YZcvCPtVUaDxowHh6x1k


Generated by Claude Code

The object pages of both Fiori elements examples now run two abap2UI5 apps,
each in a section of its own and in a session of its own - the case a host
app meets as soon as it has more than one thing the annotations cannot say.

- fiori-elements (OData V4): a second custom section after the first,
  Abap2UI5SecondSection.fragment.xml, started with the same customer key.
- fiori-elements-v2 (OData V2): a second object page extension after a new
  facet "Language" (metadata extension and mock annotations in step - a
  facet takes one extension after it), Abap2UI5Languages.fragment.xml,
  started with the country alone.
- abap/: Z2UI5_CL_EMBED_LANGUAGES, the second app on a system - the
  country's name in every language of the system, from T005T and T002.
- build-bsp.mjs: the patch of the branch rap is a list of replacements; it
  starts Z2UI5_CL_EMBED_COUNTRY and Z2UI5_CL_EMBED_LANGUAGES there. Locally
  both sections of both examples run the hello world app, as before.
- e2e: a test per example that the two apps keep their states apart; the
  existing tests take the first container and expect one start per section.
- READMEs and AGENTS.md describe two sections.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B8YZcvCPtVUaDxowHh6x1k
@oblomov-dev
oblomov-dev merged commit 483ec36 into main Oct 13, 2026
2 of 4 checks passed
@oblomov-dev
oblomov-dev deleted the claude/abap2ui5-custom-control-blog-qkfc9t branch October 13, 2026 13:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants