Eventhandler „intern“ oder „extern“?

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

Eventhandler „intern“ oder „extern“?

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
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!
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

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


Re: Eventhandler „intern“ oder „extern“?

Beitrag von nickname8 (Specialist / 134 / 17 / 19 ) »
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 / 4395 / 223 / 1182 ) »
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.18
Basis: 7.50

Re: Eventhandler „intern“ oder „extern“?

Beitrag von ewx (Top Expert / 4846 / 311 / 642 ) »
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 (Specialist / 150 / 36 / 49 ) »
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.
Ingo Hoffmann

ECC|S/4HANA|BTP
dbh SAP Solutions

Re: Eventhandler „intern“ oder „extern“?

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
nickname8 hat geschrieben:
11.09.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
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Eventhandler „intern“ oder „extern“?

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
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

Re: Eventhandler „intern“ oder „extern“?

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
ralf.wenzel hat geschrieben:
12.09.2019 11:23
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).
Wann?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Eventhandler „intern“ oder „extern“?

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Ich bin ein Freund von in sich autarken Klassen. Wenn ich also einen ALV baue, schreibe ich eine Klasse, die den SALV als Attribut* enthält und den Eventhandler, so dass ich diesen SALV in jedes Control einbauen kann, ohne etwas ändern zu müssen, wobei die Klasse derart parametrisierbar sein muss, dass in Control A die Toolbar dargestellt wird, in Control B aber bestimmte Buttons nicht. Hierfür benutze ich den Subscribe-Mechanismus, den ich hier schon mehrfach beschrieben habe (Button meldet sich an Toolbar an und implementiert ein „Button-Interface“, in dem die Funktion codiert ist, die er ausführen soll).

Das widerspricht keinesfalls obigem Konzept, denn auch die Button-Klasse ist in sich autark und könnte so auch woanders eingesetzt werden.

Insofern habe ich auch keine Scheu, die notwendige spezifische Datenbeschaffung aus dem SALV heraus aufzurufen.


Ralf

*vereinfachte Darstellung, in Wahrheit handelt es sich um ein Interface, hinter dem sich auch ein ALV verstecken könnte, an dem Punkt arbeite ich gerade
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Seite 1 von 1

Vergleichbare Themen

1
Antw.
2823
Views
Intern Tabelle als IN/OUT Parameter
von samir_nrw » 16.02.2011 15:32 • Verfasst in ABAP Objects®
1
Antw.
3404
Views
BSP Eventhandler aufrufen
von Tommy Nightmare » 13.03.2018 08:48 • Verfasst in Web-Dynpro, BSP + BHTML
13
Antw.
4208
Views
Eigenen EventHandler bauen?
von RIG » 13.11.2012 13:01 • Verfasst in ABAP® für Anfänger
0
Antw.
2399
Views
PopUp Fenster aus Eventhandler
von F12_man » 15.06.2007 09:39 • Verfasst in Web-Dynpro, BSP + BHTML
1
Antw.
1460
Views
Eventhandler OnInputProcessing wird mehrfach durchlaufen
von Rene » 23.05.2005 15:34 • Verfasst in Web-Dynpro, BSP + BHTML

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor einer Stunde von Lukas Sanders 2 / 787
Dialog-Container mit Toolbar/Status
vor 14 Stunden von black_adept gelöst 21 / 2616

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

Daten an Tabelle binden
vor einer Stunde von Lukas Sanders 2 / 787
Dialog-Container mit Toolbar/Status
vor 14 Stunden von black_adept gelöst 21 / 2616

Unbeantwortete Forenbeiträge

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