Funktionsanalyse für einen programmgesteuerten Zugriff auf 3D-Modelle Robin Raetze Waldemar Gorbunov Braunschweig, 26.01.2017 GESIS, MV, Folie 1, Braunschweig, 23. Juni 2016 Programmieren für Fortgeschrittene Einführung in die Programmiersprache ABAP Überblick Firma, Abteilung, Folie 2, Salzgitter, xx. Xxxxx 20xx 1. Geschichte 2. Allgemeines 3. Grundlegende Sprachkonzepte 4. Beispiele Geschichte von SAP/ABAP 1972: Gründung von SAP und des R/1 1981: Das erste Echtzeit laufende System R/2 1992: Erste Version von R/3 und ABAP 2001: ABAP-Objects 2008: SAP HANA Heute: 82.400 Mitarbeiten (2016) und 20,8Mrd Umsatz (2015) über 50 Ländern Weltweit Firma, Abteilung, Folie 3, Salzgitter, xx. Xxxxx 20xx 2015: SAP Fiori Firma, Abteilung, Folie 4, Salzgitter, xx. Xxxxx 20xx ABAP ABAP • Allgemeiner Berichts-Aufbereitungs-Prozessor • Natürliche Sprache • Über 300 Schlüsselwörter; Tendenz steigend • Viele obsolete Schlüsselworte • "Code schreibt sich wie ein Buch" Firma, Abteilung, Folie 5, Salzgitter, xx. Xxxxx 20xx • Programmiersprache der 4. Generation • rasch – mit möglichst wenigen Codezeilen - komplette Anwendungen schreiben ABAP-Architektur • Imperative Sprache mit • Deklarativen (OpenSQL) und • Objektorientierten (ABAPObjects) Bestandteilen • Besitzt einen Compiler und Interpreter • ABAP wird in der VM interpretiert und in LowLevel-Code umgewandelt • LL-Code wird auf jeder Maschine individuell kompiliert Firma, Abteilung, Folie 6, Salzgitter, xx. Xxxxx 20xx • Alle Programmelemente werden in einer Datenbank gespeichert • Bietet Anbindung zu anderen Sprachen ABAP Dictionary Das ABAP Dictionary ermöglich das Nachschlagen von global erstellten Bestandteilen des ABAP Systems z.B. • Typen • Tabellen • Klassen Funktionsbausteine Views … Firma, Abteilung, Folie 7, Salzgitter, xx. Xxxxx 20xx • • • ABAP Syntax und Hallo-World • IF – ENDIF, LOOP – ENDLOOP, … • Leerzeichen als Trennsymbol • Doppelpunkt als Kettenanweisung • Kommentare mit einem " oder * " Programm-Bezeichnung REPORT zbc_demo_hello_world. " Ausgabe eines Strings WRITE 'Hello World!'. " Ausgabe einer Kette WRITE: 'Das ', 'ist ', 'eine ', 'Kette!'. " Genau das gleiche wie WRITE 'Das '. WRITE 'ist '. WRITE 'keine '. WRITE 'Kette!'. Firma, Abteilung, Folie 8, Salzgitter, xx. Xxxxx 20xx • Syntax ist angelehnt an COBOL • Anweisung endet mit einem Punkt • Blöcke beginnen und enden mit einem Keyword ABAP Logische Ausdrücke • Vergleichsoperatoren • Zahlen • • • Zeichenketten • • • <,>,<>,=, <=,>= LT,GT,NE,EQ,LE,GE CO (Contains), CN(Contains Not), …. Bitfolgen, Referenzen, ... Variablen prüfen • IS INIT • • Überprüft ob eine Variable initialisiert ist IS IN • Testet ob eine Variable in einer Tabelle enthalten in IS ASSIGNED • Checkt ob ein Feldsymbol implizit oder explizit zugewiesen ist Firma, Abteilung, Folie 9, Salzgitter, xx. Xxxxx 20xx • ABAP Kontrollstrukturen und Schleifen • Kontrollstrukturen • If, Case-When • Schleifen • Loop, While, Do, Select • Kontrollanweisungen: Continue, Check, Firma, Abteilung, Folie 10, Salzgitter, xx. Xxxxx 20xx Exit ABAP Typisierung Zusammengesetzte Datentypen • Strings, Strukturen, Tabellen Zeigertypen • Referenzen, Feldsymbole Individuelle Datentypen • Standardtypen von SAP, z.B. DATE • Datentypen können selber definiert werden TYPES mytext(10) TYPE c. TYPES mynumber TYPE i. TYPES: BEGIN OF hero, title(5) TYPE c, first_name(10) TYPE c, last_name(10) TYPE c, age TYPE i. END OF hero. Firma, Abteilung, Folie 11, Salzgitter, xx. Xxxxx 20xx Elementare Datentypen • Bool, Char, Int, Float • Eigener SQL-Dialekt der Firma SAP • Native Integration von OpenSQL JAVA ABAP SELECT * FROM heroes INTO super_heroes WHERE power_level GT 9000. String JDBC_DRIVER = "[...]"; String DB_URL = "jdbc:mysql://[...]"; String USER = "username"; String PASS = "password"; Connection conn = null; Statement stmt = null; Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(DB_URL,USE R,PASS); stmt = conn.createStatement(); String sql; sql = "SELECT * FROM heroes WHERE power_level GT 9000. "; ResultSet super_heroes = stmt.executeQuery(sql); Firma, Abteilung, Folie 12, Salzgitter, xx. Xxxxx 20xx ABAP und OpenSQL ABAP Ausführbare Einheiten I • Forms • Vergleichbar mit einer lokalen Funktion • Unterschiedliche Parameterübergaben • • By Reference: CHANGING/USING By Value: CHANGING/USING VALUE() Firma, Abteilung, Folie 13, Salzgitter, xx. Xxxxx 20xx • Funktionsbausteine • Globale Funktion, die aus dem ganzen SAP System abrufbar ist • Parameterübergabe durch IMPORT/EXPORT und immer By Reference ABAP Ausführbare Einheiten II • Methoden • Wie bei Java an Klasse gebunden • Parameterübergaben wie bei Funktionsbausteinen • Wertwiedergabe • • Einzelne per RETURN Mehrere per EXPORTING • Können Exceptions werfen Firma, Abteilung, Folie 14, Salzgitter, xx. Xxxxx 20xx • Dynpro / Web-Dynpro • GUI Oberfläche ABAP Klassen und Interfaces • Klassen • Unterteilt in Definitions- und Implementationsbereich • Ähnlich wie bei C++ • Vererbung von Klasse • Keine Mehrfachvererbung • Implementation von Interfaces • Beliebig viele Firma, Abteilung, Folie 15, Salzgitter, xx. Xxxxx 20xx • Events zur Interaktion zwischen Klassen • For Event und Raise Event ABAP Ereignisblöcke Firma, Abteilung, Folie 16, Salzgitter, xx. Xxxxx 20xx • Definieren Ablauf des Programms • Aufruf durch Ereignisschlüsselwörter • INITIALZIATION • AT SELECTION-SCREEN • AT LINE-SELECTION ABAP Fehlerbehandlung • Sy-subrc • Zeile der Systemtabelle, in der der Rückgabewert von Befehlen steht z.B. SELECT • IF sy-subrc <> 0. EXIT. ENDIF. Firma, Abteilung, Folie 17, Salzgitter, xx. Xxxxx 20xx • Exceptions • Methoden/Forms/... können Exceptions werfen • Werden mit CATCH gefangen Firma, Abteilung, Folie 18, Salzgitter, xx. Xxxxx 20xx ABAP Beispiele Genug von der Theorie Herzlichen Dank für Ihre Aufmerksamkeit!