Ansicht
Dokumentation

ABENBDL_AUGMENT_PROJECTION - BDL AUGMENT PROJECTION

ABENBDL_AUGMENT_PROJECTION - BDL AUGMENT PROJECTION

ROGBILLS - Synchronize billing plans   rdisp/max_wprun_time - Maximum work process run time  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- augment, Projektions-BDEF

augmentierende Operationen

... augment ...

augmentierende Felder

... modify ... ...

Alternativen:

1. ... augment ...

2. ... modify ... ...

Wirkung

Mit einer Operationsaugmentierung können vor dem Erreichen des transaktionalen Puffers Daten hinzugefügt oder eingehende Anforderungen auf der Projektionsschicht modifiziert werden. Dies wird unter Alternative 1, Augmentierende Operationen beschrieben.

Darüber hinaus kann die Operationsaugmentierung in der Projektions-View definierte virtuelle Elemente in die abgeleitete Typen der Projektions-BDEF aufnehmen und mit denen arbeiten. Dies wird unter Alternative 2, Augmentierende Felder beschrieben.

  • Entwicklungsleitfaden für das ABAP-RESTful-Anwendungsprogrammiermodell, Abschnitt Operation Augmentation

Alternative 1

... augment ...


Wirkung

Mit einer Augmentierungsimplementierung können die Datenanforderungen, die das Projektions-BO erreichen, vor der Übergabe der Anforderung an den Behandler des Basis-BOs hinzugefügt werden. Modifizierende Operationen können in der Projektions-BDEF augmentiert werden. Sie werden in der RAP-Behandlermethode FOR MODIFY im ABAP-Behavior-Pool der Projektionsschicht implementiert.

Es können folgende Operationen augmentiert werden:

Mit einer augmentierenden Operation können ursprüngliche Basisinstanzen referenziert und Feldwerte hinzugefügt werden. Es können auch neue Basisinstanzen angelegt werden. Im ersten Fall unterliegt eine aus der ursprünglichen Anforderung kommende Instanz folgenden Regeln:

  • Um eine ursprüngliche update-Operation zu augmentieren muss eine augmentierende Operation update auf der gleichen Instanz angewendet werden.
  • Um eine ursprüngliche create-Operation zu augmentieren muss eine augmentierende Operation create auf der gleichen Instanz angewendet werden.
Eine augmentierende update-Operation sollte nicht angewendet werden, da das Basis-BO dann die nicht augmentierte create-Operation erkennen und eventuell ablehnen würde (beispielsweise wegen eines fehlenden Mussfeldes) oder auf eine ungewollte Art und Weise behandeln könnte.
  • Um eine ursprüngliche create-by-association-Operation zu augmentieren muss eine augmentierende Operation create auf der gleichen Instanz angewendet werden.

Ein Feld, das bereits für die ursprüngliche Instanz gesetzt war, kann nicht mit einer Augmentierung gesetzt werden. Die RAP-Laufzeit lehnt solche augmentierende Felder ab. Es können beispielsweise keine in der ursprünglichen Anforderung gesetzten Werte geändert werden. Nur die Felder, die in der ursprünglichen Anforderung nicht gesetzt sind können hinzugefügt werden.

Als readonly definierte augmentierende Felder können nicht gesetzt werden. Das Augmentieren wird wie ein externer Zugriff behandelt und beim Versuch auf ein readonly-Feld zuzugreifen kommt es zu einem Laufzeitfehler.

Bei der Ausführung der Augmentierungsoperation sind die ursprünglichen Basisinstanzen bereits durch das Framework gesperrt worden. Falls die Augmentierung neue Instanzen enthält, versucht die Laufzeit sie zu sperren. Instanzen bei denen das Sperren fehlschlägt werden in die FAILED-Antwort der Projektionsanforderung aufgenommen und aus der Basisanforderung entfernt.

Hinweis

augment und precheck können miteinander kombiniert werden. Falls das Basis-BO und das Projektions-BO beide eine Vorabprüfungsmethode definieren, ist die Ausführungsreihenfolge wie folgt:

  1. Vorabprüfung auf Projektion
  2. Augmentierung auf Projektion
  3. Vorabprüfung auf Basis

So kann die Anforderung inklusive Augmentierung durch die Basisvorabprüfung geprüft werden.

Beispiel

Im folgenden Beispiel wird eine Projektions-BDEF gezeigt, die die Definition und Implementierung der Operationsaugmentierung für modifizierende Operationen demonstriert.

Die Basis-BDEF ist DEMO_RAP_MANAGED_ASSOC_ROOT.

Informationen zur Implementierung in den ABAP-Behavior-Pool finden Sie unter BP_DEMO_RAP_PROJ_AUGMENT======CCIMP.

Das ABAP-Programm DEMO_RAP_PROJ_AUGMENT verwendet EML, um auf das RAP-Business-Objekt zuzugreifen: Hiermit wird eine anlegende, eine aktualisierende und eine create-by-association-Operation durchgeführt. Die Augmentierungen werden automatisch durchgeführt und fügen Feldwerte oder neue Entitätsinstanzen hinzu.

Weitere Informationen über das Beispiel oben und eine Anzeige finden Sie im Abschnitt CDS BDL - operation augmentation.



Alternative 2

... modify ...


Wirkung

CDS-Projektions-Views dürfen virtuelle CDS-Elemente (über das Schlüsselwort VIRTUAL definiert), über Assoziationsübergänge definierte Felder (Pfadausdrücke) oder lokalisierte Felder (über das Schlüsselwort LOCALIZED definiert) enthalten. Solche Felder sind standardmäßig aus den abgeleiteten BDEF-Typen für die Projektions-BDEF ausgeschlossen, da sie nichttransaktional sind. Die Augmentierung bietet eine Methode an, solche Felder in die transaktionale Behandlung aufzunehmen. Als Voraussetzung müssen sie wie folgt in der Projektions-BDEF gekennzeichnet sein:

field (modify) VirtualField;

Damit wird das Vorkommen von VirtualField in Typen wie table for create ProjectionEntity erzwungen.

Durch die Augmentierungsfähigkeit der benötigten modifizierenden Operationen und die Implementierung des Augmentierungs-Exits darf das Feld dann Teil einer modifizierenden Projektionsanforderung sein und auf die benötigten Augmentierungsoperationen auf dem Basis-BO (wo das Feld kein direktes Pendant hat) übertragen werden. Ein lokalisiertes Feld kann zum Beispiel über die aktuelle Sprache als Zusatzschlüssel auf eine anlegende oder aktualisierende Operation der zugehörigen Textentität übertragen werden. (Die Textentität ist eventuell nicht mal als Projektionsentität exponiert; ihr Vorkommen im Projektions-BO geschieht nur durch virtuelle Felder.)

Zur Zeit ist die Operationsaugmentierung für die RAP-Leseoperation nicht verfügbar und virtuelle Felder können daher nicht lesefähig gemacht werden.

Hinweis

Für ein augmentiertes virtuelles Feld können Feldmerkmale wie features:instance definiert werden. Weitere Informationen finden Sie unter CDS BDL - field characteristics, projection BDEF.

Beispiel

Im folgenden Beispiel wird ein Projektions-BO gezeigt, das ein virtuelles Element augmentiert. Die Basis-BDEF ist DEMO_RAP_MANAGED_ASSOC_ROOT.

Als Ergebnis gehört das Feld zu den abgeleiteten BDEF-Typen:

IMAGE @@ABDOC_VIRTUAL.jpg@@422@@251@@

Ein durchgängiges Beispiel finden Sie im Entwicklerleitfaden des ABAP RESTful Application Programming Model, Abschnitt Editing Language-Dependent Fields.






RFUMSV00 - Advance Return for Tax on Sales/Purchases   Addresses (Business Address Services)  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 12387 Date: 20240523 Time: 175708     sap01-206 ( 177 ms )