Ansicht
Dokumentation
ABAPSELECT_DATA_SOURCE - SELECT DATA SOURCE
rdisp/max_wprun_time - Maximum work process run time CL_GUI_FRONTEND_SERVICES - Frontend ServicesDiese Dokumentation steht unter dem Copyright der SAP AG.
SELECT, FROM data_source
... dbtab $|view $[WITH PRIVILEGED ACCESS$]
$| cds_entity$[
sql_para$]$[sql_path$]$|$[ WITH PRIVILEGED ACCESS$]
$| +cte$[sql_path$]
$| hierarchy_data
$| @itab
$| cds_system_entity
Alternativen:
1. ... dbtab $|view $[WITH PRIVILEGED ACCESS$]
2. ... cds_entity$[sql_para$]$[sql_path$]$|$[ WITH PRIVILEGED ACCESS$]
3. ... +cte$[sql_path$]
4. ... hierarchy_data
5. ... @itab
6. ... cds_system_entity
Wirkung
Angabe einer einzelnen DDIC-Datenbanktabelle dbtab, DDIC-View view, nicht abstrakten CDS-Entität cds_entity, eines allgemeinen Tabellenausdrucks +cte, von Hierarchiedaten, einer internen Tabelle @itab, oder einer CDS-Systementität in der FROM-Klausel einer Query.
Bezüglich Views gilt die Einschränkung, dass nur auf diejenige Views, deren Schlüsselfelder zusammen am Anfang der View stehen, zugegriffen werden kann.
Alternative 1
... dbtab
$|view $[WITH PRIVILEGED ACCESS$]
Zusatz:
Wirkung
Angabe einer DDIC-Datenbanktabelle dbtab oder einer DDIC-View oder einer externen DDIC-View view. DDIC-Views, auf die lesend mit SELECT zugegriffen werden kann, sind DDIC-Datenbank-Views, DDIC-Projektions-Views und externe Views.
Hinweise
- Wenn für eine als Datenquelle angegebene Datenbanktabelle oder DDIC-Datenbank-View eine DDIC-CDS-View als Vertreterobjekt definiert ist, greift die SELECT-Anweisung auf die CDS-View und nicht auf die Datenbanktabelle oder die Datenbank-View zu. In einem solchen Fall wird empfohlen, wenn möglich die CDS-View direkt als Datenquelle zu verwenden.
Beispiel
Lesen der Daten der DDIC-Datenbank-View DEMO_SCARR_SPFLI.
Zusatz
... WITH PRIVILEGED ACCESS
Wirkung
Der Zusatz WITH PRIVILEGED ACCESS hat für DDIC-Datenbanktabellen und DDIC-Views derzeit noch keine Wirkung.
Hinweise
- Wenn in einem zukünftigen Release eine CDS-Zugriffskontrolle für DDIC-Datenbanktabellen und DDIC-Views eingeführt werden sollte, schaltet der Zusatz WITH PRIVILEGED ACCESS diese ab.
- Bei Angabe des Zusatzes WITH PRIVILEGED ACCESS wird die Syntaxprüfung im strikten Modus ab Release ausgeführt.
Alternative 2
... cds_entity$[sql_para$]$[sql_path$]$|$[ WITH PRIVILEGED ACCESS$]
Zusätze:
1. ... sql_path
2. ... WITH PRIVILEGED ACCESS
Wirkung
Angabe einer nicht-abstrakten CDS-Entität cds_entity, die mit der CDS DDL der ABAP CDS erstellt ist. Mögliche CDS-Entitäten sind:
Die CDS-Entität cds_entity wird über deren Namen angegeben, die nach der jeweiligen DEFINE-Anweisung der CDS DDL definiert ist.
- Wenn die CDS-Entität Eingabeparameter hat, müssen diesen in einer geklammerten Liste sql_para Aktualparameter zugewiesen werden.
- Für CDS-Views oder CDS-Hierarchien mit CDS-Assoziationen kann ein Pfadausdruck sql_path angegeben werden, der dessen Assoziationsziel als Datenquelle der SELECT-Anweisung definiert.
CDS-Tabellenfunktionen und CDS-Hierarchien gehören zu den Datenbankerweiterungen, die nicht von allen Datenbanksystemen unterstützt werden. Die CDS DDL der ABAP CDS erlaubt es aber, unabhängig vom Datenbanksystem solche CDS-Entitäten anzulegen und diese als Datenquellen zu verwenden. In einem ABAP-Programm kann eine solche CDS-Entität ebenfalls unabhängig vom Datenbanksystem als Datenquelle einer SELECT-Anweisung angegeben werden. Dabei gilt:
- Es kommt zu einer behandelbaren Ausnahme der Klasse CX_SY_SQL_UNSUPPORTED_FEATURE, wenn bei Ausführung der Anweisung festgestellt wird, dass das aktuelle Datenbanksystem die Erweiterung nicht unterstützt. Das Gleiche gilt beim Zugriff auf CDS-Entitäten, die CDS-Tabellenfunktionen oder CDS-Hierarchien als Datenquellen enthalten.
- Die Verwendung solcher CDS-Entitäten führt zu Syntaxwarnungen der erweiterten Programmprüfung, die durch das Pragma
- ##db_feature_mode[amdp_table_function]
CDS-Hierarchien werden als SQL-Hierarchien behandelt und es gelten besondere Regeln.
Hinweise
- Mit der Methode USE_FEATURES der Klasse CL_ABAP_DBFEATURES kann in einem ABAP-Programm festgestellt werden, ob das aktuelle Datenbanksystem oder ein Datenbanksystem, auf das über eine Sekundärverbindung zugegriffen wird, CDS-Tabellenfunktionen oder CDS-Hierarchien unterstützt. Hierzu muss die Konstante AMDP_TABLE_FUNCTION bzw. HIERARCHIES dieser Klasse in einer internen Tabelle an die Methode übergeben werden.
- Eine CDS-verwaltete DDIC-View ist zwar eine DDIC-Datenbank-View des ABAP Dictionary, die Verwendung als Datenquelle in ist aber obsolet und im strikten Modus ab Release verboten, da dabei die für die CDS-View definierten Eigenschaften verloren gehen können. Dies betrifft insbesondere die Mandantenbehandlung und das Verhalten des obsoleten Zusatzes CLIENT SPECIFIED sowie die CDS-Zugriffskontrolle.
- Auf abstrakte CDS-Entitäten kann in nicht zugegriffen werden.
- Wenn über den Namen cds_entity auf CDS-Entitäten zugegriffen wird, wird die Syntaxprüfung im strikten Modus ab Release ausgeführt, welche die Anweisung strenger behandelt als die normale Syntaxprüfung. Wenn in einer SELECT-Anweisung gemeinsam auf CDS-Entitäten und DDIC-Datenbanktabellen oder DDIC-Views zugegriffen wird, wird die Syntaxprüfung im strikten Modus ab Release ausgeführt.
- Wenn für die CDS-Entität eine CDS-Rolle definiert und die CDS-Zugriffskontrolle nicht mit dem Wert #NOT_ALLOWED für die Annotation @AccessControl.authorizationCheck oder mit dem Zusatz WITH PRIVILEGED ACCESS ausgeschaltet ist, wird bei einem Zugriff über SELECT eine CDS-Zugriffskontrolle durchgeführt und es werden nur die Daten gelesen, welche den Zugriffsbedingungen genügen. Wenn auf Grund der CDS-Zugriffskontrolle keine Daten gelesen werden konnten, wird sy-subrc wie üblich auf den Wert 4 gesetzt. Bei einem Zugriff auf eine CDS-verwaltete DDIC-View wird keine implizite Zugriffskontrolle durchgeführt.
- Standardmäßig wird bei einem Zugriff auf eine
SAP-HANA-Datenbank die
Datenalterung
berücksichtigt und es werden nur aktuelle Daten gelesen. Die Standardeinstellung kann über verschiedene Mittel geändert werden.
Beispiel
Lesen der Daten der CDS-View DEMO_CDS_SCARR_SPFLI.
Zusatz 1
... sql_path
Wirkung
Angabe eines Pfadausdrucks sql_path hinter einer CDS-Entität, bei der es sich in diesem Fall um eine CDS-View-Entität, oder CDS-Hierarchie handeln muss, welche die erste CDS-Assoziation des Pfadausdrucks in ihrer SELECT-Liste bzw. Elementliste veröffentlicht. Eine CDS-View muss über ihren hinter DEFINE VIEW definierten Namen cds_entity angegeben werden. Alle CDS-Assoziationen des Pfadausdrucks müssen in den SELECT-Listen der beteiligten CDS-Entitäten für die Verwendung von außen veröffentlicht sein.
Die Assoziationsziel der letzten CDS-Assoziation des Pfadausdrucks ist die Datenquelle der aktuellen SELECT-Anweisung. Die Daten werden gemäß der Join-Bedingungen der CDS-Assoziationen und der sonstigen Bedingungen der beteiligten CDS-Views gelesen.
Der Pfadausdruck macht nur die Elemente seiner Assoziationsziel in der SELECT-Anweisung bekannt. Wenn ein solches Element in anderen Klauseln der SELECT-Anweisung als Spaltenangabe verwendet wird, die über den Spaltenselektor ~ der Datenquelle zugeordnet ist, muss hierfür mit AS ein Aliasname definiert und verwendet werden. Jeder Pfadausdruck in der Datenquelle der FROM-Klausel muss einen mit AS definierten Aliasnamen haben. Dies wird im strikten Modus ab Release überprüft.
Hinweise
- Eine CDS-Entität cds_entity mit Pfadausdruck kann wie jede Datenquelle auch in Join-Ausdrücken verwendet werden.
- In der SELECT-Anweisung kann nicht auf Elemente der Entitäten des Pfadausdrucks zugegriffen, werden, die vor der Assoziationsziel liegen. Dies gilt insbesondere auch für die Elemente der angegebenen Entität cds_entity. Nur wenn sie nochmals als Datenquelle expliziter Join-Ausdrücke der Anweisung aufgeführt sind, kann wie üblich auf sie zugegriffen werden.
- Wenn eine Datenquelle über einen Pfadausdruck angegeben ist, kann der obsolete Zusatz CLIENT SPECIFIED nicht verwendet werden.
- Da der Pfadausdruck direkt hinter der Angabe cds_entity folgt, muss und kann hier die Angabe source nicht gemacht werden.
- Ein Pfadausdruck darf keine CDS-Assoziation einer abstrakten CDS-Entität enthalten.
Beispiel
Zugriff auf die CDS-View DEMO_CDS_ASSOC_SAIRPORT_TZ mit Parameterübergabe und einem Pfadausdruck mit den CDS-Assoziationen \_spfli und \_scarr in der FROM-Klausel.
Pfadausdrücke, Verwendung in der FROM-Klausel
Zusatz 2
... WITH PRIVILEGED ACCESS
Wirkung
Der Zusatz WITH PRIVILEGED ACCESS schaltet die CDS-Zugriffskontrolle ab.
Wenn auf eine CDS-Entität zugegriffen wird, der eine CDS-Rolle zugeordnet ist, werden deren Zugriffsbedingungen nicht ausgewertet.
Der Zusatz WITH PRIVILEGED ACCESS kann nicht zusammen mit einem Pfadausdruck sql_path angegeben werden. Er wirkt genau für die CDS-Entität, für die er angegeben ist. Er wirkt nicht auf die CDS-Entitäten, die durch CDS-Assoziationen der angegebenen CDS-Entität veröffentlicht werden.
Hinweise
- Der Zusatz WITH PRIVILEGED ACCESS übersteuert alle ausgelieferten und selbstdefinierten Rollen.
- Die CDS-Zugriffskontrolle kann auch bei der Definition einer nicht-abstrakten CDS-Entität mit der Annotation @AccessControl.authorizationCheck:#NOT_ALLOWED abgeschaltet werden.
- Während der Verbuchung muss der Zusatz WITH PRIVILEGED ACCESS beim Zugriff auf alle CDS-Entitäten angegeben werden, für welche die CDS-Zugriffskontrolle nicht mit der Annotation @AccessControl.authorizationCheck:#NOT_ALLOWED abgeschaltet ist.
- Bei Angabe des Zusatzes WITH PRIVILEGED ACCESS wird die Syntaxprüfung im strikten Modus ab Release ausgeführt.
Beispiel
Verwendung des Zusatzes WITH PRIVILEGED ACCESS beim Zugriff auf die CDS-View DEMO_CDS_AUTHORITY_LITERAL, der folgende CDS-Rolle zugeordnet ist:
Im Gegensatz zum Programm DEMO_CDS_AUTH_LITERAL liest folgender Zugriff alle Daten der View.
Alternative 3
... +cte$[sql_path$]
Zusatz:
Wirkung
Angabe eines allgemeinen Tabellenausdrucks +cte in einer Subquery oder der abschließenden Hauptquery einer WITH-Anweisung.
Die SELECT-Anweisung greift auf die Ergebnismenge des allgemeinen Tabellenausdrucks zu. Es können alle allgemeinen Tabellenausdrücke verwendet werden, die in der gleichen WITH-Anweisung vor der aktuellen SELECT-Anweisung definiert wurden.
Hinweis
Bei einem allgemeinen Tabellenausdruck als Datenquelle wird auf eine temporäre Tabelle der Datenbank zugegriffen, die während der WITH-Anweisung zur Verfügung steht.
Beispiel
Zugriff auf die Ergebnismenge des allgemeinen Tabellenausdrucks +carriers in einem Join-Ausdruck
der FROM-Klausel der Hauptquery der Anweisung WITH.
Zusatz
... sql_path
Wirkung
Angabe eines Pfadausdrucks sql_path hinter der Angabe eines allgemeinen Tabellenausdrucks +cte als Datenquelle einer Query in einer WITH-Anweisung. Der allgemeine Tabellenausdruck muss die erste Assoziation des Pfadausdrucks mit dem Zusatz WITH ASSOCIATIONS veröffentlichen. Es kann sich um eine CDS-Assoziation oder um eine CTE-Assoziation handeln.
Es gelten die gleichen Regeln wie bei der Angabe eines Pfadausdrucks hinter der Angabe einer CDS-Entität cds_entity als Datenquelle. Insbesondere muss der Pfadausdruck einen mit AS definierten Aliasnamen haben.
Beispiel
Die Assoziationsziel
des vom allgemeinen Tabellenausdruck +cte veröffentlichten Pfadausdrucks \_scarr wird als Datenquelle der
Hauptquery einer WITH-Anweisung verwendet.
Alternative 4
... hierarchy_data
Wirkung
Angabe von folgenden Hierarchiedaten:
- Eine SQL-Hierarchie hierarchy
- Ein Hierarchienavigator hierarchy_navigator, welcher auf eine SQL-Hierarchie zugreift.
Beispiel
Zugriff auf eine SQL-Hierarchie als Datenquelle, die vom Hierarchiegenerator HIERARCHY erzeugt wird.
Alternative 5
... @itab
Wirkung
Angabe einer internen Tabelle @itab als Hostvariable, deren Bezeichner itab das Zeichen @ vorangestellt sein muss. Für mehr Informationen siehe SELECT - FROM @itab.
Beispiel
Zugriff auf eine interne Tabelle mit SELECT als Alternative zu einer Anweisung READ
TABLE. Die Anweisung SELECT bietet gegenüber READ TABLE den Vorteil einer (dynamischen) WHERE-Bedingung und der Auswertung der Feldliste für die
Inline-Deklaration.
Die Anweisung wird auf dem AS ABAP ausgeführt und die Daten der internen Tabelle werden nicht zur Datenbank transportiert.
Alternative 6
... cds_system_entity
Eine CDS-Systementität cds_system_entity ist eine von ABAP-SQL angebotenen CDS-Entität, die allgemeine Funktionen zur Generierung tabellarischen Daten enthält.
Die Syntax zum Zugriff auf eine CDS-Systementität ist wie die Syntax der anderen oben beschriebenen CDS-Entitäten.
Hinweis
Auf CDS-Systementitäten darf auch in anderen CDS-Entitäten zugegriffen werden.
Beispiel
Mit folgendem Quelltext wird das Anlegen einer Folge von Zahlen mit der CDS-Systemtabellenfunktion SERIES_GENERATE_INTEGER demonstriert.
Addresses (Business Address Services) Vendor Master (General Section)
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 28497 Date: 20240523 Time: 121954 sap01-206 ( 329 ms )