Ansicht
Dokumentation
ABENCDS_F1_VIEW_ENTITY_ANNOTATIONS - CDS F1 VIEW ENTITY ANNOTATIONS
BAL Application Log Documentation General Data in Customer MasterDiese Dokumentation steht unter dem Copyright der SAP AG.
- 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.
- Neben den hier gezeigten ABAP-Annotationen gibt es auch Framework-spezifische ObjectModel-Annotationen.
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.
- Die Framework-spezifische Annotation @Consumption.dbHints ersetzt die ABAP-Annotation @AbapCatalog.dbHints und macht diese damit obsolet. Die ABAP-Annotation wurde ohnehin nicht von der ABAP-Laufzeitumgebung sondern von Frameworks wie SADL ausgewertet.
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.
- Die Annotation AccessControl hat weitere Framework-spezifische Unterannotationen.
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.
- Die Annotation ObjectModel hat weitere Framework-spezifische Unterannotationen.
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 )