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

3418

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 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 - String Verarbeitung

Kategorie - ABAP

In diesem praktischen Beispiel schauen wir uns die String Verarbeitung zur Ermittlung der CDS Namen in CamelCase an und wie du das mit ABAP umsetzen kannst.

15.10.2024

ABAP in der Praxis - Test Driven Development

Kategorie - ABAP

Wie funktioniert eigentlich TDD in der Praxis und gibt es einfache Beispiele zum Lernen in ABAP? In dieser Übung gehen wir auf den praktischen Teil ein.

24.09.2024

ABAP in der Praxis - Datenmenge zusammenführen

Kategorie - ABAP

Wir führen wir zwei unterschiedliche Datenmengen in ABAP zusammen, vor allem im Hinblick auf das Moderne ABAP? Eine praktische Aufgabe zum Thema.

17.09.2024

ABAP in der Praxis - Modern ABAP

Kategorie - ABAP

In dieser kleinen Aufgabe schauen wir uns bestehenden klassischen ABAP Quellcode an und versuchen diesen nach Modern ABAP zu optimieren.

27.08.2024

ABAP Tipp - Performance Datenfilterung

Kategorie - ABAP

Welche Anweisung verwendest du in ABAP zur Filterung von internen Tabellen und ist diese performant? In diesem Artikel mehr dazu.

13.08.2024