ich möchte in meinem Coding gerne die Möglichkeit nutzen, eine Objektmethode dynamisch aufzurufen. Mein Quelltext sieht folgendermaßen aus:
- Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
- DATA:
- go_re_object TYPE REF TO if_reca_bus_object,
- go_be TYPE REF TO if_rebd_business_entity,
- go_optrate_mngr TYPE REF TO if_reit_option_rate_mngr.
- * Immobilienobjekt erzeugen (unabhängig vom Typ)
- CALL METHOD cf_reca_bus_object=>find_by_imkey
- EXPORTING
- id_imkey = i_postab-imkey
- RECEIVING
- ro_instance = go_re_object.
- * dynamischer Methodenaufruf -> funktioniert so leider nicht ... erzeugt Kurzdump
- CALL METHOD go_re_object->('IF_REIT_HAS_OPTION_RATE~GET_OPTION_RATE_MNGR')
- RECEIVING
- ro_option_rate_mngr = go_optrate_mngr.
- * Lösung, die funktioniert (Widening Cast)
- go_be ?= go_re_object.
- * Optionssatzmanager lesen
- CALL METHOD go_be->('IF_REIT_HAS_OPTION_RATE~GET_OPTION_RATE_MNGR')
- RECEIVING
- ro_option_rate_mngr = go_optrate_mngr.
- GeSHi ©
Allerdings würde ich gerne die obere Variante mit dem Objekt go_re_object nutzen, da ich hier keine weiteren Objektvariablen wie bspw. go_be für eine Wirtschaftseinheit oder etwa go_ro für ein Mietobjekt definieren und den Methodenaufruf mehrfach im Quelltext unterbringen muss. Das Objekt go_re_object besitzt zur Laufzeit den Typ "cl_rebd_business_entity", genau wie das Objekt go_be nach dem Widening Cast.
Der Kurzdump, den ich erhalte, lautet: DYN_CALL_METH_NOT_FOUND, CX_SY_DYN_CALL_ILLEGAL_METHOD ("Es wurde versucht die Methode "IF_REIT_HAS_OPTION_RATE~GET_OPTION_RATE_MNGR"
der Klasse "CL_REBD_BUSINESS_ENTITY" aufzurufen.
In der Klasse "CL_REBD_BUSINESS_ENTITY" konnte aber die Methode
"IF_REIT_HAS_OPTION_RATE~GET_OPTION_RATE_MNGR" nicht gefunden werden.")
Besteht das Problem darin, dass der ursprüngliche definierte Datentyp des Objekts go_re_object, der if_reca_bus_object bzw. cl_reca_bus_object lautet, eine solch definierte Methode gar nicht aufweist?
Eigentlich dachte ich, dass ich mir zusätzliche Objektvariablen und mehrfache, gleiche Methodenaufrufe (die get_option_rate_manager ist bei allen Immobilienobjekten gleich) sparen kann.
Vllt. kann mir jemand weiterhelfen? Würde mich riesig freuen.
Vielen Dank schon einmal im Voraus!
Grüße
Stephan