Ansicht
Dokumentation

ABAPMETHOD_BY_DB_PROC - METHOD BY DB PROC

ABAPMETHOD_BY_DB_PROC - METHOD BY DB PROC

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

METHOD, BY DATABASE PROCEDURE, FUNCTION, GRAPH WORKSPACE

METHOD meth BY DATABASE PROCEDURE$|FUNCTION$|GRAPH WORKSPACE
            FOR db
            LANGUAGE db_lang
            $[OPTIONS db_options$]
            $[USING   entities$]
            $[USING   SCHEMA schema1 OBJECTS db_entities$]
            $[USING   SCHEMA schema2 OBJECTS db_entities$]
            ... .
  ...
ENDMETHOD.


Zusätze:

1. ... FOR db

2. ... LANGUAGE db_lang

3. ... OPTIONS db_options

4. ... USING entities

5. ... USING SCHEMA schema OBJECTS db_entities

Wirkung

Implementierung einer AMDP-Prozedur oder einer AMDP-Funktion in einer AMDP-Klasse. Der Zusatz BY DATABASE PROCEDURE bzw. BY DATABASE FUNCTION kann im Implementierungsteil einer globalen Klasse aufgeführt werden, die ein passendes Tag-Interface IF_AMDP_MARKER_... für AMDP-Klassen enthält.

Die im Deklarationsteil deklarierte Parameterschnittstelle der Methode muss den Voraussetzungen für AMDP-Prozedurimplementierungen bzw. AMDP-Funktionsimplementierungen genügen. Die Parameterschnittstelle einer AMDP-Funktionsimplementierung, die eine CDS-Tabellenfunktion implementiert wird der Definition der CDS-Tabellenfunktion entnommen, welche bei der Deklaration der Methode hinter dem Zusatz FOR TABLE FUNCTION angegeben ist.

Der Zusatz FOR db legt das Datenbanksystem fest, für das die Methode verwendet wird. Der Zusatz LANGUAGE bestimmt die datenbankspezifische Sprache, in der die Methode implementiert wird. Mit OPTIONS werden datenbankspezifische Optionen angegeben. Mit USING werden die von ABAP verwalteten Datenbankobjekte deklariert, die in der AMDP-Methode verwendet werden.

Hinweis

Wenn der aktuelle AS ABAP nicht über ausreichende Berechtigungen zum Verwalten von Datenbankprozeduren bzw. Datenbankfunktionen in seinem Datenbanksystem hat, kann es zu Syntaxfehlern in AMDP-Methoden kommen. Fehlende Berechtigungen können mit der Transaktion SICK festgestellt werden.

AMDP - Beispiele

Zusatz 1

... FOR db

Wirkung

Bestimmt das Datenbanksystem, für das die AMDP-Methode verwendet wird. Die AMDP-Klasse muss das passende Tag-Interface enthalten. Die folgende Tabelle zeigt, die Syntax, die für db angegeben werden kann, welches Datenbanksystem damit bezeichnet wird und welches Tag-Interface dafür notwendig ist.

db Datenbanksystem Tag-Interface
HDB SAP-HANA-Datenbank IF_AMDP_MARKER_HDB

Die AMDP-Methode kann nur in einem AS ABAP aufgerufen werden, dessen Standarddatenbank vom angegebenen Datenbanksystem verwaltet wird, ansonsten kommt es zu einem Laufzeitfehler.

Hinweise

  • Eine AMDP-Klasse kann mehrere Tag-Interfaces für unterschiedliche Datenbanksysteme enthalten und damit AMDP-Methoden in verschiedenen Sprachen implementieren.
  • Um eine AMDP-Klasse mit AMDP-Prozedurimplementierungen allgemein verwendbar zu machen, können zusätzlich normale Methoden angeboten werden, welche die AMDP-Methoden in Abhängigkeit vom Datenbanksystem der Standarddatenbank des aktuellen AS ABAP aufrufen. Für Datenbanksysteme, die AMDP noch nicht unterstützen, kann dann eine alternative Implementierung in oder Native SQL in normalen Methoden angelegt werden.

Zusatz 2

... LANGUAGE db_lang

Wirkung

Bestimmt die datenbankspezifische Sprache, in der die AMDP-Methode implementiert wird. Die folgende Tabelle zeigt, die Syntax für db_lang, mit der die Sprache in Abhängigkeit vom angegebenen Datenbanksystem db angegeben werden muss, die Bedeutung und einen Verweis auf weitere Informationen.

db db_lang Sprache Weitere Informationen
HDB SQLSCRIPT SQLScript SQLScript für die SAP-HANA-Datenbank
HDB SQL DDL Noch nicht dokumentiert
HDB GRAPH GraphScript Graph Processing
HDB LLANG L L für die SAP-HANA-Datenbank (nur SAP-intern und nur für AMDP-Prozedurimplementierungen)

Die ABAP-Syntaxprüfung überprüft die Implementierung der Methode so weit wie möglich für die angegebene Sprache. Voraussetzung ist, dass die Überprüfung auf einem AS ABAP stattfindet, dessen Standarddatenbank vom angegebenen Datenbanksystem verwaltet wird. Die Überprüfung findet bezüglich der aktuell installierten Version der Datenbank statt. Auf einem AS ABAP mit einem anderen Datenbanksystem findet keinerlei Überprüfung statt.

Zusatz 3

... OPTIONS db_options

Wirkung

Gibt datenbankspezifische Optionen für die AMDP-Prozedur bzw. -Funktion an. Die folgende Tabelle zeigt, die Syntax für option in Abhängigkeit vom angegebenen Datenbanksystem db und die zugehörige Bedeutung.

db option Bedeutung
HDB READ-ONLY In der Datenbankprozedur bzw. Datenbankfunktion sind nur Lesezugriffe auf Datenbanktabellen erlaubt. Es dürfen nur andere AMDP-Methoden aufgerufen werden, die ebenfalls mit READ-ONLY gekennzeichnet sind.
HDB DETERMINISTIC Nur für AMDP-Skalarfunktionen. Wenn eine AMDP-Skalarfunktion mit der Option DETERMINISTIC während einer Query mehrmals mit gleichen Werten für die Eingabeparameter aufgerufen wird, wird sie nur einmal ausgeführt und das Ergebnis für die Dauer der Query gepuffert. In einer solchen AMDP-Skalarfunktion ist die Verwendung aller Funktionen verboten, welche bei wiederholtem Aufruf unterschiedliche Werte liefern könnten. Für mehr Informationen, siehe die SAP Hana SQLScript Reference.
HDB SUPPRESS SYNTAX ERRORS Nur für SAP-internen Gebrauch: Wenn in der AMDP-Prozedur auf nicht von ABAP verwaltete Datenbankobjekte zugegriffen wird, die während der Syntaxprüfung noch nicht vorhanden sind, werden keine Syntaxfehler sondern nur Syntaxwarnungen erzeugt. Wenn ein benötigtes Objekt dann auch zur Laufzeit fehlt, kommt es zu einer abfangbaren Ausnahme.

Die Option READ-ONLY kann auch mit dem Zusatz AMDP OPTIONS bei der Deklaration einer AMDP-Methode angegeben werden. Sie gilt, wenn sie entweder bei der Implementierung oder der Deklaration der Methode oder an beiden Stellen angegeben ist.

Die Optionen sind optional mit folgender Ausnahme: Bei der Implementierung einer AMDP-Funktion oder einer L-Prozedur muss READ-ONLY mindestens einmal angegeben werden.

Die angegebenen Optionen werden bei der Syntaxprüfung oder zur Laufzeit überprüft.

Hinweis

Die Option SUPPRESS SYNTAX ERRORS wirkt nicht auf die von ABAP verwalteten Datenbankobjekte, die hinter USING anzugeben sind.

Zusatz 4

... USING entities

Wirkung

Hiermit wird das DDL-Objekt in Methoden mit der Syntax ... BY DATABASE GRAPH WORKSPACE ... deklariert.

In anderen Fällen werden die von ABAP verwalteten Datenbankobjekte, auf die in der AMDP-Prozedur bzw. -Funktion zugegriffen wird, deklariert. Hinter USING müssen

  • alle Datenbanktabellen und DDIC-Views des ABAP Dictionary
  • alle von AMDP verwalteten Prozeduren und Funktionen

des aktuellen ABAP-Datenbankschemas angegeben werden, die in der Prozedur verwendet werden. Bei der Verwendung in der Prozedur sind die Namen der Datenbankobjekte ohne Angabe des Datenbankschemas anzugeben.

  • Die Datenbankobjekte von Datenbanktabellen und DDIC-Views des ABAP Dictionary heißen wie im ABAP Dictionary.
  • Die Angabe einer AMDP-Prozedur oder -Funktion erfolgt mit der Syntax class=>meth, wobei class der Name ihrer AMDP-Klasse und meth der Name der AMDP-Prozedur- bzw. Funktionsimplementierung ist.

Für eine CDS-View, die mit einer CDS-verwalteten DDIC-Datenbank-View verknüpft ist, kann hinter USING auch noch deren Name und für eine CDS-Tabellenfunktion kann noch der Name der zugehörigen AMDP-Funktion angegeben werden. Wenn eine CDS-Entität angegeben ist, müssen aber auch alle anderen Datenbankobjekte von CDS-Entitäten über diese angegeben werden.

Jedes hinter USING aufgeführte Datenbankobjekt muss auch in der Prozedur bzw. Funktion verwendet werden. Andere als obige von ABAP verwalteten Datenbankobjekte dürfen nicht hinter USING aufgeführt werden und auf andere als hinter USING angegebene Datenbankobjekte darf in der Prozedur bzw. Funktion nicht zugegriffen werden mit folgenden Ausnahmen:

  • Datenbankobjekte des aktuellen Datenbankschemas, wenn sie im Namensraum des Namensraumpräfix /1BCAMDP/ liegen. Bei der Verwendung in der Prozedur bzw. Funktion sind diese direkt und ohne Angabe des Datenbankschemas anzugeben.
  • Datenbankobjekte eines anderen Datenbankschemas über deren vollqualifizierten Namen , wofür auch logische Schemata verwendet werden können .

Auf Datenbankobjekte des aktuellen Datenbankschemas kann mit Ausnahme des Namensraums /1BCAMDP/ in einer von AMDP verwalteten Datenbankprozedur oder Datenbankfunktion also nur zugegriffen werden, wenn sie von ABAP verwaltet werden und hinter USING aufgeführt sind.

Hinweise

  • Die explizite Deklaration der in der Prozedur bzw. Funktion verwendeten Datenbankobjekte ist für verschiedene statische Überprüfungen wie Verwendungsnachweis oder Paketprüfung notwendig und erlaubt auch die Übertragung der Sichtbarkeit einer AMDP-Methode auf das Niveau der Datenbank.
  • Ein hinter USING aufgeführtes Objekt muss an dieser Stelle sichtbar sein. Eine AMDP-Methode einer anderen Klasse kann nur aufgeführt werden, wenn sie von der aktuellen Klasse verwendbar ist und kann entsprechend nur dann in der Datenbankprozedur bzw. Datenbankfunktion verwendet werden. Dies überträgt das Sichtbarkeitskonzept von ABAP Objects auf das Datenbanksystem, selbst wenn es dort keine solches Konzept gibt.
  • Für hinter USING angegebene Datenbanktabellen des ABAP Dictionary sorgt das AMDP-Framework dafür, dass bei statischen Zugriffen die Reihenfolge der Felder im Dictionary berücksichtigt wird, die von der Reihenfolge auf der Datenbank abweichen kann.
  • Die Angabe einer AMDP-Methode class=>meth hinter USING wird vom ABAP-Laufzeit-Framework als Verwendung der Klasse class erkannt und deren statischer Konstruktor wird vor dem ersten Aufruf der AMDP-Methode ausgeführt. Wenn eine AMDP-Prozedur bzw. -Funktion andere AMDP-Prozeduren oder -Funktionen verwendet kann also davon ausgegangen werden, dass der entsprechende statische Konstruktor ausgeführt wurde.
  • Auch AMDP-Methoden der eigenen Klasse müssen hinter USING aufgeführt werden, wenn sie in der Prozedur bzw. Funktion verwendet werden
  • Eine hinter OPTIONS angegebene datenbankspezifische Option SUPPRESS SYNTAX ERRORS wirkt nicht auf die hinter USING anzugebenden von ABAP verwalteten Datenbankobjekte. Für diese kann der Syntaxfehler nicht unterdrückt werden.
  • Der Namensraum /1BCAMDP/ ist für temporäre Datenbanktabellen, Views oder Datenbankprozeduren bzw. Datenbankfunktionen des aktuellen Datenbankschemas geeignet, auf die in AMDP-Prozeduren bzw. - Funktionen zugegriffen werden soll.
  • Bei der Implementierung von L-Prozeduren kann der Zusatz USING nicht angegeben werden.

Zusatz 5

... USING SCHEMA schema OBJECTS db_entities

Wirkung

Deklaration eines logischen Datenbankschemas und der darin enthaltenen Datenbankobjekte, auf die in der AMDP-Prozedur bzw. -Funktion zugegriffen wird.

Für schema können ausschließlich logische Datenbankschemata angegeben werden, denen das aktuelle ABAP-Datenbankschema zugeordnet werden darf. Der Zusatz USING SCHEMA muss für jedes derartiges logisches Datenbankschema angegeben werden, das in der AMDP-Methode in einem Makro $ABAP.schema verwendet wird. Die Wirkung des Zusatzes hängt vom physikalischen Datenbankschema ab, das dem logischen Datenbankschema schema zugeordnet ist:

  • Wenn dem logischen Datenbankschema das aktuelle ABAP-Datenbankschema über den vordefinierten Namen :abap_db_schema zugeordnet ist, müssen hinter OBJECTS alle Datenbanktabellen und Views des ABAP Dictionary angegeben werden, die in der Prozedur verwendet werden, und der Zusatz USING SCHEMA verhält sich für diese Dictionary-Objekte wie der Zusatz USING. Hinter OBJECTS dürfen aber keine von AMDP verwaltete Prozeduren und Funktionen angegeben werden.
  • Wenn dem logischen Datenbankschema ein anderes oder kein Datenbankschema zugeordnet ist, können hinter OBJECTS beliebige Namen aufgeführt sein, die den Namenskonventionen für Datenbanktabellen und Views des ABAP Dictionary folgen.

Der Zusatz USING SCHEMA muss hinter dem Zusatz USING aufgeführt werden und es ist nur ein Zusatz USING SCHEMA für ein logisches Datenbankschema schema erlaubt.

Hinweise

  • Der Zusatz USING SCHEMA ist für Szenarien vorgesehen, in denen Datenbankobjekte in manchen Systemen in einem beliebigen Datenbankschema und in anderen Systemen im ABAP-Datenbankschema definiert sind. Wenn solche Datenbankobjekte passend hinter einem geeigneten logischen Datenbankschema aufgeführt sind, kann die AMDP-Prozedur zwischen solchen Systemen transportiert werden, ohne dass die Syntax angepasst werden muss. Statt dessen genügt es, in der Transaktion DB_SCHEMA_MAP in jedem System die richtige Zuordnung vorzunehmen.
  • Es hat keinen Sinn, einem hinter schema angegebenen logischen Datenbankschema, das aktuelle ABAP-Datenbankschema explizit, d.h. nicht über den vordefinierten Namen :abap_db_schema zuzuordnen, da ein solches logisches Schema nicht im Makro $ABAP.schema verwendet werden kann.
  • Wenn in der AMDP-Methode von AMDP verwaltete Prozeduren und Funktionen verwendet werden, können sie nicht hinter USING SCHEMA sondern müssen immer hinter USING angegeben werden.
  • Wegen obiger Regeln zur Verwendung des Zusatzes USING SCHEMA, führt bei einem vorhandenen logischen Datenbankschema das Ändern des Kennzeichens, das die Zuordnung des ABAP-Datenbankschemas erlaubt, zu Syntaxfehlern in AMDP-Klassen, die dieses logische Datenbankschema bereits verwenden.

Zugriff auf Datenbankschemata






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

Length: 27375 Date: 20240523 Time: 131313     sap01-206 ( 351 ms )