This is a test message to test the length of the message box.
Login
ABAP Tipp Tabellen vergleichen
Erstellt von Software-Heroes

ABAP Tipp - Tabellen vergleichen

3723

Du realisierst gerade einen ALV mit Bearbeitungsfunktionen und möchtest dann vergleichen was sich alles geändert hat nach der Bearbeitung durch den Anwender? Kein Problem, wir zeigen dir eine schnelle und einfache ösung.

Werbung


Das Szenario ist relativ einfach: Du bietest dem Anwender einen ALV zur Bearbeitung seiner Daten an. Hier kann er Daten verändern, neue Datensätze aufnehmen oder vielleicht auch wieder löschen. Wenn der User dann auf den Speichern Button klingt müssen die Daten nun auf der Datenbank abgelegt und angepasst werden.

Manche setzen auf die Methode jede Aktion des Anwenders zu loggen in separaten Tabellen und diese dann einfach abzuarbeiten. Doch wieder immer gibt es einen einfacheren Weg dies zu realisieren.

 

Vorbereitung

Dazu wollen wir zusammen ein kleines Testszenario aufbauen, welches du auch bei dir verwenden kannst. Dazu musst du nur die aufgeführten Buchungskreise anpassen, damit sie zu welchen aus deinem System passen.


" Selektion der Daten
SELECT * FROM t001
 WHERE bukrs IN ('A001','A002','A003','A004','A005')
 INTO TABLE @DATA(lt_old).

" Neue Tabelle
DATA(lt_new) = lt_old.
DELETE lt_new INDEX 1.
DATA(lr_t001) = REF #( lt_new[ 1 ] ).
lr_t001->butxt = 'Änderung'.
lr_t001 = REF #( lt_new[ bukrs = 'A004' ] ).
lr_t001->ktopl = 'ABC'.

 

Wir lesen dazu fünf Eintrage aus der Tabelle T001 (Buchungskreise) die in dem Select Statement fest hinterlegt sind. Dann übernehmen wir die Daten in eine neue Tabelle, die Alte dient uns später als Vergleich was sich alles geändert hat. Dann passen wir die neue Tabelle entsprechend an:

  • Löschen des Eintrags an der ersten Stelle
  • Zuweisung des neuen ersten Eintrags und Anpassung des Textes
  • Lesen des Eintrags A004 und Anpassung des Kontenplans

 

Vergleich

Damit kann der Vergleich durchgeführt werden. In der internen Tabelle lt_old befinden sich die ursprünglich selektierten Daten, in der Tabelle lt_new befinden sich die geänderten Daten, die der Anwender angepasst hat. Für den Vergleich rufen wir einfach den folgenden Funktionsbaustein auf:


DATA:
  lt_del  TYPE STANDARD TABLE OF t001,
  lt_add  TYPE STANDARD TABLE OF t001,
  lt_mod  TYPE STANDARD TABLE OF t001,
  ld_flag TYPE abap_bool.

" Vergleichen
CALL FUNCTION 'CTVB_COMPARE_TABLES'
  EXPORTING
    table_old  = lt_old
    table_new  = lt_new
    key_length = 14 
  IMPORTING
    table_del  = lt_del
    table_add  = lt_add
    table_mod  = lt_mod
    no_changes = ld_flag.

Der Vergleich wurde durch den Baustein durchgeführt und wir erhalten 3 interne Tabellen zurück, die wir nun einfach verarbeiten können. Somit haben wir eine klare Darstellung was angepasst wurde, welche Daten neu sind und was für Daten gelöscht wurden.Die internen Tabellen haben alle den gleichen Datentyp, können damit für die Anpassung direkt verwendet werden.

Hinweis: Das Feld key_length muss vorher berechnet werden und stellt den Schlüssel der Tabelle dar. In diesem Fall ist die Länge 14 und errechnet sich aus den Feldern MANDT und BUKRS (3 4), die den Schlüssel bilden. Da wir uns in einem Unicode System befinden, muss der Schlüssel Mal 2 genommen werden, da jedes Zeichen 2 Stellen benötigt.

 

Fazit

Der Vergleich von zwei Tabellen ist mit dem passenden Werkzeug ganz einfach für dich und sollte mit unserem kleinen Tipp kein Problem mehr für dich sein.


Enthaltene Themen:
TippTabelle vergleichen
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


ABAP in Praxis - String Verarbeitung

Kategorie - ABAP

In diesem praktischen Beispiel schauen wir uns die String Verarbeitung zur Ermittlung der CDS Namen in CamelCase an und wie du das mit ABAP umsetzen kannst.

15.10.2024

ABAP in der Praxis - Test Driven Development

Kategorie - ABAP

Wie funktioniert eigentlich TDD in der Praxis und gibt es einfache Beispiele zum Lernen in ABAP? In dieser Übung gehen wir auf den praktischen Teil ein.

24.09.2024

ABAP in der Praxis - Datenmenge zusammenführen

Kategorie - ABAP

Wir führen wir zwei unterschiedliche Datenmengen in ABAP zusammen, vor allem im Hinblick auf das Moderne ABAP? Eine praktische Aufgabe zum Thema.

17.09.2024

ABAP in der Praxis - Modern ABAP

Kategorie - ABAP

In dieser kleinen Aufgabe schauen wir uns bestehenden klassischen ABAP Quellcode an und versuchen diesen nach Modern ABAP zu optimieren.

27.08.2024

ABAP Tipp - Performance Datenfilterung

Kategorie - ABAP

Welche Anweisung verwendest du in ABAP zur Filterung von internen Tabellen und ist diese performant? In diesem Artikel mehr dazu.

13.08.2024