TYPE

Werbung
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!
Herunterladen