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)
Werbung

ABAP Tipp - Wait for Task

Kategorie - ABAP

Heute einmal einen Tipp für die asynchrone Verarbeitung oder wenn ihr in speziellen Situationen die Verarbeitung in einen separaten Task geben wollt. Wie geht es im Anschluss weiter?

05.03.2021

ABAP Tipp - Performance INSERT vs VALUE

Kategorie - ABAP

In diesem Artikel schauen wir uns einmal die Performance der Einfüge-Operationen APPEND, INSERT und VALUE im Hinblick auf Tabellen an und bewerten die Performance und Stabilität bei der Entwicklung.

26.02.2021

ABAP Tipp - Suche im Quellcode

Kategorie - ABAP

Manchmal ist die Suche über verschiedene Quellcode in einem System nötig. Wir zeigen dir wie es in der SAP GUI und in Eclipse funktioniert.

24.04.2020

ABAP Tipp - Icons

Kategorie - ABAP

Icons oder auch Ikonen in SAP finden und richtig nutzen? Hier ein kleiner Guide zum Umgang mit den Bildern für unterschiedliche Zwecke.

06.03.2020

ABAP Tipp - Klassen und Dynpros

Kategorie - ABAP

Wie verwendest du am Besten lokale Klassen und Dynpros miteinander? Und funktioniert das Ganze eigentlich sinnvoll?

28.02.2020

Wir verwenden Cookies für unsere Dienste und Funktionen. Mehr Informationen