Ansicht
Dokumentation

ABENCDS_EXTEND_VIEW - CDS EXTEND VIEW

ABENCDS_EXTEND_VIEW - CDS EXTEND VIEW

BAL Application Log Documentation   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- EXTEND VIEW ddic_based

@AbapCatalog.sqlViewAppendName: 'CDS_APPEND_VIEW'
$[@extension_annot1$]
$[@extension_annot2$]
...
EXTEND VIEW ddic_based_view
       WITH cds_view_extension
            $[association1
             association2 ...$]
            { select_list_extension }
            $[GROUP BY field1, field2, ...  $]
            $[UNION $[ALL$] { ... }$] $[;$]


Zusätze:

1. ... GROUP BY field1, field2, ...

2. ... UNION $[ALL$] { ... }

Wirkung

Erweiterung einer vorhandenen ddic_based_view mit einer CDS-View-Erweiterung cds_view_extension in der CDS DDL. Eine vorhandene DDIC-basierte CDS-View kann über eine oder mehrere CDS-View-Erweiterungen verfügen.

Die erweiterte CDS-View ddic_based_view muss unter dem Namen ihrer CDS-Entität angegeben werden. Die Angabe des Namens der CDS-verwalteten DDIC-View ist nicht möglich.

Als Voraussetzung für die Erweiterung der CDS-View mit der Anweisung EXTEND VIEW müssen bei deren Definition mit DEFINE VIEW die Elemente des Annotationsarrays AbapCatalog.viewEnhancementCategory[ ] entsprechend angegeben sein:

  • Standardmäßig bzw. bei Angabe des alleinigen Werts #PROJECTION_LIST können Views ohne Aggregatausdrücke in der SELECT-Liste und ohne UNION-Klausel erweitert werden.
  • Die Erweiterung von Views mit Aggregatausdrücken in der SELECT-Liste erfordert den Wert #GROUP_BY neben #PROJECTION_LIST im Annotationsarray.
  • Die Erweiterung von Views mit UNION-Klauseln erfordert den Wert #UNION neben #PROJECTION_LIST im Annotationsarray.
  • Wenn das Annotationsarray den Wert #NONE enthält, kann die View nicht erweitert werden.

Komponenten einer View-Erweiterung

View-Erweiterungen können die ursprüngliche View erweitern, aber keine Elemente der ursprünglichen View ändern, überschreiben oder löschen. Die folgenden Komponenten können in einer CDS-View-Erweiterung verwendet werden:

  • Die neuen Assoziationen association1 und association2 können in der CDS-View-Erweiterung definiert und exponiert werden. Es gelten die gleichen Regeln wie unter CDS DDL - DDIC-basierte View, ASSOCIATION beschrieben.
Das Definieren neuer CDS-Kompositionen oder CDS-To-Parent-Assoziationen in einer View-Erweiterung ist nicht erlaubt.
  • Die vorhandene SELECT-Liste wird um die Elemente der hinter EXTEND VIEW angegebenen Erweiterungsliste select_list_extension erweitert. Es muss um mindestens ein Element erweitert werden. In der Erweiterungsliste select_list_extension kann auf alle Felder aller Datenquellen der erweiterten View zugegriffen werden. Sie kann alle Elemente einer SELECT-Liste enthalten, nämlich:
  • Feld einer Datenquelle

  • Eingabeparameter der erweiterten CDS-View Es können keine neuen Eingabeparameter in einer View-Entitätserweiterung angegeben werden.

  • Sie kann eine CDS-Assoziation der erweiterten View oder eine neu definierte Assoziation exponieren.

  • Mit einem Pfadausdruck kann ein Feld eines Assoziationsziels eingebunden werden. Pfadausdrücke sind für Assoziationen der erweiterten View oder für neu definierte Assoziationen möglich.

Beim Hinzufügen von Aggregatausdrücken zu einer View-Erweiterung gelten spezielle Regeln. Siehe unten.
  • Aggregatausdrücke sind nur unter Erfüllung der folgenden Bedingungen in der SELECT-Liste einer View-Erweiterung möglich:
  • Die ursprüngliche View muss Aggregatausdrücke enthalten. Wenn die ursprüngliche View keine Aggregatausdrücke enthält, ist dies nicht möglich.

  • Die erweiterte View muss mit der Annotation AbapCatalog.viewEnhancementCategory [#PROJECTION_LIST, #GROUP_BY] versehen sein.

  • Wenn eine CDS-View mit Aggregatausdrücken um nicht aggregierte Elemente erweitert wird, muss die GROUP-BY-Klausel mit dem Zusatz GROUP BY erweitert werden.

  • Wenn die ursprüngliche View UNION-Klauseln enthält, müssen deckungsgleiche Zusätze UNION in der Anweisung EXTEND VIEW verwendet werden. Voraussetzung ist, dass die erweiterte View mit der Annotation AbapCatalog.viewEnhancementCategory [#PROJECTION_LIST, #UNION] versehen ist.
Wenn ein hinzugefügtes Element bereits in der vorhandenen SELECT-Liste oder einer anderen Erweiterung vorkommt, muss es über AS mit einem alternativen Elementnamen versehen werden.

  • CDS-Views mit einer expliziten Namensliste können derzeit nicht erweitert werden.
  • CDS-View-Erweiterungen können selbst nicht erweitert werden.
  • Es können keine neuen Eingabeparameter in einer View-Entitätserweiterung angegeben werden.
  • In der Anweisung EXTEND VIEW kann kein Zusatz ROOT angegeben werden, um eine normale View in eine Wurzelentität zu verwandeln.
  • Ein hinzugefügtes Feld kann nicht mit KEY als Schlüsselfeld definiert werden.
  • Das Definieren neuer To-Parent- oder Kompositionsassoziationen in einer View-Erweiterung ist nicht erlaubt.
  • Bei Views mit einem Element vom Datentyp LRAW oder LCHR in der SELECT-Liste ist keine View-Erweiterung möglich, und die Annotation AbapCatalog.viewEnhancementCategory[#NONE] wird erzwungen. Der Grund hierfür ist, dass sich Elemente der Datentypen LRAW und LCHR stets an letzter Stelle in der SELECT-Liste befinden müssen.

Namensgebung

Für eine über EXTEND VIEW definierte CDS-View-Erweiterung werden zwei Repository-Objekte angelegt, für die jeweils ein Name angegeben werden muss:

  • Hinter den Schlüsselwörtern EXTEND VIEW wird der eigentliche Name cds_view_extension der CDS-View-Erweiterung angegeben. Dieser Name folgt den gleichen Regeln wie der Name einer DDIC-Append-View, kann aber 30 Stellen haben.

Die Namen der erzeugten DDIC-Append-View und der eigentlichen CDS-View-Erweiterung sollten im Kundennamensraum (bzw. im Namensraum eines Partners oder einer Sonderentwicklung) liegen um damit gegen ein Überschreiben beim Upgrade oder Release-Wechsel geschützt zu sein.

  • Nachdem der DDL-Quelltext einer CDS-View-Erweiterung transportiert wurde, können der tatsächliche Name cds_view_extension und der Name der DDIC-Append-View CDS_APPEND_VIEW nicht mehr geändert werden. Die erweiterte View ddic_based_view ist ebenfalls nicht mehr änderbar.

Der DDL-Quelltext einer CDS-View-Erweiterung muss nicht den gleichen Namen wie diese haben, es wird aber empfohlen, den Namen der CDS-View-Erweiterung zu verwenden.

Hinweise

  • Es gibt derzeit noch keine Möglichkeit, Erweiterungskategorien für CDS-Views zu definieren. Aus diesem Grund gibt es folgende Einschränkungen:
  • Bezüglich der Erweiterungskategorie von DDIC-Strukturen haben CDS-Views die Eigenschaft beliebig erweiterbar. Bei der Erweiterung eines CDS-Views müssen die entsprechenden Konsequenzen selbst beachtet werden.

  • Die durch Annotationen festgelegten Eigenschaften einer CDS-View, wie z.B. das Einschalten der Tabellenpufferung, können derzeit nicht durch Erweiterungen verändert werden.

  • CDS-View-Erweiterungen mit der Angabe EXTEND ENTITY werden nur für DDIC-basierte CDS-Views empfohlen. Aus Kompatibilitäts- und Migrationsgründen können jedoch auch CDS-Projektions-Views oder CDS-View-Entitäten mit der Anweisung EXTEND VIEW erweitert werden. Allerdings unterstützen mit EXTEND VIEW definierte View-Erweiterungen keine Syntaxelemente, die speziell für Projektions-Views und CDS-View-Entitäten gelten. Daher wird stattdessen die Verwendung der Anweisung EXTEND VIEW ENTITY für Erweiterungen von CDS-Projektions-Views und CDS-View-Entitäten empfohlen.
  • Falls eine CDS-Projektions-View oder CDS-View-Entität mit EXTEND VIEW erweitert wird, wird die CDS-verwaltete DDIC-View gelöscht (da CDS-Projektions-Views und CDS-View-Entitäten keine DDIC-Artefakte haben) und Entitätsannotationen, die die CDS-verwaltete DDIC-View referenzieren, werden ignoriert.

Beispiel

Die folgende CDS-View-Erweiterung

erweitert die vorhandene CDS-View um zwei View-Felder

Im ABAP Dictionary wird die DDIC-Append-View DEMO_CDS_EXTENS erzeugt. Das Programm DEMO_CDS_VIEW_EXTENSION greift mit der Anweisung SELECT auf die erweiterte View zu und zeigt auch die Komponenten der beteiligten Dictionary-Strukturen.

Zusatz 1

... GROUP BY field1, field2, ...

Wirkung

Dieser Zusatz muss angegeben werden, wenn eine View mit Aggregatausdrücken um Elemente erweitert wird, die nicht über Aggregatausdrücke definiert werden. Diese Elemente müssen hinter GROUP BY aufgeführt werden und erweitern die GROUP-BY-Klausel der ursprünglichen View. Die erweiterte GROUP-BY-Klausel muss bezüglich der erweiterten View den allgemeinen Regeln für eine GROUP-BY- Klausel folgen.

Der Zusatz kann nicht angegeben werden, wenn die Definition der ursprüngliche View keine Aggregatausdrücke in ihrer SELECT-Liste enthält.

Hinweis

Die Erweiterung eines Views mit Aggregatausdrücken setzt voraus, dass in diesem der Annotationsarray viewEnhancementCategory[ ] mit dem Wert #GROUP_BY vorhanden ist.

Beispiel

Die folgende CDS-View-Erweiterung

erweitert die vorhandene CDS-View.

Die SELECT-Liste wird um ein Datenbankfeld connid und um einen Aggregatausdruck sum(distance) ergänzt. Die GROUP-BY-Klausel der ursprünglichen View muss entsprechend mit dem Zusatz GROUP BY um das Datenbankfeld erweitert werden.

Zusatz 2

... UNION $[ALL$] { ... }

Wirkung

Dieser Zusatz muss angegeben werden, wenn eine View mit UNION-Klauseln erweitert wird. Für jede UNION-Klausel der ursprünglichen View muss ein entsprechender UNION-Zusatz angegeben werden. Der Zusatz ALL muss genau dann angegeben werden, wenn er bei der zugeordneten UNION-Klausel der ursprünglichen View angegeben ist. In den geschweiften Klammern können Elemente aufgeführt werden, welche die SELECT-Liste der zugeordneten UNION-Klausel der ursprünglichen View erweitern. Die UNION-Klauseln müssen in Abhängigkeit der durch select_list_extension erweiterten SELECT-Liste so erweitert werden, dass die Regeln für UNION-Klauseln in der erweiterten View erhalten bleiben.

Der Zusatz kann nicht angegeben werden, wenn die Definition der ursprüngliche View keine UNION-Klausel hat.

Hinweis

Die Erweiterung eines Views mit UNION-Klauseln setzt voraus, dass in diesem der Annotationsarray viewEnhancementCategory[ ] mit dem Wert #UNION vorhanden ist.

Beispiel

Die folgende CDS-View-Erweiterung

erweitert die vorhandene CDS-View.

Die ursprüngliche View hat zwei UNION-Klauseln, die durch entsprechende UNION-Zusätze in der Definition der CDS-View-Erweiterung abgebildet werden. Die drei SELECT-Listen der ursprünglichen View werden alle um jeweils zwei Elemente erweitert, die vom Typ her zueinander passen.






Fill RESBD Structure from EBP Component Structure   General Material Data  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 24941 Date: 20240523 Time: 171248     sap01-206 ( 278 ms )