Ansicht
Dokumentation

ABENCDS_F1_ANNOTATE_VIEW - CDS F1 ANNOTATE VIEW

ABENCDS_F1_ANNOTATE_VIEW - CDS F1 ANNOTATE VIEW

Vendor Master (General Section)   ROGBILLS - Synchronize billing plans  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- ANNOTATE ENTITY, VIEW

ANNOTATE ENTITY

1. @Metadata.layer: #CORE$|#LOCALIZATION$|#INDUSTRY$|#PARTNER$|#CUSTOMER
   $[@entity_annot1$]
   $[@entity_annot2$]
   ...
   ANNOTATE ENTITY cds_entity WITH
     $[VARIANT variant$]
     $[parameter_list$]
     { $[element_list$] }$[;$]



ANNOTATE VIEW

2. @Metadata.layer: #CORE$|#LOCALIZATION$|#INDUSTRY$|#PARTNER$|#CUSTOMER
   $[@entity_annot1$]
   $[@entity_annot2$]
   ...
   $[@view_entity_annot1 | @proj_view_annot1 | @_view_annot1$]
   $[@view_entity_annot2 | @proj_view_annot2 | @_view_annot2$]
   ...
   ANNOTATE VIEW cds_view WITH
     $[VARIANT variant$]
     $[parameter_list$]
     { $[element_list$] }$[;$]


Zusatz:

... VARIANT variant

Wirkung

Definiert eine CDS-Metadatenerweiterung (kurz MDE) in einem eigenen DDLX-Quelltext.

  • ANNOTATE ENTITY
Definiert eine MDE für eine beliebige CDS-Entität außer CDS-Tabellenfunktionen.
  • ANNOTATE VIEW
Definiert eine MDE speziell für eine CDS-View.

Die CDS-Metadatenerweiterung fügt einer CDS-Entität Metadaten in Form von CDS-Annotationen hinzu. Die zu erweiternde Entität muss vorhanden sein, über den Namen ihrer CDS-Entität cds_entity bzw. cds_view angegeben werden und in ihrem Quelltext die Annotation @Metadata.allowExtensions mit dem Standardwert true enthalten. Zu einer CDS-Entität kann es mehrere CDS-Metadatenerweiterungen geben.

Vor der Anweisung ANNOTATE muss die Annotation @Metadata.layer mit einem der im Beispiel gezeigten Enumerationssymbole aufgeführt werden, um die Schicht der Metadatenerweiterung zu definieren. Die Schicht bestimmt bei der Auswertung von Metadatenerweiterungen die Priorität der Metadaten, wenn es mehrere Metadatenerweiterungen zur gleichen CDS-Entität gibt, die mit keiner oder der gleichen CDS-Variante verknüpft ist. Die Priorität der gezeigten Enumerationssymbole nimmt von links nach rechts zu, d.h., #CORE hat die niedrigste und #CUSTOMER hat die höchste Priorität. Wenn mehrere CDS-Metadatenerweiterungen mit keiner oder der gleichen CDS-Variante der gleichen Schicht zugeordnet sind, kommt es für mehrfach angegebene Annotationen zu einer Warnung der Syntaxprüfung und es wird die Annotation der ersten Metadatenerweiterung verwendet, die im System gefunden wird.

Die Annotationen, die der erweiterten Entität hinzugefügt werden, werden wie folgt definiert. Eine Metadatenerweiterung muss mindestens eine davon enthalten.

  • Annotationen vor der Anweisung ANNOTATE
  • Vor der Anweisung ANNOTATE ENTITY können nur Entitätsannotationen@entity_annot aufgeführt werden. Es müssen im Geltungsbereich der Entitätsannotationen erlaubte SAP-Annotationen sein. Sie werden den Entitätsannotationen der erweiterten Entität hinzugefügt. aufgeführte Annotationen

  • Vor der Anweisung ANNOTATE VIEW können Entitätsannotationen und zusätzlich View-Annotationen @view_annot aufgeführt werden. Es müssen im Geltungsbereich der View-Annotationen erlaubte SAP-Annotationen sein. Sie werden den View-Annotationen der erweiterten View hinzugefügt.

  • Mit parameter_list werden Annotationen für die Parameter der erweiterten Entität angegeben.
  • Mit element_list werden Annotationen für die Elemente der SELECT-Liste der erweiterten Entität angegeben.

In Metadatenerweiterungen dürfen nur Annotationen angegeben werden, für die dies in ihrer Annotationsdefinition mit der Annotation @MetadataExtension.usageAllowed:true erlaubt ist. Ein Annotation darf in der CDS-Metadatenerweiterung im gleichen durch @Scope definierten Geltungsbereich verwendet werden, wie in einer Datendefinition. Alle anderen Annotationen führen zu Syntaxfehlern.

Die Annotationen einer Metadatenerweiterung werden bei einer Auswertung von Annotationen mit den Methoden der Klasse CL_DD_DDL_ANNOTATION_SERVICE außer GET_DIRECT_ANNOS_ gemäß der durch die Annotation @Metadata.layer definierten Schichten und der verwendeten CDS-Varianten berücksichtigt, wobei die Annotationen einer Metadatenerweiterung immer eine höhere Priorität als die im Quelltext der CDS-Entität angegebene Annotationen haben. Diese werden nur berücksichtigt, wenn sie nicht durch eine entsprechende Annotation einer Metadatenerweiterung übersteuert werden. Für eine genaue Beschreibung der Auswertung siehe den Abschnitt Auswertung von Metadatenerweiterungen.

Hinweise

  • Im Gegensatz zur Angabe von Annotationen im Quelltext der erweiterten CDS-Entität sind in Metadatenerweiterungen keine beliebigen Annotationen sondern nur SAP-Annotationen möglich. Die Syntaxprüfung für eine Metadatenerweiterung überprüft die Gültigkeit der Angabe in Bezug auf die Annotationsdefinition:
  • den Namen einer Annotation

  • die Gültigkeit der Annotationswerte, den Typ und bei Enumerationen das Enumerationssymbol

  • die korrekte Angabe von Annotationsarrays; diese dürfen nur mit eckigen Klammern aufgeführt werden. Eine Schreibweise @annot: value ist nicht möglich. Statt dessen muss @annot: [value] verwendet werden. Der Array darf nur gleichartige Elemente gemäß seiner Definition enthalten.

  • Die in Metadatenerweiterungen angegebenen Annotationen einer CDS-Entität haben keine Auswirkung auf deren Aktivierung und das Verhalten zur Laufzeit. Sie werden nur von der Klasse CL_DD_DDL_ANNOTATION_SERVICE berücksichtigt.
  • Das Programm ABAP_DOCU_MDE_ANNOS zeigt alle Annotationen, die in Metadatenerweiterungen angegeben werden können.

Beispiel

Die folgende Metadatenerweiterung namens DEMO_CDS_METADATA_EXTENSION fügt der CDS-View DEMO_CDS_PARAMETERS aus dem ausführbaren Beispiel zu CDS-Views mit Parametern Annotationen in der Originalsprache Deutsch hinzu. Das Programm DEMO_CDS_META_DATA_EXTENSIONS liest die Annotationen der View mit Methoden der Klassen CL_DD_DDL_ANNOTATION_SERVICE und CL_DD_DDL_ANALYZE aus. Die Methode GET_ANNOS der Klasse CL_DD_DDL_ANNOTATION_SERVICE berücksichtigt sowohl die Angaben in der Metadatenerweiterung als auch die Übersetzungen in die aktuelle Textumgebungssprache. Die Methode GET_ANNOTATIONS der Klasse CL_DD_DDL_ANALYZE wertet dagegen nur die Angaben in der View DEMO_CDS_PARAMETERS aus.

Beispiel

Die folgende Metadatenerweiterung namens DEMO_CDS_MDE_FOR_ABSTR_ENT fügt der abstrakten CDS-Entität DEMO_CDS_ABSTRACT_ENTITY_ELEM aus dem Beispiel zu deren Elementannotationen Entitäts- und Elementannotationen hinzu.

Zusatz

... VARIANT variant

Wirkung

Verknüpft die Metadatenerweiterung mit einer CDS-Variante. Für variant muss eine vorhandene CDS-Variante angegeben werden, wobei deren Groß-/Kleinschreibung hier keine Rolle spielt. Wenn es innerhalb der mit der Annotation @Metadata.layer definierten Schicht mehrere Metadatenerweiterungen für die gleiche CDS-Entität gibt, sollen diese unterschiedlichen CDS-Varianten zugeordnet sein, ansonsten kommt es für doppelt aufgeführte Annotationen zu einer Warnung von der Syntaxprüfung.

Bei der Auswertung von Annotationen mit der Klasse CL_DD_DDL_ANNOTATION_SERVICE kann die CDS-Variante angegeben werden, um die Metadatenerweiterung auszuwählen. Die Klasse sammelt die von ihr zurückgegebenen Annotationen in Abhängigkeit der Schichten und der Varianten nach der unter Auswertung von Metadatenerweiterungen beschriebenen Hierarchie auf.

Hinweise

  • Technisch gesehen werden die in Metadatenerweiterungen zu einer CDS-Entität angegebenen Annotationen ähnlich wie die in deren DDL-Quelltext angegebenen Annotationen getrennt nach Schichten und Varianten in eigenen Systemtabellen abgelegt und über ein API zugänglich gemacht. Annotationen mit übersetzbaren Texten sind auch hier in Tabellen abgelegt, die an die Übersetzung angeschlossen sind. Die Klasse CL_DD_DDL_ANNOTATION_SERVICE wertet die Systemtabellen aus.

CDS-Metadatenerweiterungen mit CDS-Varianten






Vendor Master (General Section)   CPI1466 during Backup  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 17301 Date: 20240523 Time: 160850     sap01-206 ( 195 ms )