Tabelleninhalte bearbeiten (ABAP): Unterschied zwischen den Versionen

Aus MattWiki
K (Matt verschob die Seite Listing Copy Table (ABAP) nach Tabelle kopieren (ABAP), ohne dabei eine Weiterleitung anzulegen)
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.'.