Eventhandler „intern“ oder „extern“?

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

Eventhandler „intern“ oder „extern“?

Beitrag von ralf.wenzel (Top Expert / 3434 / 152 / 222 ) » 11. Sep 2019 18:55

Moin.

Gegeben sei als Beispiel ein SALV-Grid, das für die Toolbar einen Eventhandler braucht.

Entwickler 1 schreibt dazu eine globale Klasse mit den entsprechenden Ereignisbehandler-Methoden. Dazu baut er ein Interface, das alle möglichen Methodendefinitionen enthält.

Entwickler 2 pappt die Methoden an die ALV-Klasse selbst, indem er das Interface an die Klasse hängt, die den ALV aufbaut.

Entwickler 2 sagt „Ist einfacher, muss ich nix suchen“

Entwickler 1 sagt: “Hassu noch alle Latten am Zaun???“

Welchen der beiden Wege würdet ihr gehen und warum? Ich sage extra (noch) nicht, was meine Antwort wäre, um den Verlauf der Diskussion nicht zu beeinflussen.


Ralf *lernt aus solchen Diskussionen immer wahnsinnig viel!


Re: Eventhandler „intern“ oder „extern“?

Beitrag von nickname8 (Specialist / 109 / 15 / 17 ) » 11. Sep 2019 20:05

Vom Vokabular her bist du eher Entwickler 1 😁 *duck und weg*

Zum Thema: ich mache das eher wie Entwickler 2, ich denke, dass die Ereignisse durchaus in die Klasse gehören welche auch das salv beinhaltet. Ist ja der selbe Kontext.

Re: Eventhandler „intern“ oder „extern“?

Beitrag von a-dead-trousers (Top Expert / 3253 / 84 / 820 ) » 11. Sep 2019 20:37

Da die Events des SALV in einem Interface gekappselt sind wäre mein erster Reflex Variante 1 zu machen. Es macht nämlich durchaus Sinn die Eventhandler "austauschbar" aufzubauen um so die Trennung von Oberfläche (SALV) und Verarbeitung (Handler) im Sinne eines MVC-Models zu gewährleisten.
Und jetzt kommt das ABER.
Die SALV wie auch die ALV-Klassen sind sehr stark auf den SAPgui zugeschnitten. Ein Austausch der Logik macht meines Erachtens dadurch nur bedingt Sinn. Solange die SAP kein Interface bereitstellt mit dem man z.B. unaghängig davon ob man sich im WD oder im SAPgui bewegt, dieselben Events mitbekommt, wiegt für mich das Argument der "Nähe" zum Coding von Entwickler 2 mehr. Lieber bau ich mir da eine eigene Klasse die das eigentliche "Eventhandling" (oder besser Controlling) macht und von der Viewklasse mit einer einheitlichen Schnittstelle aufgerufen werden kann. Die Viewklasse selbst kann dann entweder ein WD, SALV oder was auch immer sein, inklusive der echten klassenspezifischen Event-Handler.
Und das Argument, dass man durch eine eigene Event-Handler Klasse Code, den man immer wieder braucht vereinheitlichen und austauschbar gestalten kann, möchte ich gleich wiedersprechen, als dass ich nur sehr selten in diesen Genuss gekommen bin. Meist hab ich mir *gedacht* das könnte ich wiederverwenden und habs dann beim nächsten Projekt doch nicht geschafft es zu integrieren weil die Kundenanforderung doch die eine oder andere Spezialität beinhaltet hat, die es wieder unmöglich gemacht hat.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Re: Eventhandler „intern“ oder „extern“?

Beitrag von ewx (Top Expert / 4024 / 169 / 388 ) » 11. Sep 2019 22:22

Was adt sagt.

plus: M.E. sinnvoll wäre ein Interface für die ganzen Eventhandler-Methoden, das ich dann aber in die ALV-Klasse packen und dort ausprogrammieren würde.
Vorteil von dem Interface: Man kann es in jede andere Klasse hängen, die irgendwas mit ALV macht und muss nicht jede Methode einzeln definieren.
Bei Variante "Entwickler 1" hast du zwar eine extra Schicht eingebaut, die Anwendung und GUI trennt, jedoch sind im Detail die Verquickungen zwischen "Daten" und "Grid" so eng und komplex, dass ich mir bei einer strikten Trennung "Business Logik" und "GUI" die Füße breche und übermäßig unnötigen Overhead habe.

Re: Eventhandler „intern“ oder „extern“?

Beitrag von IHe (ForumUser / 45 / 13 / 11 ) » 12. Sep 2019 09:44

Ich mache es meistens wie Entwickler 1, sofern ich im betreffenden Report nur 1-2 SALVs habe. Bei komplexem Monitoring mit vielen SALVs tendiere ich eher zur Methode des Entwicklers 2, um eine passende hierarchische Übersicht im SE80-Treeview zu erhalten.

Re: Eventhandler „intern“ oder „extern“?

Beitrag von ralf.wenzel (Top Expert / 3434 / 152 / 222 ) » 12. Sep 2019 11:23

nickname8 hat geschrieben:
11. Sep 2019 20:05
Vom Vokabular her bist du eher Entwickler 1 😁 *duck und weg*
So kann man sich irren - ich bin Entwickler 3, der den beiden zuhört, sich beide Lösungen anguckt und sich seinen Teil dazu denkt (den ich hier noch schreiben werde, aber ich will - wie gesagt - den Verlauf der Diskussion nicht vorbeeinflussen).


Ralf *es gibt noch viel Schlimmere als mich

Re: Eventhandler „intern“ oder „extern“?

Beitrag von black_adept (Top Expert / 3268 / 55 / 588 ) » 12. Sep 2019 16:06

Moin Ralf,

für einfache Reports lege ich seltenst Klassen im DDIC ab um das Eventhandling zu steuern sondern mache das in programmlokalen Klassen. Und irgendwelche Interfaces baue ich da eigentlich nie ein.
Wenn ich das mal auf Reports runterbreche: Wenn das Progrämmchen hinreichend kurz ist: Alles in eine Klasse. Wenn es etwas komplexer wird werden mehrere (immer noch programmlokale) Klassen angelegt - und da könnten die Eventhandler mal in die eine mal die andere Klasse rutschen, je nachdem wie ich in dem Report gruppiere.

Für allgemeine Toolklassen, die wiederverwendet werden können ( ich schätze das meintest du`? ) und diesen SALV irgendwie gekapselt anbieten würde ich es nach Entwickler2 handhaben, da dann alles zusammen liegt was zusammen gehört. Aber irgendwelche Interfaces würde ich hier auch nicht einbauen - mir erschließt sich gerade nicht wozu die gut sein sollen bei der allgemeinen Problemstellung.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Aktuelle Forenbeiträge

SELECT-OPTIONS: NO INTERVALS auch in Fenster Mehrfachselekti
vor 27 Minuten von DeathAndPain 7 / 7179
Lookup Tabelle in Methode lesen und erweitern
vor 36 Minuten von DeathAndPain 7 / 135
ABAP Editor gelöst
vor einer Stunde von DeathAndPain 7 / 122
Fehler bei F4-Hilfe
vor einer Stunde von DeathAndPain 5 / 103

Unbeantwortete Forenbeiträge

Mini-SAP Einstiegs Logo ändern
vor 21 Stunden von Tron 1 / 85
Absenderland in Transaktion BP setzen
Gestern von SAP_ENTWICKLER 1 / 73
Funktionsbaustein QPMK_MSTCHA_VERS_CREATE
vor einer Woche von SAP_ENTWICKLER 1 / 104
OLE 2 Excel Datum konvertieren
vor einer Woche von Kerstin 1 / 93