Ansicht
Dokumentation

ABENCDS_EXTEND_VIEW_ENTITY - CDS EXTEND VIEW ENTITY

ABENCDS_EXTEND_VIEW_ENTITY - CDS EXTEND VIEW ENTITY

ABAP Short Reference   rdisp/max_wprun_time - Maximum work process run time  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- EXTEND VIEW ENTITY


EXTEND VIEW ENTITY cds_view_entity $| projection_view
       WITH
            $[association1
             association2 ...$]
            { select_list_extension }
            $[GROUP BY field1, field2, ...  $]
            $[ EXCEPT $| INTERSECT $| UNION $[ALL$]  { ... }$] $[;$]


Zusätze:

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

2. ... EXCEPT$|INTERSECT$|UNION $[ALL$] { ... }

Wirkung

Erweitert eine existierende CDS-View-Entität cds_view_entity oder eine existierende CDS-Projektions-View projection_view über eine CDS-View-Entitätserweiterung in der CDS DDL. Eine vorhandene CDS-View kann über eine oder mehrere CDS-View-Entitätserweiterungen verfügen.

Als Voraussetzung für die Erweiterung der CDS-Entität mit der Anweisung EXTEND VIEW ENTITY müssen bei deren Definition mit DEFINE VIEW ENTITY 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 set-operator-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 set-operator-Klauseln erfordert den Wert #UNION neben #PROJECTION_LIST im Annotationsarray.
Der Annotationsarraywert #UNION erlaubt Erweiterung sowohl für Union-Views als auch für Views, die einen beliebigen Mengenoperator enthalten (d.h. EXCEPT und INTERSECT). Der Annotationsarraywert #UNION ist eine bekannte Fehlbezeichnung.
  • Wenn das Annotationsarray den Wert #NONE enthält, kann die View nicht erweitert werden.

Darüber hinaus darf die Annotation AbapCatalog.extensibility.extensible nicht auf false gesetzt werden.

Komponenten einer View-Entitätserweiterung

View-Entitätserweiterungen 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-Entitätserweiterung verwendet werden:

  • Die neuen Assoziationen association1 und association2 können in der CDS-View-Entitätserweiterung definiert und exponiert werden. Es gelten die gleichen Regeln wie unter CDS DDL - CDS-View-Entität, ASSOCIATION beschrieben.
Das Definieren neuer CDS-To-Parent-Assoziationen in einer View-Entitätserweiterung ist nicht erlaubt. Neue Assoziationen für CDS-Kompositionen sind nur dann erlaubt, wenn das Kompositionsziel auch als Kompositionskind definiert ist und über die erforderliche To-Parent-Assoziation verfügt.
  • Jedes hinzugefügte Element muss einen eindeutigen Namen haben. 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-View-Entitätserweiterungen können selbst nicht erweitert werden.
  • Es können keine neuen Eingabeparameter in einer View-Entitätserweiterung angegeben werden.
  • In der Anweisung EXTEND VIEW ENTITY kann kein Zusatz ROOT angegeben werden, um eine normale View in eine Wurzelentität umzuwandeln.
  • Ein hinzugefügtes Feld kann nicht als KEY-Feld definiert werden.
  • In einer View-Entitätserweiterung werden keine Kopfannotationen unterstützt. Dies bedeutet, dass der Anweisung EXTEND VIEW ENTITY keine Annotationen vorangehen dürfen.
  • 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.
  • CDS-View-Entitätserweiterungen können einer CDS-View-Entität keine Felder von CDS-Projektions-Views, CDS-Custom-Entitäten oder abstrakten CDS-Entitäten hinzufügen. Felder von CDS-Projektions-Views, abstrakten CDS-Entitäten oder CDS-Custom-Entitäten können in der Regel nicht in Pfadausdrücken verwendet werden. Dies gilt auch für Pfadausdrücke in CDS-View-Entitätserweiterungen.
Folgendes ist ungültig:
extend view entity MyExtension
  with {
    _assocToAbstract.field1   as Alias1
    _assocToCustom.field2     as Alias2
    _assocToProjection.field3 as Alias3
        }

Beispiel

Die folgende CDS-View-Entitätserweiterung

erweitert die vorhandene CDS-View-Entität um zwei View-Felder

Das Programm DEMO_CDS_VIEW_EXTENSION_VE verwendet die Anweisung SELECT zum Zugriff auf die erweiterte View-Entität.

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.

Voraussetzung ist, dass die Definition der ursprünglichen View mindestens einen Aggregatausdruck in ihrer SELECT-Liste enthält.

Hinweis

Die Erweiterung einer View mit Aggregatausdrücken setzt voraus, dass in dieser der Annotationsarray viewEnhancementCategory[ ] mit den Werten #PROJECTION und #GROUP_BY vorhanden ist.

Beispiel

Die folgende CDS-View-Entitätserweiterung

erweitert die vorhandene CDS-View-Entität

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

Zusatz 2

... EXCEPT $| INTERSECT $| UNION $[ALL$]

Wirkung

Dieser Zusatz muss angegeben werden, wenn eine View-Entität mit einem Mengenoperator ( EXCEPT, INTERSECT oder UNION) erweitert wird. Ein entsprechender Zusatz ( EXCEPT, INTERSECT oder UNION) muss für jede Klausel der ursprünglichen View angegeben werden. In den geschweiften Klammern können Elemente aufgeführt werden, welche die SELECT-Liste der zugeordneten set-operator-Klausel der ursprünglichen View erweitern. Die set-operator-Klauseln müssen in Abhängigkeit der durch select_list_extension erweiterten SELECT-Liste so erweitert werden, dass die Regeln für set-operator-Klauseln in der erweiterten View erhalten bleiben.

Der Zusatz ALL ist nur für UNION-Views verfügbar und muss genau dann angegeben werden, wenn er bei der zugeordneten UNION-Klausel der ursprünglichen View angegeben ist.

Voraussetzung ist, dass die ursprüngliche View eine set-operator-Klausel enthält.

Hinweis

Die Erweiterung einer View mit set-operator-Klauseln setzt voraus, dass darin der Annotationsarray viewEnhancementCategory[ ] mit den Werten #PROJECTION_LIST und #UNION vorhanden ist.

Beispiel

Die folgende CDS-View-Entitätserweiterung

erweitert die vorhandene CDS-View

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






General Data in Customer Master   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 19394 Date: 20240523 Time: 162322     sap01-206 ( 222 ms )