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
@@ -0,0 +1,73 @@
// TARGET OBJECT : behavior definition ZZR_CHANGEAPPROVAL000 (base BDEF, managed; generated 2026-09-15)
// abap: URI : abap:/repotree-v1/0M7DEJI/System%20Library/ZLOCAL/ZARENA_PLM/Core%20Data%20Services/Behavior%20Definitions/ZZR_CHANGEAPPROVAL000/zzr_changeapproval000.bdef.json
// ACTION : replace entire content, then activate (after the three ZD_* abstract entities and ZZR_CHANGEAPPROVAL000).
// Sources (all verified 2026-09-15):
// action syntax incl. ( features : instance ), parameter, result [1] $self
// [abap-docs /abap-docs-cloud/ABENBDL_ACTION, ABENBDL_ACTIONS_FC, ABENBDL_ACTION_INPUT_PARAM, ABENBDL_ACTION2_ABEXA]
// internal operations (usable only from the behavior pool) [abap-docs /abap-docs-cloud/ABENBDL_INTERNAL]
// field ( readonly, numbering : managed ) for a UUID key [abap-docs /abap-docs-cloud/ABENBDL_FIELD_NUMBERING; /abap-fiori-showcase/01_general_features#readonly]
// field ( readonly : update, mandatory : create ) combination [abap-docs /abap-fiori-showcase/06_object_page_content (StreamIsReadOnly)]
// determination on modify { create; } sets the initial status [abap-docs /abap-docs-cloud/ABENBDL_DETERMINATIONS (setStatustoNew)]
// readonly fields written by determinations/actions IN LOCAL MODE [same source: field ( readonly ) AmountSum + TotalPrice determination]
// etag master [abap-docs /abap-docs-cloud/ABENBDL_ETAG]; explicit mapping because CDS aliases differ from table fields [abap-docs /abap-docs-cloud/ABENBDL_TYPE_MAPPING]
// authorization master ( none ): "no authorization checks for the entire RAP BO" - access is governed exclusively by the
// IAM app / business catalog (ADR-002, ARN-007) and read access by DCL [abap-docs /abap-docs-cloud/ABENBDL_AUTHORIZATION]
// Open point (falsifiable at activation): StatusText/StatusCriticality/IsApprovable/IsRetriable are CDS-calculated and
// deliberately absent from the mapping. ABENBDL_TYPE_MAPPING only requires a mapping where table and entity field
// NAMES differ; it is silent on calculated elements. If activation reports an error (not a warning) for the unmapped
// elements, fall back to persisting them (add the four columns to the table + mapping) and maintain them in the actions.
managed implementation in class zzbp_r_changeapproval000 unique;
strict ( 2 );
define behavior for ZZR_CHANGEAPPROVAL000 alias ChangeApproval
persistent table zzchngpproval000
lock master
authorization master ( none )
etag master LocalLastChangedAt
{
create;
internal update;
field ( readonly, numbering : managed ) ID;
field ( readonly : update, mandatory : create ) ItemNumber, ChangeType, ArenaEcoId;
field ( mandatory : create ) SapPreview;
field ( readonly ) Status, StatusText, StatusCriticality, IsApprovable, IsRetriable,
RequestedBy, RequestedOn, DecidedBy, DecidedOn,
SapChangeNumber, ErrorMessage, RejectReason,
CreatedBy, CreatedAt, LastChangedBy, LastChangedAt, LocalLastChangedAt;
// Business-user actions (UI projection): PENDING -> APPROVED | REJECTED, FAILED -> EXECUTING (PRD RAP-1/RAP-2)
action ( features : instance ) approve result [1] $self;
action ( features : instance ) reject parameter ZD_CHANGEAPPROVAL_REJECTP result [1] $self;
action ( features : instance ) retrySync result [1] $self;
// Worker actions (A2X projection): APPROVED -> EXECUTING -> SYNCED | FAILED (PRD RAP-6)
action ( features : instance ) markExecuting result [1] $self;
action ( features : instance ) markSynced parameter ZD_CHANGEAPPROVAL_SYNCEDP result [1] $self;
action ( features : instance ) markFailed parameter ZD_CHANGEAPPROVAL_FAILEDP result [1] $self;
determination setInitialStatus on modify { create; }
mapping for zzchngpproval000
{
ID = id;
ItemNumber = item_number;
ItemName = item_name;
ChangeType = change_type;
ArenaEcoId = arena_eco_id;
Status = status;
RequestedBy = requested_by;
RequestedOn = requested_on;
DecidedBy = decided_by;
DecidedOn = decided_on;
SapChangeNumber = sap_change_number;
ErrorMessage = error_message;
RejectReason = reject_reason;
SapPreview = sap_preview;
CreatedBy = created_by;
CreatedAt = created_at;
LastChangedBy = last_changed_by;
LastChangedAt = last_changed_at;
LocalLastChangedAt = local_last_changed_at;
}
}