ich versuche gerade aus einer Methode meines Component-Controllers eine Methode eines View-Controllers aufzurufen. Will mir nicht gelingen,
habt Ihr da eine Lösung?
zunächst einmal Danke für Eure Antworten. Also ein Beispiel wäre folgendes:
"C" sei eine Komponente. In der Komponente haben wir ein Main-Window, in dem ein View "V" angezeigt wird.
In V existiert die Methode "fill_structure". Wir wollen jetzt aus der Methode "WDDOINIT" des Componentcontrollers von C die Methode "fill_structure" von V aufrufen.
Mit dem Zaubertab geht es nicht, da wir da nur Methoden des Componentcontrollers oder Methoden von verwendeten Componentcontrollern ausführen können, richtig?
Im Buch zur Web-Dynpro Abap-Referenz findet sich eine Seite mit dem Hinweis, dass wir vom View aus an Methoden des Componentcontrollers kommen, aber nicht umgekehrt, wenn ich das richtig sehe. Daher habe ich es jetzt anders gelöst. Um am Beispiel zu bleiben, habe ich jetzt den zu füllenden Knoten im Componentcontroller erstellt und ihn in den Viewcontroller gemappt. Das Füllen passiert jetzt auf Ebene des Componentcontrollers und daher muss ich keine Methoden des View-Controllers aufrufen.
VG,
Bastian
P.S.: Es wäre trotzdem interessant, wenn jemand eine Möglichkeit kennen würde, wie man das umsetzen kann.
Ohne jetzt bislang viel in WebDynpro umgesetzt zu haben, finde ich deine derzeit gewählte Lösung weitaus besser als den View damit zu beauftragen.
Im MVC-Design (völlig losgelöst von WebDynpro) sollte Programmlogik möglichst in der Component stecken und der View sollte nur dazu dienen die fertig aufbereiteten Daten anzeigen.
lg ADT
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.
ok, also jetzt verstehe ich erst was du vor hast. Nur das warum entzieht sich mir noch. Das Füllen von benötigten Strukturen in Views sollte folgendermaßen erfolgen:
- Für Strukturen die auf mehreren Views gebraucht werden grundsätzlich im Componentcontroller
- Für Strukturen, die nur auf der View gebraucht werden kann sie im Componentcontroller erfolgen, denkbar ist aber auch das befüllen durch Feuern der Plugs und das Ausführen der damit verbundenen Handle-Methode des Views, oder durch Aufruf der Füll-Methode in der WDDOINIT.
Meines Wissens nach geht der von dir gewünschte Weg wirklich nicht, da du in den Views keine Möglichkeit hast Ereignisse anzulegen, welche du dann mit Ereignisbehandlern verbinden kannst.