Ansicht
Dokumentation
ABENAMDP_FUNCTION_METHODS - AMDP FUNCTION METHODS
Fill RESBD Structure from EBP Component Structure rdisp/max_wprun_time - Maximum work process run timeDiese Dokumentation steht unter dem Copyright der SAP AG.
- Funktionsimplementierungen
Eine AMDP-Funktionsimplementierung ist eine AMDP-Methode zur Implementierung einer AMDP-Funktion als Datenbankfunktion. Eine AMDP-Funktionsimplementierung wird mit dem Zusatz BY DATABASE FUNCTION zur Anweisung METHOD im Implementierungsteil der Klasse als solche gekennzeichnet. Es können AMDP-Tabellenfunktionen und AMDP-Skalarfunktionen implementiert werden.
AMDP-Tabellenfunktionen
Es gibt zwei Arten von AMDP-Tabellenfunktionen:
- solche, auf die nur in anderen AMDP-Methoden zugegriffen werden kann
- solche, die CDS-Tabellenfunktionen implementieren, auf die in zugegriffen werden kann
AMDP-Tabellenfunktionen für AMDP-Methoden
Eine AMDP-Funktionsimplementierung für eine AMDP-Tabellenfunktion, auf die nur in AMDP-Methoden zugegriffen werden kann, wird in einer AMDP-Klasse wie eine normale statische Methode oder Instanzmethode in einem beliebigen Sichtbarkeitsbereich deklariert. Eine solche AMDP-Funktionsimplementierung ist im Deklarationsteil der Klasse nicht als solche erkennbar und es gilt im Wesentlichen das Gleiche wie für AMDP-Prozedurimplementierungen mit folgenden Unterschieden:
- Die AMDP-Funktionsimplementierung muss einen mit RETURNING definierten Rückgabewert haben. Der Datentyp des Rückgabewerts muss tabellarisch mit strukturiertem Zeilentyp sein, dessen Komponenten elementar sind. Die Tabellenart und der Tabellenschlüssel des Rückgabewerts sind beliebig.
- Neben dem Rückgabewert darf die AMDP-Funktionsimplementierung elementare und tabellarische Eingabeparameter aber keine Ein-/Ausgabeparameter oder Ausgabeparameter haben. Der spezielle Eingabeparameter connection ist nicht erlaubt.
- In der Schnittstelle der AMDP-Funktionsimplementierung dürfen keine klassenbasierten Ausnahmen mit RAISING deklariert werden.
- Die AMDP-Funktionsimplementierung muss bei der Deklaration der AMDP-Methode mit dem Zusatz AMDP OPTIONS READ-ONLY oder bei der Implementierung der AMDP-Methode mit dem Zusatz OPTIONS READ-ONLY auf Lesezugriffe eingeschränkt werden.
- Die AMDP-Funktionsimplementierung kann in ABAP nicht wie eine normale Methode aufgerufen werden und ist nicht als funktionale Methode in einem funktionalen Methodenaufruf verwendbar.
Die durch eine solche AMDP-Funktionsimplementierung definierte AMDP-Tabellenfunktion kann nur in anderen AMDP-Methoden aufgerufen werden. Sie kann nicht wie eine normale funktionale Methode in ABAP-Programmen aufgerufen werden.
Hinweise
- Ein Aufruf aus ABAP-Programmen ist nicht vorgesehen, da die Ergebnismenge dabei nicht direkt durch eine WHERE-Bedingung eingeschränkt werden kann.
- Ein Aufruf aus nicht durch AMDP verwalteten Datenbankprozeduren oder Datenbankfunktionen ist wie für jede Tabellenfunktion der Datenbank möglich, aber nicht empfohlen.
AMDP-Tabellenfunktionen für CDS-Tabellenfunktionen
Für eine AMDP-Funktionsimplementierung, die eine CDS-Tabellenfunktion implementiert gilt das Gleiche wie für obige AMDP-Tabellenfunktionen für AMDP-Methoden mit folgenden Unterschieden:
- Die Deklaration einer AMDP-Funktionsimplementierung für eine CDS-Tabellenfunktion ist nur im öffentlichen Sichtbarkeitsbereich einer statischen AMDP-Klasse möglich. Sie ist nicht in einem Interface möglich.
- Für die Deklaration muss eine spezielle Form der Anweisung CLASS-METHODS mit dem Zusatz FOR TABLE FUNCTION verwendet werden, welche die AMDP-Funktionsimplementierung als Implementierung einer CDS-Tabellenfunktion kennzeichnet.
- Die Parameterschnittstelle der AMDP-Funktionsimplementierung wird nicht mit der Anweisung CLASS-METHODS deklariert, sondern gemäß der Definition der zugehörigen CDS-Tabellenfunktion mit der Anweisung DEFINE TABLE FUNCTION in der CDS DDL der ABAP CDS generiert:
- Die Eingabeparameter der AMDP-Funktionsimplementierung werden durch die Eingabeparameter der CDS-Tabellenfunktion bestimmt. Es werden deren Namen verwendet und die ABAP-Typen aus deren Dictionary-Typen abgeleitet. Die Eingabeparameter sind immer elementar und nicht optional.
- Es wird ein Rückgabewert vom Typ einer Standardtabelle mit leerem Tabellenschlüssel namens result mit strukturiertem Zeilentyp angelegt. Die Komponenten des Zeilentyps werden durch die Elemente der CDS-Tabellenfunktion bestimmt. Es werden deren Namen verwendet und die ABAP-Typen aus deren Dictionary-Typen abgeleitet. Der Zeilentyp entspricht dem strukturierten Datentyp, den die CDS-Tabellenfunktion gegenüber ABAP repräsentiert, wobei bei einer mandantenabhängigen CDS-Tabellenfunktion zusätzlich auch die Mandantenspalte enthalten ist.
Die durch eine solche AMDP-Funktionsimplementierung definierte AMDP-Tabellenfunktion kann über die durch die CDS-Tabellenfunktion repräsentierte CDS-Entität
- in ABAP als Datenquelle lesender-Anweisungen
- in der CDS DDL der ABAP CDS als Datenquelle von CDS-View-Entitäten verwendet werden.
- in der CDS DDL der ABAP CDS als Datenquelle von verwendet werden.
Zusätzlich ist auch der Aufruf aus anderen AMDP-Methoden möglich. Ein Aufruf als normale funktionale Methode in einem ABAP-Programm ist nicht möglich.
Hinweise
- Der Zeilentyp der Rückgabewerts result einer AMDP-Funktionsimplementierung für eine mandantenabhängige CDS-Tabellenfunktion enthält kein Mandantenfeld, obwohl dieses in deren Elementliste deklariert sein muss.
- Eine AMDP-Funktionsimplementierung kann nur mit einer einzigen CDS-Tabellenfunktion verknüpft sein.
- Beim Anlegen einer AMDP-Funktionsimplementierung für eine CDS-Tabellenfunktion muss diese bereits aktiv vorhanden sein. Bei der Aktivierung einer neuen CDS-Tabellenfunktion wird eine leere AMDP-Tabellenfunktion in der Datenbank angelegt, die bei einem nicht durch AMDP verwalteten Zugriff eine Ausnahme auslöst. Beim ersten Zugriff auf die CDS-Tabellenfunktion durch das ABAP-Laufzeit-Framework, z.B. bei einem Zugriff über , implementiert die AMDP-Funktionsimplementierung die leere AMDP-Tabellenfunktion. Aber auch andere Frameworks, die CDS-Entitäten über deren Annotationen auswerten, können zur Implementierung der AMDP-Tabellenfunktion führen. Erst nach der Implementierung kann auch nativ auf die Tabellenfunktion zugegriffen werden.
- Ein Aufruf aus nicht durch AMDP verwalteten Datenbankprozeduren oder Datenbankfunktionen ist wie für jede Tabellenfunktion der Datenbank möglich, aber nicht empfohlen.
AMDP-Skalarfunktionen
Eine AMDP-Funktionsimplementierung für eine AMDP-Skalarfunktion wird in einer AMDP-Klasse wie eine normale statische Methode oder Instanzmethode in einem beliebigen Sichtbarkeitsbereich deklariert. Eine solche AMDP-Funktionsimplementierung ist im Deklarationsteil der Klasse nicht als solche erkennbar und es gilt das Gleiche wie für obige AMDP-Tabellenfunktionen für AMDP-Methoden mit folgenden Unterschieden:
- Der Datentyp des Rückgabewerts ist elementar.
- Die Datentypen von Eingabeparametern müssen ebenfalls elementar sein.
- In der Schnittstelle der AMDP-Funktionsimplementierung für AMDP-Skalarfunktionen dürfen klassenbasierte Ausnahmen mit RAISING deklariert werden.
- Eine AMDP-Skalarfunktion kann in ABAP wie eine normale Methode aufgerufen werden und ist als funktionale Methode in einem funktionalen Methodenaufruf verwendbar.
Die durch eine solche AMDP-Funktionsimplementierung definierte AMDP-Skalarfunktion kann in anderen AMDP-Methoden gemäß der Regeln für Skalarfunktionen verwendet werden.
Hinweise
- Eine Verwendung in nicht durch AMDP verwalteten Datenbankprozeduren oder Datenbankfunktionen ist wie für jede Skalarfunktion der Datenbank möglich, aber nicht empfohlen.
- Für eine AMDP-Skalarfunktion kann mit der datenbankspezifischen Option DETERMINISTIC hinter OPTIONS festgelegt werden, dass das Ergebnis der Funktion für die Dauer einer Query gepuffert wird.
RFUMSV00 - Advance Return for Tax on Sales/Purchases BAL_S_LOG - Application Log: Log header data
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 15561 Date: 20240523 Time: 163951 sap01-206 ( 179 ms )