Ansicht
Dokumentation

ABENCL_ABAP_DBFEATURES - CL ABAP DBFEATURES

ABENCL_ABAP_DBFEATURES - CL ABAP DBFEATURES

TXBHW - Original Tax Base Amount in Local Currency   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

CL_ABAP_DBFEATURES, Datenbankeigenschaften

Mit der Methode USE_FEATURES der Klasse CL_ABAP_DBFEATURES kann festgestellt werden, ob die aktuelle Datenbank oder eine über eine Datenbankverbindung angegebene Datenbank bestimmte Eigenschaften unterstützt und ob die Eigenschaften in ABAP zur Laufzeit verwendet werden können. Es können einzelne oder mehrere Eigenschaften abgefragt werden, die in Form einer internen Tabelle an die Methode übergeben werden. Die möglichen Zeileninhalte der internen Tabelle werden durch Konstanten der Klasse CL_ABAP_DBFEATURES bestimmt. Andere Werte führen zu einer Ausnahme der Klasse CX_ABAP_INVALID_PARAM_VALUE. Die folgenden Tabellen zeigen diese Konstanten, die entsprechenden Datenbankeigenschaften und ihre Verwendung in ABAP.

Verwendung in

Konstante Datenbankeigenschaft Verwendung in ABAP
AMDP_TABLE_FUNCTION Tabellenfunktionen Zugriff auf CDS-Tabellenfunktionen in .
CTE_IN_CORRELATED_SUBQUERIES allgemeine Tabellenausdrücke (CTE) Zugriff auf allgemeine Tabellenausdrücke in korrelierten Subqueries in .
EXTERNAL_VIEWS SAP-HANA-Views Zugriff auf externe DDIC-Views in .
GROUPING_SETS Gruppierungsmengen Verwendung Gruppierungsmengen in der GROUP BY-Klausel in
HIERARCHIES Hierarchiedaten Verwendung von Hierarchiedaten als Datenquelle von Queries in
INDICATORS Null-Indikator Verwendung des Zusatzes INDICATORS in einer SELECT-Anweisung in .
ITABS_IN_FROM_CLAUSE lokale temporäre Tabellen Verwendung interner Tabellen als Datenquelle von Queries in , wenn diese von der Datenbank ausgewertet werden
LIMIT_IN_SUBSELECT_OR_CTE Sortierungen oder Begrenzungen in Subqueries Verwendung der ORDER BY-Klausel oder der Zusätze UP TO, OFFSET in Subqueries in .
MODIFY_FROM_SELECT Subquery in UPSERT Verwendung einer Subquery als Datenquelle der Anweisung MODIFY in .
ORDER_BY_NULLS_FIRST_LAST Zusatz zur ORDER BY-Klausel Sortieren einer Ergebnismenge hinter ORDER BY indem die Position von möglichen Null-Werten in ermittelt werden.
WINDOWING Fensterausdrücke Verwendung von Fensterausdrücken in einer SELECT-Liste in .

Achtung

Bis jetzt sind viele von unterstützte Eigenschaften eingeführt worden, die nur zusammen mit SAP HANA arbeiten. Die Mehrzahl dieser Eigenschaften werden nicht mehr von CL_ABAP_DBFEATURES verwaltet. Bei Verwendung solcher reiner HANA-Eigenschaften kommt es nun nicht mehr zu einer Syntaxwarnung. Bei der Übergabe einer Anweisung mit solchen Eigenschaften an eine Nicht-HANA-Datenbank über sekundäre Verbindungen werden Ausnahmen ausgelöst.

Verwendung im ABAP Dictionary

Konstante Datenbankeigenschaft Verwendung in ABAP
TABLE_KEYCNT_MAX1 Bis zu 120 Schlüsselfelder Eine Tabelle kann potenziell mehr Schlüsselfelder enthalten, als plattformunabhängig erlaubt sind.
TABLE_KEYLEN_MAX1 Schlüssel dürfen bis zu 2000 Bytes umfassen Der Schlüssel einer Tabelle kann potenziell mehr Bytes umfassen, als plattformunabhängig erlaubt sind.
TABLE_LEN_MAX1 Tabellenzeile darf bis zu 16293 Bytes umfassen Eine Tabellenzeile einer Tabelle kann potenziell mehr Bytes umfassen, als plattformunabhängig erlaubt sind.

Verwendung im ABAP-Aufrufen

Konstante Datenbankeigenschaft Verwendung in ABAP
CALL_AMDP_METHOD Unterstützt AMDP Methodenaufruf von AMDP-Prozedurimplementierungen.
CALL_DATABASE_PROCEDURE Datenbankprozeduren Aufruf von Datenbankprozeduren über CALL DATABASE PROCEDURE.

Die Methode USE_FEATURES gibt den Wert von abap_true zurück, wenn die Eigenschaft von der Datenbank unterstützt wird und die angegebene Verwendung in ABAP möglich ist.

  • Die meisten Eigenschaften können unabhängig vom aktuellen Datenbanksystem in ABAP-Programmen statisch verwendet werden. D.h. es gibt keinen Syntaxfehler, wenn in einem ABAP-Programm eine dieser Datenbankeigenschaften verwendet wird. Beispielsweise kann in jedem ABAP-Programm auf externe DDIC-Views zugegriffen oder es können AMDP-Methoden aufgerufen werden. Es kommt nur dann zu einer Ausnahme, wenn die aktuelle Datenbank die entsprechende Eigenschaft zur Laufzeit nicht unterstützt. Eine durch ein Pragma ausblendbare Syntaxwarnung der erweiterten Programmprüfung weist auf die mögliche Ausnahme hin. Die Klasse CL_ABAP_DBFEATURES kann verwendet werden, um vor einem speziellen Zugriff zur Laufzeit zu prüfen, ob dieser möglich ist, statt die entsprechende Ausnahmen abzufangen. Für einen nicht möglichen Zugriff können Ersatzimplementierungen vorgesehen werden.
  • Die Eigenschaften TABLE_KEYCNT_MAX1, TABLE_KEYLEN_MAX1 und TABLE_LEN_MAX1 können derzeit nur von der Entwicklung bei SAP ausgenutzt werden, indem Datenbanktabellen intern so gekennzeichnet werden, dass sie potenziell die allgemein vorgegebenen plattformunabhängigen Größen überschreiten. Beim Zugriff auf eine solche Tabelle mit kommt es zu einer durch ein Pragma ausblendbaren Syntaxwarnung der erweiterten Programmprüfung. Die Warnung für TABLE_LEN_MAX1 tritt auch für Views auf, die eine derartige Tabelle verwenden. Eine solche Tabelle wird im SAP-Standard in aller Regel innerhalb der allgemeinen Grenzen ausgeliefert, kann aber bei Kunden und Partnern über diese Grenzen hinweg erweitert werden. Auf eine solcherart erweiterte Tabelle kann dann nur noch auf Datenbanksystemen zugegriffen werden, welche die erweiterten Grenzen unterstützen. Für andere Datenbanksysteme ist eine Ersatzimplementierung vorzusehen, in die mit Hilfe der Klasse CL_ABAP_DBFEATURES verzweigt werden kann.

Hinweise

  • Wenn es bei einem Zugriff auf ein Datenbankobjekt zu einer Syntaxwarnung der erweiterten Programmprüfung wegen erweiterter Datenbankeigenschaften kommt, kann diese mit einem Pragma ausgeblendet werden, wenn sichergestellt ist, dass der Zugriff entweder nur auf Datenbanksystemen ausgeführt wird, welche die Eigenschaften unterstützen oder wenn es eine Ersatzimplementierung gibt. Wenn nicht gewährleistet ist, dass der Zugriff nur auf einem Datenbanksystem ausgeführt wird, welches die Eigenschaften unterstützt, bietet es sich an, die Zugriffe hinter einem API zu verschalen.
  • Auf Tabellen, die intern für eine potenzielle Überschreitung der plattformunabhängigen Größen gekennzeichnet sind, sollte nie allgemein zugegriffen werden. Der Zugriff und die zugehörige Ersatzimplementierung sollten immer innerhalb eines APIs verschalt sein.
  • In dem Moment, in dem eine Datenbankeigenschaft von allen Datenbanksystemen unterstützt wird und in ABAP verwendbar ist, ist keine Überprüfung mehr notwendig und der Gebrauch der zugehörigen Konstante wird erst verboten und danach wird die Konstante aus der Klasse CL_ABAP_DBFEATURES entfernt.
  • Mit der Klasse CL_ABAP_DBFEATURES_AUNITHELPER kann während eines Testlaufs die Menge der Datenbankeigenschaften in CL_ABAP_DBFEATURES verkleinert werden. Dies erlaubt es, in Programmen, die CL_ABAP_DBFEATURES verwenden, Ersatzimplementierungen für Datenbanken zu testen, die weniger Eigenschaften als die aktuelle Datenbank unterstützen.

Beispiel

Überprüfung ob für die aktuelle Datenbank mit auf bestimmte zusätzliche Eigenschaften zugegriffen werden kann.

Beispiel

Das Programm DEMO_DBFEATURES überprüft alle möglichen Datenbankeigenschaften für die aktuelle Datenbank.






General Material Data   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 13965 Date: 20240523 Time: 162519     sap01-206 ( 198 ms )