upload current sources

This commit is contained in:
2026-09-16 01:47:28 -07:00
commit f8b45ea4a5
109 changed files with 26012 additions and 0 deletions
+396
View File
@@ -0,0 +1,396 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Local UI annotations for the Arena PLM change-approval Fiori Elements app.
Service identity (binding, service definition, version, namespace) is defined ONCE in
webapp/localService/mainService/metadata.xml - keep this file's edmx:Reference, every
Annotations Target and every DataFieldForAction.Action in sync with it.
Provisional - namespace = binding name is strongly indicated, not proven; reconcile namespace,
entity type suffix and URL segments against the live $metadata of the RAP UI service binding
at PRD V-2 before deploy.
-->
<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
<edmx:Reference Uri="https://sap.github.io/odata-vocabularies/vocabularies/UI.xml">
<edmx:Include Namespace="com.sap.vocabularies.UI.v1" Alias="UI"/>
</edmx:Reference>
<edmx:Reference Uri="https://sap.github.io/odata-vocabularies/vocabularies/Common.xml">
<edmx:Include Namespace="com.sap.vocabularies.Common.v1" Alias="Common"/>
</edmx:Reference>
<edmx:Reference Uri="/sap/opu/odata4/sap/zui_arena_change_approval_o4/srvd/sap/zui_arena_change_approval/0001/$metadata">
<edmx:Include Namespace="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001"/>
</edmx:Reference>
<edmx:DataServices>
<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="local">
<!-- ============================================================================
Property-level annotations: labels, read-only field control, hiding.
UI.Hidden hides a property everywhere; UI.HiddenFilter removes it from the
filter bar / Adapt Filters / table personalization filters.
[source: fiori-mcp-server "Hiding UI Elements with the UI.Hidden Annotation";
"Enabling Table Personalization in SAP Fiori Elements (OData V2 & V4)";
"Filter Fields - Add, Configure, Move, Delete...", verified 2026-09-14]
============================================================================ -->
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type/ID">
<Annotation Term="Common.Label" String="{@i18n>FIELD_ID}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type/ItemNumber">
<Annotation Term="Common.Label" String="{@i18n>FIELD_ITEM}"/>
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/ReadOnly"/>
</Annotations>
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type/ItemName">
<Annotation Term="Common.Label" String="{@i18n>FIELD_NAME}"/>
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/ReadOnly"/>
</Annotations>
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type/ChangeType">
<Annotation Term="Common.Label" String="{@i18n>FIELD_CHANGE_TYPE}"/>
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/ReadOnly"/>
</Annotations>
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type/Status">
<Annotation Term="Common.Label" String="{@i18n>FIELD_STATUS}"/>
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/ReadOnly"/>
</Annotations>
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type/StatusCriticality">
<Annotation Term="Common.Label" String="{@i18n>FIELD_STATUS_CRITICALITY}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
<Annotation Term="UI.HiddenFilter" Bool="true"/>
</Annotations>
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type/RequestedBy">
<Annotation Term="Common.Label" String="{@i18n>FIELD_REQUESTED_BY}"/>
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/ReadOnly"/>
</Annotations>
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type/RequestedOn">
<Annotation Term="Common.Label" String="{@i18n>FIELD_REQUESTED_ON}"/>
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/ReadOnly"/>
</Annotations>
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type/DecidedBy">
<Annotation Term="Common.Label" String="{@i18n>FIELD_DECIDED_BY}"/>
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/ReadOnly"/>
</Annotations>
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type/DecidedOn">
<Annotation Term="Common.Label" String="{@i18n>FIELD_DECIDED_ON}"/>
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/ReadOnly"/>
</Annotations>
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type/ArenaEcoId">
<Annotation Term="Common.Label" String="{@i18n>FIELD_ARENA_ECO}"/>
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/ReadOnly"/>
</Annotations>
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type/SapChangeNumber">
<Annotation Term="Common.Label" String="{@i18n>FIELD_SAP_CHANGE_NO}"/>
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/ReadOnly"/>
</Annotations>
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type/ErrorMessage">
<Annotation Term="Common.Label" String="{@i18n>FIELD_ERROR_MSG}"/>
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/ReadOnly"/>
<Annotation Term="UI.HiddenFilter" Bool="true"/>
</Annotations>
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type/RejectReason">
<Annotation Term="Common.Label" String="{@i18n>FIELD_REJECT_REASON}"/>
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/ReadOnly"/>
<Annotation Term="UI.HiddenFilter" Bool="true"/>
</Annotations>
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type/SapPreview">
<Annotation Term="Common.Label" String="{@i18n>FIELD_STAGED_PAYLOAD}"/>
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/ReadOnly"/>
<Annotation Term="UI.HiddenFilter" Bool="true"/>
<!-- long JSON payload: render as text area [source: fiori-mcp-server "Text and Text Arrangement" sample (@UI.MultiLineText), verified 2026-09-14] -->
<Annotation Term="UI.MultiLineText" Bool="true"/>
</Annotations>
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type/IsApprovable">
<Annotation Term="Common.Label" String="{@i18n>FIELD_IS_APPROVABLE}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
<Annotation Term="UI.HiddenFilter" Bool="true"/>
</Annotations>
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type/IsRetriable">
<Annotation Term="Common.Label" String="{@i18n>FIELD_IS_RETRIABLE}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
<Annotation Term="UI.HiddenFilter" Bool="true"/>
</Annotations>
<!-- Action parameter label for the reject dialog -->
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.reject(com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type)/RejectReason">
<Annotation Term="Common.Label" String="{@i18n>FIELD_REJECT_REASON}"/>
</Annotations>
<!-- ============================================================================
Entity-type annotations
============================================================================ -->
<Annotations Target="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.ChangeApproval_Type">
<!-- Semantic key: bold ObjectIdentifier in responsive tables
[source: fiori-mcp-server "Handling Semantic Key Fields in SAP Fiori Elements", verified 2026-09-14] -->
<Annotation Term="Common.SemanticKey">
<Collection>
<PropertyPath>ItemNumber</PropertyPath>
<PropertyPath>ChangeType</PropertyPath>
<PropertyPath>ArenaEcoId</PropertyPath>
</Collection>
</Annotation>
<!-- Object page header (TypeImageUrl = object-type icon)
[source: fiori-mcp-server "Setting Up the Object Page Header (UI.HeaderInfo)";
"Object Page Header - Fiori Tools" (TypeImageUrl: sap-icon://...), verified 2026-09-14] -->
<Annotation Term="UI.HeaderInfo">
<Record Type="UI.HeaderInfoType">
<PropertyValue Property="TypeName" String="{@i18n>CHANGE_APPROVAL_TITLE}"/>
<PropertyValue Property="TypeNamePlural" String="{@i18n>CHANGE_APPROVALS_TITLE}"/>
<PropertyValue Property="TypeImageUrl" String="sap-icon://approvals"/>
<PropertyValue Property="Title">
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="ItemNumber"/>
</Record>
</PropertyValue>
<PropertyValue Property="Description">
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="ItemName"/>
</Record>
</PropertyValue>
</Record>
</Annotation>
<!-- Header facets: status data point + reference-number form
[source: fiori-mcp-server "Form Facet - Add a header form facet to an Object Page", verified 2026-09-14] -->
<Annotation Term="UI.DataPoint" Qualifier="StatusPoint">
<Record Type="UI.DataPointType">
<PropertyValue Property="Title" String="{@i18n>FIELD_STATUS}"/>
<PropertyValue Property="Value" Path="Status"/>
<PropertyValue Property="Criticality" Path="StatusCriticality"/>
</Record>
</Annotation>
<Annotation Term="UI.FieldGroup" Qualifier="Keys">
<Record Type="UI.FieldGroupType">
<PropertyValue Property="Data">
<Collection>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="ArenaEcoId"/>
<Annotation Term="UI.Importance" EnumMember="UI.ImportanceType/High"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="SapChangeNumber"/>
<Annotation Term="UI.Importance" EnumMember="UI.ImportanceType/High"/>
</Record>
</Collection>
</PropertyValue>
</Record>
</Annotation>
<Annotation Term="UI.HeaderFacets">
<Collection>
<Record Type="UI.ReferenceFacet">
<PropertyValue Property="ID" String="HeaderStatusFacet"/>
<PropertyValue Property="Target" AnnotationPath="@UI.DataPoint#StatusPoint"/>
</Record>
<Record Type="UI.ReferenceFacet">
<PropertyValue Property="ID" String="HeaderReferencesFacet"/>
<PropertyValue Property="Label" String="{@i18n>FACET_REFERENCES}"/>
<PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Keys"/>
</Record>
</Collection>
</Annotation>
<!-- Filter bar -->
<Annotation Term="UI.SelectionFields">
<Collection>
<PropertyPath>ItemNumber</PropertyPath>
<PropertyPath>Status</PropertyPath>
<PropertyPath>ChangeType</PropertyPath>
<PropertyPath>ArenaEcoId</PropertyPath>
</Collection>
</Annotation>
<!-- Default list report view: Status = PENDING, sorted Status asc then RequestedOn desc.
Wired via manifest sap.ui5.routing.targets.ChangeApprovalList.options.settings
.defaultTemplateAnnotationPath (V4 requires a SelectionPresentationVariant).
[source: fiori-mcp-server "Configure Default Visualizations, Sort Order, and Filter Defaults
(UI.SelectionPresentationVariant, UI.PresentationVariant, UI.SelectionVariant)";
"Filter Bar Default Values", verified 2026-09-14] -->
<Annotation Term="UI.SelectionVariant" Qualifier="Default">
<Record Type="UI.SelectionVariantType">
<PropertyValue Property="Text" String="{@i18n>SPV_DEFAULT}"/>
<PropertyValue Property="SelectOptions">
<Collection>
<Record Type="UI.SelectOptionType">
<PropertyValue Property="PropertyName" PropertyPath="Status"/>
<PropertyValue Property="Ranges">
<Collection>
<Record Type="UI.SelectionRangeType">
<PropertyValue Property="Sign" EnumMember="UI.SelectionRangeSignType/I"/>
<PropertyValue Property="Option" EnumMember="UI.SelectionRangeOptionType/EQ"/>
<PropertyValue Property="Low" String="PENDING"/>
</Record>
</Collection>
</PropertyValue>
</Record>
</Collection>
</PropertyValue>
</Record>
</Annotation>
<Annotation Term="UI.PresentationVariant" Qualifier="Default">
<Record Type="UI.PresentationVariantType">
<PropertyValue Property="Text" String="{@i18n>SPV_DEFAULT}"/>
<PropertyValue Property="SortOrder">
<Collection>
<Record Type="Common.SortOrderType">
<PropertyValue Property="Property" PropertyPath="Status"/>
<PropertyValue Property="Descending" Bool="false"/>
</Record>
<Record Type="Common.SortOrderType">
<PropertyValue Property="Property" PropertyPath="RequestedOn"/>
<PropertyValue Property="Descending" Bool="true"/>
</Record>
</Collection>
</PropertyValue>
<PropertyValue Property="Visualizations">
<Collection>
<AnnotationPath>@UI.LineItem</AnnotationPath>
</Collection>
</PropertyValue>
</Record>
</Annotation>
<Annotation Term="UI.SelectionPresentationVariant" Qualifier="Default">
<Record Type="UI.SelectionPresentationVariantType">
<PropertyValue Property="Text" String="{@i18n>SPV_DEFAULT}"/>
<PropertyValue Property="SelectionVariant" Path="@UI.SelectionVariant#Default"/>
<PropertyValue Property="PresentationVariant" Path="@UI.PresentationVariant#Default"/>
</Record>
</Annotation>
<!-- Object page header actions (the ONLY place approve/reject/retry are offered; the list
report table is display-only with selectionMode None in the manifest).
Enablement comes from Core.OperationAvailable in the service metadata
(approve/reject: IsApprovable, retrySync: IsRetriable).
[source: fiori-mcp-server "Action Control for Context-Dependent Actions";
sap-docs /sapui5/06_SAP_Fiori_Elements/actions-cbf16c5#enabling-custom-actions-defined-using-annotations,
verified 2026-09-14] -->
<Annotation Term="UI.Identification">
<Collection>
<Record Type="UI.DataFieldForAction">
<PropertyValue Property="Label" String="{@i18n>ACTION_APPROVE}"/>
<PropertyValue Property="Action" String="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.approve"/>
<PropertyValue Property="Determining" Bool="false"/>
<PropertyValue Property="Criticality" EnumMember="UI.CriticalityType/Positive"/>
</Record>
<Record Type="UI.DataFieldForAction">
<PropertyValue Property="Label" String="{@i18n>ACTION_REJECT}"/>
<PropertyValue Property="Action" String="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.reject"/>
<PropertyValue Property="Determining" Bool="false"/>
<PropertyValue Property="Criticality" EnumMember="UI.CriticalityType/Negative"/>
</Record>
<Record Type="UI.DataFieldForAction">
<PropertyValue Property="Label" String="{@i18n>ACTION_RETRY}"/>
<PropertyValue Property="Action" String="com.sap.gateway.srvd.zui_arena_change_approval_o4.v0001.retrySync"/>
<PropertyValue Property="Determining" Bool="false"/>
<PropertyValue Property="Criticality" EnumMember="UI.CriticalityType/Critical"/>
</Record>
</Collection>
</Annotation>
<!-- List report table: columns only (no toolbar actions - decisions are taken on the object page).
UI.Importance: High stays visible on narrow screens, Medium/Low are hidden progressively;
semantic-key columns without importance are treated as High.
[source: fiori-mcp-server "Tables - configuration and annotation samples for SAP Fiori elements"
(Control column visibility by screen size using UI.Importance), verified 2026-09-14] -->
<Annotation Term="UI.LineItem">
<Collection>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="ItemNumber"/>
<Annotation Term="UI.Importance" EnumMember="UI.ImportanceType/High"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="ItemName"/>
<Annotation Term="UI.Importance" EnumMember="UI.ImportanceType/Low"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="ChangeType"/>
<Annotation Term="UI.Importance" EnumMember="UI.ImportanceType/High"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="Status"/>
<PropertyValue Property="Criticality" Path="StatusCriticality"/>
<Annotation Term="UI.Importance" EnumMember="UI.ImportanceType/High"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="RequestedOn"/>
<Annotation Term="UI.Importance" EnumMember="UI.ImportanceType/Medium"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="ArenaEcoId"/>
<Annotation Term="UI.Importance" EnumMember="UI.ImportanceType/Medium"/>
</Record>
</Collection>
</Annotation>
<!-- Object page sections -->
<Annotation Term="UI.FieldGroup" Qualifier="Change">
<Record Type="UI.FieldGroupType">
<PropertyValue Property="Data">
<Collection>
<Record Type="UI.DataField"><PropertyValue Property="Value" Path="ItemNumber"/></Record>
<Record Type="UI.DataField"><PropertyValue Property="Value" Path="ItemName"/></Record>
<Record Type="UI.DataField"><PropertyValue Property="Value" Path="ChangeType"/></Record>
<Record Type="UI.DataField"><PropertyValue Property="Value" Path="ArenaEcoId"/></Record>
</Collection>
</PropertyValue>
</Record>
</Annotation>
<Annotation Term="UI.FieldGroup" Qualifier="Approval">
<Record Type="UI.FieldGroupType">
<PropertyValue Property="Data">
<Collection>
<Record Type="UI.DataField"><PropertyValue Property="Value" Path="Status"/><PropertyValue Property="Criticality" Path="StatusCriticality"/></Record>
<Record Type="UI.DataField"><PropertyValue Property="Value" Path="RequestedBy"/></Record>
<Record Type="UI.DataField"><PropertyValue Property="Value" Path="RequestedOn"/></Record>
<Record Type="UI.DataField"><PropertyValue Property="Value" Path="DecidedBy"/></Record>
<Record Type="UI.DataField"><PropertyValue Property="Value" Path="DecidedOn"/></Record>
<Record Type="UI.DataField"><PropertyValue Property="Value" Path="RejectReason"/></Record>
</Collection>
</PropertyValue>
</Record>
</Annotation>
<!-- Staged payload gets its own section so the long JSON does not crowd the decision fields -->
<Annotation Term="UI.FieldGroup" Qualifier="Payload">
<Record Type="UI.FieldGroupType">
<PropertyValue Property="Data">
<Collection>
<Record Type="UI.DataField"><PropertyValue Property="Value" Path="SapPreview"/></Record>
</Collection>
</PropertyValue>
</Record>
</Annotation>
<Annotation Term="UI.FieldGroup" Qualifier="Execution">
<Record Type="UI.FieldGroupType">
<PropertyValue Property="Data">
<Collection>
<Record Type="UI.DataField"><PropertyValue Property="Value" Path="SapChangeNumber"/></Record>
<Record Type="UI.DataField"><PropertyValue Property="Value" Path="ErrorMessage"/></Record>
</Collection>
</PropertyValue>
</Record>
</Annotation>
<Annotation Term="UI.Facets">
<Collection>
<Record Type="UI.ReferenceFacet">
<PropertyValue Property="ID" String="ChangeFacet"/>
<PropertyValue Property="Label" String="{@i18n>FACET_CHANGE}"/>
<PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Change"/>
</Record>
<Record Type="UI.ReferenceFacet">
<PropertyValue Property="ID" String="PayloadFacet"/>
<PropertyValue Property="Label" String="{@i18n>FACET_STAGED_PAYLOAD}"/>
<PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Payload"/>
</Record>
<Record Type="UI.ReferenceFacet">
<PropertyValue Property="ID" String="ApprovalFacet"/>
<PropertyValue Property="Label" String="{@i18n>FACET_APPROVAL}"/>
<PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Approval"/>
</Record>
<Record Type="UI.ReferenceFacet">
<PropertyValue Property="ID" String="ExecutionFacet"/>
<PropertyValue Property="Label" String="{@i18n>FACET_EXECUTION}"/>
<PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Execution"/>
</Record>
</Collection>
</Annotation>
</Annotations>
</Schema>
</edmx:DataServices>
</edmx:Edmx>