HCC-Kurs: ABAP-Einführung

Werbung
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
HCC-Kurs: ABAP-Einführung
Michael Höding – FH Brandenburg
März 2005
1
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Ablauf
• Begrüßung
• Organisatorisches
• Über das Konzept
2
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Begrüßung
• Herzlich Willkommen an der FH Brandenburg
• FHB: Langjährige SAP-Erfahrung
– Eigenes System bis 2001 (Heinrich, Hausmann)
– Seit 2001 HCC-Kunde (Höding)
• Vorstellung
– Informatiker, Forschungsthema Datenbanken
– 2000-2001 Aufbau HCC Magdeburg
– SAP-Schwerpunkt: Basis, SAP und Web (technische Seite
von SAP)
• Hier dabei: Frau Reber und Herr Hausmann
• Dank: Prof. Robert Franz (Folien)
• Vorstellungsrunde
– Wer bin ich? Was kann ich? Was erwarte ich?
3
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Organisatorisches
• Arbeit in zwei Räumen (damit wir in Bewegung
bleiben)
– 317: SAP-Labor für Übungen
– 320: Vortragsraum und Kaffee-Ecke
• Getränke und Kekse sind von SAP gesponsert
• Ebenso das Mittagessen (Æ FHB-Mensa hat
mehrmals das Goldene Tablett gewonnen)
4
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Organisatorisches - Konzept
Ziele:
• Einführung in ABAP als Sprache und Benutzung zur
Reportprogrammierung
• Anregung für eine ABAP-Grundlagenveranstaltung
(ca. 2 SWS)
Aufteilung
• Vortragsblöcke (30-60 Min) (allg. Teil + Demo) und
Übungsblöcke (30-60 Min) wechseln sich ab
– Æviele Übungen
• Es gibt keine vollständigen Unterlagen sondern einen
Rahmen
– Nutzung der Tafel
Æ Entwickeln von Konzepten Æ Mitschreiben
• Konzept: „Weniger ist Mehr“
5
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Struktur
• Thema
–
–
–
–
–
Übersicht (Lernziel)
Beispiel
Hilfsmaterial
Übungsaufgaben
Fazit: Sie sollten nun … können
6
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Technische Voraussetzungen
• Zugang zu einem SAP-System, in dem entwickelt werden darf
Æ Achtung: Entwicklung ist mandantenübergreifend und kann Daten
anderer Benutzer gefährden
•
•
•
Spezielle Entwicklungsrechte (u. a. SAP_NEW - su01)
Entwicklerschlüssel (beim HCC anfordern)
(Evtl. Objektschlüssel, wenn man echte SAP-Objekte anfasst)
•
•
Populäres SAP-Beispiel: Flugdatenmodell von SAP
Anlegen mit Report:
– 4.6c: SAPBC_DATA_GENERATOR
– 4.7: S_FLIGHT_MODEL_DATA_GENERATOR
•
Alternativ: DEKRA-Beispiele zu Wertpapieren
7
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Literatur - Hilfen
• Keller, Krüger: ABAP-Objects, Galileo Press 2002
• Alles über ABAP: http://www.4ap.de/abap/abap.php
• Teach Yourself ABAP/4 in 21 days
http://cma.zdnet.com/book/abap/index.htm
• SAP Online Hilfe http://help.sap.com/ (Meist hilft aber
F1)
• Sehr Wertvoll: SAP-Beispiele im System (SE80)
8
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
„
Weitergabe und Vervielfältigung dieser Publikation oder von Teilen daraus sind, zu welchem Zweck und in welcher
Form auch immer, ohne die ausdrückliche schriftliche Genehmigung durch FHB Brandenburg, SG
Wirtschaftsinformatik nicht gestattet. In dieser Publikation enthaltene Informationen können ohne vorherige
Ankündigung geändert werden.
„
Microsoft®, WINDOWS®, NT®, EXCEL®, Word®, PowerPoint® und SQL Server® sind eingetragene Marken der
Microsoft Corporation.
„
IBM®, DB2®, OS/2®, DB2/6000®, Parallel Sysplex®, MVS/ESA®, RS/6000®, AIX®, S/390®, AS/400®, OS/390®
und OS/400® sind eingetragene Marken der IBM Corporation.
„
ORACLE® ist eine eingetragene Marke der ORACLE Corporation.
„
INFORMIX®-OnLine for SAP und Informix® Dynamic ServerTM sind eingetragene Marken der Informix Software
Incorporated.
„
UNIX®, X/Open®, OSF/1® und Motif® sind eingetragene Marken der Open Group.
„
Citrix®, das Citrix-Logo, ICA®, Program Neighborhood®, MetaFrame®, WinFrame®, VideoFrame®, MultiWin® und
andere hier erwähnte Namen von Citrix-Produkten sind Marken von Citrix Systems, Inc.
„
HTML, DHTML, XML, XHTML sind Marken oder eingetragene Marken des W3C®, World Wide Web Consortium,
Massachusetts Institute of Technology.
„
JAVA® ist eine eingetragene Marke der Sun Microsystems, Inc.
„
JAVASCRIPT® ist eine eingetragene Marke der Sun Microsystems, Inc., verwendet unter der Lizenz der von
Netscape entwickelten und implementierten Technologie.
„
SAP, SAP Logo, R/2, RIVA, R/3, SAP ArchiveLink, SAP Business Workflow, WebFlow, SAP EarlyWatch, BAPI,
SAPPHIRE, Management Cockpit, mySAP, mySAP.com und weitere im Text erwähnte SAP-Produkte und Dienstleistungen sowie die entsprechenden Logos sind Marken oder eingetragene Marken der SAP AG in
Deutschland und anderen Ländern weltweit. MarketSet und Enterprise Buyer sind gemeinsame Marken von SAP
Markets und Commerce One.
„
Alle anderen Namen von Produkten und Dienstleistungen sind Marken der jeweiligen Firmen.
9
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
1: Intro – Was ist ABAP?
• ABAP einordnen und abgrenzen
• Mindmap
• Komplettes Beispiel (klassisch Æ Bezug auf ganzen
Lehrgang)
• Übungsblatt
10
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
1: Stichworte
•
•
•
•
•
•
ABAP-Sprache
Entwicklungsumgebung (ähnlich Eclipse)
Bibliothek
Laufzeitumgebung
Object-Navigator: SE80
Namensraum Z
– zz##progname
•
•
•
•
•
•
Kein Top-Include
Lokales Objekt (wir wollen nicht transportieren)
Entwicklungsklasse Æ Paket (4.7)
Pretty-Printer
Vorwärtsnavigation
Systemfelder
11
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Vorwärtsnavigation
12
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Kein Top-Include
13
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Kaufm. Rechnen
14
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Lokales Objekt Æ eingeschränkte Transportierbarkeit
15
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Änderbarkeit aktivieren: Nun geht es los
Achtung: Das ist kein Schmutz auf dem Bildschirm!
16
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Entwicklung des ABAP-Programms
• Hallo Welt, Syntax, Kenntensatz
PrüfenÆAktivierenÆAusführen (F8)
• Hallo Welt mit sy
• Hallo Welt mit Parametereingabe
• Pretty Printer
• Nun Abflugort aus SPFLI Æ Vorwärtsnavigation, like
• Æ Wertehilfe funktioniert!!!
• Datenbankabfrage
17
© FHB, Höding 03/2005,
ABAP Einführung
FH Brandenburg - Wirtschaftsinformatik
Hallo Welt…
*&-------------------------------------------------------------------*& Report ZZ38HALLO
*&
*&-------------------------------------------------------------------*& Erstes ABAP-Programm im HCC-Kurs
*& im März 2005 (M. Höding)
*&-------------------------------------------------------------------REPORT zz38hallo.
Globale Deklaration
Parameters eingabe1(22) type c default 'Brandenburg'.
START-OF-SELECTION.
Ausführungsteil wird von der
Laufzeitumgebung aufgerufen
WRITE: 'Hallo ', eingabe1.
Sogenannter Kettensatz
18
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Komplettes Beispiel mit DB-Zugriff
REPORT zz38hallo.
PARAMETERS abflugo LIKE spfli-cityfrom.
DATA waspfli LIKE spfli.
START-OF-SELECTION.
WRITE: 'Hallo ', abflugo,/.
SELECT *
FROM spfli
INTO waspfli
WHERE cityfrom = abflugo.
WRITE: waspfli-cityto,waspfli-carrid,waspfli-fltime,/.
ENDSELECT.
19
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
20
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
21
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Beispiele
22
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
23
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
1: Übungsaufgaben
Kennen lernen des Object Navigator
• Rufen Sie den Object Navigator auf: Transaktion SE80
Wie ist der Pfad?
• Verschaffen Sie sich einen Überblick über die von der SAP
ausgelieferten Hilfen und Beispiele
a) Unter Umfeld Æ Beispiele gibt es eine umfangreiche
Sammlung von Quelltexten zu den Themen Ergonomie,
Performance, Controls und ABAP-Beispielen
b) Wählen Sie im Bereich „Performance Beispiele“ die
Gegenüberstellungen von einzelnen Ausdrücken und
Programmierbeispielen und messen Sie jeweils die Laufzeit
(sofern möglich) der vorgestellten Beispiele und lesen Sie die
Erläuterungen zu den Beispielen, warum einige
Programmierbefehle eher genutzt werden sollten als andere
bzw. in welchen Situationen die Verwendung welches Befehls
besser geeignet ist:
b1) Select ...Where vs. Select + Check
24
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
1: Übungsaufgaben
•
•
•
•
Anzeige des Transaktioncodes SE80:
Wechseln Sie im Object Navigator auf das Repository
Infosystem und wählen Sie im Objektlistenbereich den Eintrag
Weitere Objekte Æ Transaktion aus. Suchen Sie nach dem
Transaktionscode *SE8* (die Suche mit Platzhaltern
funktioniert) und lassen Sie sich die Details anzeigen.
a) Zu welchem Paket gehört die Transaktion SE80?
b) Welche Transaktionsklassifikation hat die Transaktion SE80?
c) Mit welchen GUI arbeitet die Transaktion SE80?
Schreiben Sie analog der Demonstration ein ‚Hallo Welt‘Programm.
Modifizieren Sie das Programm so, dass Sie zwei Zahlen als
Parameter eingeben können und eine Berechnung durchführen
Geben Sie mit Hilfe der Systemfelder den Mandanten und den
Nutzernamen aus
25
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
1. Übungsaufgaben
1. Schreiben Sie analog der Demonstration ein ‚Hallo
Welt‘-Programm.
2. Modifizieren Sie das Programm so, dass sie zwei
Zahlen als Parameter eingeben können und eine
Berechnung durchführen
3. Geben Sie mit Hilfe der Systemfelder den Mandanten
und den Nutzernamen aus
26
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
1: Fazit
Sie sollten nun
• einen grundsätzlichen Eindruck von der Komplexität
von ABAP erhalten haben
• mit Hilfe des Object Navigator sehr einfache Reports
schreiben können
• Beispiele in der Hilfe finden und nutzen können
27
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
2: Datentypen 1
• Vorstellung elementarer Datentypen und Nutzung
(Grundrechenarten) (Vortrag 30 Minuten)
• Elementare Datentypen
i: integer, ganze Zahl
p: packed, gepackte Zahl (kaufm. Rechnen)
f: float, Gleitpunktzahl (ungenaues Rechnen)
c: Charakter, Zeichenkette (max. 65536)
n: Charakter, numerischer Text (max. 65536)
d: Datum (sehr nützlich)
t: Zeit (sehr nützlich)
string: Text (wie c aber dynamisch), xstring (Bytefolge)
28
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Stichworte
• Definition, Datentyp vs. Datenobjekt, Nutzung
• DATA: anumber TYPE p DECIMALS 2,
mytext(200) TYPE c value ‘leer‘,
myvtext TYPE string.
• TYPES zeittyp TYPE t.
• DATE myzeit TYPE zeittyp.
myzeit = sy-uzeit.
myzeit = myzeit + 7200.
write: 'Moskau',myzeit.
• LIKE
• Eingebaute Typen im ABAP-Dictonary
29
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
2: Übungsaufgaben (40 Min)
•
•
•
•
Legen Sie ein Programm zz##datentypen
Definieren Sie einen Typ mytype zu f.
Definieren Sie 2 Datenobjekte (x1,x2) zu mytype
Führen Sie eine Division und „Rückwärts-Multiplikation“
z. B. durch 3 durch: Beobachten Sie die Ergebnisse
und Zwischenergebnisse.
• Experimentieren Sie mit p durch Änderung von TYPES
• Wie funktionieren Zuweisungen zwischen
verschiedenen Datentypen?
– Verboten, erlaubt, verfälschend?
• Experimentieren Sie mit der Datumsrechnung
– In wie vielen Tagen ist Weihnachten? (*P)
– Was passiert bei der Multiplikation von/mit Datumswerten?
• Kann man mit Zeichenketten rechnen?
30
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
2: Fazit
Sie sollten nun
• Datentypen und Datenobjekte definieren und
beherrschen können
• wissen, inwieweit sich Datenobjekte verschiedener
Typen ineinander umwandeln oder nutzen lassen
• den Sinn eingebauter Datentypen kennen
31
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
3: Datentypen 2
• Vorstellung der Strukturierten Datentypen Struktur
und interne Tabelle (Vortrag 45 Minuten)
• Bezug zu herkömmlichen Programmiersprachen
– Records, Arrays … Mengen
• Tiefe vs. Flache Datentypen
• LIKE benutzen
• Objektorientierung
32
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
3: Stichworte
Strukturierte Datentypen
• Strukturierte Typen
– Feste Anzahl von Feldern
– Strukturen in Strukturen möglich
– Anspechen mittels – (Bindestrich)
• Z.B. sy-uname
• Interne Tabellen
– Beliebig viele Elemente
– Auch Schachtelung möglich
– Interne Tabellen vs. Datenbanktabellen
• ABAP-Dictionary
33
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
3: Vorgehen
• Strukturierte Typen – Syntax erklären
BEIN OF … END OF.
• Beispiel
– Adressentyp mit TYPES definieren.
– 2 Adresseobjekte anlegen
– Zuweisung ganzer Strukturobjekte
• Inkludieren anderer Strukturen und Feldzugriff
– INCLUDE STRUCTURE adresse AS adr RENAMING WITH
SUFFIX _adr
– kunde-plz_adr
• LIKE greift oft auf strukturierte Typen zu
34
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
3: Beispiel: Strukturierte Typen
TYPES: BEGIN OF adresse,
name(40) TYPE c,
strasse(40) TYPE c,
ort(40) TYPE c,
plz type i,
END OF adresse.
DATA: fhbadr type adresse,
ibawadr type adresse.
fhbadr-name = 'FH Brandenburg'.
fhbadr-strasse = 'Magdeburger Str. 50'.
fhbadr-ort = 'Brandenburg'.
fhbadr-plz = '38771'.
ibawadr = fhbadr.
ibawadr-name = 'Insttit für ...'.
write: ibawadr-name, ibawadr-strasse, ibawadr-plz, ibawadr-ort.
35
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
3: Vorgehen (2)
• Interne Tabelle einführen
– Was sind interne Tabellen?
– TYPES DATA … LIKE … tabkind OF linetype WITH key
• Definition einer internen Tabelle Æ Beispiel
• Nutzung einer internen Tabelle Æ Vorgriff Schleife
• Typen interner Tabellen
– STANDARD TABLE
– SORTED TABLE
– HASHED TABLE
• Intern durch Referenzen verwaltet
36
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
3: Beispiel interne Tabelle
DATA adressen TYPE TABLE OF adresse WITH KEY name.
APPEND ibawadr TO adressen.
APPEND fhbadr TO adressen.
DATA: adr TYPE adresse.
LOOP AT adressen INTO adr.
WRITE: adr-name, adr-strasse, adr-plz, adr-ort.
ENDLOOP.
37
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
ABAP-Dictionary
• Bislang definierte Datentypen sind nur
programmlokal verfügbar
• ABAP-Dictionary bietet globale Datentypen, die in
Programmen genutzt werden können (LIKE,
Vorwärtsnavigation)
• Eigene Strukturen können im ABAP-Dictionary
angelegt werden (SE11)
• Zahlreiche eingebaute Type im ABAP-Dictionary, z.B.
DEC, INT1, INT2, CURR, QUAN
38
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
SE11 Startbildschirm
39
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
40
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Anlegen einer Struktur
Hier direkte Typeingabe
einschalten
41
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Nutzung des neuen Datentypen
DATA adressen TYPE TABLE OF zz38adresse WITH KEY name.
APPEND ibawadr TO adressen.
APPEND fhbadr TO adressen.
DATA: adr TYPE adresse.
LOOP AT adressen INTO adr.
WRITE: adr-name, adr-strasse, adr-plz, adr-ort.
ENDLOOP.
42
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
3: Übung
• Definieren Sie programmlokal einen strukturierten
Typen, der die Komponenten eines Essens
(Vorspeise, Getränk, …) speichern kann
• Legen Sie mehrere Datenobjekte zu ihrem Typ an
– A) kopieren sie dabei ganze Strukturen
– B) weisen Sie Feldwerte einzeln zu
• Legen Sie nun einen passenden Tabellentypen im
ABAP-Dictionary an Æ was ist hierbei
problematisch?
• Nutzen Sie ihren Tabellentypen zum Anlegen einer
Tabelle, die sie mit ihren Beispiel-Essen füllen
• Lesen Sie den Tabelleninhalt mit einer Schleife aus
Æ wie wirken SORTED TABLE und HASHED TABLE
43
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
3: Fazit
Sie sollten nun
• Strukturierte Datentypen definieren können
• Strukturierte Datenobjekte benutzen können
• Interne Tabellen verstehen sowie definieren und
benutzen können
• Datentypen im ABAP-Dictionary begreifen
44
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
4: Operationen und Kontrollstrukturen
Vortrag mit Demo = Beispiel
• Vorstellung grundlegender Operationen (30 Min)
(Intro: einiges haben wir schon benutzt)
–
–
–
–
Wertzuweisung (MOVE)
Typkonvertierung
Numerische Operationen
Logische Ausdrücke
• Vorstellung grundlegender Kontrollstrukturen (30 Min)
– Bedingte Verzweigungen
– Schleifen
• Zeichenkettenverarbeitung
Æ Vergleich mit anderen Sprachen
45
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Stichworte: Operationen
• MOVE quelle TO ziel entspricht ziel = quelle.
– Kompatibel, konvertibel oder Syntaxfehler
• Einschub Debugger
–
–
–
–
Addition Zahl mit String, DIV, MOD
Mathematische Funktionen Demo ceil… , sin… einer Zahl
Zeitberechnung Æ Adressierung von Teilfeldern
Logische Ausdrücke: = entspricht EQ, <= entspr. LE, usw.
sowie NOT, AND, OR
– Vergleich von Strukturen möglich
– Vergleich von Tabellen (Anzahl der Zeilen, dann
Zeilenweise)
• Erinnerung: Strukturen zuweisen
• Zeichenketten
46
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Typkonvertierung
• ABAP versucht Typen zu konvertieren
• Grundregel: Wenn es eine sinnvolle Entsprechung
des Wertes (!) im Zieldatentyp gibt, wird konvertiert
• Statische Inkompatibilität
– Zwischen d und t
• Dynamische Inkompatibilität
– ‘1234Hallo‘ und i (Zeichenkette und Zahl)
• Dynamische Kompatibilität
– ‘12345‘ und i (Zeichenkette und Zahl)
• Laufzeitfehler abfangen mit
CATCH SYSTEM-EXCEPTION conversation_errors =4. ENDCATCH.
47
© FHB, Höding 03/2005,
ABAP Einführung
FH Brandenburg - Wirtschaftsinformatik
4: Beispiel
REPORT zz38operationen
DATA: num TYPE p DECIMALS 2,
d_start TYPE d,
xmas TYPE d,
days TYPE i,
tnum TYPE string.
.
num = 11.
tnum = 22.
num = num * tnum.
WRITE num.
d_start = sy-datum.
xmas = d_start.
xmas+3(4) = '1224'.
WRITE: /, xmas.
days = xmas - d_start.
WRITE: /,'Tage bis Weihnachten:',days.
48
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Stichworte: Kontrollstrukturen
• Bedingte Verzweigung
IF … ELSEIF … ELSE … ENDIF
• CASE… WHEN… WHEN…ENDCASE. (Beispiel mit
sy-datum+4(2) und Jahreszeit)
• Bedingte Schleifen
WHILE log_ausdr. Anweisungsblock. ENDWHILE.
Æsy-index
• Nichtbedingte Schleifen
DO n TIMES. Anweisungsblock. ENDDO.
Beispiel Sinuskurve mit sy-index und Zahlenausg.
49
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Stichworte: Zeichenkettenverarbeitung
• CONCATENATE s1 s2 INTO s2 SEPERATED BY
SPACE.
• SPLIT s AT ‘|‘ INTO s1, s2, s3.
• SEARCH s1 FOR ‘m*en‘. (sy-fdpos)
• REPLACE ‘, ‘ WITH ‘- ‘INTO s.
• Strlen (s1)
• Zeichenkettenvergleich:
– CO (contains Only) s1 enthält nur Zeichen aus s2
– CP (covers Pattern) Mustervergleich mit (*+)
• Sinusbeispiel mit CONCATENATE erweitern
50
© FHB, Höding 03/2005,
ABAP Einführung
FH Brandenburg - Wirtschaftsinformatik
Beispiel
REPORT zz38kontrollstrukturen
.
DATA: a TYPE i VALUE 3,
b TYPE i VALUE 5,
c TYPE i VALUE -12.
IF a < b.
WRITE 'A ist kleiner als B'.
ELSEIF b < c.
WRITE 'B ist am kleinsten'.
ELSE.
WRITE 'C ist am kleinsten'.
ENDIF.
51
© FHB, Höding 03/2005,
ABAP Einführung
FH Brandenburg - Wirtschaftsinformatik
Beispiel
REPORT zz38kontrollstrukturen
.
DATA: f1 TYPE f VALUE 0,
f2 TYPE f,
isin TYPE i,
graph TYPE string.
DO 32 TIMES.
f2 = SIN( f1 ) * 50 + 50.
isin = f2.
graph = ''.
DO isin TIMES.
CONCATENATE graph '.' INTO graph.
ENDDO.
WRITE: /,graph,'X'.
f1 = f1 + '0.2'.
ENDDO.
52
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Debugger starten
Kontextmenü wird mit
rechter Maustaste erreicht
53
© FHB, Höding 03/2005,
ABAP Einführung
FH Brandenburg - Wirtschaftsinformatik
Debugger benutzten
Notizen:
F5
F6
Aktuelle Programmposition
Werte beobachten
54
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
4: Übung
•
•
•
•
•
Schreiben sie eine Programmsequenz, die zwei Zahlen
miteinander verknüpft und testen sie die Operation DIV und
MOD aus
Programmieren sie mit Hilfe einer (beliebigen) Schleife einen
Report, der einen Tilgungsplan für einen Kredit erstellt.
Eingangsparameter sind die Kreditsumme, die monatliche
Tilgung, der nominelle Jahreszins. Verzinst und getilgt wird
monatlich.
Optional: Fügen sie eine jährliche Sondertilgung in den ersten 8
Jahren hinzu
Benutzen Sie den Debugger um ihre Schleifen zu beobachten
Weiterhin: Debugger erkunden
– Funktionstasten, Werkzeugbuttons erkunden und notieren
– Setzen Sie einen geeigneten Watchpoint
•
Erstellen sie eine Endlosschleife und testen Sie, wie ABAP mit
einem solchen üblichen Programmierfehler umgeht
– Vorher anderer Modus öffnen: dort sm50 (refresh notwendig)
– Machen Sie eine kurze Pause, beobachten Sie: Was passiert nach
300.. 600 Sekunden?
55
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
4: Fazit
Sie sollten nun
• Grundlegende Operationen und Kontrollstrukturen
kennen und beherrschen
• Die Grenzen und Möglichkeiten der Typkonvertierung
verstehen
• Mit Zeichenketten arbeiten können
• Interne Tabellen benutzen können
56
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
5: Lokale Modularisierung
• Motivation: Softwareengineering Æ Wartbarkeit,
Wiederverwendbarkeit (Vortrag 45 Min)
• Programme besser strukturieren
• FORM… ENDFORM
• PERFORM
• Parameterübergabe
– Call by Value: Hier wird kopiert
– Call by Referenz: Hier wird auf Originaldaten gearbeitet
57
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Vorgehen
• FORM mit PERFORM (‚Ich will immer…‘)
• Parameterübergabe mit USING (ich_will_oft)
• Call By Reference
- USING – Änderung der Eingabeparameter möglich
- CHANGING - Änderung der Eingabeparameter möglich
wie USING: Empfehlung bei USING lokal nicht ändern
- Call by Value: Mit einer Kopie des Wertes wird
gearbeitet
– USING VALUE – Änderung der Eingabepar. nicht möglich
– CHANGING VALUE – Änderung bei Verlassen durch
ENDFORM, CHECK oder Exit
• Ausblick Modularisierungstechniken
58
© FHB, Höding 03/2005,
ABAP Einführung
FH Brandenburg - Wirtschaftsinformatik
Beispiel: FORM ohne Parameter
REPORT zz38ichwill
DATA wunsch TYPE string VALUE 'eine Pause'.
.
DO 10 TIMES.
PERFORM ich_will.
ENDDO.
PERFORM ich_will_oft USING 33 wunsch.
WRITE:/ wunsch.
FORM ich_will.
WRITE: 'Ich will immer alle Sätze mit einem Punkt abschliessen.'.
ENDFORM. "ich_will
FORM ich_will_oft USING anz TYPE i was TYPE string.
DO anz TIMES.
WRITE: 'Ich will',was,'!'.
ENDDO.
was = 'Jetzt reicht es aber'.
ENDFORM.
"ich_will_oft
59
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
5. Übung
• Entwickeln Sie ihr Kreditplanungsprogramm so
weiter, dass ein Unterprogramm den Tilgungsplan
berechnet.
• Modifizieren Sie das Unterprogramm so, dass es
abhängig von einem Eingangsparameter eine
ausführliche Ausgabe liefert oder nur die
Kreditlaufzeit als Rückgabeparameter liefert.
• Rufen Sie das Unterprogramm mit verschiedenen
Monatsraten auf, die eine Schleife liefert.
60
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
5: Fazit
Sie sollten nun
• Lokale Modularisierung kennen.
• Den Umgang mit Parametern (call by refernce, call
by value) beherrschen.
61
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
6: Tabellen nutzen
•
•
•
•
•
Interne Tabellen – SQL-ähnliche Syntax (Vortr. 60m.)
Eines der mächtigsten Sprachelemente von ABAP
Seit 4.0 beliebige Schachtelung
Tabelle mit Kopfzeile (<=3.0)
Tabellenarten
– STANDARD TABLE
– SORTED TABLE
– HASHED TABLE
• Spezielle Tabellenanweisungen
– Einzelsatzbehandlung
– Operationen auf der ganzen Tabelle
• Interne Tabellen vs. Datenbanktabellen
62
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Stichworte
•
•
•
•
Definieren einer internen Tabelle zu teilnliste
Einfügen von Datensätzen APPEND
Ausgabe aller Datensätze mit LOOP AT
Ausgabe einzelner Datensätze mit
READ TABLE teilnliste WITH TABLE KEY name = 'Reber' INTO wa.
– dazu key definieren
•
•
•
•
•
Sortieren
Massendatenänderung: Brandenburg Æ FHB
SORTED TABLE … UNIQUE KEY Æ sort verboten Æ
Laufzeitfehler bei APPEND Æ per Hand umsortieren
Einfügen INSERT: bei sortierten Tabellen wird sortiert eingefügt
Löschen: Delete
– FROM key, WITH TABLE key v=w, WHERE Ausdruck
63
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Beispiel
REPORT zz38_interne_tabelle
.
TYPES: BEGIN OF teilnehmer, name TYPE string, stadt TYPE string, END OF teilnehmer.
DATA: wa TYPE teilnehmer,
teilnliste TYPE SORTED TABLE OF teilnehmer WITH UNIQUE KEY name.
wa-name = 'Lang'.
wa-stadt = 'Berlin'.
APPEND wa TO teilnliste.
wa-name = 'Reber'. wa-stadt = 'Brandenburg'. APPEND wa TO teilnliste.
wa-name = 'Hausmann'. wa-stadt = 'Brandenburg'. APPEND wa TO teilnliste.
LOOP AT teilnliste INTO wa.
WRITE: wa-stadt, wa-name,/.
ENDLOOP.
READ TABLE teilnliste WITH TABLE KEY name = 'Reber' INTO wa.
WRITE: 'Stadt zu Name:', wa-stadt,/.
*SORT teilnliste.
wa-stadt = 'FH Brandenburg'.
MODIFY teilnliste FROM wa TRANSPORTING stadt WHERE stadt = 'Brandenburg'
.
LOOP AT teilnliste INTO wa.
WRITE: wa-stadt, wa-name,/.
ENDLOOP.
64
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
6: Übung
• Definieren Sie einen strukturierten Typ für einen
Jahresdatensatz des Tilgungsplans
• Legen Sie eine interne Tabelle für den Tilgungsplan
an und füllen Sie diese
• Sortieren Sie nun ggf. die Tabelle absteigend nach
der Restsumme
• Inwieweit ist eine interne Tabelle sinnvoll für den
Tilgungsplan – welcher Typ ist geeignet? Notieren sie
kurz Ihren Vorschlag und den ihre Pro/ContraArgumente
65
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
6: Fazit
Sie sollten nun
• einen grundsätzlichen Überblick über die
verschiedenen Arten interner Tabellen besitzen
• interne Tabelle füllen können, Workarea-Konzept
• interne Tabellen manipulieren können
– Einzelsatz vs. Gesamte Tabelle
• auf Elemente Interner Tabellen zugreifen können
66
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
7: Datenbankzugriff – SQL-Anfragen
• Einführung Datenbanknutzung (60 Minuten)
• Überblick über Zusammenspiel von SAP-Appl.Server und DBMS
• Open-SQL vs Nativ SQL
• Einfaches SELECT
• Erweiterungen
– Genauer sein: Mehr where
– Zusammenfassen: Aggregatfunktionen
– Verschmelzen: Join
67
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Stichworte
• Grafik: CS-Architektur mit DB-Zugriff
• Datenbank grundsätzlich als Integrationskomponente
• Nutzung mit SQL und Frontend
– Datendefinition
– Datenmanipulation
– Abfrage
• Beispieldatenbank mit SPFLI mit SE11 anschauen
• Grundlage relationaler Datenbaken
– Modellierung, Schlüssel, Transaktionen
– SQL: Standard vs. Native SQL
• SELECT FROM – Beispiel SPFLI
• WHERE - Einschränkung auf fromcty FRA
• Mengenoperationen vs. Einzeloperationen
68
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
SELECT FROM WHERE
•
•
•
•
•
SELECT was
FROM woher
INTO wohin (Das gibt es in SQL so nicht)
WHERE Bedingung (Einschränkung)
ENDSELECT (Schleife zur satzweisen Bearbeitung)
• Genau ein Datensatz: SELECT SINGLE
• SELECT … CORRESPONDING FIELDS um
strukturiertes WA mit LIKE zu definieren und
trotzdem nicht * nehmen zu müssen
• WHERE und Indexe
69
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Performance – gerade bei DB-Zugriff wichtig
• Treffermenge klein halten
• Übertragene Datenmenge klein halten
– Niemals *
– immer where
• Zahl der DB-Zugriffe klein halten
– Ergebnisse in internen Tabellen zwischenspeichern?
70
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
SPFLI im ABAP-Dictionary
71
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
SPFLI: Liste der Spalten der Tabelle SPFLI
72
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Technische Einstellungen
Interessant: Größenkategorie
73
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Beispiel SFW
REPORT ZZ38_SQL1
.
DATA waspfli LIKE spfli.
START-OF-SELECTION.
SELECT *
FROM spfli
INTO waspfli
WHERE cityfrom = 'FRANKFURT'.
WRITE: waspfli-cityto,waspfli-carrid,waspfli-fltime,/.
ENDSELECT.
74
© FHB, Höding 03/2005,
ABAP Einführung
FH Brandenburg - Wirtschaftsinformatik
Beispiel: SINGLE und eingeschr. Workarea
REPORT zz38_sql1
.
DATA: wato LIKE spfli-cityto,
wacarr LIKE spfli-carrid.
START-OF-SELECTION.
SELECT cityto carrid
FROM spfli
INTO (wato, wacarr)
WHERE cityfrom = 'FRANKFURT'.
WRITE: wato,wacarr,/.
ENDSELECT.
SELECT SINGLE cityto carrid
FROM spfli
INTO (wato, wacarr)
WHERE cityfrom = 'FRANKFURT'.
WRITE: 'Single',wato,wacarr,/.
75
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Beispiel select into ganze Tabelle
REPORT zz38_sql1
.
DATA: watab TYPE TABLE OF scarr,
wasatz LIKE scarr.
START-OF-SELECTION.
SELECT *
FROM scarr
INTO TABLE watab.
LOOP AT watab INTO wasatz.
WRITE wasatz-carrid.
ENDLOOP.
76
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
7: Übung
• Nutzen Sie das ABAP-Dictionary um die Attribute der
Tabellen SCARR, SFLIGHT und SBOOK zu ermitteln
– notieren Sie die Tabellenstruktur,
– eine geeignete Beschreibung der Tabelle
– und die Beziehungen zwischen den Tabellen
• Betrachten Sie den Inhalt der Tabelle mit dem Data
Browser (SE16)
• Schreiben Sie einen Report, der alle Fluglinien mit
Code, Name und Hauswährung auflistet
• Beschränken Sie ihre Aufgabe auf Fluglinien die EUR
als Währung haben
77
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Fazit
Sie sollten nun
• Das grundsätzliche Zusammenspiel von SAP und
Datenbanksystem verstanden haben
• Informationen über DB-Tabellen aus dem ABAPDictionary gewinnen können
• Einfache Anfragen in Open-SQL formulieren und
implementieren können
78
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
SQL-Anfragen – „Mehr in WHERE“
• SQL-Anfragesprache ist sehr mächtig
• Weitere Möglichkeiten in WHERE
– Bereichsanfragen
– LIKE (das SQL-Like)
• Genau das anfordern was man will Æ Performance
79
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Stichworte
• Grundsätzlich: Logische Verknüpfungen sind üblich
– AND Æ schränkt Ergebnis ein: Beispiel sbook-smoker
– Auf Größe des Scrollbar achten
• Where connid = 3504 and fldate < 20020308
• Nicht nur Konstantenvergleich sondern auch Attributvergleich
• Intervallprüfung
– BETWEEN bei Datum (BETWEEN ‚20020305‘ AND
‚20020428‘)
• Enthaltensein: IN für Mengen (nur kurz erklären Æ
SELECT OPTIONS)
• LIKE unscharfer Vergleich
– % beliebige viele Zeichen, _ genau ein Zeichen
– Passname like ‘%art%‘
80
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Beispiel: Bereichsanfrage und LIKE
REPORT zz38_sql_mehrwhere
.
DATA: wa LIKE sbook.
SELECT *
FROM sbook
INTO wa
WHERE connid = '3504' AND
fldate BETWEEN '20020305' AND '20030428'.
WRITE: wa-smoker.
ENDSELECT.
SELECT *
FROM sbook
INTO wa
WHERE passname LIKE '%art%'.
WRITE: wa-passname.
ENDSELECT.
81
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Übung
• Schreiben Sie einen Report, der alle Flughäfen
ausgibt, bei denen der Flughafencode Teil der Stadt
ist
– Welche Tabelle enthält diese Informationen?
– Vergleich von Attributen mit LIKE
82
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Fazit
Sie sollten
• Zusätzliche Sicherheit mit SQL-Anfragen gewonnen
haben
• Logische Verknüpfungen in der WHERE-Klausel
problemlos anwenden können
• Mit IN und BETWEEN arbeiten
• Unscharfe Anfragen mit LIKE und Mustern
formulieren können
83
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
SQL-Anfragen - Aggregation
• Aggregation ist Zusammenfassung und Berechnung
• Wesentliche Aggragatfunktionen in SQL eingebaut
und Verfügbar
• Aggregation liefert leistungsfähige Berichte
• Erster Ansatz für Data-Mining
84
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Stichworte, Vorgehen
• Überblick über Aggregatfunktionen:
– MAX, MIN (numerisch, String)
– AVG - Mittelwertbildung
– SUM - Summenbildung
– COUNT – Zählen, Anzahl ermitteln
Æ SBOOK „Maximalgewicht des Gepäcks“, Anz. Einträge in
SBOOK
• Gruppierung: Anzahl pro connid, fldate
• Sortierung: ORDER BY
• HAVING Bedingung auf eine Gruppe (z.B.
AVG(LUGGWEIGHT)>20.
85
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Beispiel
REPORT zz38_sql_mehrwhere
.
DATA: wa LIKE sbook,
maxg LIKE sbook-luggweight,
flnr LIKE sbook-connid,
datum LIKE sbook-fldate.
SELECT connid fldate count( * )
FROM sbook
INTO (flnr, datum, maxg)
GROUP BY connid fldate
ORDER BY fldate.
WRITE: /, flnr, datum, maxg.
ENDSELECT.
86
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Übung
• Schreiben Sie ein Programm, das das
Durchschnittsgewicht des Fluggepäcks ermittelt
• Gruppieren Sie so
– dass Sie das Durchschnittsgewicht für bestimmte
Flugverbindungen ermitteln
– dass Sie das Durchschnittsgewicht für bestimmte Flüge
(Verbindung und Datum) ermitteln
• Schreiben Sie ein Programm, das die Anzahl der
Flüge gruppiert nach Personen ermittelt
87
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
SQL-Anfragen - Joins
• Relationaler Entwurf beinhaltet Normalisierung Æ
Zerhacken von Tabellen in Untertabellen zur
Redundanzvermeidung bzw.
Konsistenzunterstützung
• Älteres ABAP: Geschachtelte Schleifen
• Join – Verbund setzt Tabellen wieder zusammen
• Gemeinsames Attribut (Schlüssel-Fremdschlüssel)
88
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Stichworte
• Nochmals an Tafelbeispiel Normalisierung und Join
erklären: SCARR – SPFLI
• Views: eine Verirrung? (~4.0)
• Join ersetzt geschachtelte SELECT-Schleifen
– Funktional gleichwertig aber Performance und Einfachheit
• Join-Syntax: FROM tab1 INNER JOIN tab2 ON joinVergleich Æ Beispiel
• Join Arten
– Inner Join,
– Left Outer Join Æ Nullwerte
• Umbenennung mit AS
89
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Beispiel
REPORT zz38_sql_join
.
DATA: wan LIKE scarr-carrname,
waab LIKE spfli-cityfrom,
waan LIKE spfli-cityfrom.
SELECT scarr~carrname spfli~cityfrom spfli~cityto
FROM scarr INNER JOIN spfli ON scarr~carrid = spfli~carrid
INTO (WAN,WAAB,WAAN)
ORDER BY cityfrom.
WRITE: wan,waab,waan,/.
ENDSELECT.
90
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Übung
• Ermitteln Sie: Von wo nach wo ist Amelie Vrsic an
welchen Tagen geflogen?
–
–
–
–
Join mit 2 Tabellen
Wo sind die Passagiernamen gespeichert?
Wo sind Ortsnamen gespeichert?
Wie (über welches gemeinsame Attribut) sind die Tabellen
miteinander verbunden?
• Erweitern Sie auf einen Join mit drei Tabellen, wobei
zusätzlich der Name der Fluggesellschaft
ausgegeben wird: Welche Airline bevorzugt Amelie
Vrsic?
91
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Beispielausgabe
92
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Fazit
Sie sollten nun
• Aggregatfunktionen kennen und beherrschen
• Mit Gruppierung umgehen können und so
zusammenfassende Berichte erstellen können
• Den Verbund (Join) nutzen können, um Tabellen zu
verknüpfen
93
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
8: SQL-Datenmanipulation
• Datenmanipulation notwendig um Daten zu pflegen
• Weniger Komplex als Anfrageteil
• SQL: Grundsätzlich mächtige Mengenoperationen
– Gefährlich!
• Einfügen, Ändern und Löschen von Zeilen in DBTabellen
• Berechtigungsprüfung und Konsistenzsicherung
94
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Vorgehen, Varianten
• Einfügen: SQL wie Standard
INSERT INTO scarr VALUES wa_carr oder
INSERT spfli FROM wa_spfli
INSERT spfli FROM TABLE carr_tab.
Æ Beispiel FHB-Airline
• Löschen
DELETE FROM scarr WHERE carrid = ‘LH‘
Æ LH löschen, Hinweis SPFLI ist inkonsistent (SE16)
DELETE scarr FROM wa_scarr
DELETE scarr FROM TABLE scarr_tab
• Modifizieren mit UPDATE
UPDATE spfli SET carrid = ‘FHB‘ where carrid = ‘AC‘
Auch UPDATE FROM (TABLE)
95
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Beispiel
REPORT zz38_sql_dml
.
DATA: wa LIKE scarr.
wa-carrid = 'FHB'.
wa-carrname = 'Air FH Brandenburg'.
wa-currcode = 'EUR'.
wa-url = 'www.fh-brandenburg.de'.
INSERT scarr FROM wa.
*DELETE FROM scarr WHERE carrid = 'LH'.
UPDATE spfli SET carrid = 'FHB' WHERE carrid = 'AA'.
WRITE: 'Geändert:',sy-dbcnt.
96
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Übung
• Fügen Sie einen Flug der FHB-Airline von
Brandenburg zu Ihrem Heimatort ein.
• Ändern Sie die Tabelle SBOOK so, dass alle Flüge
von Amelie Vrsic nun auf Ihren Namen laufen
• Halbieren Sie alle Flugpreise
• Was ergeben Sich für Erfahrungen in Hinsicht auf
Berechtigungen und Sicherheit in SAP? Notieren Sie
fünf Aussagen.
97
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Berechtigungsprüfung
REPORT demo_authorithy_check.
PARAMETERS pa_carr TYPE sflight-carrid.
DATA wa_flights TYPE demo_focc.
AT SELECTION-SCREEN.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD pa_carr
ID 'ACTVT' FIELD '03'.
IF sy-subrc = 4.
MESSAGE e045(sabapdocu) WITH pa_carr.
ELSEIF sy-subrc <> 0.
MESSAGE e184(sabapdocu) WITH text-010.
ENDIF.
START-OF-SELECTION.
SELECT carrid connid fldate seatsmax seatsocc
FROM sflight
INTO CORRESPONDING FIELDS OF wa_flights
WHERE carrid = pa_carr.
WRITE: / wa_flights-carrid,
wa_flights-connid,
wa_flights-fldate,
wa_flights-seatsmax,
wa_flights-seatsocc.
ENDSELECT.
98
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Fazit
Sie sollten nun
• Daten in SAP mittels ABAP manipulieren können
• Möglichkeiten und Gefahr von
Mengendatenänderungen vermitteln können
• Gefahren von unberechtigtem Zugriff von ABAP auf
Datenbankdaten erkannt habe
99
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
9: BSP mit SQL
• Business Server Pages sind eine einfache und
mächtige Möglichkeit SAP webfähig zu machen
• Vermischung von ABAP und HTML
– <%
• Einfache Demo mit DB-Anfrage
• Ablauflogik
100
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
BSP mit SE80-Entwickeln
101
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Eigenschaften: u.a. Pfad zur Seite (Problem?)
102
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Mit SICF ggf. Benutzer frei schalten und aktivieren
103
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
BSP-Beispiel
<%@page language="abap" %>
<html>
<body BGCOLOR="#ABCDEF">
<h2> Alle Airlines </h2>
<%
DATA: wa_carr TYPE scarr.
SELECT * FROM scarr INTO wa_carr.
%>
<%= wa_carr-carrname%> <br>
<%
ENDSELECT.
%>
Das war's
</body>
</html>
104
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
9: Fazit
Sie sollten
• BSP ansatzweise als einfache Technik zum WebZugriff auf SAP präsentieren können
• Ihr ABAP Wissen in BSPs anwenden können
Ausblick
• Komplexes Framework mit Ablaufsteuerung,
Sitzungsverwaltung, Prüfung, komfortable
Entwicklungsunterstützung
• … HTMLB… Objektorientierung
105
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
10. Zusammenfassung und Ausblick
• Erster Eindruck vom klassischen ABAP mit
Datenbanknutzen
• Berechtigungsprüfung?
•
•
•
•
•
Keine BAPIs
Keine Dynpro-Programmierung
Kein Screenpainter
Keine Objektorientierung
Kein JAVA
106
© FHB, Höding 03/2005,
FH Brandenburg - Wirtschaftsinformatik
ABAP Einführung
Lösung: Join mit 3 Tabellen (Amelie Vrsic)
REPORT zz38_sql_join
.
DATA: wan LIKE scarr-carrname,
waab LIKE spfli-cityfrom,
waan LIKE spfli-cityfrom,
n LIKE sbook-passname,
datum LIKE sbook-fldate.
SELECT scarr~carrname passname sbook~fldate cityfrom cityto
FROM sbook inner join spfli on sbook~connid = spfli~connid
inner join scarr on spfli~carrid = scarr~carrid
INTO (wan,n,datum,waab,waan)
WHERE passname = 'Amelie Vrsic'
ORDER BY sbook~fldate.
WRITE: wan,n,datum,waab,waan,/.
ENDSELECT.
107
© FHB, Höding 03/2005,
Herunterladen