Ansicht
Dokumentation

ABAPCALL_METHOD_FUNCTIONAL - CALL METHOD FUNCTIONAL

ABAPCALL_METHOD_FUNCTIONAL - CALL METHOD FUNCTIONAL

Vendor Master (General Section)   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

meth( ... ), funktionaler Methodenaufruf

... ${ meth( )
   $| meth( a )
    $| meth( p1 = a1 p2 = a2 ... )
    $| meth( $[ EXPORTING p1 = a1 p2 = a2 ...$]
            $[IMPORTING p1 =a1 p2 = a2 ...$]
            $[CHANGING  p1 =a1 p2 = a2 ...$] ) $} ...

Wirkung

Funktionaler Aufruf einer funktionalen Methode meth an einer geeigneten Leseposition für Funktionen und Ausdrücke. Der mit RETURNING deklarierte Rückgabewert der Methode wird als Operand verwendet und seine vollständige Typisierung bestimmt den Datentyp des Operanden. Die an Ausgabe- und Ein-/Ausgabeparameter angebundenen Aktualparameter werden wie beim eigenständigen Methodenaufruf behandelt.

Die Bedeutung der Syntax zur Parameterübergabe ist wie beim eigenständigen Methodenaufruf. Im Unterschied zum eigenständigen Methodenaufruf

  • kann der Rückgabewert beim funktionalen Methodenaufruf nicht explizit mit RECEIVING einem Aktualparameter zugeordnet werden,
  • können nicht-klassenbasierte Ausnahmen nicht mit EXCEPTIONS behandelt werden.

Wenn der Rückgabewert der Methode einen strukturierten Datentyp hat, kann ein funktionaler Methodenaufruf wie eine Struktur vor dem Strukturkomponenten-Selektor - aufgeführt werden, um auf eine Komponente der Struktur zuzugreifen.

Wenn eine funktionale Methode den gleichen Namen wie eine eingebaute Funktion hat, wird immer die funktionale Methode aufgerufen.

Wenn es bei der Verwendung des funktionalen Methodenaufrufs als Operand zu einer Ausnahme kommt, ist diese nicht immer behandelbar, sondern kann in Abhängigkeit von der Operandenposition direkt zu einem Laufzeitfehler führen.

Systemfelder

Bei jedem Methodenaufruf wird das Systemfeld sy-subrc in dem Augenblick des Aufrufes auf 0 gesetzt.

Hinweise

  • Beim funktionalen Methodenaufruf können klassenbasierte Ausnahmen, die aus der Methode propagiert werden, wie üblich in einer TRY-Kontrollstruktur behandelt bzw. weiter propagiert werden. Die nicht-klassenbasierten Ausnahmen einer funktionalen Methode führen dagegen immer zu einem Laufzeitfehler.
  • Für wiederaufsetzbare Ausnahmen gilt beim funktionalen Methodenaufruf das Gleiche wie bei allen Methoden. Wenn die Verarbeitung erfolgreich wieder aufgesetzt werden kann, wird die Anweisung, in der die Methode aufgerufen wurde, fertig ausgeführt.
  • An den Operandenpositionen, an denen funktionale Methoden angegeben werden können, sind auch Methodenverkettungen möglich.
  • Ein funktionaler Methodenaufruf, dessen erste Methode eine Instanzmethode ist, kann durch den Instanzierungsoperator NEW oder den Casting-Operator CAST eingeleitet werden.
  • Beim funktionalen Aufruf einer funktionalen Methode ist deren Rückgabewert immer ein impliziter temporärer Aktualparameter zugeordnet, der als Operand der aktuellen Operandenposition verwendet wird. Der Prädikatausdruck IS SUPPLIED ist innerhalb einer funktional aufgerufenen Methode für den Rückgabewert also immer wahr.
  • Da funktionale Methodenaufrufe beliebig schachtelbar sind, könnten Inline-Deklarationen für Aktualparameter zu unübersichtlichen Effekten führen und sind deshalb nicht erlaubt.
  • Da jeder Methodenaufruf das Systemfeld sy-subrc bei erfolgreicher Ausführung auf den Wert 0 setzt, können alle Anweisungen mit funktionalen Methodenaufrufen den Wert dieses Systemfelds ändern.
  • Wenn die Ergebnisse von funktionalen Aufrufen einer funktionalen Methode als Operanden von arithmetischen Ausdrücken verwendet werden, werden diese vor der Auswertung des arithmetischen Ausdrucks berechnet und das Ergebnis für die Verwendung an den entsprechenden Operandenpositionen zwischengespeichert. Dies kann vor allem bei Nebenwirkungen des Methodenaufrufes zu überraschenden Ergebnissen führen. Siehe das Beispiel unter Arithmetische Ausdrücke.

Beispiel

Funktionaler Aufruf einer Methode. Im Gegensatz zum Beispiel beim eigenständigen Methodenaufruf wird der Rückgabewert dem Ergebnis zugewiesen. Die dort vorgenommenen Inline-Deklarationen ist hier dagegen nicht möglich.

Beispiel

Die funktionale Methode factorial dieses Beispiels hat einen Rückgabewert fact vom Typ int8, der in einem Ausdruck auf der rechten Seite einer Zuweisung verwendet wird.

Beispiel

Die funktionale Methode get dieses Beispiels hat einen strukturierten Rückgabewert, auf deren Komponente carrname zugegriffen wird.






Vendor Master (General Section)   BAL Application Log Documentation  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 8573 Date: 20240328 Time: 181813     sap01-206 ( 114 ms )