Code: Alles auswählen.
MODULE 9001_pbo OUTPUT.
CLEAR main_container.
CREATE OBJECT main_container
EXPORTING
container_name = 'CONTAINER'.
IF node_tab IS INITIAL.
APPEND VALUE t_tree( node_key = '1'
relatkey = ' '
relatship = 0
text = 'node 1' ) TO node_tab.
APPEND VALUE t_tree( node_key = '2'
relatkey = ' '
relatship = 0
text = 'node 2' ) TO node_tab.
ENDIF.
BREAK-POINT. "hier kann man gv_execution umschalten
CASE gv_execution.
WHEN c_as_usual.
* das ist der normale Ausführungspfad. Tree wird erstellt und gezeichnet.
CLEAR tree.
CREATE OBJECT tree
EXPORTING
parent = main_container
node_selection_mode = cl_gui_simple_tree=>node_sel_mode_single.
tree->add_nodes( node_table = node_tab
table_structure_name = 'MTREESNODE' ).
CREATE OBJECT event_handler.
IF event_tab IS INITIAL.
APPEND VALUE #( eventid = cl_gui_simple_tree=>eventid_selection_changed
appl_event = ' ' ) TO event_tab.
ENDIF.
tree->set_registered_events( events = event_tab ).
SET HANDLER event_handler->handle_selection_changed FOR tree.
WHEN c_fail.
* das ist ein fehlerhafter Ausführungspfad. Container und Tree sind initial. Es müsste also dumpen, oder nichts anzeigen, oder?
FREE: main_container,
tree.
ENDCASE.
ENDMODULE.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
sapnup
Ich meine mich zu erinnern, dass ich vor Jahren auch mal vor dem Problem gestanden habe. Gab es da nicht irgendeine Flush- oder Refresh-Methode für?black_adept hat geschrieben:Wir brauchen definitiv einen Sticky-Thread für das Thema "Mehrere Controls in einem Container".
Das ist das selbe, wie das häufig gepostete Problem, dass ein ALV neu aufgebaut wird, aber die neuen Werte einfach nicht angezeigt werden.
Code: Alles auswählen.
READ TABLE control_tab ASSIGNING <control> WITH KEY table_line = tree.
IF sy-subrc <> 0.
APPEND tree TO control_tab.
ENDIF.
Genau so sollte das gemacht werden.sapnup hat geschrieben:Im neuen Wissen um diese Problematik habe ich das Anlegen von Gui-Elementen in einen Code-Teil ausgelagert der nur ein Mal durchlaufen wird. Ab da Arbeite ich dann nur noch mit den Methoden die mir die Controls bieten - also beim Baum z.B. Knoten löschen und neu anlegen, statt den ganzen Control jedes mal zu initialisieren. ...
Meine Faustregel: Abgesehen von OLE2-Objekten lasse ich zum Programmende alles vom Kernel/Garbage-Collector selber abbauen - die machen das ganz gut.sapnup hat geschrieben:... wie handhabt man es in ABAP mit den GUI-Elementen am Ende des Lebenszyklus einer GUI? Garbage Collector oder alles händisch abbauen?