Tabelleninhalte bearbeiten (ABAP)
Aus MattWiki
Datensätze duplizieren
Listing, um Datensätze in einer Tabelle zu duplizieren, und dabei ein Schlüsselfeld auf einen neuen Wert umzusetzen.
REPORT /bmw/pat_init_beracc_patl.
DATA: itab TYPE TABLE OF dbtab.
FIELD-SYMBOLS: <wa> TYPE dbtab.
START-OF-SELECTION.
SELECT * FROM dbtab
INTO CORRESPONDING FIELDS OF TABLE itab
WHERE field1 = 'VAL1'.
LOOP AT itab INTO <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.'.