Komme mit Knotenschlüssel bei Drag&Drop nicht weiter!

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
2 Beiträge • Seite 1 von 1
2 Beiträge Seite 1 von 1

Komme mit Knotenschlüssel bei Drag&Drop nicht weiter!

Beitrag von Mavrix (ForumUser / 58 / 0 / 0 ) »
Hallo zusammen,

habe folgendes Coding implementiert.

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.
Die Funktion funktioniert auch so wie sie soll, nur leider kapier ich das mit den Schlüssel nicht mehr, immer beim ersten datensatz den ich verschiebe passt noch alles. Sobald der nächste kommt, springt er ab und sagt "fehler Node_Key_Exists" Stelle im Coding angemarkert.

Vielleicht kann mir einer helfen... komm nicht mehr weiter

Viele Grüße
Mavrix

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von edwin (Specialist / 300 / 9 / 68 ) »
Hallo,

wo setzt Du nach dem Einfügen Dein: "g_next_node_key_right",
so wie ich das sehe erhöhst Du nach dem Einfügen nur den "l_key"
aber nicht das globale Feld "g_next..."

Gruss Edwin

Seite 1 von 1

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.