42
22.03.2000 ABAP/4 © 2000 Sören Berger ABAP/4

© 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

Embed Size (px)

Citation preview

Page 1: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

22.03.2000ABAP/4© 2000 Sören Berger

ABAP/4

Page 2: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 2

Gliederung

Einleitung

ABAP Syntax & Programmstruktur

Interne Tabellen

DB-Zugriff mit ABAP & Open-SQL

ABAP-Dictionary

Page 3: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 3

Einleitung

A

B

A

P

dvanced

usiness

pplication

rogramming Language 4

Was heißt ABAP/4?

Page 4: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 4

Einleitung

Logischer Aufbau von SAP/R3 und ABAP/4:

Page 5: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 5

Einleitung

Dialogschritte

Page 6: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 6

Einleitung

Struktur eines Workprozesses (WP):

Kontrolliert „Flow Logic“

über Dispatcher Kommunikation zw. GUI und WP

Kommunikation mit DB und

ABAP Dictionary

Kontrolliert „Processing Logic“

Kommuniziert mit SP, welches Modul der Flow Logic als nächstes ausgeführt wird

Kommuniziert mit DBI

Page 7: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 7

Einleitung

Das Datenbank-Interface

Page 8: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 8

Einleitung

Screens: Jeder Screen besitzt Eingabemaske mit Input/Output Zwei Events getriggert:

– „Process Before Output“ (PBO), der vor der Maske dargestellt wird– „Process After Input“ (PAI), nach User-Interaktion

Jeder Screen ist gelinkt zu einem PBO bzw PAI PAI und nachfolgender PBO bilden Dialogschritt Screens werden über „Screen-Painter“ erzeugt, oder alternativ als

„Selection-Screen“ oder als Liste mit Hilfe von ABAP-Statements (wichtige Keywords: MODULE, FIELD, CHAIN und LOOP)

Page 9: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 9

Einleitung

ABAP-Programme sind verantwortlich für das Bearbeiten von Daten innerhalb der Dialogschritte. ABAP-Programme sind modular

Aufbau eines ABAP-Programms

Page 10: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 10

Einleitung

Verschiedene ABAP-Programmodi

Typ 1 (Report) werden nicht durch Screens kontrolliert werden durch SUBMIT-Statement von anderen ABAP-Programmen,

oder durch Eintippen des Programmnamens bzw. Transaktionscodes gestartet

starten ihrerseits unsichtbares Systemprogramm, das einem festen Programmfluß folgt, der aber verlassen werden kann

der feste Programmfluß dient zum Auslesen der DB und zum Darstellen der Informationen (daher „Report“)

brauchen keinen User-Input können logische DB verwenden

Page 11: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 11

Einleitung

Typ M können nur durch „Screen Flow Logic“ kontrolliert werden Start durch Transaktionscode (mit Anfangsmaske „Initial Screen“) man muß seine eigenen Screens mit dem Screen-Painter erstellen Initial Screen aktiviert Dialogmodul des ABAP-Prog.

Dialogmodul kann versch, Aufgaben übernehmen, z.B. andere Screens aktivieren, andere Ausführungsblöcke im ABAP-Prog., oder andere Programme (mit CALL TRANSACTION (für Typ M), oder mit SUBMIT (für Typ 1))

werden als Modul-Pool bezeichnet und für dialogorientierte Programme mit einer großen Anzahl von Screens verwendet

gibt noch Typ F (Funktionen-Gruppen, für globale Fkt.) und Typ I (Includes)

Page 12: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 12

Einleitung

Logische Datenbank:

Liest Daten aus DB vergleichbar mit VIEW-Befehl wird über Workbenchbefehle bearbeitet und mit dem ABAP-

Programm gelinkt kann von mehreren Programmen genutzt werden können nur von Typ 1 benutzt werden hat folgende Struktur:

Page 13: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 13

Einleitung

Logische Datenbank

Page 14: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 14

Einleitung

Logische Datenbank

Structure: welche Tabellen gelesen werden, die Hierarchie (über Foreign Keys) wird beibehalten

Selection Part: welche Felder dargestellt werden, können durch das ABAP-Programm auch geändert werden

Database Program: Container für Subroutinen, die die Daten lesen

Page 15: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 15

Einleitung

Namenskonventionen in ABAP:

Kundenprogramme(Reports) sollten folgender Konvention folgen:

Yaxxxxxx oder Zaxxxxxx

wobei a durch den ID-Code der Applikation und xxxxxx durch einen bel. Bezeichner ersetzt wird.

SAP-Programme werden mit Raxxxxxx bezeichnet.

Page 16: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 16

Gliederung

Einleitung

ABAP Syntax & Programmstruktur

Interne Tabellen

DB-Zugriff mit ABAP & Open-SQL

ABAP-Dictionary

Page 17: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 17

ABAP Syntax und Programm-Struktur

Kommentare werden durch * (für ganze Zeile) und “ (für Teil der Zeile) eingeleitet

ABAP-Ausdrücke beginnen mit einem Keyword und enden mit einem Punkt (.)

Deklarative Ausdrücke sind z.B.: DATA, TYPES, TABLES Modulare Ausdrücke sind unterteilt in:

Event Keywords wie AT SELECTION SCREEN, START-OF-SELECTION, AT-USER-COMMAND

Definitions-Ausdrücke werden zur Definition von Subroutinen, Funktionsmodulen, Methoden u.ä. verwendet, z.B.: FORM...ENDFORM, FUNCTION...ENDFUNCTION, MODUL...ENDMODUL

Page 18: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 18

ABAP Syntax und Programm-Struktur

Call-Ausdrücke werden zum Aufrufen von Programmblöcken im selben oder einem anderen Programm verwendet.

Bsp: PERFORM, CALL, SUBMIT, SET USER-COMMAND Operations-Ausdrücke bearbeiten Daten, die über die

deklarativen Ausdrücke definiert werden.

Bsp.: WRITE, MOVE, ADD Open-SQL: nur Ausdrücke wie INSERT, SELECT, DELETE

kein: CREATE TABLE, CREATE INDEX

Page 19: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 19

ABAP Syntax und Programm-Struktur

Vordefinierte Datentypen: Charakter String (C) Länge: 1 - 65535 Numeric Charakter String (N) Länge: 1 - 65535 Date (D) Format: YYYYMMDD Time (T) Format: HHMMSS Hexadecimel (X) Integer (I) von -2^31 - 2^31-1 Floating-Point Number (F) 1x10^-307 bis 1x10^308 Packed Number (P) max. 16byte mit bis zu 14 Stellen

Für Berechnungen sollte man nur Typ I und F verwenden.

Page 20: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 20

ABAP Syntax und Programm-Struktur

User-Definierte Datentypen

TYPES: NUMBER TYPE I,

LENGTH TYPE P DECIMALS 2,

CODE(3) TYPE C.

.......

DATA: NO_FLIGHTS TYPE NUMBER,

NO_PASSENGERS TYPE NUMBER,

DISTANCE TYPE LENGTH,

HEIGHT TYPE LENGTH,

....

CITY_CODE TYPE CODE,

COUNTRY_CODE TYPE CODE,

......

Page 21: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 21

ABAP Syntax und Programm-Struktur

DATA für Strukturen

DATA: BEGIN OF ADDRESS,

NAME(20) TYPE C,

STREET(20) TYPE C,

NUMBER TYPE P,

POSTCODE(5) TYPE N,

CITY(20) TYPE C,

END OF ADDRESS.

CONSTANTS: BEGIN OF MYADDRESS,

NAME(20) TYPE C VALUE 'Fred Flintstone',

STREET(20) TYPE C VALUE 'Cave Avenue',

NUMBER TYPE P VALUE 11,

POSTCODE(5) TYPE N VALUE 98765,

CITY(20) TYPE C VALUE 'Bedrock',

END OF MYADDRESS.

Als konst. Ausdruck:

z.B.:Zugriff über ADDRESS-NAME

Page 22: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 22

ABAP Syntax und Programm-Struktur

TABLES-Befehl

Syntax: TABLES <dbtab>

<dbtab> ist ein ABAP-Dictionary-Objekt, diese werden im Workbench definiert

Bsp:TABLES: SPFLI.

SELECT * FROM SPFLI.

WRITE: SPFLI-MANDT, SPFLI-CARRID, SPFLI-CONNID,......

ENDSELECT.

Page 23: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 23

ABAP Syntax und Programm-Struktur

Bsp. für interne Tabellen

PROGRAM SAPMZTST.

TYPES: BEGIN OF MYSTRING,

NUMBER TYPE I,

NAME(10) TYPE C,

END OF MYSTRING.

TYPES MYTAB TYPE MYSTRING OCCURS 5.

DATA STRING TYPE MYSTRING.

DATA ITAB TYPE MYTAB.

STRING-NUMBER = 1. STRING-NAME = 'John'.

APPEND STRING TO ITAB.

STRING-NUMBER = 2. STRING-NAME = ‘Paul’.

APPEND STRING TO ITAB.

STRING-NUMBER = 3. STRING-NAME = 'Ringo'.

APPEND STRING TO ITAB.

STRING-NUMBER = 4. STRING-NAME = 'George'.APPEND STRING TO ITAB.LOOP AT ITAB INTO STRING.WRITE: / STRING-NUMBER,STRING-NAME.ENDLOOP.

Ausgabe:1 John2 Paul3 Ringo4 George

Page 24: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 24

ABAP Syntax und Programm-Struktur

MOVE-CORRESPONDING

Syntax: MOVE-CORRESPONDING <string1> TO <string2>

Beispiel:

DATA: BEGIN OF ADDRESS,

FIRSTNAME(20) VALUE 'Fred',

SURNAME(20) VALUE 'Flintstone',

INITIALS(4) VALUE 'FF',

STREET(20) VALUE 'Cave Avenue,

NUMBER TYPE I VALUE '11'.

POSTCODE TYPE N VALUE '98765'.

CITY(20) VALUE 'Bedrock',

END OF ADDRESS.

DATA: BEGIN OF NAME, SURNAME(20), FIRSTNAME(20), INITIALS(4), TITLE(10) VALUE 'Mister',END OF NAME.

MOVE-CORRESPONDING ADDRESS TO NAME.

Page 25: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 25

ABAP Syntax und Programm-Struktur

Schleifen und IF - Anweisung

While-Schleifen werden mit WHILE .... ENDWHILE eingegrenzt

DO-Schleifen mit DO ... ENDDO (Bsp: Do 4 TIMES. .... ENDDO.)

ebenso wird IF-Anweisung mit IF ... ENDIF eingegrenzt

Page 26: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 26

Gliederung

Einleitung

ABAP Syntax & Programmstruktur

Interne Tabellen

DB-Zugriff mit ABAP & Open-SQL

ABAP-Dictionary

Page 27: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 27

Interne Tabellen

... lesen (Teile von) festen Strukturen aus und speichern sie im Arbeitsspeicher von ABAP.

... besitzen eine zweigeteilte Datenstruktur, bestehend aus Line Type (kann jeder Datentyp sein) und Key (der die Tabellenzeilen identifiziert).

... der Key ist wiederum aufgeteilt in Standard Key und User-defined Key.

Page 28: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 28

Interne Tabellen

Drei Arten von Tabellen:

Standard Table: Daten werden über Table-Index oder Key angesprochen (Key muß nicht definiert werden)

Sorted Table: Daten nach Key sortiert, Zugriff wie Standard Table

Hash Table: kein linearer Index, Zugriff nur über Key, Key muß UNIQUE sein

Page 29: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 29

Interne Tabellen

Zugriffsmethoden:

Es gibt zwei Arten, wie mit Internen Tabellen gearbeitet werden kann:

Die ganze Tabelle, z.B. mit MOVE <tabname>

oder über Workarea, wenn nur bestimmte Zeilen bearbeitet werden sollen

Befehlsübersicht:

INSERT; APPEND; COLLECT

READ

MODIFY, DELETE

Page 30: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 30

Interne Tabellen

Erstellen von internen Tabellen

1. Möglichkeit: Neue Tabelle

Syntax: TYPES <t> <type> OCCURS <n>

Bsp.: TYPES itab TYPE I OCCURS 10.

2. Möglichkeit: Neue Tabelle aus einer alten

Syntax: DATA <f> <type> [WITH HEADER LINE]

Bsp.:TYPES: BEGIN OF LINE,

COLUMN1 TYPE I,

COLUMN2 TYPE I,

COLUMN3 TYPE I,

END OF LINE.

TYPES ITAB TYPE LINE OCCURS 10.

DATA TAB1 TYPE ITAB.DATA TAB2 LIKE TAB1 WITH HEADER LINE.

Page 31: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 31

Interne Tabellen

Füllbefehle im Überblick

APPEND:

Syntax: APPEND [<wa> TO | INITIAL LINE TO] <itab>

COLLECT: sammelt Daten mit denselben Keys und addiert restlichen Werte

Syntax: COLLECT [<wa> INTO] <itab>

INSERT: fügt an beliebigen Stelle eine Zeile ein

Syntax: INSERT [<wa> INTO|INITIAL LINE INTO] <itab>

[INDEX<idx>].

Page 32: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 32

Interne Tabellen

Beispiel zu INSERT

DATA: BEGIN OF LINE,

COL1 TYPE I,

COL2 TYPE I,

END OF LINE.

DATA ITAB LIKE LINE OCCURS 10.

DO 2 TIMES.

LINE-COL1 = SY-INDEX.

LINE-COL2 = SY-INDEX ** 2.

APPEND LINE TO ITAB.

ENDDO.

LINE-COL1 = 11. LINE-COL2 =22.INSERT LINE INTO ITAB INDEX 2.INSERT INITIAL LINE INTO ITAB INDEX 1.LOOP AT ITAB INTO LINE.WRITE: / SY-TABIX, LINE-COL1, LINE-COL2.ENDLOOP.

Ausgabe:

1 0 02 1 13 11 224 2 4

Page 33: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 33

Interne Tabellen

Auslesen einer Tabelle

LOOP: zeilenweise

Syntax: LOOP AT <itab> [INTO <wa>] [FROM <n1>] [TO <n2>]

[WHERE <condition>].

.....

ENDLOOP.

READ: eine einzelne Zeile

Syntax: READ TABLE <itab> [INTO <wa>] INDEX <idx>.

Page 34: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 34

Interne Tabellen

MODIFY: (Teile) einer Zeile ändern

Syntax: MODIFY <itab> [FROM <wa>] [INDEX <idx>]

[TRANSPORTING <f1>... <f2> [WHERE <condition>]].

Bsp:DATA NAME(4) VALUE 'COL2'.

DATA: BEGIN OF LINE,

COL1 TYPE I,

COL2 TYPE I,

END OF LINE.

DATA ITAB LIKE LINE OCCURS 10.

DO 5 TIMES.

LINE-COL1 = SY-INDEX.

LINE-COL2 = SY-INDEX ** 2.

APPEND LINE TO ITAB.

ENDDO.

....

Page 35: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 35

Interne Tabellen

(MODIFY 2)

...

LINE-COL2 = 111.

MODIFY ITAB FROM LINE INDEX 2 TRANSPORTING (NAME).

LINE-COL1 = 11.

MODIFY ITAB FROM LINE TRANSPORTING COL1 WHERE COL2 = 25.

LOOP AT ITAB INTO LINE.

WRITE: / SY-TABIX, LINE-COL1, LINE-COL2.

ENDLOOP.

Ausgabe:

1 1 1

2 2 111

3 3 9

4 4 16

5 11 25

Page 36: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 36

Gliederung

Einleitung

ABAP Syntax & Programmstruktur

Interne Tabellen

DB-Zugriff mit ABAP & Open-SQL

ABAP-Dictionary

Page 37: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 37

DB-Zugriff mit ABAP und Open-SQL

Sollen Open-SQL Ausdrücke verwendet werden, müssen

folgende Bedingungen erfüllt sein: Die DB muß von SAP unterstützt werden. Die DB-Tabellen müssen im ABAP-Dictionary definiert sein.

Wichtige Systemfelder:

SY-SUBRC: =0, wenn Operation erfolgreich, sonst <>0

SY-DBCNT: zeigt an, wie viele Felder bearbeitet, geändert wurden

Page 38: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 38

DB-Zugriff mit ABAP und Open-SQL

Allg.: Zugriff aller Operationen erfolgt wie bei einer normalen DB, müssen jedoch in einer Schleifenstruktur eingeschlossen werden.

SELECT

Syntax von SELECT:SELECT <result> FROM <source> [INTO <target>] [WHERE

<condition>] [GROUP BY <fields>] [ORDER BY <sort_order>].

Page 39: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 39

DB-Zugriff mit ABAP und Open-SQL

Bsp zu SELECT:

TABLES SPFLI.

SELECT * FROM SPFLI WHERE CITYFROM EQ 'FRANKFURT'.

...

WRITE: / SPFLI-CARRID, SPFLI-CONNID,

SPFLI-CITYFROM, SPFLI-CITYTO.

...

ENDSELECT.

Page 40: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 40

DB-Zugriff mit ABAP und Open-SQL

FROM - Ergänzung:

Syntax:...... FROM <dbtab> [CLIENT SPECIFIED] [BYPASSING BUFFER]

[UP TO <n> ROWS].........

BYPASSING BUFFER liest direkt aus DB und nicht aus SAP-Buffer!

CLIENT SPECIFIED liest aus Tabelle, egal auf welchem Client der User eingeloggt ist.

Page 41: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 41

Gliederung

Einleitung

ABAP Syntax & Programmstruktur

Interne Tabellen

DB-Zugriff mit ABAP & Open-SQL

ABAP-Dictionary

Page 42: © 2000 Sören Berger22.03.2000ABAP/4. © 2000 Sören Berger ABAP/422.03.2000ABAP/4Seite: 2 Gliederung n Einleitung n ABAP Syntax & Programmstruktur n Interne

© 2000 Sören Berger ABAP/4 22.03.2000ABAP/4 Seite: 42

ABAP-Dictionary

Tabellen und Felder im Dictionary erstellen:

Im ersten Fenster des Dic. wird der Tabellenname eingeben, anschließend auf „Create“ klicken.

1. Im Feld „Short Text“ einen erklärenden Text eingeben.

2. Definiere eine „delivery class“ für die Tabelle

3. Für jedes Tabellenfeld einen Namen vergeben

4. Bestimme einen Key. Alle Keys müssen am Anfang der Tabelle liegen. Bis zu 16 Keys sind pro Tabelle gestattet.

5. Benenne das Daten-Element auf das sich das Feld bezieht.

6. Für Felder der Typen Quantity (QUAN) und Currency amount (CURR) müssen Bezugsfelder und -tabellen angeben werden.

7. Speichern