Ansicht
Dokumentation

ABENAMDP_FUNCTION_METHODS - AMDP FUNCTION METHODS

ABENAMDP_FUNCTION_METHODS - AMDP FUNCTION METHODS

Fill RESBD Structure from EBP Component Structure   rdisp/max_wprun_time - Maximum work process run time  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- 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

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

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

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-Funktionen

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.

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.

AMDP-Funktionen






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 )