Code: Alles auswählen.
* Regelt das Verhalten beim Drop
METHOD handle_right_tree_drop.
DATA: l_tmp_node_key TYPE tm_nodekey,
l_key TYPE tm_nodekey,
lt_item TYPE treemlitab,
lt_item1 TYPE treemlitab,
lt_node TYPE treemlnota,
l_item TYPE treemlitem,
l_objekt TYPE REF TO lcl_dragdropdataobject.
* Fehler abfangen
CATCH SYSTEM-EXCEPTIONS move_cast_error = 1.
l_objekt ?= drag_drop_object->object.
ENDCATCH.
IF sy-subrc = 1.
* Drag%Drop Abbrechen
CALL METHOD drag_drop_object->abort.
EXIT.
ENDIF.
ADD 1 TO g_next_node_key_right.
* Knotenschlüssel für Knoten im neuen Tree
l_key = g_next_node_key_right.
* Füge einen neuen Knoten im rechten Tree hinzu
CALL METHOD g_cl_tree_right->add_node
EXPORTING
node_key = l_key
isfolder = 'X'
disabled = 'X'
image = gc_lc
expanded_image = gc_lc
relative_node_key = node_key
item_table = l_objekt->l_item_table
EXCEPTIONS
node_key_exists = 1
node_key_empty = 2
illegal_relationship = 3
relative_node_not_found = 4
error_in_item_table = 5
OTHERS = 6.
* Wenn ein Fehler passierte
IF sy-subrc <> 0.
IF 1 = 2. MESSAGE e064(zmbe) WITH ''. ENDIF. "#EC *
CREATE OBJECT g_cl_msg
EXPORTING
i_msgid = 'ZMBE'
i_msgno = '064'
i_msgty = /auk/cl_msg=>gc_msgty_info.
ENDIF.
* Hole Objekt in lokale Tabelle
lt_item = l_objekt->l_item_table.
* Loope über jeden Eintrag und schreibe alle Einträge in Tabelle
* des rechten Tree´s
LOOP AT lt_item INTO l_item.
CASE sy-tabix.
WHEN '1'.
g_wa_adressdaten_rechts-urlaub = 'X'.
g_wa_adressdaten_rechts-nachname = l_item-text.
APPEND g_wa_adressdaten_rechts TO gt_adressdaten_rechts.
WHEN '2'.
g_wa_adressdaten_rechts-vorname = l_item-text.
APPEND g_wa_adressdaten_rechts TO gt_adressdaten_rechts.
WHEN '3'.
g_wa_adressdaten_rechts-id = l_item-text.
APPEND g_wa_adressdaten_rechts TO gt_adressdaten_rechts.
ENDCASE.
ENDLOOP.
* Initialisiere WA
CLEAR: l_item.
* Knotenschlüssel merken für Kindknoten
l_tmp_node_key = l_key.
* Knoten für Kindknoten
l_key = l_key + 1.
* Füge einen neuen Knoten im rechten Tree hinzu
[color=red]CALL METHOD g_cl_tree_right->add_node[/color]
EXPORTING
node_key = l_key
isfolder = ' '
disabled = 'X'
image = gc_3r
expanded_image = gc_3r
relative_node_key = l_tmp_node_key
item_table = l_objekt->l_item_table_1
EXCEPTIONS
[color=red] node_key_exists = 1[/color]
node_key_empty = 2
illegal_relationship = 3
relative_node_not_found = 4
error_in_item_table = 5
OTHERS = 6.
* Wenn ein Fehler passierte
[color=red] IF sy-subrc <> 0.[/color]
IF 1 = 2. MESSAGE e064(zmbe) WITH ''. ENDIF. "#EC *
CREATE OBJECT g_cl_msg
EXPORTING
i_msgid = 'ZMBE'
i_msgno = '064'
i_msgty = /auk/cl_msg=>gc_msgty_info.
ENDIF.
* Hole 2te Tabelle in lokale Variable
lt_item1 = l_objekt->l_item_table_1.
* Loope über jeden Eintrag und schreibe alle Einträge in Tabelle
* des rechten Tree´s
LOOP AT lt_item1 INTO l_item.
CASE sy-tabix.
WHEN '1'.
g_wa_adressdaten_rechts-strasse = l_item-text.
APPEND g_wa_adressdaten_rechts TO gt_adressdaten_rechts.
WHEN '2'.
g_wa_adressdaten_rechts-plz = l_item-text.
APPEND g_wa_adressdaten_rechts TO gt_adressdaten_rechts.
WHEN '3'.
g_wa_adressdaten_rechts-ort = l_item-text.
APPEND g_wa_adressdaten_rechts TO gt_adressdaten_rechts.
ENDCASE.
ENDLOOP.
ADD 1 TO l_key.
* Mach einen Update auf die Datenbank
UPDATE zmbe_adressdaten FROM TABLE gt_adressdaten_rechts.
ENDMETHOD.