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)
