ABAP Anweisungen Beispiele: Unterschied zwischen den Versionen

Aus MattWiki
(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…“)
 
Keine Bearbeitungszusammenfassung
Zeile 63: Zeile 63:
(Beliebig anpassbar)
(Beliebig anpassbar)


Zugriff über Schleifenverarbeitung
== 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


»Zeilen per Schlüsselzugriff hinzufügen über INSERT… INTO TABLE…
== SQL Zugriff ==
Datenbeschaffung über SQL


»
Unterschiedliche Native-SQL-Anweisungen für unterschiedliche DBMS


»Unterscheidung der Tabllenart
OPENSQL (DB-unabhängig)


»
Lesen von DBs


»Anhängen über APPEND bei Standardtabellen
SELECT-Statement


»Eindeutiger Schlüssel bei Sorted Tables => Insert nur bei nicht vorhandenem Schlüsselsatz
SELECT SINGLE für einzelnen Satz


»Datensatz angehängt + Eintrag Hash-Index bei Hashtabellen (Sy-Tabix zeigt auf Index-Feld)
INTO schreibt Ergebnissatz/-sätze in Zielstruktur bzw. Zieltabelle (INTO TABLE)


»
Feste Zielstruktur oder dynamisch über INTO CORRESPONDING FIELDS OF


»Rückgabewert (sy-subrc) 4 wenn Satz schon vorhanden
APPENDING wenn Inhalt an (Standard-)Tabelle angehängt werden soll


»COLLECT…INTO TABLE… wenn alle Nichtschlüsselfelder numerisch (Summation)
Lesen mehrerer Zeilen durch SELECT-Schleife, wenn Manipulation erforderlich


»Rangliste über APPEND… INTO… SORTED BY…
Inperformant


»
SELECT…ENDSELECT.


»Zugriff auf gesamte interne Tabelle über READ
Sy-subrc = 0, wenn mind. 1 Zeile gelesen


»
Sy-dbcnt = Anzahl gelesener Zeilen


»Ergebnis schreiben in Zielstruktur (immer 1 Satz)
Selbstprogrammieren der Lesezugriffe über Joins


»check ob vorhanden durch TRANSPORTING NO FIELDS
Join-Tabellen/-Bedingungen/-Spalten


»
Mehrere Möglichkeiten zur Realisierungen (View im Dictionary oder direkt als ABAP Befehl)
 
[[Kategorie:ABAP]]
»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)

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) &rarr; vorwiegend über Index
    • Sortierte Tabellen (Index/Schlüssel /UNIQUE/NON-UNIQUE) &rarr; 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)