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,