Sie sind auf Seite 1von 50
Technische Universität München Lehrstuhl für Wirtschaftsinformatik © Prof. Dr. H. Krcmar
Technische Universität München Lehrstuhl für Wirtschaftsinformatik © Prof. Dr. H. Krcmar

Technische Universität München Lehrstuhl für Wirtschaftsinformatik

© Prof. Dr. H. Krcmar

Technische Universität München Lehrstuhl für Wirtschaftsinformatik © Prof. Dr. H. Krcmar

Inhalte

• ABAP-Grundlagen:

Inhalte • ABAP-Grundlagen: • Grundlegende Konzepte • Hello World • Datenbankzugriffe • Data Dictionary •

• Grundlegende Konzepte

• Hello World

• Datenbankzugriffe

• Data Dictionary

• Modularisierung

• DynPros

• Betriebswirtschaftliche Konzepte & Sonstiges

• ABAP Objects

• Business Server Pages

• Betriebswirtschaftliche Konzepte & Sonstiges • ABAP Objects • Business Server Pages © Prof. Dr. H.

© Prof. Dr. H. Krcmar

• Betriebswirtschaftliche Konzepte & Sonstiges • ABAP Objects • Business Server Pages © Prof. Dr. H.
Was ist ABAP ? • ABAP = Advanced Business Application Programming (früher: Allg. Berichts-Aufarbeitungs Prozessor)
Was ist ABAP ? • ABAP = Advanced Business Application Programming (früher: Allg. Berichts-Aufarbeitungs Prozessor)
Was ist ABAP ? • ABAP = Advanced Business Application Programming (früher: Allg. Berichts-Aufarbeitungs Prozessor)

Was ist ABAP ?

Was ist ABAP ? • ABAP = Advanced Business Application Programming (früher: Allg. Berichts-Aufarbeitungs Prozessor) •

• ABAP = Advanced Business Application Programming (früher: Allg. Berichts-Aufarbeitungs Prozessor)

• Wurzeln in COBOL und Pascal

• Existiert seit 1982 (abwärtkompatibel viele Relikte)

• ABAP-Programme werden bei der ersten Ausführung kompiliert, d.h. alle Programme liegen auch als Quelltext vor

• Plattformunabhängig (schon lange vor Java)

• Datenbankunabhängig

• Starke Ausrichtung an Wiederverwendbarkeit von Code- und Datenobjekten

• Seit 1998 objektorientierte Erweiterung ABAP-Objects TM : Verwendung von ABAP in Klassen- und Objektstrukturen

Erweiterung ABAP-Objects T M : Verwendung von ABAP in Klassen- und Objektstrukturen © Prof. Dr. H.

© Prof. Dr. H. Krcmar

Erweiterung ABAP-Objects T M : Verwendung von ABAP in Klassen- und Objektstrukturen © Prof. Dr. H.

Kompilierung von ABAP-Code

Kompilierung von ABAP-Code Präsentation Application Database Quelle: Eigene Darstellung SAPGui SAPGui SAPGui Erster

Präsentation

Application

Database

Quelle: Eigene Darstellung

Application Database Quelle: Eigene Darstellung SAPGui SAPGui SAPGui Erster Aufruf eines Programms
SAPGui SAPGui SAPGui Erster Aufruf eines Programms Meldung über Kompilierung Programmausgabe Application-
SAPGui
SAPGui
SAPGui
Erster Aufruf eines Programms
Meldung über Kompilierung
Programmausgabe
Application-
Application- Application-
Server
Server
Server
Kompilierung
Database-
Programm wurde noch
nicht kompiliert
Server
Rückgabe des
ABAP Quellcode Kompilierte Programme

kompilierten Programms

© Prof. Dr. H. Krcmar

kompiliert Server Rückgabe des ABAP Quellcode Kompilierte Programme kompilierten Programms © Prof. Dr. H. Krcmar

Informationsquellen zu ABAP

• SAP-Hilfe

• SAP Marketplace

• SDN

• Transaktion ABAPDOCU

• Transaktion SE30 Tips & Tricks

• Internet:

• Transaktion SE30 Tips & Tricks • Internet: • www.abap4.de.vu •

www.abap4.de.vu

http://www.sapgenie.com/abap/

http://cma.zdnet.com/book/abap/index.htm (Teach Yourself ABAP/4 in 21 days)

 

• Bücher:

• Umlauff/Dirnhofer: ABAP Übungsbuch, Addison-Wesley 2001

• Keller, Krüger: ABAP-Objects, Galileo Press 2002

• Keller/Jacobitz: ABAP Objects Referenz, Galileo Press 2004

ABAP-Obje cts, Galileo Press 2002 • Keller/Jacobitz: ABAP Object s Referenz, Galileo Press 2004 © Prof.

© Prof. Dr. H. Krcmar

ABAP-Obje cts, Galileo Press 2002 • Keller/Jacobitz: ABAP Object s Referenz, Galileo Press 2004 © Prof.

Der Entwicklerschlüssel

Der Entwicklerschlüssel • Ein Entwicklerschlüssel ermögl icht es einem bestimmten SAP- Benutzer Programme zu

• Ein Entwicklerschlüssel ermöglicht es einem bestimmten SAP- Benutzer Programme zu entwickeln oder bestehende zu verändern

• Jeder Schlüssel muss bei SAP beantragt und nur einmal pro User angegeben werden

• Der Grund dieser Beantragung liegt in den höheren Lizenzkosten für Entwicklungsuser

• Zudem unterscheidet man Objektschlüssel, die die Bearbeitung bestehender SAP-Entwicklungen ermöglichen

• Der passende Entwicklerschlüssel liegt für das Praktikum auf dem Share-Laufwerk

• Der passende Entwicklerschlüsse l liegt für das Praktikum auf dem Share-Laufwerk © Prof. Dr. H.

© Prof. Dr. H. Krcmar

• Der passende Entwicklerschlüsse l liegt für das Praktikum auf dem Share-Laufwerk © Prof. Dr. H.

Transport in einer typischen SAP-Systemlandschaft

Transport in einer typisc hen SAP-Systemlandschaft Development System (DEV) Quality Assurance System (QAS) Production
Development System (DEV) Quality Assurance System (QAS) Production System (PROD)
Development
System (DEV)
Quality Assurance
System (QAS)
Production
System (PROD)

Quelle: Eigene Darstellung

• Änderungen werden in Transportaufträgen gespeichert und werden von DEV nach QAS transportiert

• Transportaufträge werden beim Export als Dateien gespeichert

• Beim Import können einzelne oder alle anstehenden Transportaufträge eingespielt werden

• Beim Import können einzel ne oder alle anstehenden Transportaufträge eingespielt werden © Prof. Dr. H.

© Prof. Dr. H. Krcmar

• Beim Import können einzel ne oder alle anstehenden Transportaufträge eingespielt werden © Prof. Dr. H.

Hierarchie des Transportwesens

Hierarchie des Transportwesens Projekt Transportauftrag Transportauftrag Transportauftrag Aufgabe Aufgabe Aufgabe
Projekt Transportauftrag Transportauftrag Transportauftrag Aufgabe Aufgabe Aufgabe Aufgabe Aufgabe Aufgabe
Projekt
Transportauftrag
Transportauftrag
Transportauftrag
Aufgabe
Aufgabe
Aufgabe
Aufgabe
Aufgabe
Aufgabe
Mitarbeiter
Mitarbeiter
Mitarbeiter
Mitarbeiter
Mitarbeiter
Mitarbeiter

Quelle: Eigene Darstellung

Mitarbeiter Mitarbeiter Mitarbeiter Mitarbeiter Mitarbeiter Quelle: Eigene Darstellung © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

Mitarbeiter Mitarbeiter Mitarbeiter Mitarbeiter Mitarbeiter Quelle: Eigene Darstellung © Prof. Dr. H. Krcmar
Mitarbeiter Mitarbeiter Mitarbeiter Mitarbeiter Mitarbeiter Quelle: Eigene Darstellung © Prof. Dr. H. Krcmar
Mitarbeiter Mitarbeiter Mitarbeiter Mitarbeiter Mitarbeiter Quelle: Eigene Darstellung © Prof. Dr. H. Krcmar
Mitarbeiter Mitarbeiter Mitarbeiter Mitarbeiter Mitarbeiter Quelle: Eigene Darstellung © Prof. Dr. H. Krcmar

Zugangsdaten

Zugangsdaten • System: G31 • Mandant: 902 • User: ABAP-5-XX • Passwort: init Passwort muss bei

System: G31

Mandant: 902

User: ABAP-5-XX

Passwort: init Passwort muss bei der erstern Anmeldung geändert werden (Bitte merken!)

• Passwort: init Passwort muss bei der erstern Anmeldung geändert werden (Bitte merken!) © Prof. Dr.
• Passwort: init Passwort muss bei der erstern Anmeldung geändert werden (Bitte merken!) © Prof. Dr.

© Prof. Dr. H. Krcmar

• Passwort: init Passwort muss bei der erstern Anmeldung geändert werden (Bitte merken!) © Prof. Dr.

Hello World ! 1/3

Hello World ! 1/3 Einmalige Vorarbeiten (TA SE80): • Paket anlegen: ZB_05_## die User-Nummer) (## ist

Einmalige Vorarbeiten (TA SE80):

• Paket anlegen: ZB_05_## die User-Nummer)

(## ist

• Neuen Transportauftrag für das Anlegen des Pakets erstellen

• Pakete gliedern das Repository

• Transportaufträge dienen der Organisation und dem Transport von Entwicklungen

ZB_05_##
ZB_05_##
ZB_05_##
ZB_05_##
Transportaufträge dienen der Organisation und dem Transport von Entwicklungen ZB_05_## ZB_05_## © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

Transportaufträge dienen der Organisation und dem Transport von Entwicklungen ZB_05_## ZB_05_## © Prof. Dr. H. Krcmar

Hello World 2/3

Hello World 2/3 • Programm ZB_05_XX_HELLOWORLD in angelegtem Paket ohne TOP- Include erstellen (Kontextmenü des

• Programm ZB_05_XX_HELLOWORLD in angelegtem Paket ohne TOP- Include erstellen (Kontextmenü des Pakets anwählen)

• Entwicklerschlüssel eingeben

• Eigenschaften des Programms angeben

ZB_05_##_HELLOWORLD
ZB_05_##_HELLOWORLD
Report ZB_05_##_HELLOWORLD
Report ZB_05_##_HELLOWORLD
ZB_05_##_HELLOWORLD ZB_05_##
ZB_05_##_HELLOWORLD
ZB_05_##

• Programm dem neuen Paket und dem Transportauftrag zuordnen

ZB_05_##_HELLOWORLD ZB_05_## • Programm dem neuen Paket und dem Transportauftrag zuordnen © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

Hello World 3/3

Hello World 3/3 • Programm schreiben (Punkt nicht vergessen!)

• Programm schreiben (Punkt nicht vergessen!)

*&---------------------------------------------------------------------*

*& Report ZB_05_##_HELLOWORLD

*

*&

*

*&---------------------------------------------------------------------*

*&

*

*&

*

*&---------------------------------------------------------------------*

REPORT ZB_05_##_HELLOWORLD write 'Hello World!'.

.

• Programm speichern, prüfen, testen und aktivieren

1.

ABAP Editor: Report ZB_05_HELLOWORLD ändern
ABAP Editor: Report ZB_05_HELLOWORLD ändern
aktivieren 1. ABAP Editor: Report ZB_05_HELLOWORLD ändern 2. 4. 3. • Aufgabe: Wie kann das Programm

2.

4.

3.

• Aufgabe: Wie kann das Programm erweitert werden, damit vor dem Text ein Icon erscheint ? (Tip: Hilfe zum Befehl „Write“)

erweitert werden, damit vor dem Text ein Icon erscheint ? (Tip: Hilfe zum Befehl „Write“) ©

© Prof. Dr. H. Krcmar

erweitert werden, damit vor dem Text ein Icon erscheint ? (Tip: Hilfe zum Befehl „Write“) ©

Arbeitsumgebung: Object Navigator 1/2

Arbeitsumgebung: Object Navigator 1/2 • Benutzerfreundliche Oberfläche, die alle Entwicklungswerkzeuge intuitiv

• Benutzerfreundliche Oberfläche, die alle Entwicklungswerkzeuge intuitiv verbindet

• Zweiteilung des Object Navigator in Navigationsbaum und Inhaltsteil (Teile entsprechen sich nicht immer!)

• Programmierhilfen:

• Informationssystem: bietet gezielte Hilfe zu Befehlen, Konzepten und Objekten

• Breakpoints: gezielte Pause bei Programmausführung

• Muster: Assistent zur Generierung komplexer Befehlsstrukturen

• Pretty Printer: macht den Code besser lesbar (einstellbar über Hilfsmittel Einstellungen

• Pretty Printer: macht den Code besser le sbar (einstellbar über Hilfsmittel Einstellungen © Prof. Dr.

© Prof. Dr. H. Krcmar

• Pretty Printer: macht den Code besser le sbar (einstellbar über Hilfsmittel Einstellungen © Prof. Dr.

Arbeitsumgebung: Object Navigator 2/2

Arbeitsumgebung: Object Navigator 2/2 • Vorwärtsnavigation: forward ever, backward never • Grundlegendes Prinzip in

• Vorwärtsnavigation: forward ever, backward never

• Grundlegendes Prinzip in der SAP-Entwicklung

• Durch Doppelklick auf Erwähnung eines Objektes kann zum Objekt navigiert bzw. es erstellt werden

• Einsicht in beliebigen SAP-Code (über System Status):

navigiert bzw. es erstellt werden • Einsicht in beliebigen SA P-Code (über System Status): © Prof.
navigiert bzw. es erstellt werden • Einsicht in beliebigen SA P-Code (über System Status): © Prof.

© Prof. Dr. H. Krcmar

navigiert bzw. es erstellt werden • Einsicht in beliebigen SA P-Code (über System Status): © Prof.

Entwicklungswerkzeuge in SAP

Entwicklungswerkzeuge in SAP Quelle: SAP AG 1999 © Prof. Dr. H. Krcmar
Entwicklungswerkzeuge in SAP Quelle: SAP AG 1999 © Prof. Dr. H. Krcmar

Quelle: SAP AG 1999

Entwicklungswerkzeuge in SAP Quelle: SAP AG 1999 © Prof. Dr. H. Krcmar
Entwicklungswerkzeuge in SAP Quelle: SAP AG 1999 © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

Entwicklungswerkzeuge in SAP Quelle: SAP AG 1999 © Prof. Dr. H. Krcmar

Elemente der ABAP-Programmierung 1/2

Elemente der ABAP-Programmierung 1/2 • Dynamisches Programme (D ynpro): Bildschirmbild mit Ablauflogik •

• Dynamisches Programme (Dynpro): Bildschirmbild mit Ablauflogik

• Selektionsbilder: “Geschenktes” Dynpro ohne Ablauflogik

• Report: Ausgabe von Listen

• Programm: Interaktives Programm mit Dynpro

• Funktionsbaustein: Funktionsbibliothek, die von anderen Programmen bzw. SAP-Systemen genutzt werden kann

• Strukturen: Struktur einer Tabellenzeile

• Tabellen: Unterscheidung verschiedener Typen, wobei transparente Tabellen am häufigsten verwendet werden

Unterscheidung verschiedener Typen, wobei transparente Tabellen am häufigsten verwendet werden © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

Unterscheidung verschiedener Typen, wobei transparente Tabellen am häufigsten verwendet werden © Prof. Dr. H. Krcmar

Elemente der ABAP-Programmierung 2/2

• Datenbankview:

Elemente der ABAP-Programmierung 2/2 • Datenbankview: - Zusammenführung von mehreren Tabellen - Festlegung im Data

- Zusammenführung von mehreren Tabellen

- Festlegung im Data Dictionary (im Gegensatz zu Inner Joins)

- Unterscheidung in Datenbankview (Lesen von Daten), Pflegeview (Datenpflege mit betriebswirtschaftlichen Zusammenhängen) …

- Lässt sich über Workbench anlegen

- Kann wie eine Datenbank angesprochen werden

• Interne Tabellen: temporäre Speicherung von Datenbanktabellen

Datenban k angesproc hen werden • Interne Tabellen: temporäre Spei cherung von Datenbanktabellen © Prof. Dr.

© Prof. Dr. H. Krcmar

Datenban k angesproc hen werden • Interne Tabellen: temporäre Spei cherung von Datenbanktabellen © Prof. Dr.
k angesproc hen werden • Interne Tabellen: temporäre Spei cherung von Datenbanktabellen © Prof. Dr. H.
k angesproc hen werden • Interne Tabellen: temporäre Spei cherung von Datenbanktabellen © Prof. Dr. H.
k angesproc hen werden • Interne Tabellen: temporäre Spei cherung von Datenbanktabellen © Prof. Dr. H.

OpenSQL TM

OpenSQL T M • Portierung von ABAP auf al le gängigen Datenbanken Applikations-Server Datenbank-Server DB-Interface

• Portierung von ABAP auf alle gängigen Datenbanken

Applikations-Server Datenbank-Server DB-Interface DB-Interface Open Open SQL SQL Native Native SQL SQL DB Daten DB
Applikations-Server
Datenbank-Server
DB-Interface DB-Interface
Open Open SQL SQL
Native Native SQL SQL
DB
Daten
DB DB Daten Daten
DB Daten
Native Native SQL SQL
Daten
DB DB Daten Daten
Quelle: SAP AG
© Prof. Dr. H. Krcmar

SAP-Reisebüro Beispiel

SAP-Reisebüro Beispiel • Von SAP erstelltes Beis piel, dass eine vereinfachte Einführung in die ABAP-Entwicklung

• Von SAP erstelltes Beispiel, dass eine vereinfachte Einführung in die ABAP-Entwicklung ermöglicht

• Primär sind die bestehenden Datenstrukturen und –tabellen sowie die enthaltenen Daten relevant

• Wichtige Tabellen:

• SCARR (Fluggesellschaften)

• SPFLI (Flugpläne)

• SFLIGHT (Flüge)

• SBOOK (Flugbuchungen)

Struktur: sbc400_t_spfli

Struktur: sbc400focc

• Betrachtung der Tabellenstruktur über das Dictionary (SE11) des Tabelleninhalts über den Data Browser (SE16)

Tabellenstrukt ur über das Dictionary (SE11) des Tabelleninhalts über den Data Browser (SE16) © Prof. Dr.

© Prof. Dr. H. Krcmar

Tabellenstrukt ur über das Dictionary (SE11) des Tabelleninhalts über den Data Browser (SE16) © Prof. Dr.

Programm: Tabellen auslesen

Programm: Tabellen auslesen • Geben Sie alle Flüge der Lufthansa aus der Tabelle „SFLIGHT“ aus •

• Geben Sie alle Flüge der Lufthansa aus der Tabelle „SFLIGHT“ aus

• Aufgabe: Erweitern Sie das bestehende Programm um eine Abfrage, ob der Select- Befehl erfolgreich ausgeführt wurde (benutzen Sie dazu die Systemvariable sy-subrc sowie eine IF-Verzweigung)

*&---------------------------------------*

*& Report ZB_05_##_LUFTHANSA

*

*&

*

*&---------------------------------------*

*&

*

*&

*

*&---------------------------------------*

REPORT zb_05_##_lufthansa

.

DATA: it_spfli TYPE sbc400_t_spfli, wa_spfli TYPE spfli.

SELECT * FROM spfli INTO TABLE it_spfli WHERE carrid = 'LH'.

LOOP AT it_spfli INTO wa_spfli. WRITE: / wa_spfli-carrid, wa_spfli-connid, wa_spfli-cityfrom, wa_spfli-cityto, wa_spfli-deptime, wa_spfli-arrtime.

ENDLOOP.

wa_spfli-connid, wa_spfli-cityfrom, wa_spfli-cityto, wa_spfli-deptime, wa_spfli-arrtime. ENDLOOP. © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

wa_spfli-connid, wa_spfli-cityfrom, wa_spfli-cityto, wa_spfli-deptime, wa_spfli-arrtime. ENDLOOP. © Prof. Dr. H. Krcmar

Interne Tabellen und Arbeitsbereiche

Arbeitsbereich wa_spfli

LH

0400

Interne Tabelle it_spfli

AA

0017

LH

0400

LH 0400 Interne Tabelle it_spfli AA 0017 LH 0400 LOOP AT …. ENDLOOP. READ TABLE …
LOOP AT …. ENDLOOP. READ TABLE …
LOOP AT ….
ENDLOOP.
READ TABLE …
APPEND … COLLECT … INSERT … MODIFY … DELETE …
APPEND …
COLLECT …
INSERT …
MODIFY …
DELETE …

Quelle: In Anlehnung an SAP AG

SORT … BY … REFRESH …
SORT … BY …
REFRESH …

• Workarea (wa_spfli):

• Interne Tabelle (it_spfli):

• Entspricht einer Zeile in einer Tabelle und wird meistens durch eine Struktur definiert

• Enthält die aktuell bearbeitete Tabellenzeile

definiert • Enthält die aktuell bearbeitete Tabellenzeile © Prof. Dr. H. Krcmar • Kann analog zu

© Prof. Dr. H. Krcmar

• Kann analog zu einer Datenbanktabelle aufgebaut sein

• Ist eine „lokale Kopie“ einer Tabelle

• Besteht nur, so lange das Programm läuft, das sie erstellt hat

sein • Ist eine „lokale Kopie“ einer Tabelle • Besteht nur, so lange das Programm läuft,

Datentypen

Datentypen Datentyp Vordefiniert (P, I, F, C, N, D, T, X) benutzerdefiniert elementar strukturiert Feldleistentyp
Datentyp Vordefiniert (P, I, F, C, N, D, T, X) benutzerdefiniert elementar strukturiert Feldleistentyp Tabellentyp
Datentyp
Vordefiniert
(P, I, F, C, N, D, T, X)
benutzerdefiniert
elementar
strukturiert
Feldleistentyp
Tabellentyp

Quelle: In Anlehnung an SAP AG

elementar strukturiert Feldleistentyp Tabellentyp Quelle: In Anlehnung an SAP AG © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

elementar strukturiert Feldleistentyp Tabellentyp Quelle: In Anlehnung an SAP AG © Prof. Dr. H. Krcmar

Vordefinierte Datentypen in ABAP

Vordefinierte Datentypen in ABAP Datentyp Bedeutung Initialwert Wertebereich d Date 00000000  

Datentyp

Bedeutung

Initialwert

Wertebereich

d

Date

00000000

 

t

Time

000000

 

i

integer

0

 

f

Gleitpunktzahl

0.000

 

String

Alphanumerischer Text

   

Xstring

Bytefolge

   

p

Gepackte Zahl

0

 

n

Numerischer Text

00 … 0

Max. 65536 Ziffern

c

Zeichenkette

<Leerzeichen>

Max. 65536 Zeichen

x

Byte (hexadezimal)

X’00‘

 

Systemvariablen (sy-…): Tabelle syst

Zeichen x Byte (hexadezimal) X’00‘   Systemvariablen (sy-…): Tabelle syst © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

Zeichen x Byte (hexadezimal) X’00‘   Systemvariablen (sy-…): Tabelle syst © Prof. Dr. H. Krcmar

Datendeklaration

• Einfache Felddefinition:

• Strukturiertes Datenobjekt:

DATA f (len) TYPE Datentyp

DATA: BEGIN OF struc,

END OF struc.

• Interne Tabelle:

• Konstanten:

• Parameter:

DATA itab TYPE Tabellentyp

DATA itab TYPE TABLE OF Struktur

CONSTANTS c VALUE Wert/is INITIAL

PARAMETERS p

oder

Struktur CONSTANTS c VALUE Wert/is INITIAL PARAMETERS p oder • Anstelle von TYPE kann in den

• Anstelle von TYPE kann in den meisten Fällen LIKE verwendet werden es muss keine Kenntnis über genauen Datentyp vorliegen

Fällen LIKE verwendet werden es muss keine Kenntnis über genauen Datentyp vorliegen © Prof. Dr. H.

© Prof. Dr. H. Krcmar

Fällen LIKE verwendet werden es muss keine Kenntnis über genauen Datentyp vorliegen © Prof. Dr. H.

Datenmanipulation

Datenmanipulation • Datenzuweisung: M O V E f T O f o d e r g

• Datenzuweisung: MOVE f TO f

oder

g

= f

• Numerische Operationen:

ADD n TO m

oder

m = m +

n

• Wichtige Stringoperationen:

CONCATENATE

SPLIT

SEARCH

• Es erfolgt eine automatische Typkonvertierung bei Wertzuweisung, wenn möglich

SEARCH … • Es erfolgt eine automati sche Typkonvertierung bei Wertzuweisung, wenn möglich © Prof. Dr.

© Prof. Dr. H. Krcmar

SEARCH … • Es erfolgt eine automati sche Typkonvertierung bei Wertzuweisung, wenn möglich © Prof. Dr.

Programm: Selektionsbildschirm

Programm: Selektionsbildschirm • Interaktion mit Benutzer vereinfacht über Selektionsbildschirme mög lich (z.B. auch

• Interaktion mit Benutzer vereinfacht über Selektionsbildschirme möglich (z.B. auch bei SE16)

• Selektionsbildschirm ist ein „geschenktes“ Dynpro

• Dynpro-nr. des Selektionsbildschirmes ist 1000

• Komplexe Selektionsbildschirme realisierbar

• Aufgabe: Erweitern Sie das Lufthansa-Programm so, dass Sie zu Beginn auswählen können, von welcher Fluggesellschaft alle Flüge angezeigt werden sollen (Ändern des angezeigten Variablennamens über Springen Textelemente)

angezeigt werden sollen (Ändern des angezeigten Variablennamens über Springen Textelemente) © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

angezeigt werden sollen (Ändern des angezeigten Variablennamens über Springen Textelemente) © Prof. Dr. H. Krcmar

Ablauf eines ABAP-Programmes

• Ablaufreihenfolge:

Ablauf eines ABAP-Programmes • Ablaufreihenfolge: • LOAD-OF-PROGRAM (INITIALIZATION) • AT SELECTION-SCREEN •

• LOAD-OF-PROGRAM (INITIALIZATION)

• AT SELECTION-SCREEN

• START-OF-SELECTION

• Ereignisse:

• AT LINE_SELECTION

• TOP-OF-PAGE

• END-OF-PAGE

• START-OF-SELECTION • Ereignisse: • AT LINE_SELECTION • TOP-OF-PAGE • END-OF-PAGE © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

• START-OF-SELECTION • Ereignisse: • AT LINE_SELECTION • TOP-OF-PAGE • END-OF-PAGE © Prof. Dr. H. Krcmar

Verzweigungslisten

Verzweigungslisten • Im Ereignis „AT LINE-SELECTI ON“ kann hinterlegt werden, welche Reaktion bei Doppelkli ck auf

• Im Ereignis „AT LINE-SELECTION“ kann hinterlegt werden, welche Reaktion bei Doppelklick auf einen Listeneintrag erfolgt

• Durch jeden Doppelklick, gelangt man eine Verzweigungsebene tiefer (bis 10 Ebenen)

• Bei jedem Doppelklick (auch auf weiterführenden Listen) wird dieser Block ausgeführt Begrenzung notwendig (sy-lsind)

• Schnittstelle zwischen den Listenebenen ist der HIDE- Bereich (später auch für Dynpro‘s wichtig)

zwischen den Listenebenen ist der HIDE- Bereich (später auch für Dynpro‘s wichtig) © Prof. Dr. H.

© Prof. Dr. H. Krcmar

zwischen den Listenebenen ist der HIDE- Bereich (später auch für Dynpro‘s wichtig) © Prof. Dr. H.

Programm: Verzweigungslisten

Programm: Verzweigungslisten • Aufgabe: Ändern Sie das letz te Programm so ab, dass nach der Auswahl

• Aufgabe: Ändern Sie das letzte Programm so ab, dass nach der Auswahl der Fluggesellschaft nur Fluggesellschaft und Flugnummer angezeigt werden. Durch einen Doppelklick gelangt man zur Detailanzeige des Eintrags, bei der die restlichen Daten zum Flug angezeigt werden.

• Begrenzen Sie dabei die Anzahl der Verzeigungsebenen auf eine einzige

• Zusatzaufgabe: Erweitern Sie das Programm um eine weitere Verzweigungsebene

auf eine einzige • Zusatzaufgabe: Erweitern Sie das Programm um eine weitere Verzweigungsebene © Prof. Dr.

© Prof. Dr. H. Krcmar

auf eine einzige • Zusatzaufgabe: Erweitern Sie das Programm um eine weitere Verzweigungsebene © Prof. Dr.

Programm: Verzweigungsliste - Lösung

Programm: Verzweigungsliste - Lösung *&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*& Report ZB_05_##_LUFTHANSA_VERZWEIG

*

*&---------------------------------------------------------------------*

REPORT zb_05_##_lufthansa_verzweig.

PARAMETERS: flugges TYPE spfli-carrid.

DATA: it_spfli TYPE sbc400_t_spfli, wa_spfli TYPE spfli.

START-OF-SELECTION. SELECT * FROM spfli INTO TABLE it_spfli WHERE carrid = flugges.

IF sy-subrc = 0. LOOP AT it_spfli INTO wa_spfli. WRITE: / wa_spfli-carrid, wa_spfli-connid.

HIDE:

ENDLOOP.

ENDIF.

wa_spfli-carrid, wa_spfli-connid, wa_spfli-cityfrom, wa_spfli-cityto, wa_spfli-deptime, wa_spfli-arrtime.

AT LINE-SELECTION. IF sy-lsind = 1. WRITE: / wa_spfli-carrid, wa_spfli-connid, wa_spfli-carrid, wa_spfli-connid, wa_spfli-cityfrom, wa_spfli-cityto, wa_spfli-deptime, wa_spfli-arrtime.

ENDIF.

wa_spfli-connid, wa_spfli-cityfrom, wa_spfli-cityto, wa_spfli-deptime, wa_spfli-arrtime. ENDIF. © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

wa_spfli-connid, wa_spfli-cityfrom, wa_spfli-cityto, wa_spfli-deptime, wa_spfli-arrtime. ENDIF. © Prof. Dr. H. Krcmar
wa_spfli-cityfrom, wa_spfli-cityto, wa_spfli-deptime, wa_spfli-arrtime. ENDIF. © Prof. Dr. H. Krcmar
wa_spfli-cityfrom, wa_spfli-cityto, wa_spfli-deptime, wa_spfli-arrtime. ENDIF. © Prof. Dr. H. Krcmar
wa_spfli-cityfrom, wa_spfli-cityto, wa_spfli-deptime, wa_spfli-arrtime. ENDIF. © Prof. Dr. H. Krcmar

Rolle des Data Dictionary

Rolle des Data Dictionary • „Vererbungsmodell“ für Daten • Automatische Zuweisung v on Hilfe und Bezeichnungen

• „Vererbungsmodell“ für Daten

• Automatische Zuweisung von Hilfe und Bezeichnungen zu Datentypen

• Abbildung eines ERM als Relationen direkt möglich (mit Tools wie z.B. ARIS)

• Unterscheidung von Feldern, Strukturen, Tabellen, Datenelementen und Domänen

wie z.B. ARIS) • Unterscheidung von Feldern, Strukturen, Tabellen, Datenelementen und Domänen © Prof. Dr. H.

© Prof. Dr. H. Krcmar

wie z.B. ARIS) • Unterscheidung von Feldern, Strukturen, Tabellen, Datenelementen und Domänen © Prof. Dr. H.

Aufbau des Data Dictionary

Aufbau des Data Dictionary Vererbung NUM4 PLZ PLZ KPLZ MPLZ Domäne Datenelement Feld Feld Feld Feld
Vererbung NUM4 PLZ PLZ KPLZ MPLZ
Vererbung
NUM4
PLZ
PLZ
KPLZ
MPLZ

Domäne

Datenelement

Feld

Feld Feld Feld
Feld
Feld
Feld

Struktur

Tabelle

Quelle: In Anlehnung an SAP AG Vererbung NUM4 PLZ PLZ KPLZ MPLZ Domäne Datenelement Feld Feld Feld Feld Struktur Tabelle © Prof.

© Prof. Dr. H. Krcmar

MPLZ Domäne Datenelement Feld Feld Feld Feld Struktur Tabelle Quelle: In Anlehnung an SAP AG ©

Anlegen einer Suchhilfe

Anlegen einer Suchhilfe • Legen Sie die Domäne ZB5##CHAR30 vom Datentyp CHAR der Länge 30 an

• Legen Sie die Domäne ZB5##CHAR30 vom Datentyp CHAR der Länge 30 an (prüfen + aktivieren nicht vergessen!)

• Legen Sie das Datenelement ZB5##ANR30 von der eben erstellten Domäne an (prüfen + aktivieren nicht vergessen!)

• Legen Sie die Tabelle ZB5##ANREDE in Transaktion SE11 an, bei der die Auslieferungsklasse C ist

• Erlauben Sie die uneingeschränkte Pflege

• Legen Sie das Feld „Anrede“ mit dem Datenelement ZB5##ANR30 als Primärschlüssel an

• Pflegen Sie die technischen Einstellungen (prüfen + aktivieren nicht vergessen!)

• Pflegen Sie über SE16 Werte in die Tabelle ein

(prüfen + aktivieren nicht vergessen!) • Pflegen Sie über SE16 We rte in die Tabelle ein

© Prof. Dr. H. Krcmar

(prüfen + aktivieren nicht vergessen!) • Pflegen Sie über SE16 We rte in die Tabelle ein

Anlegen einer Tabelle

Anlegen einer Tabelle • Legen Sie mit der Transaktion SE 11 (Data Dictionary) eine neue Tabelle

• Legen Sie mit der Transaktion SE11 (Data Dictionary) eine neue Tabelle ZB5##PERSON an, die Daten von Personen aufnehmen soll (z.B. Name, Vorname, Anrede …)

• Nehmen sie für Name und Vorname zur Vereinfachung eingebaute Datentypen zur Deklaration und markieren Sie diese Felder als Schlüssel

• Das Feld Anrede muss von Datenelement ZB5##ANR30 sein

• Erlauben Sie die Anzeige und Pflege der Tabelle

• Pflegen Sie vor der Aktivierung die technischen Einstellungen der Tabelle

Pflege der Tabelle • Pflegen Sie vor der Aktivierung di e technischen Einstellungen der Tabelle ©

© Prof. Dr. H. Krcmar

Pflege der Tabelle • Pflegen Sie vor der Aktivierung di e technischen Einstellungen der Tabelle ©

Angeben der Suchhilfe

Angeben der Suchhilfe • Geben Sie in der Tabelle ZA5##PERSON im Reiter Eingabehilfe für das Feld

• Geben Sie in der Tabelle ZA5##PERSON im Reiter Eingabehilfe für das Feld Anrede als Fremdschlüssel das entsprechende Feld der Tabelle ZB5##ANREDE an und übernehmen Sie die automatischen Vorschlagswerte

• Aufgabe: Testen Sie die Suchhilfe, indem Sie ein Programm erstellen, bei dem Sie über eine Parametereingabe die F4-Hilfe der Anrede einbinden

ZB##ANREDE ZB##ANREDE
ZB##ANREDE
ZB##ANREDE
bei dem Sie über eine Parametereingabe die F4-Hilfe der Anrede einbinden ZB##ANREDE ZB##ANREDE © Prof. Dr.

© Prof. Dr. H. Krcmar

bei dem Sie über eine Parametereingabe die F4-Hilfe der Anrede einbinden ZB##ANREDE ZB##ANREDE © Prof. Dr.
Sie über eine Parametereingabe die F4-Hilfe der Anrede einbinden ZB##ANREDE ZB##ANREDE © Prof. Dr. H. Krcmar
Sie über eine Parametereingabe die F4-Hilfe der Anrede einbinden ZB##ANREDE ZB##ANREDE © Prof. Dr. H. Krcmar
Sie über eine Parametereingabe die F4-Hilfe der Anrede einbinden ZB##ANREDE ZB##ANREDE © Prof. Dr. H. Krcmar

Modularisierung

Modularisierung Möglichkeiten der M odularisierung in ABAP: 1. Include-Dateien (Befehl INCLUDE) - TOP-Include: enthält

Möglichkeiten der Modularisierung in ABAP:

1. Include-Dateien (Befehl INCLUDE)

- TOP-Include: enthält globale Datendefinitionen

- Include: enthält Programmteile

2. Form‘s (Prozeduren)

3. Funktionsbausteine

Datendefinitionen - Include: enthält Programmteile 2. Form‘s (Prozeduren) 3. Funktionsbausteine © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

Datendefinitionen - Include: enthält Programmteile 2. Form‘s (Prozeduren) 3. Funktionsbausteine © Prof. Dr. H. Krcmar

Include-Dateien

Include-Dateien • Ausgliederung von Q uellcode aus Programm • Include-Dateien werden vor Ausführung in Hauptprogramm

• Ausgliederung von Quellcode aus Programm

• Include-Dateien werden vor Ausführung in Hauptprogramm eingefügt

• Einbinden eine Include-Datei über Befehl „INCLUDE“

in Hauptprogramm eingefügt • Einbinden eine Include-Datei über Befehl „INCLUDE“ © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

in Hauptprogramm eingefügt • Einbinden eine Include-Datei über Befehl „INCLUDE“ © Prof. Dr. H. Krcmar

Forms (Prozeduren) in ABAP

Forms (Prozeduren) in ABAP • Forms können auf übergeordnete Variablen zugreifen • Deklaration: FORM

• Forms können auf übergeordnete Variablen zugreifen

• Deklaration:

FORM <Prozedurname> USING value(<Eingabeparameter>) TYPE <Typ> CHANGING <Eingabe-/Ausgabeparameter> CHANGING value(<Eingabe-/Ausgabeparameter>).

ENDFORM.

Eingabeparameter by value Eingabe-/Ausgabeparameter by reference Eingabe-/Ausgabeparameter by value and result

• Aufruf:

PERFORM <Prozedurname> USING <Eingabeparameter>

Eingabeparameter by value

CHANGING <Eingabe-/Ausgabeparameter>. Eingabe-/Ausgabeparameter by reference

bzw. by value and result (je nach Deklaration)

• Aufgabe: Gliedern sie die Anzeige der Flugübersicht des letzten Programms in eine Prozedur aus und übergeben Sie die Fluggesellschaft als Parameter

des letzten Programms in eine Prozedur aus und übergeben Sie die Fluggesellschaft als Parameter © Prof.

© Prof. Dr. H. Krcmar

des letzten Programms in eine Prozedur aus und übergeben Sie die Fluggesellschaft als Parameter © Prof.

Programm: Funktionsbausteine

Programm: Funktionsbausteine • Kapselung von Quellcode zu Funktionsbausteinen • Organisation von Funktionsbaus teinen

• Kapselung von Quellcode zu Funktionsbausteinen

• Organisation von Funktionsbausteinen in Funktionsgruppen

• Funktionsbausteine können nicht auf übergeordnete Variablen zugreifen vollständige Parameterübergabe über Schnittstelle

• Aufgabe: Fassen Sie den Prozess der Listen- und Detailanzeige in einen Funktionsbaustein zusammen. Die Auswahl der Fluggesellschaft soll nach wie vor im Programm erfolgen.

• Legen Sie zunächst eine

ZB_05_##
ZB_05_##

Funktionsgruppe an

soll nach wie vor im Programm erfolgen. • Legen Sie zunächst eine ZB_05_## Funktionsgruppe an ©

© Prof. Dr. H. Krcmar

soll nach wie vor im Programm erfolgen. • Legen Sie zunächst eine ZB_05_## Funktionsgruppe an ©

Programm: Funktionsbaustein - Lösung

Programm: Funktionsbaustein - Lösung Das Das Programm: Programm: *&---------------------------------------* *&

DasDas Programm:Programm:

*&---------------------------------------*

*& Report ZB_05_##_LUFTHANSA_FUNKTION

*

*&

*

*&---------------------------------------*

REPORT zb_05_##_lufthansa_funktion.

PARAMETERS: flugges TYPE spfli-carrid.

START-OF-SELECTION. CALL FUNCTION 'ZB_05_##_LISTE' EXPORTING fges = flugges.

Der Importparameter FGES wird im Reiter „Import“ angegeben

Der Funktionsbaustein:

FUNCTION ZB_05_##_LISTE .

*"------------------------------

*"*"Lokale Schnittstelle:

*" IMPORTING

*" REFERENCE(FGES)

*"------------------------------

DATA: it_spfli TYPE sbc400_t_spfli, wa_spfli TYPE spfli.

SELECT * FROM spfli INTO TABLE it_spfli WHERE carrid = fges.

IF sy-subrc = 0. LOOP AT it_spfli INTO wa_spfli. WRITE: / wa_spfli-carrid, wa_spfli-connid, wa_spfli-carrid, wa_spfli-connid, wa_spfli-cityfrom, wa_spfli-cityto, wa_spfli-deptime, wa_spfli-arrtime.

ENDLOOP.

ENDIF.

ENDFUNCTION.

wa_spfli-cityto, wa_spfli-deptime, wa_spfli-arrtime. ENDLOOP. ENDIF. ENDFUNCTION. © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

wa_spfli-cityto, wa_spfli-deptime, wa_spfli-arrtime. ENDLOOP. ENDIF. ENDFUNCTION. © Prof. Dr. H. Krcmar

Arten von Funktionsbausteinen

Arten von Funktionsbausteinen Funktionsbausteine Remotefähige Funktionsbausteine BAPI Quelle: Eigene Darstellung ©
Funktionsbausteine Remotefähige Funktionsbausteine BAPI
Funktionsbausteine
Remotefähige Funktionsbausteine
BAPI

Quelle: Eigene Darstellung Arten von Funktionsbausteinen Funktionsbausteine Remotefähige Funktionsbausteine BAPI © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

Funktionsbausteine Remotefähige Funktionsbausteine BAPI Quelle: Eigene Darstellung © Prof. Dr. H. Krcmar

Besondere Funktionsbausteine: BAPI‘s

Besondere Funktionsbausteine: BAPI‘s • BAPI‘s sind nach betriebswirtschaftlicher Sichtweise gekapselte

• BAPI‘s sind nach betriebswirtschaftlicher Sichtweise gekapselte Funktionsbausteine

• Entwickler müssen sich keine Gedanken um die Veränderung der entsprechenden Tabellen

• BAPI‘s sind RFC-fähige Funktionsbausteine, die von außerhalb SAP‘s aus aufgerufen werden können

• Übersicht aller verfügbarer BAPI‘s unter der Transaktion BAPI

aufgerufen werden können • Übersicht aller verfügbarer BAPI‘s unter der Transaktion BAPI © Prof. Dr. H.
aufgerufen werden können • Übersicht aller verfügbarer BAPI‘s unter der Transaktion BAPI © Prof. Dr. H.

© Prof. Dr. H. Krcmar

aufgerufen werden können • Übersicht aller verfügbarer BAPI‘s unter der Transaktion BAPI © Prof. Dr. H.

Umgang mit BAPI‘s

Umgang mit BAPI‘s • Grundsätzliches Vorgehen beim Verwenden von BAPI‘s: 1. Nach Möglichkeit zunächst mit der

• Grundsätzliches Vorgehen beim Verwenden von BAPI‘s:

1. Nach Möglichkeit zunächst mit der Transaktion vertraut machen, deren Funktion ein BAPI widerspiegelt

2. Suchen des BAPI‘s und lesen der Dokumentation (evtl. auch Anschauen des Quellcodes des BAPI‘s)

3. Testen des BAPI‘s im Function Builder oder über die Transaktion BAPI

4. Verwendung des BAPI‘s in einem eigenen Programm

• Mögliche Probleme:

• Im Testmodus werden auch leere Felder teilweise belegt

• Bei Einbindung in ein eigenes Programm immer auf die Datentypen und Mussfelder achten

• Aufgabe: Testen Sie in der TA BAPI das BAPI BAPI_PROJECTDEF_GETLIST (Projektsystem ProjectDefinition GetList)

in der TA BAPI das BAPI BAPI_PROJECTDEF_GETLIST (Projektsystem ProjectDefinition GetList) © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

in der TA BAPI das BAPI BAPI_PROJECTDEF_GETLIST (Projektsystem ProjectDefinition GetList) © Prof. Dr. H. Krcmar

Der Debugger

Der Debugger • Ermöglicht schrittweises A usführen einer Anwendung • Überprüfung von Variable n und Strukturen

• Ermöglicht schrittweises Ausführen einer Anwendung

• Überprüfung von Variablen und Strukturen zur Laufzeit

• Im Gegensatz zu normalem Ablauf sind nicht nur Breakpoints, sondern auch Watchpoint möglich

• Watchpoint: Programmablauf wird nur bei bestimmtem Wert einer Variable unterbrochen

• Aktivierung bei Programmstart oder während des Ablaufs durch „/h“ (wirkt erst bei nächstem Bildschirmwechsel)

• Starten eines Programms mit Debugger über Menü:

Programm Testen Debugging

• Starten eines Programms mit Debugger über Menü: Programm Testen Debugging © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

• Starten eines Programms mit Debugger über Menü: Programm Testen Debugging © Prof. Dr. H. Krcmar

Messages

Messages • Nachrichtenklassen enthalten vorgefertigte Messages • Es werden folgende Mess agetypen unterschieden: • A

• Nachrichtenklassen enthalten vorgefertigte Messages

• Es werden folgende Messagetypen unterschieden:

• A – Abbruch im modalen Fenster

• I - Information im modalen Fenster

• E – Error in der Statusleiste

• S – Meldung in der Statusleiste

• W – Warnung in der Statusleiste (muss mit Enter bestätigt werden)

• X – harter Abbruch, verursacht Kurzdump

• Aufruf: MESSAGE <Typ><Nummer> WITH <Parameter 1> <Parameter 2> <Parameter 3> <Parameter 4>

WITH <Parameter 1> <Parameter 2> <Parameter 3> <Parameter 4> © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

WITH <Parameter 1> <Parameter 2> <Parameter 3> <Parameter 4> © Prof. Dr. H. Krcmar

Programm: Messages

Programm: Messages • Zusatzaufgabe: Erstellen Sie eine Nachrichtenklasse ZB_05_XX und legen Sie mindes tens eine

• Zusatzaufgabe: Erstellen Sie eine Nachrichtenklasse ZB_05_XX und legen Sie mindestens eine Nachricht ein, die Sie sinnvoll in das Programm zur Verzweigungsliste einbinden

• Hinweis: Sie müssen im Befehl „Report“ angeben, welche Nachrichtenklasse Sie verwenden möchten

Sie müssen im Be fehl „Report“ angeben, welche Nachrichtenklasse Sie verwenden möchten © Prof. Dr. H.

© Prof. Dr. H. Krcmar

Sie müssen im Be fehl „Report“ angeben, welche Nachrichtenklasse Sie verwenden möchten © Prof. Dr. H.
Sie müssen im Be fehl „Report“ angeben, welche Nachrichtenklasse Sie verwenden möchten © Prof. Dr. H.
Sie müssen im Be fehl „Report“ angeben, welche Nachrichtenklasse Sie verwenden möchten © Prof. Dr. H.
Sie müssen im Be fehl „Report“ angeben, welche Nachrichtenklasse Sie verwenden möchten © Prof. Dr. H.

Eigenschaften von DynPros

Eigenschaften von DynPros • Werden pro Programm mit vierstelliger Nummer gespeichert (Selektionsbild hat Nr. 1000) •

• Werden pro Programm mit vierstelliger Nummer gespeichert (Selektionsbild hat Nr. 1000)

• Programme mit Dynpros können nur über Transaktionen aufgerufen werden

• Programme, die Dypros verwenden sind Modulpools

• Module beinhalten Dynpro-ABAP

• Unterscheidung in Input und Output-Module pro Dynpro

• Module beinhalten Dynpro-ABAP • Unterscheidung in Input und Output-Module pro Dynpro © Prof. Dr. H.

© Prof. Dr. H. Krcmar

• Module beinhalten Dynpro-ABAP • Unterscheidung in Input und Output-Module pro Dynpro © Prof. Dr. H.

Ablauf eines DynPros

Ablauf eines DynPros Process before Output (PBO) 100 Fluggesellschaft = ‚LH‘ Process after Input (PAI) 100

Process before Output (PBO) 100

Fluggesellschaft = ‚LH‘

before Output (PBO) 100 Fluggesellschaft = ‚LH‘ Process after Input (PAI) 100 Select * from spfli
before Output (PBO) 100 Fluggesellschaft = ‚LH‘ Process after Input (PAI) 100 Select * from spfli
Process after Input (PAI) 100 Select * from spfli Where carrid= fluggesellschaft and …
Process after
Input (PAI) 100
Select * from spfli
Where carrid=
fluggesellschaft and …

Quelle: Eigene Darstellung Process after Input (PAI) 100 Select * from spfli Where carrid= fluggesellschaft and … © Prof.

© Prof. Dr. H. Krcmar

(PAI) 100 Select * from spfli Where carrid= fluggesellschaft and … Quelle: Eigene Darstellung © Prof.

Ablauf mehrerer DynPros

Ablauf mehrerer DynPros HIDE-Bereich TOP Include DynPro 100 PBO 100 PAI 100 COMMIT PBO 200 DynPro
HIDE-Bereich
HIDE-Bereich

TOP Include

DynPro 100

PBO 100 PAI 100 COMMIT PBO 200
PBO 100
PAI 100
COMMIT
PBO 200

DynPro 200

PAI 200
PAI 200

Quelle: Eigene Darstellung DynPros HIDE-Bereich TOP Include DynPro 100 PBO 100 PAI 100 COMMIT PBO 200 DynPro 200 PAI

© Prof. Dr. H. Krcmar

Übung: Dynpro 100 1/5

Übung: Dynpro 100 1/5 Programm ZB_05_##_LH_DYNPRO • Legen Sie das Programm (Modulpool) ZB_05_##_LH_Dynpro mit
Programm ZB_05_##_LH_DYNPRO
Programm ZB_05_##_LH_DYNPRO

• Legen Sie das Programm (Modulpool) ZB_05_##_LH_Dynpro mit TOP-Include an

(ZB_05_##_LH_DYNPRO_TOP).

• Definieren Sie im TOP-Include eine Workarea entsprechend der Tabelle spfli an, sowie die Variablen ok_code und save_ok vom Typ sy-ucomm; Deklarieren Sie die Tabelle SPFLI mit Tables

*&---------------------------------------------*

*& Include ZB_05_##_LH_DYNPRO_TOP

Modulpool *

*&

*

*&---------------------------------------------*

PROGRAM ZB_05_##_LH_DYNPRO

tables spfli.

.

data: ok_code like sy-ucomm, save_ok like ok_code.

data: wa_spfli like spfli.

tables spfli. . data: ok_code like sy-ucomm, save_ok like ok_code. data: wa_spfli like spfli. © Prof.

© Prof. Dr. H. Krcmar

tables spfli. . data: ok_code like sy-ucomm, save_ok like ok_code. data: wa_spfli like spfli. © Prof.

Übung: Dynpro 100 2/5

Übung: Dynpro 100 2/5 • Legen Sie zu diesem Programm das Dynpro 100 über das Kontaxtmenü

• Legen Sie zu diesem Programm das Dynpro 100 über das Kontaxtmenü an (Folgedynpro: 200)

• Über den Button „Layout“ gelangen Sie zum graphischen Screen Painter

Dynpro 100 zum Programm ZB_05_##_LH_DYNPRO
Dynpro 100 zum Programm ZB_05_##_LH_DYNPRO
gelangen Sie zum graphischen Screen Painter Dynpro 100 zum Programm ZB_05_##_LH_DYNPRO © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

gelangen Sie zum graphischen Screen Painter Dynpro 100 zum Programm ZB_05_##_LH_DYNPRO © Prof. Dr. H. Krcmar

Übung: Dynpro 100 3/5

Übung: Dynpro 100 3/5 • Die farbigen Buttons öffnen weitere Auswahlfenster • Übernehmen Sie aus dem
Übung: Dynpro 100 3/5 • Die farbigen Buttons öffnen weitere Auswahlfenster • Übernehmen Sie aus dem

• Die farbigen Buttons öffnen weitere Auswahlfenster

• Übernehmen Sie aus dem Dictionary die Felder Carrid und Connid der Tabelle spfli in das Dynpro (Felder markieren, übernehmen und fallen lassen)

• Erstellen Sie einen Knopf zum Weiterverarbeiten der gewählten Daten und pflegen sie den OK_CODE (sowohl für Dynpro und Button)

der gewählten Dat en und pflegen sie den OK_CODE (sowohl für Dynpro und Button) © Prof.
der gewählten Dat en und pflegen sie den OK_CODE (sowohl für Dynpro und Button) © Prof.
der gewählten Dat en und pflegen sie den OK_CODE (sowohl für Dynpro und Button) © Prof.

© Prof. Dr. H. Krcmar

Übung: Dynpro 100 4/5

Übung: Dynpro 100 4/5 • Speichern, prüfen und aktivieren Sie Dynpro und verlassen Sie den Screen

• Speichern, prüfen und aktivieren Sie Dynpro und verlassen Sie den Screen Painter

• Erstellen Sie per Vorwärtsnavigation im Reiter Ablauflogik das Modul „MODULE STATUS_0100“ und darin einen Status sowie einen Titel für das Dynpro 100 (vorgeschlagene Namen korrigieren!, Includes werden autom. erstellt)

Screen Painter: Dynpro zu ZB_05_##_LH_DYNPRO ändern ZB_05_##
Screen Painter: Dynpro zu ZB_05_##_LH_DYNPRO ändern
ZB_05_##
Includes werden autom. erstellt) Screen Painter: Dynpro zu ZB_05_##_LH_DYNPRO ändern ZB_05_## © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

Includes werden autom. erstellt) Screen Painter: Dynpro zu ZB_05_##_LH_DYNPRO ändern ZB_05_## © Prof. Dr. H. Krcmar

Übung: Dynpro 100 5/5

Übung: Dynpro 100 5/5 • Kommentieren Sie im Dynpro alle Module ein und legen Sie sie

• Kommentieren Sie im Dynpro alle Module ein und legen Sie sie per Vorwärtsnavigation an

• Legen Sie per Vorwärtsnavigation das Modul „MODULE USER_COMMAND_0100“ an und verarbeiten Sie den eingehenden ok_code des Dynpros

• Es soll gemäß den ausgesuchten Parametern ein Eintrag aus der Tabelle „spfli“ in die zuvor definierte Workarea geladen werden

• Legen Sie die Transaktion ZA_05_##_lh_dyn über das Kontextmenü an, um das zugehörige Programm starten zu können

an, um das zugehörige Programm starten zu können   *&--------------------------------------------*
 

*&--------------------------------------------*

*& Include

ZB_05_##_LH_DYNPRO_I01 *

*&--------------------------------------------*

*&

Module USER_COMMAND_0100 INPUT

*

*&--------------------------------------------*

MODULE user_command_0100 INPUT.

 

save_ok = ok_code. CLEAR ok_code.

CASE save_ok. WHEN 'BACK'. LEAVE PROGRAM.

WHEN 'ENTER'. set screen 100. WHEN 'SELECT'. SELECT * FROM spfli into wa_spfli WHERE carrid = spfli-carrid AND connid = spfli-connid. ENDSELECT. LEAVE TO SCREEN 200. ENDCASE.

 

ENDMODULE.

" USER_COMMAND_0100 INPUT

©

Prof. Dr. H. Krcmar

 
TO SCREEN 200. ENDCASE.   ENDMODULE. " USER_COMMAND_0100 INPUT © Prof. Dr. H. Krcmar  

Übung: Dynpro 100 Zusatz

Übung: Dynpro 100 Zusatz • Wie kann das Feld carrid im Dynpro vorbelegt werden ? •

• Wie kann das Feld carrid im Dynpro vorbelegt werden ?

• Wie kann die Eingabe der ENTER-Taste angefangen werden ?

• Wo kann man für die Buttons ein Ikon angeben ?

• Wie kann erreicht werden, dass für das Feld Flugnummer auch eine F4-Hilfe erscheint ? (Tip: Transaktion ABAPDOCU)

werden, dass für das Feld Flugnummer auch eine F4-Hilfe erscheint ? (Tip: Transaktion ABAPDOCU) © Prof.

© Prof. Dr. H. Krcmar

werden, dass für das Feld Flugnummer auch eine F4-Hilfe erscheint ? (Tip: Transaktion ABAPDOCU) © Prof.

Übung: Dynpro 200

Übung: Dynpro 200 • Erstellen Sie im gleichen Programm das Dynpro 200 • Es soll alle

• Erstellen Sie im gleichen Programm das Dynpro 200

• Es soll alle Daten des gewählten Fluges anzeigen

• Die angezeigten Daten sollen veränderbar sein

• Legen Sie dazu einen Button an, der das Speichern ermöglichen soll

• Benutzen sie zum Speichern den ABAP-Befehl „MODIFY“ bzw. „UPDATE“ (weitere Doku in der Hilfe)

• Zusatz: Zeigen Sie durch Meldungen in der Statuszeile an, ob das Speichern erfolgreich war oder nicht

Zeigen Sie durch Mel dungen in der Statuszeile an, ob das Speichern erfolg reich war oder

© Prof. Dr. H. Krcmar

Zeigen Sie durch Mel dungen in der Statuszeile an, ob das Speichern erfolg reich war oder
Das Sperrkonzept • Was passiert, wenn mehrere User den gleichen Datensatz gleichzeitig bearbeiten ?
Das Sperrkonzept • Was passiert, wenn mehrere User den gleichen Datensatz gleichzeitig bearbeiten ?
Das Sperrkonzept • Was passiert, wenn mehrere User den gleichen Datensatz gleichzeitig bearbeiten ?

Das Sperrkonzept

Das Sperrkonzept • Was passiert, wenn mehrere User den gleichen Datensatz gleichzeitig bearbeiten ?

• Was passiert, wenn mehrere User den gleichen Datensatz gleichzeitig bearbeiten ? Dateninkonsistenz

• Sperrkonzepte verhindern den gleichzeitigen (verändernden) Datenzugriff

• Neben dem Sperrkonzept der Datenbank hat SAP ein eigenes Sperrkonzept

Datenzugriff • Neben dem Sperrkonzept der Datenbank hat SAP ein eigenes Sperrkonzept © Prof. Dr. H.

© Prof. Dr. H. Krcmar

Datenzugriff • Neben dem Sperrkonzept der Datenbank hat SAP ein eigenes Sperrkonzept © Prof. Dr. H.

Sperrmodi

1. Lesesperre (shared lock)

Sperrmodi 1. Lesesperre (shared lock) • Setzt Sperre auf zu lesendes Datenobjekt • Es können mehrere

• Setzt Sperre auf zu lesendes Datenobjekt

• Es können mehrere Lesesperren gleichzeitig auf ein Datenobjekt bestehen

• Verhindert das setzen einer Schreibsperre auf ein Datenobjekt

2. Schreibsperre (exclusive lock)

• Setzt Sperre auf zu veränderndes Datenobjekt

• Erlaubt keine weiteren Sperren (auch keine Lesesperre)

Deadlock:

• Kann eine Sperre nicht gesetzt werden, wird gewartet, bis die Sperre gesetzt werden kann

• 2 Programme warten gegenseitig darauf, dass das andere Programm die Sperre aufhebt

werden kann • 2 Programme warten gegenseitig darauf, dass das andere Programm die Sperre aufhebt ©

© Prof. Dr. H. Krcmar

werden kann • 2 Programme warten gegenseitig darauf, dass das andere Programm die Sperre aufhebt ©

Anlegen eines Sperrobjektes

Anlegen eines Sperrobjektes • Anlegen erfolgt im Data Dictionary (SE11) • Pro Tabelle kann es nur

• Anlegen erfolgt im Data Dictionary (SE11)

• Pro Tabelle kann es nur ein Sperrobjekt geben

• Sperrparameter werden automatisch aus dem Primärschlüssel der Tabelle generiert

geben • Sperrparameter werden automatisch aus dem Primärschlüssel der Tabelle generiert © Prof. Dr. H. Krcmar
geben • Sperrparameter werden automatisch aus dem Primärschlüssel der Tabelle generiert © Prof. Dr. H. Krcmar
geben • Sperrparameter werden automatisch aus dem Primärschlüssel der Tabelle generiert © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

geben • Sperrparameter werden automatisch aus dem Primärschlüssel der Tabelle generiert © Prof. Dr. H. Krcmar

Verwendung von Sperrobjekten

Verwendung von Sperrobjekten • Beim Anlegen eines Sperrobj ektes werden automatisch die Funktionsbausteine

• Beim Anlegen eines Sperrobjektes werden automatisch die Funktionsbausteine Enqueue_<Sperrobjekt> und Dequeue_<Sperrobjekt> angelegt

• Vor dem Lesen/Schreiben wird mit Enqueue eine Sperre angefordert

• Nach der Lese-/Schreibaktion bzw. bei Fehlern wird die Sperre mit Dequeue wieder freigegeben

• Einbinden der Funktionsaufrufe erfolgt am einfachsten über „Muster“

• Sperren können mit der Transaktion SM12 manuell aufgehoben werden

über „Muster“ • Sperren können mit der Transakti on SM12 manue ll aufgehoben werden © Prof.

© Prof. Dr. H. Krcmar

über „Muster“ • Sperren können mit der Transakti on SM12 manue ll aufgehoben werden © Prof.

Übung: Sperrobjekte

Übung: Sperrobjekte • Fordern Sie in Ihrem Programm eine Lesesperre an für den in Dynpro 100

• Fordern Sie in Ihrem Programm eine Lesesperre an für den in Dynpro 100 gewählten Datensatz

• Wenn der Datensatz im Dynpro 200 geändert wurde und gespeichert werden soll, fordern Sie eine Schreibsperre für den entsprechenden Datensatz an

• Vergessen Sie nicht, die Sperren wieder freizugeben !

für den entsprechenden Datensatz an • Vergessen Sie nicht, die S perren wieder freizugeben ! ©

© Prof. Dr. H. Krcmar

für den entsprechenden Datensatz an • Vergessen Sie nicht, die S perren wieder freizugeben ! ©

Logical Unit of Work (LUW)

Logical Unit of Work (LUW) DynPro 100 PBO 100 PAI 100 PBO 200 Netzausfall DynPro 200

DynPro 100

PBO 100 PAI 100
PBO 100
PAI 100
PBO 200
PBO 200

Netzausfall

DynPro 200

DynPro 100 PBO 100 PAI 100 PBO 200 Netzausfall DynPro 200 Verbuchung Soll-Seite PAI 200 Was

Verbuchung Soll-Seite

PAI 200
PAI 200

Was passiert, wenn während der Verbuchung einer betriebwirtschaftlich zusammenhängen Buchung über mehrere Dynpros das Netz ausfällt ?

Verbuchung Haben-Seite

zusammenhängen Buchung über mehrere Dynpros das Netz ausfällt ? Verbuchung Haben-Seite © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

zusammenhängen Buchung über mehrere Dynpros das Netz ausfällt ? Verbuchung Haben-Seite © Prof. Dr. H. Krcmar

LUW

• Problem:

LUW • Problem: • Bei jedem neuen Dynpro werden geändert DB-Tabellen in die DB geschrieben (COMMIT)

• Bei jedem neuen Dynpro werden geändert DB-Tabellen in die DB geschrieben (COMMIT)

• Wenn zusammenhängende Daten über mehrere DynPros ermittelt werden, kann erst am Ende ausgesagt werden, ob die Daten gebucht werden sollen oder nicht

• Lösung:

• Änderungen an DB-Tabellen werden in Verbuchungsbausteinen vorgemerkt

• Erst, wenn alle Daten korrekt gesammelt wurden, werden die Änderungen in die DB-Tabellen geschrieben (Commit Work) oder verworfen (Rollback) Daten können in einer LUW über mehrere DynPros hinweg gesammelt werden

verworfen (Rollback) Daten können in einer LUW über mehrere DynPros hinweg gesammelt werden © Prof. Dr.

© Prof. Dr. H. Krcmar

verworfen (Rollback) Daten können in einer LUW über mehrere DynPros hinweg gesammelt werden © Prof. Dr.

Anlegen/Aufrufen eines Verbuchungsbausteines

• Anlegen:

Anlegen/Aufrufen ein es Verbuchungsbausteines • Anlegen: • Analog zu normalem Funktionsbaustein, nur dass als

• Analog zu normalem Funktionsbaustein, nur dass als Ablaufart „Verbuchungsbaustein“ gewählt wird

• Ausführungsarten:

- Start sofort: synchron

- Sofort, nicht nachverbuchbar: bei Problemen wird Nachverbuchung nicht vorgenommen

- Start verzögert: asynchron

• Inhalt: Änderung der DB-Tabelle

• Aufrufen:

• Synchron:CALL FUNCTION <Verbuchungsbaustein>

• Asynchron: CALL FUNCTION <Verbuchungsbaustein> IN UPDATE TASK.

… COMMIT WORK.

• Asynchron: CALL FUNCTION <Ver buchungsbaustein> IN UPDATE TASK. … COMMIT WORK. © Prof. Dr. H.

© Prof. Dr. H. Krcmar

• Asynchron: CALL FUNCTION <Ver buchungsbaustein> IN UPDATE TASK. … COMMIT WORK. © Prof. Dr. H.

Berechtigungsprüfung

Berechtigungsprüfung • Vor jedem DB-Zugriff sollten die Rechte des Benutzers geprüft werden • Überprüfung, ob der

• Vor jedem DB-Zugriff sollten die Rechte des Benutzers geprüft werden

• Überprüfung, ob der Benutzer das Berechtigungsobjekt „S_CARRID“ besitzt und für die Fluggesellschaft „LH“ die Aktivität „02“ (=ändern) durchführen darf

ACTVT

AUTHORITY-CHECK OBJECT ‘S_CARRID‘ ID ‘ CARRID‘ FIELD ‘LH‘ ID ‘ACTVT‘ FIELD ’02‘. IF sy-subrc NE 0.

03

02

ENDIF.

 

01

xxxxx x AA AZ DL LH UA
xxxxx
x
AA
AZ
DL
LH
UA

CARRID

IF sy-subrc NE 0. 03 02 … ENDIF.   01 xxxxx x AA AZ DL LH

© Prof. Dr. H. Krcmar

IF sy-subrc NE 0. 03 02 … ENDIF.   01 xxxxx x AA AZ DL LH

Sonstiges

Sonstiges • Einplanung von APAB-Programmen für Hintergrundverarbeitung: • Einplanung in TA SM36 mit Zeit intervall,

• Einplanung von APAB-Programmen für Hintergrundverarbeitung:

• Einplanung in TA SM36 mit Zeitintervall, Event oder Vorgänger- Job

• Bei Aufruf von Programmen mit Eingabefeldern müssen vorher Varianten gespeichert und angewendet werden

• Aufruf von Transaktionen innerhalb ABAP mit :

CALL TRANSACTION <ta>

angewendet werden • Aufruf von Transaktionen innerhalb ABAP mit : CALL TRANSACTION <ta> © Prof. Dr.

© Prof. Dr. H. Krcmar

angewendet werden • Aufruf von Transaktionen innerhalb ABAP mit : CALL TRANSACTION <ta> © Prof. Dr.
werden • Aufruf von Transaktionen innerhalb ABAP mit : CALL TRANSACTION <ta> © Prof. Dr. H.
werden • Aufruf von Transaktionen innerhalb ABAP mit : CALL TRANSACTION <ta> © Prof. Dr. H.
werden • Aufruf von Transaktionen innerhalb ABAP mit : CALL TRANSACTION <ta> © Prof. Dr. H.

Einstieg ABAP-Object

Einstieg ABAP-Object • Objektorientierter „Aufsatz“ auf ABAP • Stufenweise Konvertierung des ABAP-Quellcodes in

• Objektorientierter „Aufsatz“ auf ABAP

• Stufenweise Konvertierung des ABAP-Quellcodes in ABAP-Objects

• Wichtige Werkzeuge:

• ABAP Workbench (nach wie vor)

• Class Builder

in ABAP-Objects • Wichtige Werkzeuge: • ABAP Workbench (nach wie vor) • Class Builder © Prof.

© Prof. Dr. H. Krcmar

in ABAP-Objects • Wichtige Werkzeuge: • ABAP Workbench (nach wie vor) • Class Builder © Prof.

Prinzipien der Objektorientierung 1

Prinzipien der Objektorientierung 1 • Klassen sind die Definition ei nes Objektes und enthalten Attribute und

• Klassen sind die Definition eines Objektes und enthalten Attribute und Methoden eines Objektes

• Instanzen sind die konkrete Ausprägung einer Klasse

• Beispiel:

- Klasse: Auto

- Instanz: Mein Auto mit dem Kennzeichen xxx

Ausprägung einer Klasse • Beispiel: - Klasse: Auto - Instanz: Mein Auto mit dem Kennzeichen xxx

© Prof. Dr. H. Krcmar

Ausprägung einer Klasse • Beispiel: - Klasse: Auto - Instanz: Mein Auto mit dem Kennzeichen xxx

Prinzipien der Objektorientierung 2

Prinzipien der Objektorientierung 2 • Kapselung: innerer Ablauf einer Klasse ist egal, es zählen nur Schnittstellen

• Kapselung: innerer Ablauf einer Klasse ist egal, es zählen nur Schnittstellen

• Polymorphie: gleichnamige Funktionen bei verschiedenen Klassen führen zu analogem Verhalten

• Vererbung: eine neue Klasse die Eigenschaften einer bestehenden Klasse erben und um eigene Eigenschaften erweitern

Kla sse die Eigenschaften einer bestehenden Klasse erben und um eigene Eigenschaften erweitern © Prof. Dr.

© Prof. Dr. H. Krcmar

Kla sse die Eigenschaften einer bestehenden Klasse erben und um eigene Eigenschaften erweitern © Prof. Dr.

Beispiel für Objektorientierung

Beispiel für Objektorientierung Klasse Fahrzeug Attribute: Hersteller Anzahl Räder Methoden: Erstellen Attr.
Klasse Fahrzeug Attribute: Hersteller Anzahl Räder Methoden: Erstellen Attr. anzeigen
Klasse Fahrzeug
Attribute:
Hersteller
Anzahl Räder
Methoden:
Erstellen
Attr. anzeigen

Vererbung

Räder Methoden: Erstellen Attr. anzeigen Vererbung Vererbung Klasse PKW Attribute: Hersteller Anzahl Räder
Räder Methoden: Erstellen Attr. anzeigen Vererbung Vererbung Klasse PKW Attribute: Hersteller Anzahl Räder

Vererbung

Klasse PKW Attribute: Hersteller Anzahl Räder Anzahl Sitze Methoden: Erstellen Attr. anzeigen Belegte Sitze
Klasse PKW
Attribute:
Hersteller
Anzahl Räder
Anzahl Sitze
Methoden:
Erstellen
Attr. anzeigen
Belegte Sitze
Klasse LKW Attribute: Hersteller Anzahl Räder Zuladung Methoden: Erstellen Attr. anzeigen Ladekapazität
Klasse LKW
Attribute:
Hersteller
Anzahl Räder
Zuladung
Methoden:
Erstellen
Attr. anzeigen
Ladekapazität

Quelle: Eigene Darstellung

Räder Zuladung Methoden: Erstellen Attr. anzeigen Ladekapazität Quelle: Eigene Darstellung © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

Räder Zuladung Methoden: Erstellen Attr. anzeigen Ladekapazität Quelle: Eigene Darstellung © Prof. Dr. H. Krcmar

Klassifikation von Methoden und Attributen

• Privat öffentlich:

von Methoden und Attributen • Privat öffentlich: • Private Methoden/Attribute können nur aus der Klasse

• Private Methoden/Attribute können nur aus der Klasse selbst aufgerufen/abgefragt werden (z.B. Methode „Bremsen“: soll nicht jeder machen können)

• Öffentliche Methoden/Attribute können immer aufgerufen/abgefragt werden (z.B. was für eine Farbe hat das Auto ?)

• Instanz statisch

• Instanz-Methoden/Attribute existieren in jeder Instanz (z.B. Methode „Farbe abfragen“, da jede Instanz eine andere Farbe haben kann)

• Statische Methoden/Attribute existieren in nur einmal für alle Instanzen (z.B. Auflistung aller Instanzen einer Klasse)

existieren in nur einmal für alle Instanzen (z.B. Auflistung aller Instanzen einer Klasse) © Prof. Dr.

© Prof. Dr. H. Krcmar

existieren in nur einmal für alle Instanzen (z.B. Auflistung aller Instanzen einer Klasse) © Prof. Dr.

Deklaration einer Klasse

Deklaration einer Klasse • Klassen können in der ABAP-Workbench oder im Class Builder (beides am besten

• Klassen können in der ABAP-Workbench oder im Class Builder (beides am besten in Include-Dateien)

• Unterteilung in Definition und Implementierung einer Klasse

• Definition enthält „Kopfdaten“ der Klasse

• Implementierung enthält Code der entsprechenden Methoden

enthält „Kopfdaten“ der Klasse • Implementierung enthält Code der entsprechenden Methoden © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

enthält „Kopfdaten“ der Klasse • Implementierung enthält Code der entsprechenden Methoden © Prof. Dr. H. Krcmar

Definition einer Klasse

Definition einer Klasse CLASS <Klassenname > DEFINITION. PUBLIC SECTION. METHODS: <Methode1> IMPORTING

CLASS <Klassenname> DEFINITION. PUBLIC SECTION. METHODS: <Methode1> IMPORTING <Importparameter1> TYPE <Datentyp> <Importparameter2> TYPE <Datentyp>,

<Methode2>.

CLASS-METHODS: <Methode2>. DATA: <Variable1> TYPE <Datentyp> CLASS-DATA: <Variable2> TYPE <Datentyp> PRIVATE SECTION. METHODS: … CLASS-METHODS: … DATA: … CLASS-DATA: … ENDCLASS.

PRIVATE SECTION. METHODS: … CLASS-METHODS: … DATA: … CLASS-DATA: … ENDCLASS. © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

PRIVATE SECTION. METHODS: … CLASS-METHODS: … DATA: … CLASS-DATA: … ENDCLASS. © Prof. Dr. H. Krcmar

Implementierung einer Klasse

Implementierung einer Klasse CLASS <Klassenname> IMPLEMENTATION. … METHOD <Methodenname>.

CLASS <Klassenname> IMPLEMENTATION.

METHOD <Methodenname>.

…ABAP-Code…

ENDMETHOD.

ENDCLASS.

IMPLEMENTATION. … METHOD <Methodenname>. …ABAP-Code… ENDMETHOD. … ENDCLASS. © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

IMPLEMENTATION. … METHOD <Methodenname>. …ABAP-Code… ENDMETHOD. … ENDCLASS. © Prof. Dr. H. Krcmar

Aufruf von Methoden / Attributabfrage

• Instanzmethode:

Aufruf von Methoden / Attributabfrage • Instanzmethode: [CALL METHOD] <Instanzname>-><Met

[CALL METHOD] <Instanzname>-><Methode>(_<Importparameter> = Wert_).

• Klassenmethode:

[CALL METHOD] <Klassename>=><Methode>(_<Importparameter> = Wert_).

• Instanzattribute:

<Instanzname>-><Attribut>.

• Statische Attribute:

<Klassenname>=><Attribut>.

• Statische Attribute: <Klassenname>=><Attribut>. © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

• Statische Attribute: <Klassenname>=><Attribut>. © Prof. Dr. H. Krcmar

Übung: Klasse anlegen

Übung: Klasse anlegen • Erstellen Sie die Klasse lc l_airplane, die ein Flugzeug abbilden soll, in

• Erstellen Sie die Klasse lcl_airplane, die ein Flugzeug abbilden soll, in einer Include-Datei eines neuen Programms namens ZB_05_##_AIRPLANE

• Die Klasse soll die Attribute Name und Flugzeugtyp haben

• Erstellen Sie eine öffentliche Methode, um diese Attribute zu setzen und eine Weitere, um sie anzuzeigen

Sie eine öffentliche Methode, um diese Attribute zu setzen und eine Weitere, um sie anzuzeigen ©

© Prof. Dr. H. Krcmar

Sie eine öffentliche Methode, um diese Attribute zu setzen und eine Weitere, um sie anzuzeigen ©

Lösung: Klasse anlegen 1/2

CLASS lcl_airplane DEFINITION.

Lösung: Klasse anlegen 1/2 CLASS lcl_airplane DEFINITION. PUBLIC SECTION. METHODS: attribute_setzen IMPORTING im_name

PUBLIC SECTION. METHODS: attribute_setzen IMPORTING im_name TYPE string im_planetype TYPE string, attribute_anzeigen.

PRIVATE SECTION. DATA: name TYPE string, planetype TYPE string.

ENDCLASS.

SECTION. DATA: name TYPE string, planetype TYPE string. ENDCLASS. "lcl_airplane DEFINITION © Prof. Dr. H. Krcmar

"lcl_airplane DEFINITION

© Prof. Dr. H. Krcmar

SECTION. DATA: name TYPE string, planetype TYPE string. ENDCLASS. "lcl_airplane DEFINITION © Prof. Dr. H. Krcmar

Lösung: Klasse anlegen 2/2

CLASS lcl_airplane IMPLEMENTATION.

METHOD attribute_setzen. name = im_name. planetype = im_planetype. ENDMETHOD.

"attribute_setzen

METHOD attribute_anzeigen. WRITE: / icon_ws_plane AS ICON, / 'Name des Flugzeugs: ', name,

/ 'Typ des Flugzeugs: ', planetype.

ENDMETHOD.

ENDCLASS.

"attribute_anzeigen

"lcl_airplane IMPLEMENTATION

', planetype. ENDMETHOD. ENDCLASS. "attribute_anzeigen "lcl_airplane IMPLEMENTATION © Prof. Dr. H. Krcmar
', planetype. ENDMETHOD. ENDCLASS. "attribute_anzeigen "lcl_airplane IMPLEMENTATION © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

', planetype. ENDMETHOD. ENDCLASS. "attribute_anzeigen "lcl_airplane IMPLEMENTATION © Prof. Dr. H. Krcmar

Übung: Erstellen von Instanzen

Übung: Erstellen von Instanzen • Legen Sie mehrere Instanz der Klasse lcl_airplane an und weisen Sie

• Legen Sie mehrere Instanz der Klasse lcl_airplane an und weisen Sie ihren Attributen Werte zu

• Speichern Sie Verweise auf alle Instanzen in einer Tabelle

Sie ihren Attributen Werte zu • Speichern Sie Verweise auf alle Instanzen in einer Tabelle ©

© Prof. Dr. H. Krcmar

Sie ihren Attributen Werte zu • Speichern Sie Verweise auf alle Instanzen in einer Tabelle ©

Lösung: Erstellen von Instanzen

REPORT zb_05_##_airplane

TYPE-POOLS icon.

INCLUDE zb_05_##_class.

.

DATA: r_plane TYPE REF TO lcl_airplane, plane_list TYPE TABLE OF REF TO lcl_airplane.

START-OF-SELECTION.

CREATE OBJECT r_plane. APPEND r_plane TO plane_list. r_plane->attribute_setzen( im_name = 'München' im_planetype = 'Boeing 737' ).

LOOP AT plane_list INTO r_plane. r_plane->attribute_anzeigen( ). ENDLOOP.

737' ). … LOOP AT plane_list INTO r_plane. r_plane->attribute_anzeigen( ). ENDLOOP. © Prof. Dr. H. Krcmar
737' ). … LOOP AT plane_list INTO r_plane. r_plane->attribute_anzeigen( ). ENDLOOP. © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

737' ). … LOOP AT plane_list INTO r_plane. r_plane->attribute_anzeigen( ). ENDLOOP. © Prof. Dr. H. Krcmar

Der Konstruktor

Der Konstruktor • Explizit oder implizit defini erte Methode „constuctor“, die neue Instanzen erzeugt • Wird

• Explizit oder implizit definierte Methode „constuctor“, die neue Instanzen erzeugt

• Wird autom. durch „CREATE OBJECT“ aufgerufen

• Bei fehlender Implementierung, wird einfach nur eine Instanz erzeugt

• Bei expliziter Implementierung in der PUBLIC SECTION können bestimmte Schritte bei der Erstellung einer neuen Instanz ausgeführt werden (z.B. Defaultwerte vergeben …)

be i der Erstellung einer neuen Instanz ausgeführt werden (z.B . Defaultwerte vergeben …) © Prof.

© Prof. Dr. H. Krcmar

be i der Erstellung einer neuen Instanz ausgeführt werden (z.B . Defaultwerte vergeben …) © Prof.

Beispiel Konstruktor

Beispiel Konstruktor PUBLIC SECTION METHODS: constructor IMPORTING im_name type string im_name type string. CREATE

PUBLIC SECTION METHODS: constructor IMPORTING im_name type string im_name type string.

CREATE OBJECT r_plane exporting im_name = ‚München‘

im_planetype=‚747‘.

• Preisfrage: Wie sieht die Implementierung aus ?

= ‚München‘ im_planetype=‚747‘. • Preisfrage: Wie sieht di e Implementierung aus ? © Prof. Dr. H.

© Prof. Dr. H. Krcmar

= ‚München‘ im_planetype=‚747‘. • Preisfrage: Wie sieht di e Implementierung aus ? © Prof. Dr. H.
Einstieg Business Server Pages (BSP) • Web-Erweiterung für ABAP • Ermöglicht u. a. di e
Einstieg Business Server Pages (BSP) • Web-Erweiterung für ABAP • Ermöglicht u. a. di e
Einstieg Business Server Pages (BSP) • Web-Erweiterung für ABAP • Ermöglicht u. a. di e

Einstieg Business Server Pages (BSP)

Einstieg Business Server Pages (BSP) • Web-Erweiterung für ABAP • Ermöglicht u. a. di e Einbindung

• Web-Erweiterung für ABAP

• Ermöglicht u. a. die Einbindung von ABAP und serverseitigem JavScript in HTML-Seiten, die auf dem SAP-System gehostet/erstellt sind

• Kann zur Realisierung umfangreicher Portallösungen verwendet werden

• Erst ab SAP Web Application Server 6.20 möglich

fangreicher Portallösungen verwendet werden • Erst ab SAP Web Applicat ion Server 6.20 möglich © Prof.

© Prof. Dr. H. Krcmar

fangreicher Portallösungen verwendet werden • Erst ab SAP Web Applicat ion Server 6.20 möglich © Prof.

Übung: Business Server Page anlegen

Übung: Business Server Page anlegen • Legen Sie BSP-Applikation ZB_05_##_BSP in der ABAP-Workbench an und erstellen

• Legen Sie BSP-Applikation ZB_05_##_BSP in der ABAP-Workbench an und erstellen Sie darin eine neue Seite

ZB_05_##_BSP
ZB_05_##_BSP

• Auf dieser Seite sollen die Daten der Tabellen SPFLI angezeigt werden

• Schalten Sie den neu erstellten Service in der Pflege der Services: Transaktion SICF frei (Pfad: /sap/bc/bsp/sap/zb_05_##_bsp)

• Frage: Über welche URL kann Ihr neuer Service erreicht werden ?

/sap/bc/bsp/sap/zb_05_##_bsp) • Frage: Über welche URL kann Ihr neuer Service erreicht werden ? © Prof. Dr.

© Prof. Dr. H. Krcmar

/sap/bc/bsp/sap/zb_05_##_bsp) • Frage: Über welche URL kann Ihr neuer Service erreicht werden ? © Prof. Dr.

Lösung: Business Server Pages anlegen

<%@page language="abap" %> <html> <head> <title>Meine erste BSP-Seite</title> </head> <% DATA: it_spfli TYPE TABLE OF spfli, wa_spfli type spfli. SELECT * FROM spfli INTO TABLE it_spfli.%> <body> <center> <h2> Ausgabe aller Daten aus Tabelle SPFLI

</h2>

<br> <br> <table border="1"> <tr> <td>Fluggesellschaft</td> <td>Verbindung</td> <td>Startflughafen</td> <td>Zielflughafen</td> <td>Abflugszeit</td> <td>Ankunftszeit</td> </tr>

<% loop at it_spfli into wa_spfli. %>

<tr> <td><%= wa_spfli-carrid %></td> <td><%= wa_spfli-connid %></td> <td><%= wa_spfli-airpfrom %></td> <td><%= wa_spfli-airpto %></td> <td><%= wa_spfli-deptime %></td> <td><%= wa_spfli-arrtime %></td> </tr> <% endloop. %> </table> </body> </html>

</tr> <% endloop. %> </table> </body> </html> © Prof. Dr. H. Krcmar
</tr> <% endloop. %> </table> </body> </html> © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

</tr> <% endloop. %> </table> </body> </html> © Prof. Dr. H. Krcmar

Übung: BSP – Eingabe verarbeiten

Übung: BSP – Eingabe verarbeiten • Legen Sie eine weitere BSP mit einem Formular an, Wert

• Legen Sie eine weitere BSP mit einem Formular an, Wert für die Fluggesellschaft und die Verbindung aufnehmen und bei Knopfdruck an die bereits erstellte Seite senden soll

• Verändern Sie die Seite aus der letzten Übung so, dass nur noch die Informationen zur gewählten Verbindung angezeigt werden

• Zusatzaufgabe: Erweitern sie das Formular sinnvoll um weitere Buttons

angezeigt werden • Zusatzaufgabe: Erweitern si e das Formular sinnvoll um weitere Buttons © Prof. Dr.

© Prof. Dr. H. Krcmar

angezeigt werden • Zusatzaufgabe: Erweitern si e das Formular sinnvoll um weitere Buttons © Prof. Dr.

Lösung: BSP – Eingabe verarbeiten 1/3

Formular:

Lösung: BSP – Eingabe verarbeiten 1/3 • Formular: <%@page language="abap" %> <html>

<%@page language="abap" %> <html> <head> <title>Eingaben bearbeiten</title> </head> <body> <form name="Formular"> Fluggesellschaft <INPUT type="text" name="param_carrid"><br> Verbindung <INPUT type="text" name="param_connid"><br><br> <input type="submit" name="onInputProcessing(event_1)" value="Alle Flugdaten"> </form> </body> </html>

value="Alle Flugdaten"> </form> </body> </html> © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

value="Alle Flugdaten"> </form> </body> </html> © Prof. Dr. H. Krcmar

Lösung: BSP – Eingabe verarbeiten 2/3

Lösung: BSP – Eingabe verarbeiten 2/3 • Eventhandler OnInputprocessing DATA: lv_help TYPE string. CASE event_id.

• Eventhandler OnInputprocessing

DATA: lv_help TYPE string.

CASE event_id. WHEN 'event_1'. navigation->set_parameter( 'param_carrid' ). navigation->set_parameter( 'param_connid' ). navigation->goto_page( 'index.htm' ). ENDCASE.

'param_connid' ). navigation->goto_page( 'index.htm' ). ENDCASE. © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

'param_connid' ). navigation->goto_page( 'index.htm' ). ENDCASE. © Prof. Dr. H. Krcmar

Lösung: BSP – Eingabe verarbeiten 3/3

Lösung: BSP – Eingabe verarbeiten 3/3 • Anlegen der Seitenattribute auf der Zielseite Web Application Builder:

• Anlegen der Seitenattribute auf der Zielseite

Web Application Builder: Seite zu ZB_05_##_BSP ändern ZB_05_##
Web Application Builder: Seite zu ZB_05_##_BSP ändern
ZB_05_##

• Aktivieren der beiden Seiten! und evtl. des Services

Seite zu ZB_05_##_BSP ändern ZB_05_## • Aktivieren der beiden Seit en! und evtl. des Services ©

© Prof. Dr. H. Krcmar

Seite zu ZB_05_##_BSP ändern ZB_05_## • Aktivieren der beiden Seit en! und evtl. des Services ©

Aufruf der BSP‘s

• http:/hcc1b11.informatik.tu-

Aufruf der BSP‘s • http:/hcc1b11.informatik.tu- muenchen.de:8001/sap/bc/bsp /sap/<Programmname>\<Se

muenchen.de:8001/sap/bc/bsp/sap/<Programmname>\<Se

itenname>.htm

oder:

• http:/hcc3b11.informatik.tu-

muenchen.de:8002/sap/bc/bsp/sap/<Programmname>\<Se

itenname>.htm

muenchen.de:8002/sap/bc/bsp /sap/<Programmname>\<Se itenname>.htm © Prof. Dr. H. Krcmar

© Prof. Dr. H. Krcmar

muenchen.de:8002/sap/bc/bsp /sap/<Programmname>\<Se itenname>.htm © Prof. Dr. H. Krcmar

Hausaufgabe

Hausaufgabe • Erstellen Sie eine Tabelle ZB_05_##_MA, in der Daten zu Mitarbeitern erfasst werden können •

• Erstellen Sie eine Tabelle ZB_05_##_MA, in der Daten zu Mitarbeitern erfasst werden können

• Entwickeln Sie in einem gleichnamigen ABAP-Programm dazu eine grafische Oberfläche, mit der die Daten erstellt, bearbeitet und gelöscht werden können

• Die Oberfläche kann in Form eines Dynpros oder von BSP‘s erstellt werden

• Berücksichtigen Sie dabei das Sperrkonzept von SAP indem Sie ein Sperrobjekt für Ihre Tabelle anlegen und dies in Ihrem Programm verwenden

Abgabe der Hausaufgabe durch Zusendung des Programmnamens und der Transaktion oder der URL per Email bis zum 2.11.2005 12:00 Uhr

dung des Programmnamens und der Transaktion oder der URL per Email bis zum 2.11.2005 12:00 Uhr

© Prof. Dr. H. Krcmar

dung des Programmnamens und der Transaktion oder der URL per Email bis zum 2.11.2005 12:00 Uhr