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.
1552
Views
Dynamischer Methodenaufruf mit dynamischer Tabelle
von mark.thk » 12.12.2018 10:34 • Verfasst in ABAP Objects®
5
Antw.
4249
Views
Dynamischer Methodenaufruf mit dynamischer Tabelle
von Tommy Nightmare » 08.09.2017 13:23 • Verfasst in ABAP Objects®
6
Antw.
2865
Views
Ist ein dynamischer Methodenaufruf möglich?
von Michael.Nett » 14.11.2005 15:21 • Verfasst in ABAP® Core
11
Antw.
1300
Views
Dynamischer Methodenaufruf (Teil 327)
von Icke0801 » 30.04.2022 08:28 • Verfasst in ABAP Objects®
2
Antw.
2377
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

PDF-Anzeige unter EDGE
vor 4 Tagen von jocoder 2 / 67
Etikettendruck mit SmartForms
vor einer Woche von a-dead-trousers 2 / 67

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

PDF-Anzeige unter EDGE
vor 4 Tagen von jocoder 2 / 67
Etikettendruck mit SmartForms
vor einer Woche von a-dead-trousers 2 / 67

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Wochen von Lucyalison 1 / 129
Group Items auf einer Filterbar
vor 4 Wochen von Bright4.5 1 / 164