Tabelleninhalte bearbeiten (ABAP): Unterschied zwischen den Versionen
Aus MattWiki
Matt (Diskussion | Beiträge) K (Matt verschob die Seite Listing Copy Table (ABAP) nach Tabelle kopieren (ABAP), ohne dabei eine Weiterleitung anzulegen) |
Matt (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Datensätze duplizieren == | |||
Listing, um Datensätze in einer Tabelle zu duplizieren, und dabei ein Schlüsselfeld auf einen neuen Wert umzusetzen. | |||
<syntaxhighlight lang="abap"> | |||
REPORT zinit_beracc. | |||
DATA: itab TYPE TABLE OF dbtab. | |||
FIELD-SYMBOLS: <wa> LIKE LINE OF itab. | |||
START-OF-SELECTION. | |||
SELECT * FROM dbtab | |||
INTO CORRESPONDING FIELDS OF TABLE itab | |||
WHERE field1 = 'VAL1'. | |||
" Wichtig: Bei Feldsymbolen ASSIGNING statt INTO verwenden | |||
LOOP AT itab ASSIGNING <wa>. | |||
<wa>-field1 = 'VAL2'. | |||
ENDLOOP. | |||
INSERT dbtab FROM TABLE itab. | |||
WRITE 'Done.'. | |||
</syntaxhighlight> | |||
== Tabelle kopieren == | |||
Codebeispiel für ein Programm mit folgenden Eigenschaften: | Codebeispiel für ein Programm mit folgenden Eigenschaften: | ||
Zeile 46: | Zeile 76: | ||
WRITE 'Complete.'. | WRITE 'Complete.'. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Category:ABAP]] | [[Category:ABAP]] |
Aktuelle Version vom 24. Juli 2019, 08:36 Uhr
Datensätze duplizieren
Listing, um Datensätze in einer Tabelle zu duplizieren, und dabei ein Schlüsselfeld auf einen neuen Wert umzusetzen.
REPORT zinit_beracc.
DATA: itab TYPE TABLE OF dbtab.
FIELD-SYMBOLS: <wa> LIKE LINE OF itab.
START-OF-SELECTION.
SELECT * FROM dbtab
INTO CORRESPONDING FIELDS OF TABLE itab
WHERE field1 = 'VAL1'.
" Wichtig: Bei Feldsymbolen ASSIGNING statt INTO verwenden
LOOP AT itab ASSIGNING <wa>.
<wa>-field1 = 'VAL2'.
ENDLOOP.
INSERT dbtab FROM TABLE itab.
WRITE 'Done.'.
Tabelle kopieren
Codebeispiel für ein Programm mit folgenden Eigenschaften:
- Interne Tabellen
- Strukturen
- Instanzierung von Tabellen
- Datenbankdaten lesen
- Veränderung von Datenbankdaten
- Zurückschreiben von Datenbankdaten in die Datenbank
REPORT ztestcopytable.
DATA:
" Interne Tabellen auf Basis von transparenten Tabellen erstellen
lt_vkdat TYPE TABLE OF /bic/aznwvkdat00,
lt_vkdat_res TYPE TABLE OF zlp_10_znwvkdat,
" Lokale Struktur auf Basis einer internen Tabelle erstellen
ls_vkdat LIKE LINE OF lt_vkdat,
ls_vkdat2 TYPE zlp_10_znwvkdat,
ls_vkdat_res LIKE LINE OF lt_vkdat_res,
" Optional kann man eine interne Tabelle auf Basis eine Struktur anlegen
lt_vkdat2 LIKE TABLE OF ls_vkdat2.
SELECT plant customer doc_number /bic/matnr1 quantity amount
FROM /bic/aznwvkdat00
INTO CORRESPONDING FIELDS OF TABLE lt_vkdat
WHERE plant = '1060'.
LOOP AT lt_vkdat INTO ls_vkdat.
MOVE-CORRESPONDING ls_vkdat TO ls_vkdat_res.
ls_vkdat_res-p10_custno = ls_vkdat-customer.
ls_vkdat_res-amount = ls_vkdat-amount + 2000.
APPEND ls_vkdat_res TO lt_vkdat_res.
ENDLOOP.
DELETE FROM zlp_10_znwvkdat.
MODIFY zlp_10_znwvkdat FROM TABLE lt_vkdat_res.
UPDATE zlp_10_znwvkdat
SET quantity = 2
WHERE doc_number = '0224488123'.
WRITE 'Complete.'.