Working-tree state as of 2026-09-29, uncommitted since the initial "upload current sources" commit: - docs/handover/rap/: renamed the 11 generator-suffixed sources (zz*000) to the clean object names built on the tenant, plus the A2X leg and parameter-entity edits. - app/: manifest, annotations, i18n, mock data and local/mock ui5 configs updated to the live service shape. - PRD.md, CHANGELOG.md, KNOWLEDGE.md: build record through 2026-09-19, including the rejected reentrance-ticket path. - tools/adt-reentrance-login/: retained login helper (new). - docs/v2/zui_arena_change_appr_o4.metadata.xml: captured live $metadata (new). - Dropped a stray 0.3GB-class Eclipse installer that the initial commit had tracked under a URL-mangled filename, and the machine-specific 0M7DEJI.code-workspace. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
6.1 KiB
Application Details
| Generation Date and Time Mon Sep 14 2026 12:49:13 GMT-0700 (Pacific Daylight Time) |
| App Generator SAP Fiori Application Generator |
| App Generator Version 1.32.0 |
| Generation Platform Visual Studio Code |
| Template Used List Report Page V4 |
| Service Type File |
| Metadata File metadata.xml |
| Module Name app |
| Application Title Arena PLM Engineering Changes Approval Flow |
| Namespace com.minicircuits |
| UI5 Theme sap_horizon |
| UI5 Version 1.152.0 |
| Enable TypeScript True |
| Add Eslint configuration True, see https://www.npmjs.com/package/@sap-ux/eslint-plugin-fiori-tools#rules for the eslint rules. |
| Main Entity ChangeApprovals |
Service binding (live, reconciled 2026-09-16 - PRD V-2)
The app binds to the RAP UI service binding, not the A2X binding the worker uses.
The single source of truth for the service identity is the live $metadata of the published
binding, captured 2026-09-16 as docs/v2/zui_arena_change_appr_o4.metadata.xml (repo root).
webapp/localService/mainService/metadata.xml is a byte-identical copy of it, so the mock
server serves the real contract. Refresh both together; never hand-edit the copy.
| Item | Value |
|---|---|
| Service binding (OData V4 - UI) | ZUI_ARENA_CHANGE_APPR_O4 |
| Service definition | ZUI_ARENA_CHANGE_APPROVAL |
| Service URL | /sap/opu/odata4/sap/zui_arena_change_appr_o4/srvd/sap/zui_arena_change_approval/0001/ |
| Schema namespace / alias | com.sap.gateway.srvd.zui_arena_change_approval.v0001 / SAP__self |
| Entity type / entity set | ChangeApprovalType / ChangeApproval |
| Bound actions | approve, reject(RejectReason), retrySync |
Only the first URL segment comes from the service binding name. The schema namespace comes
from the service definition name, and the entity type carries a Type suffix without an
underscore (live $metadata, 2026-09-16; see KNOWLEDGE.md). The pre-V-2 assumption of a
binding-derived namespace and a _Type suffix was wrong.
webapp/manifest.json (sap.app.dataSources.mainService.uri), ui5-mock.yaml /
ui5-local.yaml (sap-fe-mockserver urlPath) and webapp/annotations/annotation.xml
(edmx:Reference, every Annotations Target, every DataFieldForAction.Action) must stay in
sync with it. JSON cannot carry comments, so the manifest references this note instead.
Annotation layering. The backend metadata extension already emits most UI annotations
(LineItem, HeaderInfo, Facets, FieldGroups, Identification, SelectionFields, SemanticKey,
Status text with TextOnly). An annotation in annotation.xml replaces the backend annotation
with the same term + qualifier on the same target, and deleting it there makes the backend one
effective again [source: fiori-mcp-server "Visualizing and Managing Annotations with SAP Fiori
Tools - Service Modeler", verified 2026-09-16].
Backend for a non-mock run: not configured. ui5.yaml and ui5-local.yaml carry
fiori-tools-proxy with backend: [], and npm start is a generator placeholder. When a live
preview is added, the backend is the UI host https://my431353.s4hana.cloud.sap, never the
-api host: a business-user call there is blocked by UCON (live 2026-09-16, KNOWLEDGE.md).
Status model and actions
Status: PENDING -> APPROVED -> EXECUTING -> SYNCED | FAILED; REJECTED is terminal;
FAILED -> retrySync -> APPROVED. approve/reject are enabled only for PENDING,
retrySync only for FAILED. The backend owns enablement: RAP emits
Core.OperationAvailable Path="_it/__OperationControl/<action>" for the ( features : instance )
actions (PRD RAP-1), and the app keeps no local OperationAvailable, which would replace it
[source: fiori-mcp-server "Action Control for Context-Dependent Actions (SAP Fiori Elements)",
verified 2026-09-16]. IsApprovable / IsRetriable are still in the service but hidden, and
nothing in the app binds to them.
Actions are offered on the object page header only; the list report table is display-only
(selectionMode: "None").
Launchpad
sap.app.crossNavigation.inbounds declares the intent ArenaChangeApproval-manage; on
deployment to the ABAP environment the launchpad app descriptor item (target mapping + tile) is
generated from it, and an IAM app / business catalog / business role make it visible
[source: sap-docs /btp-cloud-platform/30-development/sap-fiori-applications-in-the-abap-environment-1d9deef, verified 2026-09-14].
sap.fiori.registrationIds stays empty: it holds SAP Fiori IDs of SAP-delivered apps and is not
required for a custom app (only archeType is mandatory)
[source: sap-docs /sapui5/04_Essentials/manifest-descriptor-for-applications-components-and-libraries-be0cf40, verified 2026-09-14].
Dev server: npm run start-mock / npm run int-test bind to port 8082 (8080 is taken on
the dev host). Mock data lives in webapp/localService/mainService/data/ChangeApproval.json
(generateMockData: false), 8 rows covering every status. Each row carries every live property:
StatusText / StatusCriticality as ZR_CHANGEAPPROVAL computes them, __OperationControl
consistent with the status, LocalLastChangedAt, and SAP__Messages: []. Initial CHAR values are
"", not null, on Nullable="false" properties. The mock server does not execute bound
actions (see KNOWLEDGE.md), so status transitions show only against the live service.
app
An SAP Fiori application.
Starting the generated app
- This app has been generated using the SAP Fiori tools - App Generator, as part of the SAP Fiori tools suite. To launch the generated application, run the following from the generated application root folder:
npm start
- It is also possible to run the application using mock data that reflects the OData Service URL supplied during application generation. In order to run the application with Mock Data, run the following from the generated app root folder:
npm run start-mock
Pre-requisites:
- Active NodeJS LTS (Long Term Support) version and associated supported NPM version. (See https://nodejs.org)