Report-Entwurf mit Mediator-Entwurfsmuster

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

Report-Entwurf mit Mediator-Entwurfsmuster

Beitrag von Maximus (ForumUser / 12 / 5 / 1 ) »
Hallo zusammen,

ich bin dabei einen neuen Report zu entwerfen der dafür gedacht ist, SAP-Daten ins fremde System per API zu importieren bzw. diese dort zu aktualisieren oder zu löschen. Dabei versuche ich mich an einem ABAP-OO-Konstrukt.

In Anlage <Users.pdf> habe ich eine grobe UML-ähnliche Skizze hinzugefügt in der die Architektur einwenig veranschaulicht wird.

Der grobe Ablauf ist wie folgt:

Initialisierung bei Starten des Reports
1. Selektieren der Daten in beide interne Tabellen: t_chef_alv und t_empl_alv
2. Aufbauen einer Objekthierarchie anhand der beiden Tabellen: to_users
3. Erzeugen und Konfigurieren der ALV-Controlls: to_alv_ctrl

Action: Aktualisieren der geänderten Daten
1. der Benutzer markiert Zeilen in Employer-ALV-Grid und klickt auf Button <update>
2. über die Rückwärtsreferenz auf Controller wird die Methode update_empl() ausgeführt, die entsprechende Methode bei allen zuständigen Empoyer-Objekte aufruft.

....

Ich würde hier gerne von ABAP-OO Experten gerne noch paar Optimierungstipps bzw. Anregungen lesen.

Viele Grüße und vielen Dank im Voraus!
Maximus
Zuletzt geändert von Maximus am 22.11.2019 10:08, insgesamt 1-mal geändert.

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


Re: Report-Entwurf mit Mediator-Entwurfsmuster

Beitrag von jocoder (Specialist / 338 / 3 / 101 ) »
Soll das ganze nachdem MVC (Model, View, Controller) Entwurfsmuster aufgebaut werden?
Die User-Klassen wären das Datenmodell (Model)? Die ALV-Klassen die Views?

Was mir dabei aufgefallen ist, dass der Controller mehrere Aufgaben übernimmt (er hält die Referenzen der ALV-Klassen und steuert deren Verhalten?, die ALV-Klassen rufen die Controllermethoden INSERT_CHEF, UPDATE_CHEF bzw. INSERT_EMPL, UPDATE_EMPL auf? so meine Vermutung).
Vielleicht wäre es besser, die Controllermethoden INSERT_CHEF, UPDATE_CHEF bzw. INSERT_EMPL, UPDATE_EMPL in eine eigene Klasse, die nur die Event-Handler-Methoden enthält, zu verschieben?
Dann brauchen die ALV-Klassen ALV_CHEF und ALV_EMPL keine Referenzen auf den Controller zu halten und eine zyklische Abhängigkeit wird vermieden.

Folgende Benutzer bedankten sich beim Autor jocoder für den Beitrag (Insgesamt 2):
LegxisMaximus


Re: Report-Entwurf mit Mediator-Entwurfsmuster

Beitrag von Maximus (ForumUser / 12 / 5 / 1 ) »
jocoder hat geschrieben:
19.11.2019 11:59
Soll das ganze nachdem MVC (Model, View, Controller) Entwurfsmuster aufgebaut werden?
Was ist hier versuche ist ein modifizierter Vermittler-Entwurfsmuster.

Mein Ziel ist es eine flexible User-Objecthierarchie zu schaffen, die von deren Darstellung im ALV abgekapselt ist.

Die Controllerklasse soll einfach vermitteln in dem sie die im ALV-aufgerufene Funktionen an die korrespondierte Objekte weiterleitet.

Die Eventhändler-Methoden sind in den konkreten ALV-Klassen implementiert, die auf Klicke der Toolbar-Buttons der ALV-Grids reagieren und ensprechende Funktionen über das referenzierte Controller-Object an die User-Hierarchie weiterleiten.
jocoder hat geschrieben:
19.11.2019 11:59
Was mir dabei aufgefallen ist, dass der Controller mehrere Aufgaben übernimmt (er hält die Referenzen der ALV-Klassen und steuert deren Verhalten?, die ALV-Klassen rufen die Controllermethoden INSERT_CHEF, UPDATE_CHEF bzw. INSERT_EMPL, UPDATE_EMPL auf? so meine Vermutung). Vielleicht wäre es besser, die Controllermethoden INSERT_CHEF, UPDATE_CHEF bzw. INSERT_EMPL, UPDATE_EMPL in eine eigene Klasse, die nur die Event-Handler-Methoden enthält, zu verschieben?
Aus meiner Sicht ist es die Aufgabe des Vermittlers(Controllers) die Funktionen an die zuständigen Objekte zu delegieren. Damit vermeide ich wilde Verbindung zwischen den ALV-Eventhändler-Methoden und der relativ komplexen User-Hierarchie.

Aber die Controller-Klasse ist trotzdem überfüllt das stimmt.

Ich habe inzwischen eine Fabrik-Klasse(Singelton) für die Erstellung der User-Hierarchie und eine Daten-Klasse(Singelton) die die flachen Tabellen mit Lese-Methoden kapselt. Damit fällt die Controller-Klasse schlanker aus.

Re: Report-Entwurf mit Mediator-Entwurfsmuster

Beitrag von qyurryus (Specialist / 107 / 81 / 45 ) »
Zum einen erst ein mal Lob dafür, dass du dir Vorüberlegungen machst!
Ich würde dir generell empfehlen, alle Klassen komplett in Englisch zu benennen, statt einen Mischmasch anzuwenden.
Die Bedeutung von "Chef" wäre im englischen z.B. "Koch" (und ist im deutschen zu informell) - besser wäre vielleicht "manager" oder ggf. "employer". Dabei stellt sich auch die Frage, ob du mit "employer" wirklich Vorgesetzte meinst oder normale Mitarbeiter? Letzteres wäre "employee".

Re: Report-Entwurf mit Mediator-Entwurfsmuster

Beitrag von Maximus (ForumUser / 12 / 5 / 1 ) »
qyurryus hat geschrieben:
21.11.2019 09:14
Zum einen erst ein mal Lob dafür, dass du dir Vorüberlegungen machst!
Ich würde dir generell empfehlen, alle Klassen komplett in Englisch zu benennen, statt einen Mischmasch anzuwenden.
Die Bedeutung von "Chef" wäre im englischen z.B. "Koch" (und ist im deutschen zu informell) - besser wäre vielleicht "manager" oder ggf. "employer". Dabei stellt sich auch die Frage, ob du mit "employer" wirklich Vorgesetzte meinst oder normale Mitarbeiter? Letzteres wäre "employee".
Vielen Dank für den Lob. Gedanken sollte sich jeder Entwickler vor dem Implementieren der Software machen :-)
Auch Cleancode-Richtlinien sollte man beachten das stimmt. Ich mag es auch nicht wenn jemand Methoden wie z.B. GET_ARBEITER benennt. Notfalls hilft der geliebte Deepl. Im Diagramm war ich einwenig schlampig das stimmt.
So jetzt habe ich das Diagramm an einigen Stellen angepasst und das ganze in ABAP schon umgesetzt. Bin gespannt wie performant das ganze bei 1000 Users wird.

Seite 1 von 1

Vergleichbare Themen

15
Antw.
3520
Views
Entwurfsmuster in ABAP / OO
von merlin2539 » 02.02.2015 13:58 • Verfasst in ABAP® für Anfänger
1
Antw.
1647
Views
Literatur zum Thema Report Painter / Report Writer
von Heike D. » 05.10.2004 14:05 • Verfasst in Financials
14
Antw.
8917
Views
Übergabe einer internen Tabelle von Report zu Report
von Maleika » 01.09.2004 12:17 • Verfasst in ABAP® Core
1
Antw.
3355
Views
Report von einem anderen Report als Hintergrundjob einplanen
von kbit100 » 04.01.2016 09:46 • Verfasst in ABAP® für Anfänger
22
Antw.
5262
Views
interne Tabelle übergeben von Report zu Report
von cuncon » 26.10.2017 12:27 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

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

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140