Ansicht
Dokumentation

ABENBDL_ASSOCIATION - BDL ASSOCIATION

ABENBDL_ASSOCIATION - BDL ASSOCIATION

PERFORM Short Reference   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- Operationen für Assoziationen

... $[internal$] association _Assoc
              $[abbreviation _newName$]
              $[without response$]
               {$[
              $[internal$] create
             $[${( features:instance $| features:global$}$]
              $[,precheck$]
              $[,authorization:none$]
              $[,authorization:update$]);
              $[with draft$];
               $]}


Zusätze:

1. ... abbreviation _newName ...

2. ... without response ...

3. ... with draft; ...

Wirkung

Ermöglicht read-by-association- und create-by-association-Operationen für Assoziationen. Somit wird dem RAP-BO-Consumer der Lesezugriff auf das Assoziationsziel (read-by-association-Operation) oder das Anlegen neuer RAP-BO-Entitätsinstanzen der Assoziationszielentität (create-by-association-Operation) ermöglicht.

Kompositionen und To-Parent-Assoziationen sind standardmäßig implizit read- und create-fähig. Dennoch wird die als explizite Angabe der Read- und Create-By-Association-Operationen empfohlen und im strikten BDEF-Modus sogar erzwungen.

Cross-BO-Assoziationen, die nicht Teil des Kompositionsbaums sind, sind standardmäßig nicht read- und create-fähig. Dieses Verhalten muss bei Bedarf explizit definiert werden. Voraussetzung ist, dass die Assoziationszielentität über eine eigene BDEF verfügt und die entsprechenden Operationen anbietet.

In einem verwalteten RAP-BO werden Operationen für Assoziationen vom verwalteten RAP-BO-Provider bereitgestellt.

In einem nicht verwalteten RAP-BO müssen Operationen für Assoziationen im ABAP-Behavior-Pool in der RAP-Behandlermethode FOR MODIFY implementiert werden.

In einer Projektions-BDEF können Operationen für Assoziationen aus der Basis-BDEF wiederverwendet werden. Hierzu kann das Schlüsselwort use verwendet werden. Weitere Informationen finden Sie unter CDS BDL - use, Projektions-BDEF.

Zugriff zum Lesen und Anlegen

Mit der folgenden Syntax wird der read- und create-Zugriff explizit definiert:
association _Assoc $[abbreviation _newName$] { create; }
Dies ist nur für Kompositionen (d.h. Assoziationen des übergeordneten Knotens zum untergeordneten Knoten) erforderlich und erlaubt, nicht jedoch für To-Parent-Assoziationen. Untergeordnete Knoten können also über ihren übergeordneten Knoten angelegt werden, aber nicht umgekehrt.

Nur Lesezugriff

Die folgende Syntax kann verwendet werden, um nur den read-Zugriff zu aktivieren und create-Operationen für die zugehörige Entität zu deaktivieren:
association _Assoc $[abbreviation _newName$] { }
Alternative Schreibweise:
association _Assoc $[abbreviation _newName$];
Dies ist in beide Richtungen möglich.

Beschränkung in einem verwalteten RAP-BO.

In einem verwalteten RAP-BO kann eine create-by-association-Operation nur auf direkte untergeordnete Entitäten angewendet werden. Entitäten, die Teil desselben Kompositionsbaums sind, sich aber mehrere Ebenen unter der Wurzelentität befinden, können lesefähig, aber nicht anlagefähig sein. Diese Beschränkung entfällt in einem nicht verwalteten RAP-BO.

CDS-BDL-Operationszusätze

Die folgenden CDS-BDL-Operationszusätze sind möglich:

  • internal: Dieser Zusatz ist an zwei Stellen möglich:
  • vor der Assoziation:

Beispiel: internal association _Assoc;
In diesem Fall kann auf die vollständige Assoziation nur über ihre eigene Business-Objekt-Implementierung zugegriffen werden. Dies betrifft sowohl read- als auch create-Operationen entlang von CDS-Assoziationen.
  • vor create in geschweiften Klammern:

Beispiel: association _Assoc { internal create; }
Wenn nur create mit internal gekennzeichnet ist, ist der read-Zugriff auf das Assoziationsziel erlaubt. create-by-association-Operationen sind jedoch ausschließlich intern zulässig.

Die folgenden Zusätze sind nur in Kombination mit { create; } möglich und können bei einer Kompositionsbeziehung daher nur für die übergeordnete Entität deklariert werden:

Beispiel: association _Assoc { create(addition);}

  • features:instance: Aktiviert das dynamische Feature-Control für die entsprechende Assoziation.
  • features:global: Aktiviert das globale Feature-Control für die entsprechende Assoziation.

Hinweise

  • Wenn der strikte BDEF-Modus aktiviert ist, muss jede Zielentität einer verhaltensfähigen Assoziation im gleichen Kompositionsbaum über eine eigene Verhaltensdefinition verfügen.
  • Wenn der strikte BDEF-Modus aktiviert ist, muss jede Zielentität einer verhaltensfähigen Cross-BO-Assoziation über eine eigene Verhaltensdefinition verfügen.
  • Wenn der strikte BDEF-Modus aktiviert ist, müssen To-Parent-Assoziationen und Kompositionen öffentlich und explizit exponiert werden. "Öffentlich" bedeutet, dass das Schlüsselwort internal nicht zu verwenden ist.
  • Technisch ist es möglich, eine Assoziation mit dem Syntaxzusatz ancestor als Vorfahrenassoziation zu deklarieren. Beim Arbeiten mit Vorfahrenassoziationen ist es nicht mehr erforderlich, die RAP-Berechtigungs-Master-Entität, RAP-Sperr-Master-Entität und RAP-ETag-Master-Entität einer abhängigen Entität explizit zu definieren, da der Pfad zu den entsprechenden Master-Entitäten über Vorfahrenassoziationen abgeleitet wird. Diese Syntax wurde zuerst im Kontext von BDEF-Erweiterungen eingeführt und ist für BDEF-Erweiterungen obligatorisch. Sie kann auch in BDEFs vom Typ verwaltet und nicht verwaltet verwendet werden, dies wird jedoch von SAP nicht empfohlen. Weitere Informationen finden Sie im Thema über Vorfahrenassoziationen.

Entwicklungsleitfaden für das ABAP-RESTful-Anwendungsprogrammiermodell, Thema Create by Association Operation.

Beispiel - managed

In folgendem Beispiel wird eine auf der CDS-Wurzel-View-Entität DEMO_RAP_MANAGED_ASSOC_ROOT basierte verwaltete BDEF gezeigt. Die Wurzelentität aktiviert den read- und create-Zugriff für zwei Assoziationen explizit:

  • die Komposition _child zu ihrem untergeordneten Knoten und
  • die Cross-BO-Assoziation _ext zu einer externen Assoziation, die nicht Teil des Kompositionsbaums ist.

Die untergeordnete Entität aktiviert den read-Zugriff auf die übergeordnete Entität _parent explizit. In diesem Beispiel wird dies vom RAP-Sperrmechanismus gefordert (die Assoziation der sperrabhängigen Entität zur Sperr-Master-Entität muss explizit definiert werden, siehe CDS BDL - Sperren).

Das Programm DEMO_RAP_MANAGED_ASSOC_1 greift über EML auf das Business-Objekt zu und führt die folgenden Schritte aus:

  • Er legt eine neue Instanz von _Child über die Komposition _child aus der übergeordneten Entität an.
  • Er legt neue Instanzen der Assoziationszielentität der externen Assoziation _ext an.
  • Eine read-by-association-Operation wird über die externe Assoziation ausgeführt.

Beispiel - unmanaged

In folgendem Beispiel wird eine auf der CDS-Wurzel-View-Entität DEMO_RAP_UNMANAGED_AUTH basierte nicht verwaltete BDEF gezeigt.

  • Die Assoziation _child ist read- and create-fähig.
  • Die Assoziation _parent ist read-fähig.

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

Das Programm DEMO_RAP_UNMANAGED_ASSOC greift über EML auf das Business-Objekt zu und führt die folgenden Schritte aus:

  • Er legt drei Instanzen der übergeordneten Entität und zwei Instanzen der untergeordneten Entität über die Assoziation _child an.
  • Er liest den Inhalt der übergeordneten Tabelle über die Assoziation _parent sowie den Inhalt der untergeordneten Tabelle über die Assoziation _child und zeigt das Ergebnis an.

Zusatz 1

... abbreviation _newName

Wirkung

Definiert einen alternativen Namen für eine Assoziation. Die Abkürzung _newName kann maximal 16 Zeichen lang sein. Assoziationen befinden sich im Namensraum ihrer Wurzelentität und können bis zu 30 Zeichen lang sein. Dies ist unter Umständen für eine Verarbeitung in ABAP RAP zu lang. Wenn ein kürzerer Name benötigt wird, werden Sie zur Eingabe einer maximal 16 Zeichen langen Abkürzung für die Assoziation aufgefordert.

Zusatz 2

... without response

Wirkung

Der optionale Zusatz without response ist für Cross-BO-Assoziationen konzipiert, die über ein Assoziationsziel aus einem anderen BO verfügen. Bei einer solchen Cross-BO-Assoziation wird die Assoziationszielentität automatisch als fremde Entität (foreign entity) in die Antworttypen einbezogen. Somit können Probleme in Bezug auf die Zielentität bei read-by-association- oder create-by-association-Operationen in die Antworttypen einbezogen werden. without response verhindert das Einbeziehen des Standardverhaltens der fremden Entität, die in die Antworttypen einbezogen wird.

Notation: association _ext without response { create; }

Beispiel

In folgendem Beispiel wird eine auf der CDS-Wurzel-View-Entität DEMO_RAP_MANAGED_WITHOUT_RES basierte verwaltete BDEF gezeigt. Sie exponiert die Cross-BO-Assoziation _ext, bei der die fremde Entität DEMO_RAP_MANAGED_ASSOC_EXT als Assoziationsziel verwendet wird.

Da der Zusatz without response verwendet wird, beziehen die Antwortstrukturen mapped, failed und reported die fremde Entität DEMO_RAP_MANAGED_ASSOC_EXT nicht ein.

IMAGE @@ABDOC_foreign_entity_excluded.jpg@@284@@130@@

Ohne den Zusatz without response würden die Antwortstrukturen wie folgt aussehen:

IMAGE @@ABDOC_foreign_entity_included.jpg@@286@@188@@

Zusatz 3

... with draft; ...

Wirkung

Definiert eine Assoziation als entwurfsfähig. Eine entwurfsfähige Assoziation ruft aktive Daten ab, wenn sie auf eine aktive Instanz folgt, und ruft Entwurfsdaten ab, wenn sie auf eine Entwurfsinstanz folgt (detaillierte Informationen zur RAP-Entwurfsbehandlung finden Sie unter CDS BDL - verwaltet, with draft).

Wenn ein BO entwurfsfähig ist, sollten alle Assoziationen entwurfsfähig sein, damit die Assoziationen stets zur Zielinstanz mit demselben Zustand (Entwurf oder aktiv) führen.

Sobald Sie mit dem Zusatz with draft ein BO als entwurfsfähig definieren, werden alle BO-internen Assoziationen automatisch entwurfsfähig. Um dieses Verhalten als explizit zu definieren, werden Sie vom Verhalten zur Angabe der Kompositionen innerhalb eines Entwurfs-BOs mit with draft aufgefordert.

Beispiel - draft-enabled association

In folgendem Beispiel wird eine auf der CDS-Wurzel-View-Entität DEMO_RAP_MANAGED_DRAFT_ROOT basierte verwaltete BDEF gezeigt. Die BDEF ist entwurfsfähig, und die Assoziation _child ist mit dem Syntaxelement with draft; ebenfalls entwurfsfähig.

Das Programm DEMO_RAP_MANAGED_DRAFT greift über EML auf das Business-Objekt zu. Er legt zunächst zwei neue Entwurfsinstanzen der übergeordneten Entität sowie zwei neue Entwurfsinstanzen der untergeordneten Entität an und zeigt den Inhalt der Entwurfstabellen an. Anschließend aktiviert er die Entwurfsinstanzen. Der Inhalt der Entwurfstabellen wird in die persistenten Tabellen geschrieben und die Entwurfstabellen werden geleert.






ROGBILLS - Synchronize billing plans   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 24544 Date: 20240523 Time: 184021     sap01-206 ( 250 ms )