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 Tipp - CLEAR right

Kategorie - ABAP

Richtig löschen? In diesem Artikel wollen wir uns einmal anschauen, wann es Sinn macht zu löschen und wie du effektiv vorgehen kannst.

12.05.2023

ABAP Tipp - Performance Kettensätze

Kategorie - ABAP

Schauen wir uns hier einmal die Performance beim Bilden von Kettensätzen mit DATA und FIELD-SYMBOL an. Welche Variante wird bei der Performance vorn liegen?

28.04.2023

ABAP Tipp - Adobe Formulare zu groß

Kategorie - ABAP

In diesem kleinen Tipp wollen wir uns anschauen, wieso im schlechtesten Fall Adobe Formulare größer werden, als sie eigentlich sein sollten.

18.11.2022

ABAP - ALV in 2022 noch relevant?

Kategorie - ABAP

Heute mal die scherzhafte Frage, benötigen wir im Jahr 2022 noch Reports die ALV Ausgaben erzeugen? Der Frage wollen wir in diesem Artikel einmal nachgehen.

01.07.2022

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