Ich häng schon länger an einem etwas speziellem Problem
da ich mit dieser Klasse noch nie groß was zu tun hatte.
Es handelt sich um ein Tree Model in dem Knoten und Unterknoten aufgelistet werden.
Dabei wird ein docking Container der Klasse CL_GUI_DOCKING_CONTAINER erzeugt.
Wenn das programm nach dem PAI wieder das PBO durchläuft ändert sich leider nicht der aktualisierte Datensatz.
(nur wenn das programm geschlossen und neu gestartet wird) Gibt es vielleicht wie bei der Klasse cl_gui_alv_grid eine
art refresh_table_display die mir das ganze Ding aktualisiert.
ich weiß im moment nicht wo ich ansetzen soll. :-/
Vielleicht kennt jemand ja das Problem oder hat schon mehr Erfahrung mit der Darstellungsart.
Ein Möglichkeit (die Anfängern oft passiert) wäre, dass die Anzeige ständig neu erzeugt wird, also der Constructor mehrmals aufgerufen wird obwohl bereits eine Instanz existiert.
Dadurch liegen mehrere Objekte übereinander und nur das allererste wird angezeigt. Die "Aktualisierung" ist somit nicht zu sehen.
Für jede weitere Spekulation fehlt mir eine genauere Beschreibung der Ablauflogik.
Soweit ich das verstanden habe:
1.) EIn Dynpro mit Custom-Container in dem ein Tree-Model angezeigt wird.
2.) Der Benutzer wählt mit (Doppelklick?) einen EIntrag aus.
3.) In einem Docking-Container werden dann Details zu dem Datensatz in einem ALV-Grid angezeigt und verändert.
4.) Nachdem man die Änderung bestätigt hat (PAI/PBO?) wird der Datensatz im Tree-Model nicht aktualisiert.
Aber das kann nicht ganz passen, weil ein Docking-Container ja paralell zum Dynpro läuft, also für eine Dateneingabe mit Bestätigung (PAI/PBO) eher ungeeignet ist.
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.
wie kann man denn verhindern das der constructor mehrmals aufgerufen wird?
Ich dachte der Constructor wird nur einmalig beim Start des Reports aufgerufen?
du kannst abfragen ob deine Referenz nicht initial oder gebunden ist:
IF lr_docking_container IS INITITAL. Dann muss der constructor durchlaufen werden.
ODer du fragst: IF lr_docking_container IS BOUND. Dann darf der constructor nicht durchlaufen werden.