/* TARGET OBJECT : data definition ZC_CHANGEAPPROVAL (UI projection) - README step U8, UI leg abap: URI : abap:/repotree-v1/0M7DEJI/System%20Library/ZLOCAL/ZARENA_PLM/Core%20Data%20Services/Data%20Definitions/ZC_CHANGEAPPROVAL/zc_changeapproval.ddls.acds ACTION : create empty via ADT MCP (objectType DDLS/DF, README U8), replace entire content, save, then activate (after ZR_CHANGEAPPROVAL). Contract : element names are the OData property names of entity type ChangeApproval_Type in the Fiori app (app/webapp/localService/mainService/metadata.xml, 17 properties, exact case). StatusText (RAP-3 text element) and LocalLastChangedAt (etag) are in addition to the app's mock - see README "App contract check". Notes: provider contract transactional_query [source: abap-docs /abap-docs-cloud/ABENCDS_DEFINE_VIEW_AS_PROJECTION, verified 2026-09-15]; @ObjectModel.semanticKey (PRD RAP-8) [source: abap-docs /abap-fiori-showcase/05_object_page_header#handling-semantic-key-fields, verified 2026-09-15]; @Metadata.allowExtensions is required for the metadata extension [source: abap-docs /abap-docs-cloud/ABENCDS_F1_ANNOTATE_VIEW, verified 2026-09-15]. */ @EndUserText.label: 'Arena change approval - UI projection' @AccessControl.authorizationCheck: #CHECK @Metadata.allowExtensions: true @ObjectModel.semanticKey: ['ItemNumber', 'ChangeType', 'ArenaEcoId'] define root view entity ZC_CHANGEAPPROVAL provider contract transactional_query as projection on ZR_CHANGEAPPROVAL { key ID, ItemNumber, ItemName, ChangeType, ArenaEcoId, @ObjectModel.text.element: ['StatusText'] Status, StatusText, StatusCriticality, RequestedBy, RequestedOn, DecidedBy, DecidedOn, SapChangeNumber, ErrorMessage, RejectReason, SapPreview, IsApprovable, IsRetriable, LocalLastChangedAt }