Tabellenzugriff mit OpenSQL (ABAP): Unterschied zwischen den Versionen
Matt (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Matt (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 5: | Zeile 5: | ||
= Einzelnen Datensatz in eine Struktur lesen = | = Einzelnen Datensatz in eine Struktur lesen = | ||
= Loop mit SELECT über Tabelle = | = SELECT - ENDSELECT - Loop mit SELECT über Tabelle = | ||
<syntaxhighlight lang="abap"> | |||
SELECT * FROM dbtab INTO ls_tab | |||
" Line 1 | |||
" Line 2 | |||
" Line 3 | |||
ENDSELECT. | |||
</syntaxhighlight> | |||
Die SELECT-ENDSELECT-Kontrollstruktur sollte nicht mehr verwendet werden, weil der ABAP-Prozessor dabei jeden Datensatz einzeln vom Datenbankserver holt, und man damit unnötig teuer Daten vom Datenbankserver holt bzw. ihn unnötig mit kleinkram beschäftigt. | |||
= Datenbanktabelle in interne Tabelle laden = | = SELECT - Datenbanktabelle in interne Tabelle laden = | ||
<syntaxhighlight lang="abap"> | <syntaxhighlight lang="abap"> | ||
SELECT | SELECT | ||
Zeile 34: | Zeile 42: | ||
UPDATE <dbtab> FROM TABLE <itab>. | UPDATE <dbtab> FROM TABLE <itab>. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
UPDATE wird direkt auf dem Datenbankserver ausgeführt. Kann mehrere Datensätze auf einmal verändern. | |||
Möchte man eine Vielzahl Datensätze jeweils unterschiedlich bearbeiten, müsste man den UPDATE-Befehl mehrmals mit unterschiedlichen WHERE-Klauseln aufrufen. Dazu wäre ein übergeordneter LOOP notwendig. Dies wäre allerdings wenig performant. Für so eine Operation würde man eher alle Inhalte in einer internen Tabelle vorbereiten und dann in einem Schritt mit MODIFY in die Datenbank schreiben. | |||
= Datensätze löschen = | = Datensätze löschen = | ||
Zeile 43: | Zeile 55: | ||
DELETE <dbtab> FROM TABLE <itab>. | DELETE <dbtab> FROM TABLE <itab>. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Category:ABAP]] | [[Category:ABAP]] |
Version vom 29. September 2017, 16:58 Uhr
Dieser Artikel beschäftigt sich mit Anleitungen, wie auf Datenbanken mit hilfe von ABAP in SAP Open SQL zugegriffen werden kann.
Dabei bietet Open SQL mit einem einheitlichen Befehlssatz die Möglichkeit, auf verschiedene zugrundeliegende Datenbanksysteme zuzugreifen.
Einzelnen Datensatz in eine Struktur lesen
SELECT - ENDSELECT - Loop mit SELECT über Tabelle
SELECT * FROM dbtab INTO ls_tab
" Line 1
" Line 2
" Line 3
ENDSELECT.
Die SELECT-ENDSELECT-Kontrollstruktur sollte nicht mehr verwendet werden, weil der ABAP-Prozessor dabei jeden Datensatz einzeln vom Datenbankserver holt, und man damit unnötig teuer Daten vom Datenbankserver holt bzw. ihn unnötig mit kleinkram beschäftigt.
SELECT - Datenbanktabelle in interne Tabelle laden
SELECT
field1
field2
field3
FROM <dbtab>
WHERE field1 = 'abc'
INTO CORRESPONDING FIELDS OF TABLE <itab>.
Datensätze erstellen
INSERT INTO <dbtab> VALUES <wa>.
INSERT <dbtab> FROM <wa>.
INSERT <dbtab> FROM TABLE <itab>.
Datensätze aktualisieren
UPDATE <dbtab> FROM <wa>.
UPDATE <dbtab> FROM TABLE <itab>.
UPDATE wird direkt auf dem Datenbankserver ausgeführt. Kann mehrere Datensätze auf einmal verändern.
Möchte man eine Vielzahl Datensätze jeweils unterschiedlich bearbeiten, müsste man den UPDATE-Befehl mehrmals mit unterschiedlichen WHERE-Klauseln aufrufen. Dazu wäre ein übergeordneter LOOP notwendig. Dies wäre allerdings wenig performant. Für so eine Operation würde man eher alle Inhalte in einer internen Tabelle vorbereiten und dann in einem Schritt mit MODIFY in die Datenbank schreiben.
Datensätze löschen
DELETE FROM <dbtab> WHERE <cond>.
DELETE <dbtab> FROM <wa>.
DELETE <dbtab> FROM TABLE <itab>.