Dynamischer Methodenaufruf

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Dynamischer Methodenaufruf

Beitrag von Cola (ForumUser / 19 / 0 / 0 ) »
Hallo,

ich versuch mich grad an einem dynamischen Methodenaufruf, aber egal was ich mache, dieser endet immer mit der Exception 'cx_sy_dyn_call_illegal_method'.
Ich hab zu Testzwecken meinen Methodenaufruf jetzt mal auf folgende Methode beschränkt:

Klasse: ZZZ_Klasse
Methode: GET_XXX (Instance Method, Public)
Parameter: P_FUNC (Importing, CHAR3)
P_KZ (Importing, Optional, CHAR3)
P_TAB (Changing, ZZZ_TAB_T)

Code: Alles auswählen.

  TYPE-POOLS abap.

  DATA: lr_class     TYPE REF TO object,
        lv_error      TYPE REF TO cx_root,

        lv_value      TYPE char3 VALUE 'ABR',
        lv_value_2    TYPE char3 VALUE 'O', 
        lv_value_3    TYPE ZZZ_TAB_T,

        ls_parameter  TYPE abap_parmbind,
        lt_parameters TYPE abap_parmbind_tab.

    ls_parameter-name = 'P_FUNC'.
    ls_parameter-kind = cl_abap_objectdescr=>importing.
    GET REFERENCE OF lv_value INTO ls_parameter-value.
    INSERT ls_parameter INTO TABLE lt_parameters.

    ls_parameter-name = 'P_KZ'.
    ls_parameter-kind = cl_abap_objectdescr=>importing.
    GET REFERENCE OF lv_value_2 INTO ls_parameter-value.
    INSERT ls_parameter INTO TABLE lt_parameters.

    ls_parameter-name = 'P_TAB'.
    ls_parameter-kind = cl_abap_objectdescr=>changing.
    GET REFERENCE OF lv_value_3 INTO ls_parameter-value.
    INSERT ls_parameter INTO TABLE lt_parameters.

    ls_methode-classname = 'ZZZ_KLASSE'.
    ls_methode-methname =  'GET_XXX'.

    TRY.
        CREATE OBJECT lr_class TYPE (ls_methode-classname).

        CALL METHOD lr_class->(ls_methode-methname)
          PARAMETER-TABLE
            lt_parameters.

      CATCH cx_sy_dyn_call_error INTO lv_error.
        MESSAGE lv_error TYPE 'I' DISPLAY LIKE 'E'.
    ENDTRY.
Was hab ich übersehen? Hat jemand eine Idee was ich anders machen könnte?
Ich bin für jede Hilfe sehr dankbar.

Viele Grüße
cola

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Dynamischer Methodenaufruf

Beitrag von Ratazong (Specialist / 144 / 1 / 14 ) »
Wenn die Parameter in der Methode als IMPORTING definiert sind, solltest Du die mit "EXPORTING" aufrufen. Klappt bei mir.

Re: Dynamischer Methodenaufruf

Beitrag von Cola (ForumUser / 19 / 0 / 0 ) »
Oh man, bin ich doof! :oops:
Danke.

Das Problem ist nur, das ich das jetzt angepasst habe und es immer noch nicht geht. Warum auch immer....
Es kommt auf jeden Fall immer noch die gleiche Exception.
Aber es ist alles richtig gefüllt: der richtige Methodenbezeichnung, die korrekte Referenz auf die Klasse, die Parametertabelle ist nun auch korrekt gefüllt.
Was kann den da noch schief gehen? Methode wurde ohne Fehler redefiniert, ist aktiv und public.
Irgendwas überseh ich, bitte helft mir es zu sehen.
Danke schon mal.

Gruß,
Cola

Re: Dynamischer Methodenaufruf

Beitrag von Ratazong (Specialist / 144 / 1 / 14 ) »
Bei mir geht es problemlos:

Klasse: ZCL_AWTEST
Methode TEST
Parameter:
P_FUNC Importing Type CHAR3
P_KZ Importing Type CHAR3
P_TAB Changing Type IT001


Code: Alles auswählen.

TYPE-POOLS abap.

  DATA: lr_class     TYPE REF TO object,
        lv_error      TYPE REF TO cx_root,

         lv_value      TYPE char3 VALUE 'ABR',
         lv_value_2    TYPE char3 VALUE 'O',
         lv_value_3    TYPE IT001,

        ls_parameter  TYPE abap_parmbind,
        lt_parameters TYPE abap_parmbind_tab,

        ls_methode type tmdir.

    ls_parameter-name = 'P_FUNC'.
    ls_parameter-kind = cl_abap_objectdescr=>exporting.
    GET REFERENCE OF lv_value INTO ls_parameter-value.
    INSERT ls_parameter INTO TABLE lt_parameters.

    ls_parameter-name = 'P_KZ'.
    ls_parameter-kind = cl_abap_objectdescr=>exporting.
    GET REFERENCE OF lv_value_2 INTO ls_parameter-value.
    INSERT ls_parameter INTO TABLE lt_parameters.

    ls_parameter-name = 'P_TAB'.
    ls_parameter-kind = cl_abap_objectdescr=>changing.
    GET REFERENCE OF lv_value_3 INTO ls_parameter-value.
    INSERT ls_parameter INTO TABLE lt_parameters.

    ls_methode-classname = 'ZCL_AWTEST'.
    ls_methode-methodname =  'TEST'.

    TRY.
        CREATE OBJECT lr_class TYPE (ls_methode-classname).

        CALL METHOD lr_class->(ls_methode-methodname)
          PARAMETER-TABLE
            lt_parameters.

      CATCH cx_sy_dyn_call_error INTO lv_error.
        MESSAGE lv_error TYPE 'I' DISPLAY LIKE 'E'.
    ENDTRY.
Hast Du mal versucht, die Methode klassisch aufzurufen?

Dynamischer BAdI-Methodenaufruf

Beitrag von Cola (ForumUser / 19 / 0 / 0 ) »
Es läuft jetzt! :)
Danke noch mal.

Gruß,
Cola

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2130
Views
Dynamischer Methodenaufruf mit dynamischer Tabelle
von mark.thk » 12.12.2018 10:34 • Verfasst in ABAP Objects®
5
Antw.
4914
Views
Dynamischer Methodenaufruf mit dynamischer Tabelle
von Tommy Nightmare » 08.09.2017 13:23 • Verfasst in ABAP Objects®
6
Antw.
3285
Views
Ist ein dynamischer Methodenaufruf möglich?
von Michael.Nett » 14.11.2005 15:21 • Verfasst in ABAP® Core
11
Antw.
5173
Views
Dynamischer Methodenaufruf (Teil 327)
von Icke0801 » 30.04.2022 08:28 • Verfasst in ABAP Objects®
2
Antw.
2679
Views
Dynamischer Methodenaufruf: Methode nicht gefunden
von ralf.wenzel » 08.09.2014 18:20 • Verfasst in ABAP Objects®

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
vor 23 Stunden von black_adept gelöst 8 / 1733
HR-Entgeltnachweis
Gestern von ChrisB 4 / 2290

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
vor 23 Stunden von black_adept gelöst 8 / 1733
HR-Entgeltnachweis
Gestern von ChrisB 4 / 2290

Unbeantwortete Forenbeiträge

Export von Spools in XLSX
vor 4 Tagen von abapamateur 1 / 265
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 852
MS-Word als Editor
letzen Monat von tekko 1 / 4365