ABAP Anweisungen Beispiele: Unterschied zwischen den Versionen
Matt (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Matt (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
== Grundlegende ABAP-Anweisungen == | == Grundlegende ABAP-Anweisungen == | ||
'''Achtung:''' Klammern und Operatoren müssen durch mind. ein Leerzeichen getrennt werden | '''Achtung:''' Klammern und Operatoren müssen durch mind. ein Leerzeichen getrennt werden. | ||
MOVE TO | MOVE TO | ||
MOVE-CORRESPONDING | MOVE-CORRESPONDING |
Version vom 31. Oktober 2017, 19:38 Uhr
Grundlegende ABAP-Anweisungen
Achtung: Klammern und Operatoren müssen durch mind. ein Leerzeichen getrennt werden.
MOVE TO MOVE-CORRESPONDING CLEAR Arithmetische Ausdrücke (+, -, *, /, **, DIV, MOD) STRLEN(…)
SY-Anweisungen
SY-DATU: Systemdatum SY-INDEX: Aktueller Schleifendurchlauf SY-SUBRC: Rückgabewert aus vorherigem Aufruf
Nachrichten / Messages
MESSAGE t (message class) [WITH v1 [v2] …]
Interne Tabelle bearbeiten
APPEND (Anhängen einer Struktur): APPEND ls_struktur TO lt_table => nur Standardtabellen! INSERT (Struktur in Tab. Einfügen): INSERT ls_struktur INTO TABLE lt_table <condition> READ (kopiert Inhalt Zeile in Struktur): READ TABLE lt_table INTO ls_struktur <condition> MODIFY (überschreibt Zeile mit Struktur): MODIFY TABLE lt_table FROM ls_struktur [<condition>] DELETE (löscht Zeile(n) interner Tabelle): DELETE itab <condition> COLLECT (akkummuliert Inhalt einer Struktur zur schlüsselgleichen Zeile einer internen Tabelle) Addition von Nicht-Schlüsselfeldern (numerisch) COLLECT ls_struktur INTO lt_table
Verarbeitung mehrerer Datensätze
DELETE INSERT LINES OF lt_table INTO lt_table2 APPEND LINES OF lt_table INTO lt_table2
Schleifen
LOOP AT lt_table INTO ls_struktur…ENDLOOP. SY-TABIX (Zeilennummer in Schleife) FROM…TO… INDEX OF… WHERE… WITH TABLE KEY…
Sortieren
SORT-Befehl BY ASCENDING/DESCENDING AS TEXT
Löschen lokaler Tabellen
REFRESH (Löscht Inhalt) CLEAR (Löscht Inhalt + Kopfzeile) FREE (Löscht Inhalt + Kopfzeile + Gibt Arbeitsspeicher frei)
Interne Tabellen
- Datenobjekte, mit denen Datenmengen einer festen Struktur im Arbeitsspeicher gehalten werden
- Datenmengen in feste Struktur im Arbeitsspeicher schreiben
- Zeilenweise, Spalten sind „Komponenten“
- Datentyp vollständig spezifiziert durch Zeilentyp, Schlüsseldefinition und Zugriffsart
- Tabellenarten
- Standardtabellen (Index/Schlüssel/NON-UNIQUE) → vorwiegend über Index
- Sortierte Tabellen (Index/Schlüssel /UNIQUE/NON-UNIQUE) → vorwiegend über Schlüssel
- Hash-Tabelle (Schlüssel/UNIQUE) è nur über Schlüssel
Standard-Definition einer internen Tabelle
DATA lt_table TYPE [STANDARD] TABLE OF ls_struktur [WITH NON-UNIQUE DEFAULT KEY]
(Beliebig anpassbar)
Zugriff per Schleifendurchlauf
- Zeilen per Schlüsselzugriff hinzufügen über INSERT… INTO TABLE…
- Unterscheidung der Tabllenart
- Anhängen über APPEND bei Standardtabellen
- Eindeutiger Schlüssel bei Sorted Tables => Insert nur bei nicht vorhandenem Schlüsselsatz
- Datensatz angehängt + Eintrag Hash-Index bei Hashtabellen (Sy-Tabix zeigt auf Index-Feld)
- Rückgabewert (sy-subrc) 4 wenn Satz schon vorhanden
- COLLECT…INTO TABLE… wenn alle Nichtschlüsselfelder numerisch (Summation)
- Rangliste über APPEND… INTO… SORTED BY…
- Zugriff auf gesamte interne Tabelle über READ
- Ergebnis schreiben in Zielstruktur (immer 1 Satz), Check ob vorhanden durch TRANSPORTING NO FIELDS
- Inhalte Ändern/Löschen per Schlüsselzugiff (MODIFY)
- Schlüsselangabe über WHERE, möglich für Einzelsätze oder ganze Tabellen
SQL Zugriff
Datenbeschaffung über SQL
Unterschiedliche Native-SQL-Anweisungen für unterschiedliche DBMS
OPENSQL (DB-unabhängig)
Lesen von DBs
SELECT-Statement
SELECT SINGLE für einzelnen Satz
INTO schreibt Ergebnissatz/-sätze in Zielstruktur bzw. Zieltabelle (INTO TABLE)
Feste Zielstruktur oder dynamisch über INTO CORRESPONDING FIELDS OF
APPENDING wenn Inhalt an (Standard-)Tabelle angehängt werden soll
Lesen mehrerer Zeilen durch SELECT-Schleife, wenn Manipulation erforderlich
Inperformant
SELECT…ENDSELECT.
Sy-subrc = 0, wenn mind. 1 Zeile gelesen
Sy-dbcnt = Anzahl gelesener Zeilen
Selbstprogrammieren der Lesezugriffe über Joins
Join-Tabellen/-Bedingungen/-Spalten
Mehrere Möglichkeiten zur Realisierungen (View im Dictionary oder direkt als ABAP Befehl)