Mit dem Interface könnte ich die Vererbungshierarchie zu Teilen aufheben. Nur hätte ich dann zwei Klassen CL1 und CL2, die beide das Interface IF1 mit der Methode OUTPUT( ) implementieren. Und damit hätte ich zwei Klassen mit textlich zwei identischen Methoden. D.h., am "Coding kopieren" ändert das nix und ich habe auch keine Vererbung bei den anderen Methoden. Oder war das anders gemeint?Unit605 hat geschrieben:Interface?
Code: Alles auswählen.
Klassennamen bestimmen ( cl_abap_classdescr=>describe_by_ojbect_ref + GET_RELATIVE_NAME oder cl_abap_classdescr=>GET_CLASS_NAME und SPLIT AT '\CLASS=')
Programmnamen der Klasse bestimmen ( FuBa SEO_CLASS_GET_INCLUDE_BY_NAME )
Read Textpool ... into table lt_textpool
(evtl. puffern )
read textpool with key KEY = Text-id
Code: Alles auswählen.
METHODS get_text
importing
!ID_TEXTID type CSEQUENCE
returning
value(rd_text) type string.
Code: Alles auswählen.
METHOD get_text.
field-symbols: <ld_text> type csequence.
assign (ID_TEXTID) to <ld_text>.
if sy-subrc eq 0.
rd_text = <ld_text>.
else.
rd_text = super->get_text( id_textid = id_textid ). "<-- Höher suchen
endif.
ENDMETHOD.
Code: Alles auswählen.
me->get_text( id_textid = 'TEXT-001' ).
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
GastX
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
GastX
Das sollte sie aber nicht.GastX hat geschrieben:...muss ich in den Unterklassen wohl immer redefinieren und das wollte ich vermeiden. Vor allem,da die GET_TEXT() bei allen Unterklassen identisch aussieht.
Code: Alles auswählen.
lv_output = text-001
Code: Alles auswählen.
super->get_text( ... )
lv_output = 'Redefinierter Text'(001). " Kommentar, der auf die Abweichung hinweist
Wenn die von mir vorgeschlagene READ-TEXTPOOL-Version in Betracht gezogen hättest, wäre die fehlende Redefinition dann aus dem selben Grund ein Problem. Denn wenn am Ende das Textelement die einzige Veränderung gegenüber der Superklasse ist, fragt sich dein Kollege "Warum überhaupt eine Vererbung - da hätte ich doch auch gleich die Hauptklasse nehmen können" und das veränderte Textelement kannst du nirgends kommentieren. ( Ok - du könntest das in der Doku erwähnen. Aber ich wie groß ist die Wahrscheinlichkeit dass jemand in einer fremden (nicht von SAP ausgelieferten) Klasse eine Doku findet und sich deshalb in deiner Klasse auf die Suche danach macht )GastX hat geschrieben:Sollte ich aber per Kommentar erklären, bevor ein Nachfolger denkt "ist eh identisch, dann ist die Redefinition doch für die Tonne".