Eigene Methoden in vererbter Klasse

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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 / 126 / 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 / 4782 / 294 / 628 ) »
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 / 3942 / 105 / 885 ) »
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 / 126 / 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

Vergleichbare Themen

1
Antw.
481
Views
Klasse und Methoden für eigene Prüfungen
von HH_ABAP » 08.07.2019 12:53 • Verfasst in ABAP® für Anfänger
1
Antw.
146
Views
Methoden eines Interfaces in Klasse implementieren
von MiTip » 06.12.2023 10:24 • Verfasst in ABAP® für Anfänger
0
Antw.
949
Views
Alle Methoden einer Klasse vergleichen
von miho » 18.09.2013 15:05 • Verfasst in ABAP® Core
5
Antw.
5962
Views
Alle Methoden einer Klasse vergleichen
von miho » 18.09.2013 15:10 • Verfasst in ABAP® Core
1
Antw.
1571
Views
Vererbter BUKRS auslesen
von deldok » 09.07.2008 10:41 • Verfasst in Human Resources

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

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.