Escolar Documentos
Profissional Documentos
Cultura Documentos
Inhalte ABAP-Grundlagen:
Grundlegende Konzepte Hello World Datenbankzugriffe Data Dictionary Modularisierung DynPros Betriebswirtschaftliche Konzepte & Sonstiges
SAPGui
Meldung ber Kompilierung
SAPGui
Programmausgabe
Application
ApplicationServer
ApplicationServer
Kompilierung
ApplicationServer
Database
DatabaseServer
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
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
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
Transportauftrag
Transportauftrag
Transportauftrag
Aufgabe
Aufgabe
Aufgabe
Aufgabe
Aufgabe
Aufgabe
Mitarbeiter
Mitarbeiter
Mitarbeiter
Mitarbeiter
Mitarbeiter
Mitarbeiter
Zugangsdaten
System: G31 Mandant: 902 User: ABAP-5-XX Passwort: init Passwort muss bei der erstern Anmeldung gendert werden (Bitte merken!)
ZB_05_##
Pakete gliedern das Repository Transportauftrge dienen der Organisation und dem Transport von Entwicklungen
Prof. Dr. H. Krcmar
Report ZB_05_##_HELLOWORLD
ZB_05_##_HELLOWORLD
ZB_05_##
1.
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
Entwicklungswerkzeuge in SAP
ABAP-Interpreter ABAP-Interpreter
Select **from Select from
DB-Interface DB-Interface
Open SQL Open SQL
SQL-Datenbank SQL-Datenbank
Native 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
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
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.
LH
APPEND COLLECT INSERT MODIFY DELETE
0400
Interne Tabelle it_spfli
AA LH
SORT BY REFRESH
0017 0400
Workarea (wa_spfli):
Entspricht einer Zeile in einer Tabelle und wird meistens durch eine Struktur definiert Enthlt die aktuell bearbeitete Tabellenzeile
Datentypen
Datentyp
Vordefiniert (P, I, F, C, N, D, T, X)
benutzerdefiniert
elementar
strukturiert
Feldleistentyp
Tabellentyp
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
oder
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
Ereignisse:
AT LINE_SELECTION TOP-OF-PAGE END-OF-PAGE
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
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.
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
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
Include-Dateien Ausgliederung von Quellcode aus Programm Include-Dateien werden vor Ausfhrung in Hauptprogramm eingefgt Einbinden eine Include-Datei ber Befehl INCLUDE
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 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 an
ZB_05_##
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.
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 <Typ><Nummer> WITH <Parameter 1> <Parameter 2> <Parameter 3> <Parameter 4>
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
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
DynPro 100 PBO 100 PAI 100 COMMIT PBO 200 PAI 200
DynPro 200
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
tables spfli. data: ok_code like sy-ucomm, save_ok like ok_code. data: wa_spfli like spfli.
ZB_05_##
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)
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
Sperrmodi
1.
2.
Deadlock:
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 !
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
Aufrufen:
Synchron:CALL FUNCTION <Verbuchungsbaustein> COMMIT WORK. Asynchron: CALL FUNCTION <Verbuchungsbaustein> 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 darf
ACTVT
AUTHORITY-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 x
AA AZ DL LH UA CARRID
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
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
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
Beispiel fr Objektorientierung
Klasse Fahrzeug Vererbung
Attribute: Methoden: Hersteller Anzahl Rder Erstellen Attr. anzeigen
Vererbung
Klasse PKW
Attribute: Hersteller Anzahl Rder Anzahl Sitze Methoden: Erstellen Attr. anzeigen Belegte Sitze
Quelle: Eigene Darstellung
Prof. Dr. H. Krcmar
Klasse LKW
Attribute: Hersteller Anzahl Rder Zuladung Methoden: Erstellen Attr. anzeigen Ladekapazitt
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)
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
Implementierung einer Klasse CLASS <Klassenname> IMPLEMENTATION. METHOD <Methodenname>. ABAP-Code ENDMETHOD. ENDCLASS.
Klassenmethode:
[CALL METHOD] <Klassename>=><Methode>(_<Importparameter> = Wert_).
Instanzattribute:
<Instanzname>-><Attribut>.
Statische Attribute:
<Klassenname>=><Attribut>.
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
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
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 )
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
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
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 ?
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
ZB_05_##
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