Kap. 5.5: ABAP-Programmierung mit Open- und Native

Werbung
Kap. 5.5: ABAP-Programmierung mit
Open- und Native-SQL
●
ABAP - Übersicht
●
Datenbankzugriff aus ABAP-Programmen
●
◆
Open-SQL
◆
Native-SQL
Vorbereitung der praktischen Übung mit SAP R/3
(Teil II)
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 1
ABAP/4 - Die Programmiersprache von SAP
●
Ursprung im R/2-System:
Allgemeiner Berichts-Aufbereitungs-Prozessor
◆
●
Für Reporting-Zwecke
Ständige Erweiterung der Sprache im R/3-System
Advanced Business Application Programming
Language
◆
◆
◆
◆
Alle betriebswirtschaftlichen Anwendungen in
ABAP implementiert
Nur kleiner Systemkern in C
/4 symbolisiert, dass es sich um eine 4GL-Sprache
handelt
neuerdings: nur noch ABAP, um Entwicklung in
Richtung Objektorientierung zu betonen
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 2
1
Charakteristik von ABAP
●
Abarbeitung von ABAP-Programmen:
◆
◆
ABAP-Sourcen werden kompiliert in Bytecode
(“Generieren”)
Programmsourcen und Bytecode werden in der
Datenbank verwaltet
– Dies beinhaltet auch Abhängigkeiten zu anderen
Schemaobjekten
◆
◆
Bytecode wird interpretiert
Bei Bedarf erfolgt Neugenerierung vor Interpretation
des Bytecodes
Release 4.5x: über 250 Schlüsselwörter,
Tendenz steigend!
● Sehr schwach ausgeprägte Orthogonalität
●
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 3
Tools des R/3 Repository
●
Data Modeler:
◆
●
Data Dictionary:
◆
●
Zugriff auf Datenbanktabellen (nur Anwendungsdaten)
Object Browser:
◆
●
Metadatenverwaltung
Data Browser:
◆
●
Datenmodellierung
Zugriff auf sämtliche Programmobjekte
Entwicklungswerkzeuge:
◆
◆
ABAP-Editor
Screen Painter, ...
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 4
2
Entwicklungsumgebung …
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 5
… Entwicklungsumgebung
●
ABAP-Editor
◆
◆
◆
ist selbst ein ABAP-Programm, die Oberfläche des
Editors ist also ein Dynpro
zeilenorientierte (gewöhnungsbedürftige) Oberfläche
sehr gute Integration in die komplette Entwicklungsumgebung (SAP Repository, andere Tools)
– Doppelklick auf Name eines Schemaobjektes öffnet das
entsprechende Tool
– Kontextsensitive Hilfe zu ABAP-Befehlen
(Schlüsselworte) mittels F1
◆
◆
Syntaxüberprüfungen (Programm -> Prüfen)
Generieren: Erzeugen von Bytecode
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 6
3
Programmtypen
●
Onlineprogramm (Typ 1)
◆
◆
●
Modulpool (Typ M)
◆
◆
●
Für Reports
nur Programme von diesem Typ können direkt
abgearbeitet werden
Für Dialoganwendungen (Verarbeitungsschritte von
DynPros)
Nur über Transaktionsnummer aufrufbar
Funktionsgruppe(Typ F)
◆
Sammlung von Funktionen
Include-Programm (Typ I)
● Subroutinepool (Typ S)
● Klassen und Interfacedefinition (Typ K,J)
●
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 7
Aufbau von ABAP-Anweisungen
Wie so viele Sprachen besitzt ABAP den,
Anspruch der natürlichen Sprache zu ähneln.
In ABAP bedeutet dies konkret dass jede,
Anweisung mit einem Punkt beendet werden,
muss (eine Anweisung heisst daher Satz).
Wenn ein Satz,
aus mehreren Teilen besteht dann muss jeder,
dieser Teile mit einem Komma abgetrennt,
werden.
Ein: Doppelpunkt besagt dass,
Schlüsselwort für mehrere Parameter gilt.
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 8
4
Grobstruktur von Reports
REPORT Zreportname.
* Ein Stern als erstes Zeichen markiert
* eine Kommentarzeile
TYPES: … .
“ alles folgende gilt auch
DATA:
… .
“ als Kommentar
TABLES: … .
PARAMETERS: … .
Anweisungen .
Perform Unterprog USING Parameterliste.
Anweisungen .
FORM Unterprog USING Parameterliste.
Anweisungen .
ENDFORM.
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 9
ABAP-Datentypen
●
Datendefinition:
DATA: feldname TYPE datentyp .
DATA: feldname(länge) TYPE datentyp
[ VALUE ‘value’] .
●
ABAP-Datentypen:
C
N
T
D
F
I
P
X
Text
Numerischer Text
Zeitangabe
Datum
Gleitpunktzahl
Ganze Zahl
Gepackte Zahl (für Festkomma)
Hexadezimalzahl
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 10
5
Datendefinition
●
Like-Operator: Typ von Objekten wird aus dem Data
Dictionary übernommen
z.B. Variable saldo soll den Typ des Attributs
kontostand der Tabelle Zooho00kon besitzen
DATA: saldo LIKE zoho00kon-kontostand .
●
Ohne Like-Operator darf nur ABAP-Datentyp gewählt
werden, der externen Datentyp aufnimmt
z.B.
C(n)
für CHAR n
P((n+2)/2) DECIMALS m für CURR n, m
…
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 11
(einige) ABAP-Sprachelemente
●
Bildschirmausgabe
WRITE ‘Hello world’.
WRITE: / ‘Hello’, ‘world’.
●
Zuweisungen
field = expression.(mit impliziter Typumwandlung)
MOVE A TO B.
MOVE-CORRESPONDING A TO B.
(unter Berücksichtigung der Feldnamen)
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 12
6
Tabellendeklaration
●
Tabellen, die im Data Dictionary definiert sind (und
die aktiviert sind), müssen bei Verwendung in ABAPProgrammen explizit deklariert werden
TABLES:
●
zoho00kun, zoho00kto .
Zugriff auf Tabellenelemente:
WRITE:
zoho00kun-name1 .
mysaldo = zoho00kto-kontostand .
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 13
Open-SQL (Syntax von Select)
SELECT [SINGLE [FOR UPDATE]] | [DISTINCT]
feldliste, aggregatfunktion
[INTO [feld | (feldliste)] |
[[CORRESPONDING FIELDS OF] work_area]|
[[CORRESPONDING FIELDS OF] TABLE itab]] |
[APPENDING [CORRESPONDING FIELDS OF]
TABLE itab]
FROM table | (table_name)
| tab AS t1 JOIN tab2 AS t2 ON t1~id = t2~id
[BYPASSING BUFFER, UP TO n ROWS,
CLIENT SPECIFIED]
[WHERE condition]
[GROUP BY fieldlist]
[ORDER BY fieldlist]
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 14
7
Open-SQL-Befehlssatz
●
INSERT
● MODIFY
● UPDATE
● DELETE
●
Einfügen
Ändern oder einfügen
Ändern
Löschen
Indikatorvariable SY-SUBRC
Status der Open-SQL-Anweisung
z.B.
SY-SUBRC = 0
Select erfolgreich
SY-SUBRC = 4
Kein Tupel gefunden
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 15
Open-SQL: Eigenschaften …
●
Anfrageergebnise werden tupelweise zurückgegeben
◆
◆
Select-Statement muss mit ENDSELECT.
abgeschlossen werden
Zwischen SELECT … ENDSELECT wird über alle
Ergebnistupel iteriert (besitzt Cursor-ähnliche
Semantik)
TABLES: zautor.
SELECT * FROM zautor .
WRITE: /
zautor-nachname,
zautor-vorname.
ENDSELECT.
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 16
8
… Open-SQL: Eigenschaften …
●
In der FROM-Klausel ist pro Open-SQL-Select-Statement NUR
maximal zwei Tabellen erlaubt.
◆
◆
●
Explizite Joins sind in Open-SQL nur zwischen zwei transparenten
Tabellen möglich. (Nicht Pool-, Clustertabelle oder View)
Join wird an Datenbank weitergeschickt.
Abhilfe: View definieren oder Joins in ABAP-Programmen
selbst berechnen:
TABLES: zautor, zwerk.
(Sei Zautor als View definiert)
SELECT * FROM zautor.
SELECT * FROM zwerk
WHERE autorid = zautor-autorid.
WRITE: / zautor-nachname,
zwerk-titel.
ENDSELECT. “ zwerk
ENDSELECT . “ zautor
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 17
… Open-SQL: JOIN …
●
Mit Hilfe des Join-Konstukt in Open-SQL
◆
Syntax und Möglichkeiten gehen in Richtung Nativ-SQL
TABLES: zautor, zwerk.
(Sei Zautor als Transparente Tabelle definiert)
data:
nachname like zautor-nachname,
titel
like zwerk-titel.
SELECT A~nachname, W~titel
INTO (nachname, titel)
FROM zautor as A JOIN zwaer as W.
ON A~autorid = W~autorid.
WRITE: /
nachname,
titel.
ENDSELECT .
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 18
9
Open-SQL: Aggregatfunktionen
●
Folgende Aggregatfunktionen sind in Open-SQL
erlaubt (mit der bekannten Semantik)
AVG ( feldname )
COUNT ( DISTINCT feld )
COUNT ( * )
MAX ( feld )
MIN ( feld )
SUM ( feld )
◆ Blanks sind wichtig!
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 19
Native SQL ...
Statement im “Dialekt” der unterliegenden Datenbank
● Geklammert in
EXEC SQL.
…
ENDEXEC.
●
●
Hostvariablen für Rückgabewerte müssen explizit
angegeben werden, z.B.
DATA: name like zautor-nachname.
EXEC SQL.
SELECT nachname INTO :name
FROM zautor WHERE ID=5
ENDEXEC.
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 20
10
… Native SQL
●
Mandant muss immer explizit angegeben werden
… and mandt = 800
●
Kein Cursor möglich
◆
Abhilfe: Bei EXEC SQL kann Unterprogramm
angegeben werden, das für jedes Ergebnistupel
aufgerufen wird.
EXEC SQL PERFORMING ausgabe .
…
ENDEXEC.
FORM ausgabe .
WRITE : /
ENDFORM.
name .
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 21
“Interaktive Berichte”: Eingabeparameter
●
Schlüsselwort Parameters deklariert
Eingabeparameter eines Berichts
PARAMETERS: name LIKE zautor-nachname.
SELECT * FROM zautor
WHERE
nachname = name.
…
ENDSELECT.
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 22
11
Literatur (Lehrbuchsammlung)
●
B. Matzke.
ABAP/4 - Die Programmiersprache des
SAP-Systems R/3.
2. Auflage, Addison-Wesley, 1999.
●
R. Kretschmer, W. Weiss.
SAP-R/3-Entwicklung mit ABAP/4.
2. Auflage, Sybex Verlag, 1997.
●
Online: www.dbs.ethz.ch/sapr3
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 23
Praktische Übung
●
Implementierung von Reports in ABAP
◆
Aufgabe 1:
– Open SQL: ZOHOxxRO
– Skelett vorgegeben (ZOHO00RO)
– Kopie in eigenen Namensraum
◆
Aufgabe 2:
– Native SQL: ZOHOxxRN
– Skelett vorgegeben (ZOHO00RN)
◆
Aufgabe 3:
– Neuen Bericht erstellen
– Wahlweise Open SQL oder Native SQL
OHO-Workshop: ABAP-Programmierung mit Open- und Native-SQL
Kap. 5.5 - 24
12
Herunterladen