CORRESPONDING (Tabelle mit Defaultwert)
In dem Beitrag CORRESPONDING habe ich gezeigt, wie mit dem neuen Schlüsselwort CORRESPONDING Werte einer Struktur in eine andere übertragen werden können. Interessant dabei ist die Option, einen Defaultwert übergeben zu können, der in der Quellstruktur nicht gefüllt ist.
In diesem Beitrag zeige ich dir einen Codeschnipsel, der eine ganze Tabelle mit Corresponding überträgt.
Beispiel: Baumknoten ändern
Das GUI-Control CL_LIST_TREE_MODEL zur Darstellung eines Trees hat die Methode UPDATE_ITEMS mit der die einzelnen Felder eines Knotens geändert werden können.
Es könnte sein, dass eine Methode die Änderungen bereitstellen möchte, aber die ID des Knotens nicht weiß. Die Methode zur Änderung der ITEMS bekommt dann zum Beispiel folgendes:
obj->update_the_node( VALUE treemlitad( ( item_name = '1' chosen = abap_true u_chosen = abap_true ) ( item_name = '2' text = 'I changed!' u_text = abap_true ) ) ).
Variante 1a
Die Knoten-ID (NODE_KEY) ist nicht gefüllt. Die Methode muss diese nun dazu mappen:
DATA(lt_items_upd) = VALUE treemlitad(
FOR item IN it_items (
VALUE #( BASE CORRESPONDING #( item )
node_key = ‘MyNodeKey’ ) ) ) .
Variante 1b
Es kann anstelle eines festen Default-Wertes auch eine Bedingung verwendet werden:
DATA(lt_items_upd) = VALUE treemlitad(
FOR item IN it_items (
VALUE #( BASE CORRESPONDING #( item )
node_key = COND #(
WHEN item-disabled = ' '
THEN 'MyNodeKey-Normal'
ELSE 'MyNodeKey-Disabled' ) ) ) ).
Variante 2
Eine andere mögliche Variante, die Daten schnell mit der Knoten-ID anreichern zu können, ist diese hier:
DATA(lt_items_upd) = it_items. MODIFY lt_items_upd FROM VALUE treemlitef( node_key = 'MyNodeKey' ) TRANSPORTING node_key WHERE node_key = space.
- Meine Eclipse-Plugins - 22. November 2024
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024