programmieren für fortgeschrittene einführung in die ... · pdf filef i r m a, a b t...
TRANSCRIPT
GE
SIS
, M
V, F
olie
1,
Bra
un
sch
we
ig, 2
3. J
uni
20
16
Funktionsanalyse für einen programmgesteuerten Zugriff auf 3D-Modelle
Programmieren für FortgeschritteneEinführung in die Programmiersprache ABAPRobin RaetzeWaldemar Gorbunov
Braunschweig, 26.01.2017
Fir
ma
, Abt
eilu
ng, F
olie
2,
Sa
lzg
itter
, xx
. Xxx
xx 2
0xx
Überblick
1. Geschichte
2. Allgemeines
3. Grundlegende Sprachkonzepte
4. Beispiele
Fir
ma
, Abt
eilu
ng, F
olie
3,
Sa
lzg
itter
, xx
. Xxx
xx 2
0xx
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
2015: SAP Fiori
Heute: 82.400 Mitarbeiten (2016) und 20,8Mrd Umsatz (2015) über 50 Ländern Weltweit
Fir
ma
, Abt
eilu
ng, F
olie
5,
Sa
lzg
itter
, xx
. Xxx
xx 2
0xx
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"
• Programmiersprache der 4. Generation
• rasch – mit möglichst wenigen Codezeilen - komplette Anwendungen schreiben
Fir
ma
, Abt
eilu
ng, F
olie
6,
Sa
lzg
itter
, xx
. Xxx
xx 2
0xx
ABAP-Architektur
• Imperative Sprache mit • Deklarativen (OpenSQL) und
• Objektorientierten (ABAP-Objects) 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
• Alle Programmelemente werden in einer Datenbank gespeichert
• Bietet Anbindung zu anderen Sprachen
Fir
ma
, Abt
eilu
ng, F
olie
7,
Sa
lzg
itter
, xx
. Xxx
xx 2
0xx
ABAP Dictionary
Das ABAP Dictionary ermöglich das Nachschlagen von global erstellten Bestandteilen des ABAP Systems z.B.
• Typen
• Tabellen
• Klassen
• Funktionsbausteine
• Views
• …
Fir
ma
, Abt
eilu
ng, F
olie
8,
Sa
lzg
itter
, xx
. Xxx
xx 2
0xx
ABAP Syntax und Hallo-World
• Syntax ist angelehnt an COBOL
• Anweisung endet mit einem Punkt
• Blöcke beginnen und enden mit einem Keyword • IF – ENDIF, LOOP – ENDLOOP, …
• Leerzeichen als Trennsymbol
• Doppelpunkt als Kettenanweisung
• Kommentare mit einem " oder *
" Programm-BezeichnungREPORT zbc_demo_hello_world.
" Ausgabe eines StringsWRITE 'Hello World!'.
" Ausgabe einer KetteWRITE: 'Das ', 'ist ', 'eine ', 'Kette!'.
" Genau das gleiche wieWRITE 'Das '.WRITE 'ist '.WRITE 'keine '.WRITE 'Kette!'.
Fir
ma
, Abt
eilu
ng, F
olie
9,
Sa
lzg
itter
, xx
. Xxx
xx 2
0xx
ABAP Logische Ausdrücke
• Vergleichsoperatoren• Zahlen • <,>,<>,=, <=,>=• LT,GT,NE,EQ,LE,GE
• Zeichenketten• 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
Fir
ma
, Abt
eilu
ng, F
olie
10,
Sa
lzg
itter
, xx
. Xxx
xx 2
0xx
ABAP Kontrollstrukturen und Schleifen
• Kontrollstrukturen• If, Case-When
• Schleifen• Loop, While, Do, Select
• Kontrollanweisungen: Continue, Check, Exit
Fir
ma
, Abt
eilu
ng, F
olie
11,
Sa
lzg
itter
, xx
. Xxx
xx 2
0xx
ABAP Typisierung
Elementare Datentypen
• Bool, Char, Int, Float
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.
Fir
ma
, Abt
eilu
ng, F
olie
12,
Sa
lzg
itter
, xx
. Xxx
xx 2
0xx
ABAP und OpenSQL
• Eigener SQL-Dialekt der Firma SAP
• Native Integration von OpenSQL
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,USER,PASS);
stmt = conn.createStatement();String sql;sql = "SELECT * FROM heroes WHERE power_level GT 9000. ";ResultSet super_heroes = stmt.executeQuery(sql);
JAVA
Fir
ma
, Abt
eilu
ng, F
olie
13,
Sa
lzg
itter
, xx
. Xxx
xx 2
0xx
ABAP Ausführbare Einheiten I
• Forms
• Vergleichbar mit einer lokalen Funktion
• Unterschiedliche Parameterübergaben• By Reference: CHANGING/USING
• By Value: CHANGING/USING VALUE()
• Funktionsbausteine
• Globale Funktion, die aus dem ganzen SAP System abrufbar ist
• Parameterübergabe durch IMPORT/EXPORT und immer By Reference
Fir
ma
, Abt
eilu
ng, F
olie
14,
Sa
lzg
itter
, xx
. Xxx
xx 2
0xx
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
• Dynpro / Web-Dynpro
• GUI Oberfläche
Fir
ma
, Abt
eilu
ng, F
olie
15,
Sa
lzg
itter
, xx
. Xxx
xx 2
0xx
ABAP Klassen und Interfaces
• Klassen
• Unterteilt in Definitions- und Implementationsbereich
• Ähnlich wie bei C++
• Vererbung von Klasse
• Keine Mehrfachvererbung
• Implementation von Interfaces
• Beliebig viele
• Events zur Interaktion zwischen Klassen
• For Event und Raise Event
Fir
ma
, Abt
eilu
ng, F
olie
16,
Sa
lzg
itter
, xx
. Xxx
xx 2
0xx
ABAP Ereignisblöcke
• Definieren Ablauf des Programms
• Aufruf durch Ereignisschlüsselwörter
• INITIALZIATION
• AT SELECTION-SCREEN
• AT LINE-SELECTION
Fir
ma
, Abt
eilu
ng, F
olie
17,
Sa
lzg
itter
, xx
. Xxx
xx 2
0xx
ABAP Fehlerbehandlung
• Sy-subrc
• Zeile der Systemtabelle, in der der Rückgabewert von Befehlen steht z.B. SELECT
• IF sy-subrc <> 0. EXIT. ENDIF.
• Exceptions
• Methoden/Forms/... können Exceptions werfen
• Werden mit CATCH gefangen
Fir
ma
, Abt
eilu
ng, F
olie
18,
Sa
lzg
itter
, xx
. Xxx
xx 2
0xx
ABAP Beispiele
Genug von der Theorie