Ansicht
Dokumentation

ABENCDS_F1_VIEW_ENTITY_ANNOTATIONS - CDS F1 VIEW ENTITY ANNOTATIONS

ABENCDS_F1_VIEW_ENTITY_ANNOTATIONS - CDS F1 VIEW ENTITY ANNOTATIONS

BAL Application Log Documentation   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- DEFINE VIEW, view_annot

... @annotation ...

Wirkung

Angabe einer Annotation annotation in der Definition einer CDS-View vor der Anweisung DEFINE VIEW als View-Annotation. Vor den Bezeichner annotation der Annotation muss direkt das Zeichen @ gestellt werden. Die Annotation sollte in einer CDS-Annotationsdefinition als CDS-Objekt definiert und die Annotationsdefinitionsannotation @Scope sollte dort mit dem Wert #VIEW angegeben sein.

Hinweise

  • Neben den hier gezeigten View-Annotationen können für eine View auch die allgemeingültigen Entitätsannotationen angegeben werden.

AbapCatalog-Annotationen

Technische Einstellungen einer CDS-View.
AbapCatalog.buffering.status,,Ein- und Ausschalten der Tabellenpufferung für die CDS-View,, #ACTIVE:\lbr Tabellenpufferung aktiv \lbr\lbr #SWITCHED_OFF:\lbr Tabellenpufferung erlaubt aber nicht aktiv \lbr\lbr #NOT_ALLOWED:\lbr Tabellenpufferung nicht erlaubt,, #SWITCHED_OFF,,#SWITCHED_OFF
AbapCatalog.buffering.type,,Pufferungsart bei einer Tabellenpufferung,, #SINGLE:\lbr Einzelsätze \lbr\lbr#GENERIC:\lbr generischer Bereich \lbr\lbr#FULL:\lbr vollständig \lbr\lbr#NONE:\lbr keine,,#NONE,,#NONE
AbapCatalog.buffering.numberOfKeyFields,,Anzahl von Schlüsselelementen bei einer Tabellenpufferung generischer Bereiche,,Zahl zwischen 0 und k-1, wobei k die Anzahl der Schlüsselelemente ist,,0,,0
AbapCatalog.compiler.compareFilter,,Steuert die Auswertung von Filterbedingungen in Pfadausdrücken der CDS-View,, true:\lbr Die Filterbedingungen von mehrfach in Pfadausdrücken vorkommenden CDS-Assoziationen werden verglichen und bei gleicher Filterbedingung wird der zugehörige Join-Ausdruck nur einmal gebildet \lbr\lbrfalse:\lbr Für jede CDS-Assoziation mit Filterbedingung wird ein eigener Join-Ausdruck gebildet und ausgewertet.,, false,,true
AbapCatalog.dbHints[ ].dbSystem,,Obsolet: Datenbanksystem für das ein Datenbankhinweis angegeben wird, die Auswertung erfolgt durch SADL. \lbr \lbr Stattdessen soll Consumption.dbHintsCalculatedBy verwendet werden.,, #ADA:\lbr SAP MaxDB \lbr\lbr #DB2:\lbr IBM DB2 \lbr\lbr #DB4:\lbr IBM DB2 für AS/400 \lbr\lbr#DB6:\lbr IBM DB2 UDB \lbr\lbr#INF:\lbr Informix \lbr\lbr#MSS:\lbr Microsoft SQL Server \lbr\lbr#ORA:\lbr Oracle DB \lbr\lbr#HDB:\lbr SAP-HANA-Datenbank \lbr\lbr#ASE:\lbr Sybase ASE \lbr\lbr #ALL:\lbr alle Datenbanksysteme,,-,,-
AbapCatalog.dbHints[ ].hint,,Obsolet: Datenbankhinweis, die Auswertung erfolgt durch SADL. \lbr \lbr Stattdessen soll Consumption.dbHints[ ] verwendet werden.,,plattformabhängiger Datenbankhinweis,, -,,-
AbapCatalog.preserveKey,,Steuert die Definition der Schlüsselfelder in der CDS-Datenbank-View der CDS-View,,true:\lbr Die Schlüsselfelder der CDS-Datenbank-View werden so definiert, wie vom Zusatz KEY vorgegeben. \lbr\lbrfalse:\lbr Die Schlüsselfelder der CDS-Datenbank-View werden unabhängig vom Zusatz KEY wie für Datenbank-Views des ABAP Dictionary bestimmt.,, false,,true
AbapCatalog.sqlViewName,,Name der CDS-Datenbank-View der CDS-View,,Maximal 16-stellige Zeichenkette aus Buchstaben, Zeichen und Unterstrichen, die mit einem Buchstaben beginnt und einen Namensraumpräfix enthalten kann,,-,,-
AbapCatalog.viewEnhancementCategory[ ],,Steuert die Erweiterbarkeit der CDS-View über CDS-View-Erweiterungen. In den eckigen Klammern des Annotationsarrays kann eine kommaseparierte Liste von Werten angegeben werden.,, #PROJECTION_LIST:\lbr Erweiterungen der SELECT-Liste und zusätzliche CDS-Assoziationen sind erlaubt; Erweiterungen von CDS-Views, deren SELECT-Listen Aggregatausdrücke enthalten oder die eine UNION-Klausel haben, müssen durch weitere Werte erlaubt werden \lbr\lbr #GROUP_BY:\lbr Erweiterungen einer SELECT-Liste mit Aggregatausdrücken um aggregierte oder nicht aggregierte Elemente und die zugehörige Erweiterung der GROUP-BY-Klausel sind erlaubt; nur zusammen mit #PROJECTION_LIST angebbar \lbr\lbr#UNION:\lbr Erweiterungen der SELECT-Liste einer CDS-View mit UNION-Klausel sind erlaubt; nur zusammen mit #PROJECTION_LIST angebbar \lbr\lbr#NONE:\lbr keine Erweiterung erlaubt; nicht zusammen mit anderen Werten angebbar,, #PROJECTION_LIST,,#PROJECTION_LIST

Hinweise

  • Jede Definition einer CDS-View muss die ABAP-Annotation AbapCatalog.sqlViewName enthalten, die den Namen der CDS-Datenbank-View im ABAP Dictionary definiert.
  • Der Name der Datenbank-View darf nicht mehr geändert werden, nachdem die CDS-View in ein Folgesystem transportiert wurde.
  • Im Annotationsarray AbapCatalog.viewEnhancementCategory[ ] können #GROUP_BY und #UNION nur zusammen mit dem Standardwert #PROJECTION_LIST angegeben werden. Der Wert #NONE schließt andere Werte aus.
  • Da eine Erweiterung einer View mit Aggregatausdrücken oder mit einer Union-Klausel die Kardinalität der Ergebnismenge ändert, muss sie in der View speziell erlaubt werden, damit Verwender der View sich auf eventuell ändernde Kardinalitäten einstellen können.
  • Es wird die Verwendung der Annotation AbapCatalog.compiler.compareFilter mit dem Wert true empfohlen. Beim Anlegen einer neuen CDS-View wird dies von den ADT auch vorgeschlagen.

Beispiel

Für die CDS-View business_partner wird die Tabellenpufferung mit Einzelsatzpufferung eingeschaltet.

@AbapCatalog.sqlViewName:      'BPA_VW'
@AbapCatalog.buffering.status: #ACTIVE
@AbapCatalog.buffering.type:   #SINGLE
define view business_partner as
  select from snwd_bpa
         { key snwd_bpa.bp_id as id,
               snwd_bpa.bp_role as role,
               snwd_bpa.company_name,
               snwd_bpa.phone_number }

Beispiel

Für die CDS-View business_partner wird die Tabellenpufferung für einen generischen Bereich und einem Schlüsselelement eingeschaltet.

@AbapCatalog.sqlViewName:                 'BPA_VW'
@AbapCatalog.buffering.status:            #ACTIVE
@AbapCatalog.buffering.type:              #GENERIC
@AbapCatalog.buffering.numberOfKeyFields: 1
define view business_partner as
  select from snwd_bpa
        { key snwd_bpa.bp_id as id,
              snwd_bpa.bp_role as role,
              snwd_bpa.company_name,
              snwd_bpa.phone_number }

AccessControl-Annotationen

Steuerung der Zugriffskontrolle für die CDS-View.
AccessControl.authorizationCheck,,Steuert die implizite Zugriffskontrolle bei einem Zugriff auf die CDS-View mit ,,#CHECK:\lbr Bei einem Zugriff über wird implizit eine Zugriffskontrolle durchgeführt, falls der View eine CDS-Rolle zugeordnet ist. Es kommt zu einer Warnung von der Syntaxprüfung, wenn es keine Rolle für die View gibt. \lbr\lbr#NOT_REQUIRED:\lbr Wie #CHECK, außer dass es keine Warnung von der Syntaxprüfung gibt. \lbr\lbr#NOT_ALLOWED:\lbr Es wird keine Zugriffskontrolle durchgeführt. Im DCL-Quelltext einer Rolle für die View führt dies zu einer Warnung von der Syntaxprüfung. \lbr\lbr#PRIVILEGED_ONLY:\lbr Privilegierte CDS-Assoziation, die Auswertung erfolgt durch SADL.,, #CHECK,,#CHECK

Hinweise

  • Der Wert #NOT_REQUIRED wird für CDS-Views empfohlen, für die zum Zeitpunkt ihrer Erstellung keine Zugriffskontrolle vorgesehen ist, für welche aber später durchaus Rollen definiert werden können.
  • Der Wert #NOT_ALLOWED schaltet die implizite Zugriffskontrolle beim Zugriff auf die CDS-View in ab. Um die Zugriffskontrolle für Views abzuschalten, die nicht mit dieser Annotation versehen sind, kann der Zusatz WITH PRIVILEGED ACCESS in der FROM-Klausel verwendet werden. Auch für Views muss bei einer ABAP-SQL-Anweisung in der Verbuchung die Berechtigungsprüfung mit dem Zusatz WITH PRIVILEGED ACCESS ausgeschaltet werden, sonst kommt es zum Laufzeitfehler.
  • Die CDS-Zugriffskontrolle funktioniert nicht für mandantenübergreifende Zugriffe. Aus diesem Grund kann in der Zusatz USING und der obsolete Zusatz CLIENT SPECIFIED nur beim Zugriff auf CDS-Entitäten verwendet werden, für welche keine Zugriffskontrolle stattfindet. Die Annotation AccessControl.authorizationCheck:#NOT_ALLOWED sollte für CDS-Views angegeben werden, auf die mandantenübergreifend zugegriffen werden soll.

ClientDependent-Annotationen (obsolet)

Obsolete Steuerung der Mandantenbehandlung für die CDS-View.
ClientDependent,,Obsolete Steuerung der Mandantenbehandlung bei einem Zugriff auf die CDS-View mit .,,true:\lbr Die CDS-View ist mandantenabhängig. Die View-Felder der CDS-Entität umfassen aus Sicht eines ABAP-Programms keine Mandantenspalte. Bei einem Zugriff mit SELECT wird eine implizite Mandantenbehandlung durchgeführt. \lbr\lbrfalse:\lbr Die CDS-View ist mandantenunabhängig. Es wird keine implizite Mandantenbehandlung durchgeführt,,-,,true

Hinweise

  • Die obsolete Annotation @ClientDependent wird durch die Annotationen @ClientHandling.type und @ClientHandling.algorithm ersetzt.
  • Die obsolete Annotation @ClientDependent hat keinen Standardwert wenn sie nicht verwendet wird. Wenn weder die Annotation @ClientDependent noch eine Annotation @ClientHandling angegeben sind, gelten die Standardwerte der @ClientHandling-Annotationen.
  • Die obsolete Annotation @ClientDependent kann nicht zusammen mit einer Annotation @ClientHandling angegeben werden.

ClientHandling-Annotationen

Steuerung der Mandantenbehandlung für die CDS-View.
ClientHandling.type,,Steuert die Mandantenabhängigkeit bei einem Zugriff auf die CDS-View mit .,,#CLIENT_DEPENDENT:\lbr Die CDS-View ist mandantenabhängig. Bei einem Zugriff mit SELECT wird eine implizite Mandantenbehandlung durchgeführt. \lbr\lbr#CLIENT_INDEPENDENT:\lbr Die CDS-View ist mandantenunabhängig. Bei einem Zugriff mit SELECT wird keine implizite Mandantenbehandlung durchgeführt. \lbr\lbr#INHERITED:\lbr Die Mandantenabhängigkeit der CDS-View wird durch die verwendeten Datenquellen bestimmt. Wenn eine Datenquelle mandantenabhängig ist, ist auch die CDS-View mandantenabhängig. ,, #INHERITED,,#INHERITED
ClientHandling.algorithm,,Steuert die Mandantenbehandlung bei einem Zugriff auf die CDS-View mit .,,#NONE:\lbr Es findet keine implizite Mandantenbehandlung statt. \lbr\lbr #AUTOMATED:\lbr Die Joins der CDS-View werden implizit angepasst. \lbr\lbr #SESSION_VARIABLE:\lbr Die Joins der CDS-View werden implizit angepasst und die Sitzungsvariable $session.client wird implizit zur Unterstützung der Performance ausgewertet. ,,#AUTOMATED,,#AUTOMATED

Hinweis

Eine Annotation @ClientHandling kann nicht zusammen mit der obsoleten Annotation @ClientDependent angegeben werden.

DataAging-Annotationen

Steuerung der Datenalterung für die CDS-View.
DataAging.noAgingRestriction,,Steuert bei einem Zugriff auf die CDS-View über die Berücksichtigung der Datenalterung auf einer SAP-HANA-Datenbank. ,,true:\lbr liest alle Daten \lbr\lbr false:\lbr liest nur aktuelle Daten ,,false,,true

Beispiel

Bei einem Zugriff auf die CDS-View sales_order_2012 werden auch auf einer SAP-HANA-Datenbank alle Daten gelesen und nicht nur solche, die in der Datenbanktabelle snwd_so als "HOT" gekennzeichnet sind.

@AbapCatalog.sqlViewName: 'SALES_ORDER_2012'
@DataAging.noAgingRestriction:true
define view sales_order_2012 as
  select from snwd_so
         { key snwd_so.so_id,
               snwd_so.buyer_guid as customer_guid }
  where snwd_so.created_at >= 20120101000000.0
    and snwd_so.created_at  20130101000000.0;

Metadata-Annotationen

Steuerung der Behandlung der Metadaten der CDS-View.
Metadata.ignorePropagatedAnnotations,,Steuert die Auswertung von Annotationen über die Annotations-API CL_DD_DDL_ANNOTATION_SERVICE.,, true:\lbr Es werden nur direkte und abgeleitete Annotationen der aktuellen CDS-Entität berücksichtigt. \lbr\lbrfalse:\lbr Es werden auch geerbte Annotationen verwendeter CDS-Entitäten berücksichtigt.,, false,,true

ObjectModel-Annotationen

Charakterisierung von CDS-Views bezüglich ihrer Performance-relevanten Eigenschaften.
ObjectModel.usageType.dataClass,,Angabe des Datentyps der CDS-View.,,Eine CDS-View wird einer der folgenden Datenarten zugeordnet: \lbr\lbr#TRANSACTIONAL: \lbr Die CDS-View enthält die Daten, die bei Transaktionen mit hohem Volumen oder bei der Hintergrundverarbeitung geschrieben oder geändert werden. \lbr\lbr#MASTER: \lbr Die CDS-View enthält die Stammdaten. Die Stammdaten werden bei Transaktionen mit hohem Volumen oder bei der Hintergrundverarbeitung gelesen, aber nicht geschrieben oder geändert. \lbr\lbr #ORGANIZATIONAL: \lbr Die CDS-View enthält Daten, die Organisationsstrukturen und Prozesse des Kunden beschrieben. \lbr\lbr#CUSTOMIZING: \lbr Die CDS-View enthält Daten, die Customizing-Daten des Kunden beschreiben. \lbr\lbr #META: \lbr Die CDS-View enthält technische Systemkonfigurationsdaten oder die Struktur von Entitäten. \lbr\lbr#MIXED: \lbr Die CDS-View enthält die Daten, die zu mehr als einer Datenart gehören.,, #MIXED,,#MIXED
ObjectModel.usageType.serviceQuality,,Die Qualität des Services in Bezug auf die Performance, die der Verbraucher von der CDS-View erwarten kann.,,Eine CDS-View wird einer der folgenden Qualitätskategorien zugeordnet: \lbr\lbr#A: \lbr Die CDS-View kann innerhalb der Business-Logik für Transaktionen mit hohem Volumen oder für die Hintergrundverarbeitung verwendet werden. \lbr\lbr#B: \lbr Die CDS-View kann innerhalb der Business-Logik für Transaktionen oder für die Hintergrundverarbeitung verwendet werden. \lbr\lbr#C: \lbr Die CDS-View kann von der Benutzerschnittstelle in Transaktionen zum Abrufen einzelner Objekte verwendet werden. \lbr\lbr#D: \lbr Die CDS-View kann für analytische Abfragen verwendet werden. \lbr\lbr #X: \lbr Die CDS-View ist für spezielle Anwendungsfälle wie die Datenmigration konzipiert. \lbr\lbr#P: \lbr Die CDS-View dient zum Strukturieren von CDS-Hierarchien und wird nicht außerhalb der CDS-Hierarchie verwendet.,, #X,,#X
ObjectModel.usageType.sizeCategory,,Gibt die Größe des Datensatzes an, der durchsucht werden muss, um das Ergebnis zurückzugeben. Dies entspricht normalerweise der größten zugrunde liegenden Tabelle.,,Eine CDS-View wird einer der folgenden Größenkategorien zugeordnet: \lbr\lbr#S: \lbr Die erwartete Größe des Datensatzes, der durchsucht werden muss, beträgt weniger als 1000. \lbr\lbr #M: \lbr Die erwartete Größe des Datensatzes, der durchsucht werden muss, beträgt weniger als 100.000. \lbr\lbr#L: \lbr Die erwartete Größe des Datensatzes, der durchsucht werden muss, beträgt weniger als 10.000.000. \lbr\lbr#XL: \lbr Die erwartete Größe des Datensatzes, der durchsucht werden muss, beträgt weniger als 100.000.000. \lbr\lbr#XXL: \lbr Die erwartete Größe des Datensatzes, der durchsucht werden muss, beträgt 100.000.000 oder mehr.,, #S,,#S

Hinweise

  • Generell wird empfohlen, dass CDS-Views aus weniger als 100 Datenbanktabellen bestehen, für CDS-Views der Qualitätskategorien A, B und C deutlich weniger.
  • In Anwendungen, für die eine CDS-View mit niedriger Qualitätskategorie des Services ausreicht, können auch CDS-Views mit höherer Qualitätskategorie verwendet werden.
  • Eine CDS-View mit der Qualitätskategorie A sollte aus nicht mehr als 3 Datenbanktabellen bestehen, keine Funktionen enthalten, keine große Anzahl von Tabellenzeilen für den direkten Zugriff aggregieren und nicht Datenbanktabellen verschiedener Datenarten enthalten. Die CDS-View sollte gepuffert werden, wenn die zugrunde liegenden Tabellen gepuffert sind. Die Laufzeit der Anweisungen SELECT SINGLE field_list und SELECT SINGLE * (jeweils mit vollständig angegebenem CDS-Schlüssel) muss weniger als 1 ms bzw. 2 ms betragen.
  • Eine CDS-View mit der Qualitätskategorie B sollte aus nicht mehr als 5 Datenbanktabellen bestehen, keine Funktionen enthalten, keine große Anzahl von Tabellenzeilen für den direkten Zugriff aggregieren und nicht Datenbanktabellen verschiedener Datenarten enthalten. Die CDS-View sollte gepuffert werden, wenn die zugrunde liegenden Tabellen gepuffert sind. Die Laufzeit der Anweisungen SELECT SINGLE field_list und SELECT SINGLE * (jeweils mit vollständig angegebenem CDS-Schlüssel) muss weniger als 2 ms bzw. 5 ms betragen.
  • Eine CDS-View mit der Qualitätskategorie C sollte aus nicht mehr als 15 Datenbanktabellen bestehen, keine große Anzahl von Tabellenzeilen für den direkten Zugriff aggregieren und nicht innerhalb der Anwendungslogik verwendet werden. Die Laufzeit der Anweisungen SELECT SINGLE field_list und SELECT SINGLE * (jeweils mit vollständig angegebenem CDS-Schlüssel) muss weniger als 10 ms bzw. 20 ms betragen.
  • Eine CDS-View mit der Qualitätskategorie D sollte aus nicht mehr als 100 Datenbanktabellen bestehen und es muss ein Performance-Testfall mit den kundenähnlichen Daten vorliegen.
  • Für eine CDS-View mit der Qualitätskategorie X muss ein Performance-Testfall mit den kundenähnlichen Daten vorliegen.
  • Eine CDS-View mit der Qualitätskategorie P darf nicht innerhalb der Anwendungslogik oder über die Benutzeroberfläche verwendet werden. Es werden keine Testfälle für Laufzeitmessungen benötigt und die Annotationen sizeCategory und dataClass müssen nicht angegeben werden.





BAL Application Log Documentation   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 40336 Date: 20240523 Time: 183834     sap01-206 ( 592 ms )