Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
TimTo
Das beruhigt mich schonmal.. letztendlich kann man also sagen, dass das MVC-Pattern in Kombination mit einem Report nicht zu 100% umsetzbar ist?ralf.wenzel hat geschrieben:Also, MVC mit PAI & PBO ist nicht so ganz trivial...
Bei mir ist genau das Gegenteil der Fall. Alle Userinteraktionen geschehen (bisher) über Buttons in der Dynpro-Toolbar und werden im PAI-Modul behandelt. Lediglich bei der Änderung des ALV, also wenn der User Daten in editierbare Zellen einträgt/sie ändert behandle ich (momentan noch im Presenter?) das data_changed Ereignis. Innerhalb der Handler-Methode rufe ich dann Validierungsmethoden (die sich ebenfalls im Presenter befinden..) auf.ralf.wenzel hat geschrieben: Wenn du im Dynpro selbst keine Buttons brauchst...
Das stimmt, ich rede hier auch lediglich von Objekten da ich von der Denkweise her nichts anderes kenne.. ich arbeite in dem Programm lediglich mit Tabellen - Datensätze werden nicht durch Objekte repräsentiert.ralf.wenzel hat geschrieben: Die Zeilen eines ALV kannst du nicht als Objekt ansprechen, hier hat die SAP irgendwo aufgehört, in OO zu denken Aber natürlich kann man jede Zeile als Objekt verwalten, das habe ich schon so gemacht. Aber im ALV selbst ist dann Ende mit Objekt.
Also kommt man um das hin- und herschieben der Daten nicht rum? Ich hatte erst überlegt die Ausgabetabelle einfach in der Persistence-Klasse (öffentlich) zu halten, aber das kommt mir irgendwie auch nicht richtig vor..ralf.wenzel hat geschrieben: Die doppelte Datenhaltung ist eigentlich keine, weil sie technisch unterschiedliche Daten enthalten...
Meinst du die Object Services (Persistenzdienst, Transaktiondienst)?ralf.wenzel hat geschrieben: Guck dir mal das Konzept der OO-Transaktionen an. Wir schreiben hier gerade ein ganzes Modul ohne einen einzigen Report.....
TimTo hat geschrieben:Das beruhigt mich schonmal.. letztendlich kann man also sagen, dass das MVC-Pattern in Kombination mit einem Report nicht zu 100% umsetzbar ist?
Das ist das Problem, du hast Dynpro-Aktionen und ALV-Aktionen. Und die Behandlung unterscheidet sich grundlegend, darum mache ich das so (wie ich schon schrieb), dass ich so programmiere, dass es im Dynpro dem ALV-Mechanismus möglichst ähnlich ist. Ich raise z. B. ein Event (wobei es dann das Problem gibt, dass Leute das nicht verstehen und wieder rausprogrammieren), was dazu führt, dass man im Dynpro ein OO-ähnliches Verhalten bekommt. Nicht, weil OO-ähnliches Verhalten besser ist, sondern um möglichst wenig Stilbruch zu bekommen.TimTo hat geschrieben:Bei mir ist genau das Gegenteil der Fall. Alle Userinteraktionen geschehen (bisher) über Buttons in der Dynpro-Toolbar und werden im PAI-Modul behandelt. Lediglich bei der Änderung des ALV, also wenn der User Daten in editierbare Zellen einträgt/sie ändert behandle ich (momentan noch im Presenter?) das data_changed Ereignis. Innerhalb der Handler-Methode rufe ich dann Validierungsmethoden (die sich ebenfalls im Presenter befinden..) auf.
Das kommt drauf an, wie du das umsetzt. Du kannst natürlich eine Klasse haben, deren Objekte für je einen Datensatz stehen. Damit kannst du arbeiten. Aber am Ende übergibst du dem ALV eine Tabelle mit Datensätzen, das ist richtig.TimTo hat geschrieben:Das stimmt, ich rede hier auch lediglich von Objekten da ich von der Denkweise her nichts anderes kenne.. ich arbeite in dem Programm lediglich mit Tabellen - Datensätze werden nicht durch Objekte repräsentiert.
Was soll die Ausgabetabelle in der Persistenzklasse? Ausgabe ist Ausgabe und Persistenz ist Persistenz. Und öffentliche Attribute verletzten das Konzept der Kapselung, dann kannst du das Kapseln (platt gesagt) auch gleich sein lassen.TimTo hat geschrieben:Also kommt man um das hin- und herschieben der Daten nicht rum? Ich hatte erst überlegt die Ausgabetabelle einfach in der Persistence-Klasse (öffentlich) zu halten, aber das kommt mir irgendwie auch nicht richtig vor.
Und das hast du überlebt? Respekt!TimTo hat geschrieben:Das lustige ist, in der Uni habe ich ABAP anhand von Webdynpro gelernt..
Die Frage, was unnötiger Overhead ist und was nicht, ist hier oft Thema. Da gibt es keine Wahrheiten, nur Meinungen. Ich habe neulich in einem Lokal die Hausinstallation begutachtet, weil dort immer wieder der Strom ausfiel. Eine Katastrophe, sag ich dir. Man könnte es auch "pragmatischen Ansatz" nennen, das gilt aber nur für den Bau. Wenn du dann was ändern musst, machst du es praktisch neu. Und auch hier gibt es Leute, die (in Bezug auf ABAP) sagen: Dann ist neu machen pragmatischer als ändern. Kann man so sehen, ich sehe das nicht so.TimTo hat geschrieben:Leider musste ich feststellen, dass diese Sachen in der Realität (teilweise) als unnötiger Overhead angesehen werden (was ich bei kleineren Anwendungen die teilweise nur von einem User genutzt werden auch durchaus verstehen kann).