Ansicht
Dokumentation
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 timeDiese Dokumentation steht unter dem Copyright der SAP AG.
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.
- Der Zusatz BY DATABASE PROCEDURE definiert eine AMDP-Prozedurimplementierung für die Implementierung einer Datenbankprozedur.
- Der Zusatz BY DATABASE FUNCTION definiert eine AMDP-Funktionsimplementierung für die Implementierung einer Datenbankfunktion.
- Mit dem Zusatz BY DATABASE GRAPH WORKSPACE wird ein Graph-Workspace definiert, der durch eine Graphenprozedur über GraphScript konsumiert werden kann.
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.
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 CDS-Views, CDS-Tabellenfunktionen und CDS-Hierarchien über den Namen der CDS-Entität
- 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.
- Bei CDS-Views und CDS-Tabellenfunktionen sind dies die Namen der zugehörigen SQL-Views bzw. AMDP-Funktionen.
- 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
- Für CDS-Views und CDS-Tabellenfunktionen wird die Angabe der CDS-Entität empfohlen.
- 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.
- Für schema kann kein logischer HDI-Container angegeben werden.
- 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.
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 )