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

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)

ABAP im Wandel

Kategorie - ABAP

Die Programmiersprache ABAP ist bereits seit Jahren im Wandel und modernisiert sich in verschiedenen Konzepten. In diesem Artikel schauen wir uns das einmal im Detail an.

24.06.2022

ABAP Tipp - Clean Core

Kategorie - ABAP

In diesem Artikel mal etwas zum Thema Clean Core, was bedeutet es für den Entwickler, was sind Vorraussetzungen und auf was muss man achten.

17.06.2022

ABAP Tipp - Verarbeitung in neuem Task

Kategorie - ABAP

In diesem Tipp geht es um die asynchrone Verarbeitung in einem neuen Prozess und auf was du dabei achten solltest.

07.01.2022

ABAP Tipp - Konvertierung JSON nach Intern

Kategorie - ABAP

In diesem kleinen Tipp gehen wir darauf ein, wie du einen JSON Stream in ein internes Format konvertierst und dann ordentlich verwenden kannst.

10.12.2021

ABAP Tipp - Externe Währung nach Intern

Kategorie - ABAP

Ein kleiner Tipp um Daten aus einer Excel oder CSV-Datei in das korrekte interne Währungsformat zu konvertieren. Eine einfach Konvertierung kann schnell zu Fehlern führen.

03.12.2021