This is a test message to test the length of the message box.
Login
ABAP Tipp dynamische Methodenaufrufe
Erstellt von Software-Heroes

ABAP Tipp - Dynamische Methodenaufrufe

3910

Nicht immer ist ein direkter Methodenaufruf der dich zum Ziel bringt. Vielleicht möchtest du etwas Dynamik in deine Programmierung bringen, dazu unser heutiger Tipp.

Werbung


In einigen Situationen kann es vorkommen, dass du einmal von einem vordefinierten Weg abweichen möchtest und eine etwas dynamischere Lösung probieren willst.

Zum Beispiel musst du verschiedene Berechnungen durchführen, die immer ein Set Parameter erwarten und ein Ergebnis zurückgeben. Dabei kann die Anzahl der Berechnungsschritte und die Reihenfolge sich stetig verändern oder gewisse Vorraussetzungen haben. Damit du dies erreichen kannst, musst du auf die dynamische Programmierung zurückgreifen.

 

Definierte Schnittstelle

Am Einfachsten geht dies mit einer vordefinierten Schnittstelle. Wenn alle Parameter bereits vorgegeben sind und sich auch nicht mehr ändern, kann ein dynamischer Aufruf innerhalb eine Klasse einfach umgesetzt werden.

Dazu erzeugen wir eine Instanz unserer Klasse und rufen die Methode auf, die als Text in der Variable p_meth übergeben wird. Wenn wir das Ganze in Klammern packen, dann ist der dynamische Aufruf auch schon fertig. Auf diese Weise kannst du auch statische Methoden aufrufen und dabei die Klasse auch dynamisch angeben.


" Definition der Variablen
DATA(lo_class) = NEW zcl_test_class( ).

" Dynamischer Aufruf
CALL METHOD lo_class->(p_meth)
  EXPORTING
    ed_num   = 3
  RECEIVING
    rd_value = DATA(ld_value).

 

Undefinierte Schnittstelle

In den wenigsten Fällen hast du wahrscheinlich keine gleiche Methodenschnittstelle, sondern es weichen mehrere Parameter ab, haben einen anderen Typ oder fehlen ganz und gar.

In diesem Fall gibt es den Aufruf mit einer Parameter Tabelle. Hier werden die Parameter in einer Tabelle definiert und mit Referenzen von lokalen Variablen versorgt, die die Werte an die Methode geben und die Werte auch darüber zurückerhalten.


" Definition der Variablen
DATA: 
  lt_param TYPE abap_parmbind_tab,
  ld_value TYPE string,
  ld_num   TYPE i VALUE 3.

" Befüllung der Tabelle
INSERT VALUE #( name = 'ED_NUM' kind = cl_abap_objectdescr=>exporting value = REF #( ld_num ) ) INTO TABLE lt_param.
INSERT VALUE #( name = 'RD_VALUE' kind = cl_abap_objectdescr=>receiving value = REF #( ld_value ) ) INTO TABLE lt_param.

" Dynamischer Aufruf
CALL METHOD lo_class->(p_meth)
  PARAMETER-TABLE lt_param.

 

In diesem Fall muss immer erst eine Parameter Tabelle befüllt werden, die die Referenzen auf die Variablen und die Schnittstellendefinition enthält, um im Anschluss die Methode aufzurufen.

Wie du siehst haben wir auch die neuen Befehle VALUE und REF verwendet. Value haben wir bereits in einem früheren Artikel erklärt und Ref erzeugt eine Datenreferenz von dem angegeben Objekt und gibt diese zurück.

 

Fazit

Du siehst, die dynamische Programmierung ist auch kein Hexenwerk und hilft dir dabei Lösungen mit einfachen Mitteln und mit nicht redundaten Elementen umzusetzen. Wenn du mehr zu dem Thema und dem Call Method erfahren willst, dann lies dir doch einfach die offizielle Dokumentation von SAP durch.

PS: In unserem Artikel haben wir bereits darauf hin gewiesen, dass die Verwendung von Call Method obsolet ist, dies gilt aber nicht für dynamische Aufrufe.

 

Quelle:
SAP Dokumentation Call Method


Enthaltene Themen:
TippDynamisch
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Dienstag und Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


ABAP in Praxis - Fiori Daten fehlerhaft

Kategorie - ABAP

In diesem kleinen Praxisbeispiel schauen wir uns einen Fehlerfall in Fiori an. Hier werden die Daten im UI falsch angezeigt, obwohl alles sonst richtig zu sein scheint. Die Spur führt uns durch den RAP Stack in eine andere Richtung.

10.10.2025

ABAP Tipp - Handling von Funktionsbausteinen

Kategorie - ABAP

Wie gehst du eigentlich mit Funktionsbausteinen und der Fehlerbehandlung innerhalb von ABAP um? In diesem kleinen Tipp schauen wir uns die Behandlung auch im Rahmen von RFC an.

26.08.2025

ABAP Tipp - Generische Datentypen

Kategorie - ABAP

Was unterscheidet eigentlich CLIKE von CSEQUENCE? Generische Typen können manchmal etwas undurchsichtig sein und als ABAP Entwickler wählen wir vielleicht den Typen zu generisch.

12.08.2025

Recycling-Heroes (Erklärt)

Kategorie - ABAP

Was haben die Recycling-Heroes mit moderner ABAP Entwicklung und ABAP Cloud zu tun? In diesem Artikel geben wir Einblicke in die Idee.

15.07.2025

ABAP Tipp - Ranges und Select-Options

Kategorie - ABAP

Ranges und Select-Options in ABAP sind sehr ähnlich und doch gibt es feine Unterschiede bei der Nutzung im ABAP OO Kontext. Hier schauen wir uns die moderne Verwendung an.

09.05.2025