Show TOC Anfang des Inhaltsbereichs

Tabellenzeilen einfügen oder ändern  Dokument im Navigationsbaum lokalisieren

Um Zeilen in eine Datenbanktabelle einzufügen, unabhängig davon ob ihr Primärschlüssel schon darin vorhanden ist oder nicht, verwendet man die Open SQL-Anweisung:

MODIFY target lines.

Falls noch keine Zeile mit dem gleichen Primärschlüssel wie die einzufügende Zeile in der Datenbanktabelle vorkommt, dann arbeitet MODIFY wie INSERT, d.h. die Zeile wird eingefügt.

Falls schon eine Zeile mit dem gleichen Primärschlüssel wie die einzufügende Zeile in der Datenbanktabelle vorkommt, dann arbeitet MODIFY wie UPDATE, d.h. die Zeile wird geändert.

Aus Gründen der Performance, sollten MODIFY nur dann verwendet werden, wenn im Programm wirklich nicht zwischen diesen beiden Fällen unterschieden werden kann.

Es können, einzelne oder mehrere Zeilen lines in eine Datenbanktabelle target eingefügt bzw. geändert werden. Die Datenbanktabelle target kann, wie im Abschnitt Tabellezeilen einfügen beschrieben, statisch und dynamisch angegeben werden.

Einzelne Zeilen einfügen bzw. ändern

Um eine einzelne Zeile in eine Datenbanktabelle einzufügen bzw. zu ändern, schreibt man für lines:

MODIFY target FROM wa.

Der Inhalt des Arbeitsbereichs wa wird in die Datenbanktabelle dbtab geschrieben. Der Arbeitsbereich wa muss ein Datenobjekt sein, das mindestens die gleiche Länge und die gleiche Ausrichtung wie die Zeilen der Datenbanktabelle hat. Die Daten werden entsprechend der Struktur der Tabellenzeile und unabhängig von der Struktur des Arbeitsbereichs in die Datenbanktabelle gestellt. Es empfiehlt sich den Arbeitsbereich mit Bezug auf die Struktur der Datenbanktabelle zu deklarieren.

Falls die Datenbanktabelle noch keine Zeile mit dem gleichen Primärschlüssel wie im Arbeitsbereich angegeben enthält, wird eine neue Zeile eingefügt. Falls die Datenbanktabelle schon eine Zeile mit dem gleichen Primärschlüssel wie im Arbeitsbereich angegeben enthält, wird diese Zeile überschrieben. Falls die Zeile nicht verarbeitet werden konnte, da beispielsweise schon eine Zeile mit gleichem eindeutigen Sekundärindex auf der Datenbank existiert, wird sy-subrc wird auf 4 ansonsten auf 0 gesetzt.

Ein Kurzform obiger Anweisung ist:

MODIFY dbtab.

In diesem Fall wird implizit der Inhalt des Tabellenarbeitsbereich dbtab in die gleichnamige Datenbanktabelle geschrieben. Der Tabellenarbeitsbereich muss mit der Anweisung TABLES deklariert werden. Die dynamische Angabe der Datenbanktabelle ist dann nicht möglich. Die vor Release 4.0 notwendige Deklaration des Tabellenarbeitsbereichs sollte heute nicht mehr verwendet werden, um Doppeldeutigkeiten zu vermeiden.

Mehrere Zeilen einfügen bzw. ändern

Um mehrere Zeilen in eine Datenbanktabelle einzufügen bzw. zu ändern, schreibt man für lines:

MODIFY target FROM TABLE itab.

Die Zeilen der internen Tabelle itab, deren Primärschlüssel noch nicht in der Datenbanktabelle vorhanden ist, werden eingefügt. Die Zeilen der internen Tabelle itab, deren Primärschlüssel schon in der Datenbanktabelle vorhanden ist, überschreiben die entsprechenden Zeilen. Für den Zeilentyp von itab gilt das gleiche wie oben für den Arbeitsbereich wa.

Falls mindestens eine Zeile nicht verarbeitet werden konnte, da beispielsweise schon eine Zeile mit gleichem eindeutigen Sekundärindex auf der Datenbank existiert, wird sy-subrc wird auf 4 ansonsten auf 0 gesetzt. sy-dbcnt wird auf die Anzahl der geänderten Zeilen gesetzt.

 

Ende des Inhaltsbereichs