View
766
Download
1
Category
Preview:
Citation preview
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
Recommended