Eigene Methoden in vererbter Klasse Thema ist als GELÖST markiert

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

Eigene Methoden in vererbter Klasse

Beitrag von Icke0801 (Specialist / 129 / 97 / 7 ) »
Hallo Gemeinde,

ich möchte gerne in einer geerbten Klasse die Methoden herausfinden. Sowohl die eigenen als auch die geerbten.
Rufe ich die Methode im Constructor auf, werden ja leider nur die Methoden der Klasse mit dem Original-Constructor gelesen.

Hat da jemand einen Tipp bzw. Stück Code für mich?

Klasse 1
I-> Klasse 2
I-> Klasse 3

Dieser Code reicht leider nicht für die vererbten Klassen.

Code: Alles auswählen.

method read_methods.
  data: lt_compname          type ztt_seocmpname,
        lr_describer         type ref to cl_abap_typedescr,
        lr_describer_ref     type ref to cl_abap_refdescr,
        tmp_abap_abstypename type        abap_abstypename,
        lv_abap_abstypename  type        abap_abstypename.
*&---------------------------------------------------------------------*
  " Feststellen, in welcher Klasse wir uns gerade bewegen
  lr_describer_ref ?= cl_abap_typedescr=>describe_by_data( me ).
  lr_describer = lr_describer_ref->get_referenced_type( ).
  tmp_abap_abstypename = lr_describer->absolute_name .
  lv_abap_abstypename  =  tmp_abap_abstypename+7.
*&---------------------------------------------------------------------*
  select cmpname
    from seocompo
    into table lt_compname
    where clsname eq lv_abap_abstypename
      and cmpname like 'SA_%'.
  atr_comp_name = lt_compname.
endmethod.
--
Grüße aus der Endlosschleife
-= Icke =-
abapTools

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


Re: Eigene Methoden in vererbter Klasse

Beitrag von ewx (Top Expert / 4918 / 332 / 655 ) »
Hier hatte ich mal eine Vererbungsübersicht programmiert.
Gilt allerdings nur für Klassen, nicht für deren Methoden. Aber das war ja auch deine Frage, oder?

Re: Eigene Methoden in vererbter Klasse

Beitrag von black_adept (Top Expert / 4159 / 136 / 960 ) »
Ich schätze, dass du für deine Klasse keinen eigenen Konstruktor definiert hast.
--> es wird beim Erzeugen deiner Klasse automatisch super->constructor( ) aufgerufen --> es werden auch nur die Methoden der vererbenden Klasse aufgerufen.

Du musst also einen eigenen Konstruktor anlegen um auch deine redefinierten Methoden aufrufen zu können.

Wenn du keine Lust hast, in deinem eigenen Konstruktor immer das Coding des Originalkonstruktors zu übernehmen stell die Instanzerzeugung deiner vererbenden Klasse auf protected und benutze z.B. eine Factorymethode um zunächst deine Klasse zu erzeugen und dann das Coding was in deinem Originalkonstruktor drin steht in der Factorymethode direkt aufzurufen. Dann kannst du auch die Methoden, die bisher vom Originalkonstruktor aufgerufen wurden in deinen abgeleiteten Klassen redefinieren.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Eigene Methoden in vererbter Klasse

Beitrag von Icke0801 (Specialist / 129 / 97 / 7 ) »
achja, manchmal ist die Lösung doch ganz einfach :D

Im Constructor der obersten Klasse wird folgende Methode implementiert.
METHOD read_methods.
" Zusammenstellen der Methoden zu den Satzarten
DATA: lo_class_descr TYPE REF TO cl_abap_classdescr.
FIELD-SYMBOLS: <fs_method> TYPE abap_methdescr.

lo_class_descr ?= cl_abap_typedescr=>describe_by_object_ref( me ).

DATA: lv_sa(3) TYPE c VALUE 'SA_'.
LOOP AT lo_class_descr->methods ASSIGNING <fs_method>.
IF <fs_method>-name+0(3) eq lv_sa.
APPEND <fs_method>-name TO atr_methods.
ENDIF.
ENDLOOP.
ENDMETHOD. "READ_METHODS
In der internen Tabelle lo_class_descr->methods stehen sowohl die eigenen als auch alle geerbten (public) Methoden.
In der Referenz „me“ wird die Referenz der aufrufenden Klasse übergeben.
--
Grüße aus der Endlosschleife
-= Icke =-
abapTools

Seite 1 von 1

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Feldroutine ADSO Transformation
vor einer Woche von codemaster1 2 / 65729
Stücklisten
vor einer Woche von Selma.schwarz 1 / 67417
Belege
vor einer Woche von Selma.schwarz 1 / 65508

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.

Vergleichbare Themen

Klasse und Methoden für eigene Prüfungen
von HH_ABAP » 08.07.2019 12:53
Alle Methoden einer Klasse vergleichen
von miho » 18.09.2013 15:10
Alle Methoden einer Klasse vergleichen
von miho » 18.09.2013 15:05
Methoden eines Interfaces in Klasse implementieren
von MiTip » 06.12.2023 10:24
Vererbter BUKRS auslesen
von deldok » 09.07.2008 10:41

Aktuelle Forenbeiträge

Feldroutine ADSO Transformation
vor einer Woche von codemaster1 2 / 65729
Stücklisten
vor einer Woche von Selma.schwarz 1 / 67417
Belege
vor einer Woche von Selma.schwarz 1 / 65508

Unbeantwortete Forenbeiträge

Stücklisten
vor einer Woche von Selma.schwarz 1 / 67417
Belege
vor einer Woche von Selma.schwarz 1 / 65508