ich habe hier ein kleines Problem mit meinem Tree, welches sich aber irgendwie nicht reproduzieren lässt. Manchmal passiert es, dass nach dem expandieren plötzlich alle Hauptknoten des Baumes doppelt und dreifach vorhanden sind. Wenn ich das Programm neu starte passiert das komischerweise (meistens) nicht mehr.
Ich hab mir hier schon die FInger wund gesucht, kann das Probelm aber nicht finden, vielleicht hat ja einer von euch noch eine Idee wo das Problem liegen könnte.
Hier der Code zum Aufbau des Tree:
- Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
- METHOD init_tree.
- *** Initialisieren des Trees und binden an den entsprechenden Container.
- ls_event TYPE cntl_simple_event,
- ls_folder TYPE zcs_nodes,
- ls_hierarchy_header TYPE treev_hhdr.
- *** Instanz erzeugen
- CREATE OBJECT gr_tree
- EXPORTING
- parent = me->gr_cont_tree
- node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
- no_toolbar = abap_true
- no_html_header = abap_true.
- ls_hierarchy_header-heading = 'Baugruppen/Arbeitsplätze/Befundarten'(t99).
- ls_hierarchy_header-tooltip = 'Filterkriterien'(t98).
- ls_hierarchy_header-width = 40.
- ls_hierarchy_header-width_pix = space.
- CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
- EXPORTING
- i_structure_name = me->co_node_struct
- CHANGING
- ct_fieldcat = me->gt_node_fcat
- EXCEPTIONS
- inconsistent_interface = 1
- program_error = 2
- OTHERS = 3.
- gr_tree->set_table_for_first_display(
- EXPORTING
- i_structure_name = me->co_node_struct
- is_hierarchy_header = ls_hierarchy_header
- CHANGING
- it_outtab = me->gt_node_lines
- it_fieldcatalog = me->gt_node_fcat ).
- *** Zuerst die Verzeichnisse an den Tree hängen.
- WHERE is_folder = abap_true.
- gr_tree->add_node(
- EXPORTING
- i_relat_node_key = ls_folder-node_key
- i_relationship = <fs_node>-relatship
- i_node_text = <fs_node>-node_text
- IMPORTING
- e_new_node_key = <fs_node>-node_key ).
- *** Dann die Blätter des Baumes :-)
- WHERE is_folder = abap_false.
- READ TABLE me->gt_nodes INTO ls_folder
- WITH KEY intern_key = <fs_node>-intern_relat.
- <fs_node>-relat_key = ls_folder-node_key.
- gr_tree->add_node(
- EXPORTING
- i_relat_node_key = <fs_node>-relat_key
- i_relationship = <fs_node>-relatship
- i_node_text = <fs_node>-node_text
- IMPORTING
- e_new_node_key = <fs_node>-node_key ).
- ** Ereignis registrieren
- CALL METHOD gr_tree->get_registered_events
- IMPORTING
- CLEAR ls_event.
- ls_event-eventid = cl_item_tree_control=>eventid_item_double_click.
- ls_event-appl_event = 'X'. "PAI nach event durchlaufen
- CALL METHOD gr_tree->set_registered_events
- EXPORTING
- *** Ereignisbehandler zuordnen
- SET HANDLER me->handle_double_click_node FOR gr_tree.
- gr_tree->frontend_update( ).
- GeSHi ©
Und hier noch ein Screenshot:
Uploaded with ImageShack.us
Danke schonmal.
Viele Grüße
Sascha