ABAP-Praktikum v03

download ABAP-Praktikum v03

of 50

Transcript of ABAP-Praktikum v03

Praktikum Unternehmenssoftware Praktikum Unternehmenssoftware ABAP-Grundlagen ABAP-Grundlagen

Technische Universitt Mnchen Lehrstuhl fr Wirtschaftsinformatik Prof. Dr. H. Krcmar

Inhalte ABAP-Grundlagen: Grundlegende Konzepte Hello World Datenbankzugriffe Data Dictionary Modularisierung DynPros Betriebswirtschaftliche Konzepte & Sonstiges

ABAP Objects Business Server Pages Prof. Dr. H. Krcmar

ABAP-Gundlagen: Grundlegende Konzepte ABAP-Gundlagen: Grundlegende Konzepte

Was ist ABAP ? ABAP = Advanced Business Application Programming (frher: Allg. Berichts-Aufarbeitungs Prozessor) Wurzeln in COBOL und Pascal Existiert seit 1982 (abwrtkompatibel viele Relikte) ABAP-Programme werden bei der ersten Ausfhrung kompiliert, d.h. alle Programme liegen auch als Quelltext vor Plattformunabhngig (schon lange vor Java) Datenbankunabhngig Starke Ausrichtung an Wiederverwendbarkeit von Code- und Datenobjekten Seit 1998 objektorientierte Erweiterung ABAP-Objects : Verwendung von ABAP in Klassen- und ObjektstrukturenTM

Prof. Dr. H. Krcmar

Kompilierung von ABAP-CodePrsentationSAPGuiErster Aufruf eines Programms

SAPGuiMeldung ber Kompilierung

SAPGuiProgrammausgabe

Application

ApplicationServer

ApplicationServerKompilierung

ApplicationServer

Database

Programm wurde noch nicht kompiliert

DatabaseServer

Rckgabe des kompilierten Programms

ABAP Quellcode Kompilierte Programme

Quelle: Eigene Darstellung Prof. Dr. H. Krcmar

Informationsquellen zu ABAP SAP-Hilfe SAP Marketplace SDN Transaktion ABAPDOCU Transaktion SE30 Tips & Tricks Internet: www.abap4.de.vu http://www.sapgenie.com/abap/ http://cma.zdnet.com/book/abap/index.htm (Teach Yourself ABAP/4 in 21 days)

Bcher: Umlauff/Dirnhofer: ABAP bungsbuch, Addison-Wesley 2001 Keller, Krger: ABAP-Objects, Galileo Press 2002 Keller/Jacobitz: ABAP Objects Referenz, Galileo Press 2004

Prof. Dr. H. Krcmar

Der Entwicklerschlssel Ein Entwicklerschlssel ermglicht es einem bestimmten SAPBenutzer Programme zu entwickeln oder bestehende zu verndern Jeder Schlssel muss bei SAP beantragt und nur einmal pro User angegeben werden Der Grund dieser Beantragung liegt in den hheren Lizenzkosten fr Entwicklungsuser Zudem unterscheidet man Objektschlssel, die die Bearbeitung bestehender SAP-Entwicklungen ermglichen Der passende Entwicklerschlssel liegt fr das Praktikum auf dem Share-Laufwerk

Prof. Dr. H. Krcmar

Transport in einer typischen SAP-Systemlandschaft

Development System (DEV)

Quality Assurance System (QAS)

Production System (PROD)

Quelle: Eigene Darstellung

nderungen werden in Transportauftrgen gespeichert und werden von DEV nach QAS transportiert Transportauftrge werden beim Export als Dateien gespeichert Beim Import knnen einzelne oder alle anstehenden Transportauftrge eingespielt werden Prof. Dr. H. Krcmar

Hierarchie des TransportwesensProjekt

Transportauftrag

Transportauftrag

Transportauftrag

Aufgabe

Aufgabe

Aufgabe

Aufgabe

Aufgabe

Aufgabe

Mitarbeiter

Mitarbeiter

Mitarbeiter

Mitarbeiter

Mitarbeiter

Mitarbeiter

Quelle: Eigene Darstellung Prof. Dr. H. Krcmar

ABAP-Gundlagen: Hello World! ABAP-Gundlagen: Hello World!

Zugangsdaten System: G31 Mandant: 902 User: ABAP-5-XX Passwort: init Passwort muss bei der erstern Anmeldung gendert werden (Bitte merken!)

Prof. Dr. H. Krcmar

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

Neuen Transportauftrag fr das Anlegen des Pakets erstellen

ZB_05_##

Pakete gliedern das Repository Transportauftrge dienen der Organisation und dem Transport von Entwicklungen Prof. Dr. H. Krcmar

Hello World 2/3 Programm ZB_05_XX_HELLOWORLD in angelegtem Paket ohne TOPInclude erstellen (Kontextmen des Pakets anwhlen) Entwicklerschlssel eingeben Eigenschaften des Programms angebenZB_05_##_HELLOWORLD

Report ZB_05_##_HELLOWORLD

ZB_05_##_HELLOWORLD

Programm dem neuen Paket und dem Transportauftrag zuordnen Prof. Dr. H. Krcmar

ZB_05_##

Hello World 3/3 Programm schreiben (Punkt nicht vergessen!)*&---------------------------------------------------------------------* *& Report ZB_05_##_HELLOWORLD * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------* REPORT ZB_05_##_HELLOWORLD . write 'Hello World!'.

Programm speichern, prfen, testen und aktivieren

1.

ABAP Editor: Report ZB_05_HELLOWORLD ndern

2. 4. 3. Aufgabe: Wie kann das Programm erweitert werden, damit vor dem Text ein Icon erscheint ? (Tip: Hilfe zum Befehl Write) Prof. Dr. H. Krcmar

Arbeitsumgebung: Object Navigator 1/2 Benutzerfreundliche Oberflche, 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 Programmausfhrung Muster: Assistent zur Generierung komplexer Befehlsstrukturen Pretty Printer: macht den Code besser lesbar (einstellbar ber Hilfsmittel Einstellungen

Prof. Dr. H. Krcmar

Arbeitsumgebung: Object Navigator 2/2 Vorwrtsnavigation: forward ever, backward never Grundlegendes Prinzip in der SAP-Entwicklung Durch Doppelklick auf Erwhnung eines Objektes kann zum Objekt navigiert bzw. es erstellt werden Einsicht in beliebigen SAP-Code (ber System Status):

Prof. Dr. H. Krcmar

Entwicklungswerkzeuge in SAP

Quelle: SAP AG 1999 Prof. Dr. H. Krcmar

Elemente der ABAP-Programmierung 1/2 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 hufigsten verwendet werden

Prof. Dr. H. Krcmar

Elemente der ABAP-Programmierung 2/2 Datenbankview: - Zusammenfhrung von mehreren Tabellen - Festlegung im Data Dictionary (im Gegensatz zu Inner Joins) - Unterscheidung in Datenbankview (Lesen von Daten), Pflegeview (Datenpflege mit betriebswirtschaftlichen Zusammenhngen) - Lsst sich ber Workbench anlegen - Kann wie eine Datenbank angesprochen werden Interne Tabellen: temporre Speicherung von Datenbanktabellen

Prof. Dr. H. Krcmar

ABAP-Gundlagen: Datenbankzugriffe ABAP-Gundlagen: Datenbankzugriffe

OpenSQLTM Portierung von ABAP auf alle gngigen DatenbankenApplikations-Server Datenbank-Server

ABAP-Interpreter ABAP-InterpreterSelect **from Select from

DB-Interface DB-InterfaceOpen SQL Open SQL

SQL-Datenbank SQL-DatenbankNative SQL Native SQL

DB Daten DB Daten Exec SQL. Exec SQL. Select Select End Exec. End Exec.Quelle: SAP AG Prof. Dr. H. Krcmar

DB Daten DB Daten

Native SQL Native SQL DB Daten DB Daten

Daten

SAP-Reisebro Beispiel Von SAP erstelltes Beispiel, dass eine vereinfachte Einfhrung in die ABAP-Entwicklung ermglicht Primr sind die bestehenden Datenstrukturen und tabellen sowie die enthaltenen Daten relevant Wichtige Tabellen: SCARR (Fluggesellschaften) SPFLI (Flugplne) Struktur: sbc400_t_spfli SFLIGHT (Flge) Struktur: sbc400focc SBOOK (Flugbuchungen)

Betrachtung der Tabellenstruktur ber das Dictionary (SE11) des Tabelleninhalts ber den Data Browser (SE16) Prof. Dr. H. Krcmar

Programm: Tabellen auslesen Geben Sie alle Flge der Lufthansa aus der Tabelle SFLIGHT aus Aufgabe: Erweitern Sie das bestehende Programm um eine Abfrage, ob der SelectBefehl erfolgreich ausgefhrt 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.

Prof. Dr. H. Krcmar

Interne Tabellen und ArbeitsbereicheArbeitsbereich wa_spfli

LHAPPEND COLLECT INSERT MODIFY DELETE

0400Interne Tabelle it_spfli

AA LHSORT BY REFRESH

0017 0400

LOOP AT . ENDLOOP. READ TABLE

Quelle: In Anlehnung an SAP AG

Workarea (wa_spfli): Entspricht einer Zeile in einer Tabelle und wird meistens durch eine Struktur definiert Enthlt die aktuell bearbeitete Tabellenzeile

Interne Tabelle (it_spfli): Kann analog zu einer Datenbanktabelle aufgebaut sein Ist eine lokale Kopie einer Tabelle Besteht nur, so lange das Programm luft, das sie erstellt hat

Prof. Dr. H. Krcmar

Datentypen

Datentyp

Vordefiniert (P, I, F, C, N, D, T, X)

benutzerdefiniert

elementar

strukturiert

Feldleistentyp

Tabellentyp

Quelle: In Anlehnung an SAP AG Prof. Dr. H. Krcmar

Vordefinierte Datentypen in ABAPDatentyp d t i f String Xstring p n c x Bedeutung Date Time integer Gleitpunktzahl Alphanumerischer Text Bytefolge Gepackte Zahl Numerischer Text Zeichenkette Byte (hexadezimal) 0 00 0 X00 Max. 65536 Ziffern Max. 65536 Zeichen Initialwert 00000000 000000 0 0.000 Wertebereich

Systemvariablen (sy-): Tabelle syst Prof. Dr. H. Krcmar

Datendeklaration Einfache Felddefinition: Strukturiertes Datenobjekt: Interne Tabelle: Konstanten: Parameter:DATA f (len) TYPE Datentyp DATA: BEGIN OF struc, END OF struc.

DATA itab TYPE Tabellentyp oder DATA itab TYPE TABLE OF Struktur CONSTANTS c VALUE Wert/is INITIAL PARAMETERS p

Anstelle von TYPE kann in den meisten Fllen LIKE verwendet werden es muss keine Kenntnis ber genauen Datentyp vorliegen Prof. Dr. H. Krcmar

Datenmanipulation Datenzuweisung:MOVE f TO f g = f oder

Numerische Operationen: Wichtige Stringoperationen:

ADD n TO m m = m + n CONCATENATE SPLIT SEARCH

oder

Es erfolgt eine automatische Typkonvertierung bei Wertzuweisung, wenn mglich

Prof. Dr. H. Krcmar

Programm: Selektionsbildschirm Interaktion mit Benutzer vereinfacht ber Selektionsbildschirme mglich (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 auswhlen knnen, von welcher Fluggesellschaft alle Flge angezeigt werden sollen (ndern des angezeigten Variablennamens ber Springen Textelemente) Prof. Dr. H. Krcmar

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

Ereignisse: AT LINE_SELECTION TOP-OF-PAGE END-OF-PAGE

Prof. Dr. H. Krcmar

Verzweigungslisten 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 weiterfhrenden Listen) wird dieser Block ausgefhrt Begrenzung notwendig (sy-lsind) Schnittstelle zwischen den Listenebenen ist der HIDEBereich (spter auch fr Dynpros wichtig) Prof. Dr. H. Krcmar

Programm: Verzweigungslisten 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 Prof. Dr. H. Krcmar

Programm: Verzweigungsliste - Lsung*&---------------------------------------------------------------------* *& 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. 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-carrid, wa_spfli-connid, wa_spfli-cityfrom, wa_spfli-cityto, wa_spfli-deptime, wa_spfli-arrtime.

Prof. Dr. H. Krcmar

ABAP-Gundlagen: Data Dictionary ABAP-Gundlagen: Data Dictionary

Rolle des Data Dictionary Vererbungsmodell fr Daten Automatische Zuweisung von Hilfe und Bezeichnungen zu Datentypen Abbildung eines ERM als Relationen direkt mglich (mit Tools wie z.B. ARIS) Unterscheidung von Feldern, Strukturen, Tabellen, Datenelementen und Domnen

Prof. Dr. H. Krcmar

Aufbau des Data DictionaryVererbung PLZ KPLZ Feld Feld FeldQuelle: In Anlehnung an SAP AG Prof. Dr. H. Krcmar

NUM4 PLZ MPLZ

Domne Datenelement Feld Struktur Tabelle

Anlegen einer Suchhilfe Legen Sie die Domne ZB5##CHAR30 vom Datentyp CHAR der Lnge 30 an (prfen + aktivieren nicht vergessen!) Legen Sie das Datenelement ZB5##ANR30 von der eben erstellten Domne an (prfen + aktivieren nicht vergessen!) Legen Sie die Tabelle ZB5##ANREDE in Transaktion SE11 an, bei der die Auslieferungsklasse C ist Erlauben Sie die uneingeschrnkte Pflege Legen Sie das Feld Anrede mit dem Datenelement ZB5##ANR30 als Primrschlssel an Pflegen Sie die technischen Einstellungen (prfen + aktivieren nicht vergessen!) Pflegen Sie ber SE16 Werte in die Tabelle ein Prof. Dr. H. Krcmar

Anlegen einer 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 fr Name und Vorname zur Vereinfachung eingebaute Datentypen zur Deklaration und markieren Sie diese Felder als Schlssel 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

Prof. Dr. H. Krcmar

Angeben der Suchhilfe Geben Sie in der Tabelle ZA5##PERSON im Reiter Eingabehilfe fr das Feld Anrede als Fremdschlssel das entsprechende Feld der Tabelle ZB5##ANREDE an und bernehmen Sie die automatischen Vorschlagswerte

ZB##ANREDE

ZB##ANREDE

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

Prof. Dr. H. Krcmar

ABAP-Gundlagen: Modularisierung ABAP-Gundlagen: Modularisierung

Modularisierung Mglichkeiten der Modularisierung in ABAP:1. Include-Dateien (Befehl INCLUDE) - TOP-Include: enthlt globale Datendefinitionen - Include: enthlt Programmteile 2. Forms (Prozeduren) 3. Funktionsbausteine

Prof. Dr. H. Krcmar

Include-Dateien Ausgliederung von Quellcode aus Programm Include-Dateien werden vor Ausfhrung in Hauptprogramm eingefgt Einbinden eine Include-Datei ber Befehl INCLUDE

Prof. Dr. H. Krcmar

Forms (Prozeduren) in ABAP Forms knnen auf bergeordnete Variablen zugreifen Deklaration:FORM USING value() TYPE CHANGING CHANGING value(). ENDFORM. Eingabeparameter by value Eingabe-/Ausgabeparameter by reference Eingabe-/Ausgabeparameter by value and result

Aufruf:PERFORM USING Eingabeparameter by value CHANGING . Eingabe-/Ausgabeparameter by reference bzw. by value and result (je nach Deklaration)

Aufgabe: Gliedern sie die Anzeige der Flugbersicht des letzten Programms in eine Prozedur aus und bergeben Sie die Fluggesellschaft als Parameter Prof. Dr. H. Krcmar

Programm: Funktionsbausteine Kapselung von Quellcode zu Funktionsbausteinen Organisation von Funktionsbausteinen in Funktionsgruppen Funktionsbausteine knnen nicht auf bergeordnete Variablen zugreifen vollstndige Parameterbergabe 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 zunchst eine Funktionsgruppe anZB_05_##

Prof. Dr. H. Krcmar

Programm: Funktionsbaustein - LsungDas 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 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.

Der Importparameter FGES wird im Reiter Import angegeben

Prof. Dr. H. Krcmar

Arten von FunktionsbausteinenFunktionsbausteine Remotefhige Funktionsbausteine BAPI

Quelle: Eigene Darstellung Prof. Dr. H. Krcmar

Besondere Funktionsbausteine: BAPIs BAPIs sind nach betriebswirtschaftlicher Sichtweise gekapselte Funktionsbausteine Entwickler mssen sich keine Gedanken um die Vernderung der entsprechenden Tabellen BAPIs sind RFC-fhige Funktionsbausteine, die von auerhalb SAPs aus aufgerufen werden knnen bersicht aller verfgbarer BAPIs unter der Transaktion BAPI

Prof. Dr. H. Krcmar

Umgang mit BAPIs Grundstzliches Vorgehen beim Verwenden von BAPIs:1. 2. 3. 4. Nach Mglichkeit zunchst mit der Transaktion vertraut machen, deren Funktion ein BAPI widerspiegelt Suchen des BAPIs und lesen der Dokumentation (evtl. auch Anschauen des Quellcodes des BAPIs) Testen des BAPIs im Function Builder oder ber die Transaktion BAPI Verwendung des BAPIs in einem eigenen Programm

Mgliche 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) Prof. Dr. H. Krcmar

Der Debugger Ermglicht schrittweises Ausfhren einer Anwendung berprfung von Variablen und Strukturen zur Laufzeit Im Gegensatz zu normalem Ablauf sind nicht nur Breakpoints, sondern auch Watchpoint mglich Watchpoint: Programmablauf wird nur bei bestimmtem Wert einer Variable unterbrochen Aktivierung bei Programmstart oder whrend des Ablaufs durch /h (wirkt erst bei nchstem Bildschirmwechsel) Starten eines Programms mit Debugger ber Men: Programm Testen Debugging Prof. Dr. H. Krcmar

Messages 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 besttigt werden) X harter Abbruch, verursacht Kurzdump

Aufruf: MESSAGE WITH

Prof. Dr. H. Krcmar

Programm: Messages 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 mssen im Befehl Report angeben, welche Nachrichtenklasse Sie verwenden mchten

Prof. Dr. H. Krcmar

ABAP-Gundlagen: DynPros ABAP-Gundlagen: DynPros

Eigenschaften von DynPros Werden pro Programm mit vierstelliger Nummer gespeichert (Selektionsbild hat Nr. 1000) Programme mit Dynpros knnen nur ber Transaktionen aufgerufen werden Programme, die Dypros verwenden sind Modulpools Module beinhalten Dynpro-ABAP Unterscheidung in Input und Output-Module pro Dynpro

Prof. Dr. H. Krcmar

Ablauf eines DynProsProcess before Output (PBO) 100Fluggesellschaft = LH

Process after Input (PAI) 100Select * from spfli Where carrid= fluggesellschaft and

Quelle: Eigene Darstellung Prof. Dr. H. Krcmar

Ablauf mehrerer DynProsHIDE-Bereich TOP Include

DynPro 100 PBO 100 PAI 100 COMMIT PBO 200 PAI 200

DynPro 200

Quelle: Eigene Darstellung Prof. Dr. H. Krcmar

bung: Dynpro 100 1/5 Legen Sie das Programm (Modulpool) ZB_05_##_LH_Dynpro mit TOP-Include an (ZB_05_##_LH_DYNPRO_TOP).Programm ZB_05_##_LH_DYNPRO

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.

Prof. Dr. H. Krcmar

bung: Dynpro 100 2/5 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

Prof. Dr. H. Krcmar

bung: Dynpro 100 3/5 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 gewhlten Daten und pflegen sie den OK_CODE (sowohl fr Dynpro und Button)

Prof. Dr. H. Krcmar

bung: Dynpro 100 4/5 Speichern, prfen und aktivieren Sie Dynpro und verlassen Sie den Screen Painter Erstellen Sie per Vorwrtsnavigation im Reiter Ablauflogik das Modul MODULE STATUS_0100 und darin einen Status sowie einen Titel fr das Dynpro 100 (vorgeschlagene Namen korrigieren!, Includes werden autom. erstellt)

Screen Painter: Dynpro zu ZB_05_##_LH_DYNPRO ndern

ZB_05_##

Prof. Dr. H. Krcmar

bung: Dynpro 100 5/5 Kommentieren Sie im Dynpro alle Module ein und legen Sie sie per Vorwrtsnavigation an Legen Sie per Vorwrtsnavigation 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 zugehrige Programm starten zu knnen*&--------------------------------------------* *& 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

bung: Dynpro 100 Zusatz Wie kann das Feld carrid im Dynpro vorbelegt werden ? Wie kann die Eingabe der ENTER-Taste angefangen werden ? Wo kann man fr die Buttons ein Ikon angeben ? Wie kann erreicht werden, dass fr das Feld Flugnummer auch eine F4-Hilfe erscheint ? (Tip: Transaktion ABAPDOCU)

Prof. Dr. H. Krcmar

bung: Dynpro 200 Erstellen Sie im gleichen Programm das Dynpro 200 Es soll alle Daten des gewhlten Fluges anzeigen Die angezeigten Daten sollen vernderbar sein Legen Sie dazu einen Button an, der das Speichern ermglichen 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 Prof. Dr. H. Krcmar

ABAP-Gundlagen: ABAP-Gundlagen: Betriebswirtschaftliche Konzepte & Sonstiges Betriebswirtschaftliche Konzepte & Sonstiges

Das Sperrkonzept Was passiert, wenn mehrere User den gleichen Datensatz gleichzeitig bearbeiten ? Dateninkonsistenz Sperrkonzepte verhindern den gleichzeitigen (verndernden) Datenzugriff Neben dem Sperrkonzept der Datenbank hat SAP ein eigenes Sperrkonzept

Prof. Dr. H. Krcmar

Sperrmodi1.

Lesesperre (shared lock)Setzt Sperre auf zu lesendes Datenobjekt Es knnen mehrere Lesesperren gleichzeitig auf ein Datenobjekt bestehen Verhindert das setzen einer Schreibsperre auf ein Datenobjekt

2.

Schreibsperre (exclusive lock)Setzt Sperre auf zu vernderndes Datenobjekt Erlaubt keine weiteren Sperren (auch keine Lesesperre) 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

Deadlock:

Prof. Dr. H. Krcmar

Anlegen eines Sperrobjektes Anlegen erfolgt im Data Dictionary (SE11) Pro Tabelle kann es nur ein Sperrobjekt geben Sperrparameter werden automatisch aus dem Primrschlssel der Tabelle generiert

Prof. Dr. H. Krcmar

Verwendung von Sperrobjekten Beim Anlegen eines Sperrobjektes werden automatisch die Funktionsbausteine Enqueue_ und Dequeue_ 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 knnen mit der Transaktion SM12 manuell aufgehoben werden

Prof. Dr. H. Krcmar

bung: Sperrobjekte Fordern Sie in Ihrem Programm eine Lesesperre an fr den in Dynpro 100 gewhlten Datensatz Wenn der Datensatz im Dynpro 200 gendert wurde und gespeichert werden soll, fordern Sie eine Schreibsperre fr den entsprechenden Datensatz an Vergessen Sie nicht, die Sperren wieder freizugeben !

Prof. Dr. H. Krcmar

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

Verbuchung Soll-Seite PBO 200Was passiert, wenn whrend der Verbuchung einer betriebwirtschaftlich zusammenhngen Buchung ber mehrere Dynpros das Netz ausfllt ?

Verbuchung Haben-Seite Prof. Dr. H. Krcmar

LUW Problem: Bei jedem neuen Dynpro werden gendert DB-Tabellen in die DB geschrieben (COMMIT) Wenn zusammenhngende Daten ber mehrere DynPros ermittelt werden, kann erst am Ende ausgesagt werden, ob die Daten gebucht werden sollen oder nicht

Lsung: 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 knnen in einer LUW ber mehrere DynPros hinweg gesammelt werden

Prof. Dr. H. Krcmar

Anlegen/Aufrufen eines Verbuchungsbausteines Anlegen: Analog zu normalem Funktionsbaustein, nur dass als Ablaufart Verbuchungsbaustein gewhlt wird Ausfhrungsarten: - Start sofort: synchron - Sofort, nicht nachverbuchbar: bei Problemen wird Nachverbuchung nicht vorgenommen - Start verzgert: asynchron Inhalt: nderung der DB-Tabelle

Aufrufen: Synchron:CALL FUNCTION COMMIT WORK. Asynchron: CALL FUNCTION IN UPDATE TASK. Prof. Dr. H. Krcmar

Berechtigungsprfung Vor jedem DB-Zugriff sollten die Rechte des Benutzers geprft werden berprfung, ob der Benutzer das Berechtigungsobjekt S_CARRID besitzt und fr die Fluggesellschaft LH die Aktivitt 02 (=ndern) durchfhren darfACTVTAUTHORITY-CHECK OBJECT S_CARRID ID CARRID FIELD LH ID ACTVT FIELD 02. IF sy-subrc NE 0. ENDIF.

03 02 01

x x x x x xAA AZ DL LH UA CARRID

Prof. Dr. H. Krcmar

Sonstiges Einplanung von APAB-Programmen fr Hintergrundverarbeitung: Einplanung in TA SM36 mit Zeitintervall, Event oder VorgngerJob Bei Aufruf von Programmen mit Eingabefeldern mssen vorher Varianten gespeichert und angewendet werden

Aufruf von Transaktionen innerhalb ABAP mit :CALL TRANSACTION

Prof. Dr. H. Krcmar

ABAP-Objects ABAP-Objects

Einstieg ABAP-Object Objektorientierter Aufsatz auf ABAP Stufenweise Konvertierung des ABAP-Quellcodes in ABAP-Objects Wichtige Werkzeuge: ABAP Workbench (nach wie vor) Class Builder

Prof. Dr. H. Krcmar

Prinzipien der Objektorientierung 1 Klassen sind die Definition eines Objektes und enthalten Attribute und Methoden eines Objektes Instanzen sind die konkrete Ausprgung einer Klasse Beispiel: - Klasse: Auto - Instanz: Mein Auto mit dem Kennzeichen xxx

Prof. Dr. H. Krcmar

Prinzipien der Objektorientierung 2 Kapselung: innerer Ablauf einer Klasse ist egal, es zhlen nur Schnittstellen Polymorphie: gleichnamige Funktionen bei verschiedenen Klassen fhren zu analogem Verhalten Vererbung: eine neue Klasse die Eigenschaften einer bestehenden Klasse erben und um eigene Eigenschaften erweitern

Prof. Dr. H. Krcmar

Beispiel fr ObjektorientierungKlasse Fahrzeug VererbungAttribute: Methoden: Hersteller Anzahl Rder Erstellen Attr. anzeigen

Vererbung

Klasse PKWAttribute: Hersteller Anzahl Rder Anzahl Sitze Methoden: Erstellen Attr. anzeigen Belegte SitzeQuelle: Eigene Darstellung Prof. Dr. H. Krcmar

Klasse LKWAttribute: Hersteller Anzahl Rder Zuladung Methoden: Erstellen Attr. anzeigen Ladekapazitt

Klassifikation von Methoden und Attributen Privat ffentlich:

Private Methoden/Attribute knnen nur aus der Klasse selbst aufgerufen/abgefragt werden (z.B. Methode Bremsen: soll nicht jeder machen knnen) ffentliche Methoden/Attribute knnen immer aufgerufen/abgefragt werden (z.B. was fr 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 fr alle Instanzen (z.B. Auflistung aller Instanzen einer Klasse)

Prof. Dr. H. Krcmar

Deklaration einer Klasse Klassen knnen in der ABAP-Workbench oder im Class Builder (beides am besten in Include-Dateien) Unterteilung in Definition und Implementierung einer Klasse Definition enthlt Kopfdaten der Klasse Implementierung enthlt Code der entsprechenden Methoden

Prof. Dr. H. Krcmar

Definition einer KlasseCLASS DEFINITION. PUBLIC SECTION. METHODS: IMPORTING TYPE TYPE , . CLASS-METHODS: . DATA: TYPE CLASS-DATA: TYPE PRIVATE SECTION. METHODS: CLASS-METHODS: DATA: CLASS-DATA: ENDCLASS.

Prof. Dr. H. Krcmar

Implementierung einer Klasse CLASS IMPLEMENTATION. METHOD . ABAP-Code ENDMETHOD. ENDCLASS.

Prof. Dr. H. Krcmar

Aufruf von Methoden / Attributabfrage Instanzmethode:[CALL METHOD] ->(_ = Wert_).

Klassenmethode:[CALL METHOD] =>(_ = Wert_).

Instanzattribute:->.

Statische Attribute:=>.

Prof. Dr. H. Krcmar

bung: Klasse anlegen 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

Prof. Dr. H. Krcmar

Lsung: Klasse anlegen 1/2CLASS lcl_airplane DEFINITION. 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. "lcl_airplane DEFINITION

Prof. Dr. H. Krcmar

Lsung: Klasse anlegen 2/2CLASS 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. "attribute_anzeigen ENDCLASS. "lcl_airplane IMPLEMENTATION

Prof. Dr. H. Krcmar

bung: Erstellen von Instanzen 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

Prof. Dr. H. Krcmar

Lsung: Erstellen von InstanzenREPORT 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 = 'Mnchen' im_planetype = 'Boeing 737' ). LOOP AT plane_list INTO r_plane. r_plane->attribute_anzeigen( ). ENDLOOP. .

Prof. Dr. H. Krcmar

Der Konstruktor 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 knnen bestimmte Schritte bei der Erstellung einer neuen Instanz ausgefhrt werden (z.B. Defaultwerte vergeben )

Prof. Dr. H. Krcmar

Beispiel Konstruktor PUBLIC SECTION METHODS: constructor IMPORTING im_name type string im_name type string. CREATE OBJECT r_plane exporting im_name = Mnchen im_planetype=747. Preisfrage: Wie sieht die Implementierung aus ? Prof. Dr. H. Krcmar

Business Server Pages Business Server Pages

Einstieg Business Server Pages (BSP) Web-Erweiterung fr ABAP Ermglicht u. a. die Einbindung von ABAP und serverseitigem JavScript in HTML-Seiten, die auf dem SAP-System gehostet/erstellt sind Kann zur Realisierung umfangreicher Portallsungen verwendet werden Erst ab SAP Web Application Server 6.20 mglich

Prof. Dr. H. Krcmar

bung: Business Server Page anlegen Legen Sie BSP-Applikation ZB_05_##_BSP in der ABAP-Workbench an und erstellen Sie darin eine neue SeiteZB_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 ?

Prof. Dr. H. Krcmar

Lsung: Business Server Pages anlegen Meine erste BSP-Seite Ausgabe aller Daten aus Tabelle SPFLI

Fluggesellschaft Verbindung Startflughafen Zielflughafen Abflugszeit Ankunftszeit

Prof. Dr. H. Krcmar

bung: BSP Eingabe verarbeiten Legen Sie eine weitere BSP mit einem Formular an, Wert fr die Fluggesellschaft und die Verbindung aufnehmen und bei Knopfdruck an die bereits erstellte Seite senden soll Verndern Sie die Seite aus der letzten bung so, dass nur noch die Informationen zur gewhlten Verbindung angezeigt werden Zusatzaufgabe: Erweitern sie das Formular sinnvoll um weitere Buttons Prof. Dr. H. Krcmar

Lsung: BSP Eingabe verarbeiten 1/3 Formular: Eingaben bearbeiten Fluggesellschaft
Verbindung

Prof. Dr. H. Krcmar

Lsung: BSP Eingabe verarbeiten 2/3 Eventhandler OnInputprocessingDATA: 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.

Prof. Dr. H. Krcmar

Lsung: BSP Eingabe verarbeiten 3/3 Anlegen der Seitenattribute auf der ZielseiteWeb Application Builder: Seite zu ZB_05_##_BSP ndern

ZB_05_##

Aktivieren der beiden Seiten! und evtl. des Services

Prof. Dr. H. Krcmar

Aufruf der BSPs http:/hcc1b11.informatik.tumuenchen.de:8001/sap/bc/bsp/sap/\.htm oder: http:/hcc3b11.informatik.tumuenchen.de:8002/sap/bc/bsp/sap/\.htm Prof. Dr. H. Krcmar

Hausaufgabe Erstellen Sie eine Tabelle ZB_05_##_MA, in der Daten zu Mitarbeitern erfasst werden knnen Entwickeln Sie in einem gleichnamigen ABAP-Programm dazu eine grafische Oberflche, mit der die Daten erstellt, bearbeitet und gelscht werden knnen Die Oberflche kann in Form eines Dynpros oder von BSPs erstellt werden Bercksichtigen Sie dabei das Sperrkonzept von SAP indem Sie ein Sperrobjekt fr 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

Prof. Dr. H. Krcmar