ABAP Anweisungen Beispiele: Unterschied zwischen den Versionen
Matt (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Grundlegende ABAP-Anweisungen == '''Achtung:''' Klammern und Operatoren müssen durch mind. ein Leerzeichen getrennt werden! MOVE TO MOVE-CORRESPONDING C…“) |
Matt (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 63: | Zeile 63: | ||
(Beliebig anpassbar) | (Beliebig anpassbar) | ||
Zugriff über | == 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) | |||
[[Kategorie:ABAP]] | |||
Version vom 5. Juni 2017, 15:05 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)