In Superklasse auf Methode der Unterklasse zugreifen?

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).
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

In Superklasse auf Methode der Unterklasse zugreifen?

Beitrag von Gast ( / / 0 / 3 ) »
Hallo,

ich muss mir im Rahmen einer Webanwendung ein User-Exit-ähnliches Konzept überlegen.

Prinzipielle Vorgehensweise ist folgende:
Eine Basisklasse Z_BASISKLASSE implementiert den Standardprozess. Sie verfügt bspw. auch über eine Methode add_entry zum Hinzufügen eines wie auch immer gearteten Eintrags.
Weiterhin gibt es bspw. eine Methode add_entry_customer, die jedoch keinerlei Logik enthält.

Jettz gibt es mehrere Kunden, die eine vom Standardprozess abweichende Entwicklung benötigen.

Ich habe mir das wie folgt gedacht:
Für jeden Kunde wird eine Klasse Z_KUNDENKLASSE von Z_BASISKLASSE abgeleitet. Da ich nicht die komlette Logik der add_entry-Methode kopieren will, würde ich in Z_KUNDENKLASSE gerne nur die Methode add_entry_customer implementieren und dann sowas machen.

Code: Alles auswählen.

CALL METHOD super->add_entry
  EXPORTING
  IMPORTIN
In der Methode add_entry vonZ_BASISKLASSE sollte dann sowas passieren

Code: Alles auswählen.

ABAP
NOCH MEHR ABAP
call method add_entry_customer
UND NOCH MEHR ABAP
Die aufgerufene Methode add_entry_customer soll aber aus der Klasse Z_KUNDENKLASSE kommen und je nachdem welche Z_KUNDENKLASSE da kommt, die dort implementierte Logik ausführen.

Ist das möglich?
Ist das verständlich formuliert?


Danke für jede Antwort
Mike

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


Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Mike,

ich glaube, Du solltest dich mal über das Thema Überschreiben (REDEFINE) von Methoden informieren.

Damit schreibst Du Deine Methode in Deiner Subklasse, die dann statt der Methode der übergeordnete Klasse bzw. dessen Instanz aufgerufen wird.
Um auf das Verhalten der Basismethode zuzugreifen benutzt Du richtigerweise super->methode().
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von Gast ( / / 0 / 3 ) »
Ja, das ist mir klar (denke ich, man weiß ja nie so genau).

Mein Problem ist aber, dass ich nicht super->methode() aufrufen kann und danach weitere Anweisungen ausführen kann.

Kurzes Beispiel:
In meiner Superklasse habe ich eine Methode, die alles regelt, was standardmäßig mit der Freigabe eines Leistungserfassungsblattes zu tun hat.

Jetzt habe ich mehrere Kunden, die den Prozess an der gleichen oder an verschiedenen Stellen erweitert haben möchten.
Ich suche also nach einer eleganten Möglichkeit, in den definierten Standardprozess der innerhalb der Methode add_entry abläuft, eingreifen zu können, ähnlich wie SAP die Möglichkeit bietet an definierten Stellen USer_Exits auszuprogrammieren.

Ich möchte also nicht, dass vor oder nach dem Aufruf von super->methode() etwas passiert, sondern dass innerhalb von super->methode() kundenspezifisch das eine oder das andere Coding zusätzlich ausgeführt wird.

Die einzige Möglichkeit, die mir spontan einfällt, wäre: Den als Standard identifizierten Prozess für jeden Kunden durchkopieren.
Das gefällt mir aber nicht, da ich dann identischen Code an mehreren Stellen vorhalte und mir dadurch Erweiterung, Wartbarkeit, ... nicht unbedingt erleichtere.

Beitrag von Flo (Specialist / 161 / 0 / 0 ) »
Hallo,
du kannst die spezielle Methode in der Superklasse leer implementieren und in der add_entry methode aufrufen.
In der Subklasse redefinierst du die spezielle Methode add_entry_customer einfach und schreibst den benötigten Code rein. Einziger Punkt zu beachten ist das die Schnittstelle der add_entry_customer Methode festgelgt sein muss, da ABAP nicht erlaubt die Schnittstellen zu überlagern.
mfg Flo

Beitrag von Gast ( / / 0 / 3 ) »
Danke.

Danke auch dir ereglam, hab' deine Antwort offensichtlich geringfügig missverstanden :)

Seite 1 von 1

Vergleichbare Themen

19
Antw.
4050
Views
Unterklasse nutzt Methode der Basisklasse -> "falsche" Werte werden zurückgeliefert
von SAP_Coder » 13.03.2020 18:58 • Verfasst in ABAP Objects®
5
Antw.
2614
Views
In einer Methode auf Rangetabelle zugreifen
von NLengner » 25.04.2019 13:16 • Verfasst in ABAP® für Anfänger
7
Antw.
3900
Views
Oberklasse vs. Unterklasse
von ralf.wenzel » 10.01.2015 17:46 • Verfasst in ABAP Objects®
2
Antw.
2704
Views
Superklasse
von Moksha » 05.05.2006 16:24 • Verfasst in ABAP Objects®
2
Antw.
2181
Views
Redefinition von Methoden in einer Unterklasse
von Dolph » 23.11.2005 14:12 • Verfasst in ABAP Objects®

Ü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

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 7 Stunden von DeathAndPain gelöst 22 / 2894
Daten an Tabelle binden
vor 12 Stunden von Lukas Sanders 2 / 915
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 485

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

Dialog-Container mit Toolbar/Status
vor 7 Stunden von DeathAndPain gelöst 22 / 2894
Daten an Tabelle binden
vor 12 Stunden von Lukas Sanders 2 / 915
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 485

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2502
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9083