Ansicht
Dokumentation

ABAPSELECT_DATA_SOURCE - SELECT DATA SOURCE

ABAPSELECT_DATA_SOURCE - SELECT DATA SOURCE

rdisp/max_wprun_time - Maximum work process run time   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

SELECT, FROM data_source

Kurzreferenz



...  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:

... WITH PRIVILEGED ACCESS

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.

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.
  • ##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.
  • 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.

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:

... sql_path

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:

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 )