ABAP-Praktikum v03



Comments



Description

Praktikum Unternehmenssoftware –– Praktikum Unternehmenssoftware ABAP-Grundlagen ABAP-GrundlagenTechnische Universität München Lehrstuhl für 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 (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 : Verwendung von ABAP in Klassen- und Objektstrukturen TM © Prof. Dr. H. Krcmar Kompilierung von ABAP-Code Präsentation SAPGui Erster Aufruf eines Programms SAPGui Meldung über Kompilierung SAPGui Programmausgabe Application ApplicationServer ApplicationServer Kompilierung ApplicationServer Database Programm wurde noch nicht kompiliert DatabaseServer Rückgabe 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) … • 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 © Prof. Dr. H. Krcmar Der Entwicklerschlüssel • Ein Entwicklerschlüssel ermöglicht es einem bestimmten SAPBenutzer 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 © 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 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 © Prof. Dr. H. Krcmar Hierarchie des Transportwesens Projekt 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! Dr. H.Zugangsdaten • • • • System: G31 Mandant: 902 User: ABAP-5-XX Passwort: init Passwort muss bei der erstern Anmeldung geändert werden (Bitte merken!) © Prof. Dr. Krcmar Hello World ! 1/3 Einmalige Vorarbeiten (TA SE80): • Paket anlegen: ZB_05_## (## ist die User-Nummer) ZB_05_## • Neuen Transportauftrag für das Anlegen des Pakets erstellen ZB_05_## • • Pakete gliedern das Repository Transportaufträge dienen der Organisation und dem Transport von Entwicklungen © Prof. H. Krcmar . Hello World 2/3 • Programm ZB_05_XX_HELLOWORLD in angelegtem Paket ohne TOPInclude erstellen (Kontextmenü des Pakets anwählen) • Entwicklerschlüssel eingeben • Eigenschaften des Programms angeben ZB_05_##_HELLOWORLD Report ZB_05_##_HELLOWORLD ZB_05_##_HELLOWORLD • Programm dem neuen Paket und dem Transportauftrag zuordnen © Prof. • Programm speichern. ABAP Editor: Report ZB_05_HELLOWORLD ändern 2. 4. damit vor dem Text ein Icon erscheint ? (Tip: Hilfe zum Befehl „Write“) © Prof. H. testen und aktivieren 1. Dr. Krcmar . Krcmar ZB_05_## Hello World 3/3 • Programm schreiben (Punkt nicht vergessen!) *&---------------------------------------------------------------------* *& Report ZB_05_##_HELLOWORLD * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------* REPORT ZB_05_##_HELLOWORLD . write 'Hello World!'. • Aufgabe: Wie kann das Programm erweitert werden. H. Dr. prüfen. 3. Arbeitsumgebung: Object Navigator 1/2 • Benutzerfreundliche Oberfläche. Krcmar . Dr. Dr. 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. es erstellt werden • Einsicht in beliebigen SAP-Code (über System Status): © Prof. H. backward never • Grundlegendes Prinzip in der SAP-Entwicklung • Durch Doppelklick auf Erwähnung eines Objektes kann zum Objekt navigiert bzw. 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 © Prof. Krcmar Arbeitsumgebung: Object Navigator 2/2 • Vorwärtsnavigation: forward ever. H. H. die von anderen Programmen bzw. H. Dr. Krcmar . Dr. wobei transparente Tabellen am häufigsten verwendet werden © Prof.Entwicklungswerkzeuge in SAP Quelle: SAP AG 1999 © Prof. 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. SAP-Systemen genutzt werden kann • Strukturen: Struktur einer Tabellenzeile • Tabellen: Unterscheidung verschiedener Typen. Dr.Kann wie eine Datenbank angesprochen werden • Interne Tabellen: temporäre Speicherung von Datenbanktabellen © Prof.Elemente der ABAP-Programmierung 2/2 • Datenbankview: .Zusammenführung von mehreren Tabellen .Unterscheidung in Datenbankview (Lesen von Daten). Pflegeview (Datenpflege mit betriebswirtschaftlichen Zusammenhängen) … . H.Festlegung im Data Dictionary (im Gegensatz zu Inner Joins) . Krcmar ABAP-Gundlagen: Datenbankzugriffe ABAP-Gundlagen: Datenbankzugriffe .Lässt sich über Workbench anlegen . H. Quelle: SAP AG © Prof. End Exec. Krcmar DB Daten DB Daten Native SQL Native SQL DB Daten DB Daten Daten SAP-Reisebüro Beispiel • Von SAP erstelltes Beispiel. Krcmar . Dr. Dr. Exec SQL. H.OpenSQLTM • Portierung von ABAP auf alle gängigen Datenbanken Applikations-Server Datenbank-Server 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. Select … Select … End Exec. 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) Struktur: sbc400_t_spfli SFLIGHT (Flüge) Struktur: sbc400focc SBOOK (Flugbuchungen) • Betrachtung der Tabellenstruktur über das Dictionary (SE11) des Tabelleninhalts über den Data Browser (SE16) © Prof. wa_spfli-connid. wa_spfli-cityfrom. DATA: it_spfli TYPE sbc400_t_spfli. Krcmar Interne Tabellen und Arbeitsbereiche Arbeitsbereich wa_spfli LH APPEND … COLLECT … INSERT … MODIFY … DELETE … 0400 Interne Tabelle it_spfli AA LH SORT … BY … REFRESH … 0017 0400 LOOP AT …. H. LOOP AT it_spfli INTO wa_spfli. ENDLOOP. wa_spfli-deptime. ENDLOOP. so lange das Programm läuft. SELECT * FROM spfli INTO TABLE it_spfli WHERE carrid = 'LH'. Krcmar . WRITE: / wa_spfli-carrid. das sie erstellt hat © Prof. Dr.Programm: Tabellen auslesen • Geben Sie alle Flüge der Lufthansa aus der Tabelle „SFLIGHT“ aus • Aufgabe: Erweitern Sie das bestehende Programm um eine Abfrage. H. wa_spfli-arrtime. wa_spfli TYPE spfli. ob der SelectBefehl erfolgreich ausgeführt wurde (benutzen Sie dazu die Systemvariable sy-subrc sowie eine IF-Verzweigung) *&---------------------------------------* *& Report ZB_05_##_LUFTHANSA * *& * *&---------------------------------------* *& * *& * *&---------------------------------------* REPORT zb_05_##_lufthansa . READ TABLE … Quelle: In Anlehnung an SAP AG • Workarea (wa_spfli): • Entspricht einer Zeile in einer Tabelle und wird meistens durch eine Struktur definiert • Enthält die aktuell bearbeitete Tabellenzeile • Interne Tabelle (it_spfli): • Kann analog zu einer Datenbanktabelle aufgebaut sein • Ist eine „lokale Kopie“ einer Tabelle • Besteht nur. wa_spfli-cityto. © Prof. Dr. Dr. H.000 Wertebereich Systemvariablen (sy-…): Tabelle syst © Prof. Dr. F. 65536 Zeichen Initialwert 00000000 000000 0 0. H. D. T. X) benutzerdefiniert elementar strukturiert Feldleistentyp Tabellentyp Quelle: In Anlehnung an SAP AG © Prof. C. N. Krcmar . 65536 Ziffern Max. I. Krcmar Vordefinierte Datentypen in ABAP Datentyp 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 <Leerzeichen> X’00‘ Max.Datentypen Datentyp Vordefiniert (P. 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 Fällen LIKE verwendet werden es muss keine Kenntnis über genauen Datentyp vorliegen © Prof. Dr. … END OF struc. Dr. wenn möglich © Prof.Datendeklaration • Einfache Felddefinition: • Strukturiertes Datenobjekt: • Interne Tabelle: • Konstanten: • Parameter: DATA f (len) TYPE Datentyp DATA: BEGIN OF struc. 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. H. Krcmar . B. von welcher Fluggesellschaft alle Flüge angezeigt werden sollen (Ändern des angezeigten Variablennamens über Springen Textelemente) © Prof. Dr.Programm: Selektionsbildschirm • Interaktion mit Benutzer vereinfacht über Selektionsbildschirme möglich (z. 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. H. des Selektionsbildschirmes ist 1000 • Komplexe Selektionsbildschirme realisierbar • Aufgabe: Erweitern Sie das Lufthansa-Programm so. Dr. dass Sie zu Beginn auswählen können. auch bei SE16) • Selektionsbildschirm ist ein „geschenktes“ Dynpro • Dynpro-nr. Krcmar . H. Krcmar . • Begrenzen Sie dabei die Anzahl der Verzeigungsebenen auf eine einzige • Zusatzaufgabe: Erweitern Sie das Programm um eine weitere Verzweigungsebene © Prof. H. 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 HIDEBereich (später auch für Dynpro‘s wichtig) © Prof. dass nach der Auswahl der Fluggesellschaft nur Fluggesellschaft und Flugnummer angezeigt werden.Verzweigungslisten • Im Ereignis „AT LINE-SELECTION“ kann hinterlegt werden. welche Reaktion bei Doppelklick auf einen Listeneintrag erfolgt • Durch jeden Doppelklick. Dr. Krcmar Programm: Verzweigungslisten • Aufgabe: Ändern Sie das letzte Programm so ab. Dr. H. bei der die restlichen Daten zum Flug angezeigt werden. Durch einen Doppelklick gelangt man zur Detailanzeige des Eintrags. wa_spfli-deptime. wa_spfli-deptime. wa_spfli-arrtime. WRITE: / wa_spfli-carrid. wa_spfli-connid. wa_spfli-carrid. SELECT * FROM spfli INTO TABLE it_spfli WHERE carrid = flugges. Krcmar ABAP-Gundlagen: Data Dictionary ABAP-Gundlagen: Data Dictionary . WRITE: / wa_spfli-carrid. ENDIF. DATA: it_spfli TYPE sbc400_t_spfli. wa_spfli-connid. Dr. wa_spfli-cityfrom. AT LINE-SELECTION.Programm: Verzweigungsliste . © Prof. wa_spfli-connid. wa_spfli-cityfrom. START-OF-SELECTION. HIDE: ENDLOOP. wa_spfli TYPE spfli. wa_spfli-cityto. LOOP AT it_spfli INTO wa_spfli. ENDIF.Lösung *&---------------------------------------------------------------------* *& Report ZB_05_##_LUFTHANSA_VERZWEIG * *&---------------------------------------------------------------------* REPORT zb_05_##_lufthansa_verzweig. IF sy-lsind = 1. wa_spfli-connid. wa_spfli-cityto. wa_spfli-carrid. H. wa_spfli-arrtime. IF sy-subrc = 0. PARAMETERS: flugges TYPE spfli-carrid. ARIS) • Unterscheidung von Feldern.B. Datenelementen und Domänen © Prof. Strukturen. H.Rolle des Data Dictionary • „Vererbungsmodell“ für Daten • Automatische Zuweisung von Hilfe und Bezeichnungen zu Datentypen • Abbildung eines ERM als Relationen direkt möglich (mit Tools wie z. Dr. Krcmar Aufbau des Data Dictionary Vererbung PLZ KPLZ Feld Feld Feld Quelle: In Anlehnung an SAP AG © Prof. Tabellen. H. Krcmar NUM4 PLZ MPLZ Domäne Datenelement Feld Struktur Tabelle . Dr. 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. Krcmar . Dr. Name. H. Dr. Vorname.B.Anlegen einer Suchhilfe • 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. H. 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 © Prof. 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 © Prof. indem Sie ein Programm erstellen. bei dem Sie über eine Parametereingabe die F4-Hilfe der Anrede einbinden © Prof. H.Angeben der Suchhilfe • 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 ZB##ANREDE ZB##ANREDE • Aufgabe: Testen Sie die Suchhilfe. Krcmar ABAP-Gundlagen: Modularisierung ABAP-Gundlagen: Modularisierung . Dr. Dr. H. Krcmar Include-Dateien • Ausgliederung von Quellcode aus Programm • Include-Dateien werden vor Ausführung in Hauptprogramm eingefügt • Einbinden eine Include-Datei über Befehl „INCLUDE“ © Prof. Dr.Modularisierung Möglichkeiten der Modularisierung in ABAP: 1. H. Form‘s (Prozeduren) 3. Krcmar .Include: enthält Programmteile 2.TOP-Include: enthält globale Datendefinitionen . Include-Dateien (Befehl INCLUDE) . Funktionsbausteine © Prof. 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 © Prof. H.und Detailanzeige in einen Funktionsbaustein zusammen. Die Auswahl der Fluggesellschaft soll nach wie vor im Programm erfolgen. Krcmar . Dr. Dr. Eingabe-/Ausgabeparameter by reference bzw. • Legen Sie zunächst eine Funktionsgruppe an ZB_05_## © Prof. Eingabeparameter by value Eingabe-/Ausgabeparameter by reference Eingabe-/Ausgabeparameter by value and result • Aufruf: PERFORM <Prozedurname> USING <Eingabeparameter> Eingabeparameter by value CHANGING <Eingabe-/Ausgabeparameter>. H. ENDFORM.Forms (Prozeduren) in ABAP • Forms können auf übergeordnete Variablen zugreifen • Deklaration: FORM <Prozedurname> USING value(<Eingabeparameter>) TYPE <Typ> CHANGING <Eingabe-/Ausgabeparameter> CHANGING value(<Eingabe-/Ausgabeparameter>). Krcmar Programm: Funktionsbausteine • 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. START-OF-SELECTION.Programm: Funktionsbaustein . wa_spfli-deptime. CALL FUNCTION 'ZB_05_##_LISTE' EXPORTING fges = flugges.Lösung Das Programm: *&---------------------------------------* *& Report ZB_05_##_LUFTHANSA_FUNKTION * *& * *&---------------------------------------* REPORT zb_05_##_lufthansa_funktion. ENDIF. wa_spfli TYPE spfli. IF sy-subrc = 0. wa_spfli-connid. Krcmar Arten von Funktionsbausteinen Funktionsbausteine Remotefähige Funktionsbausteine BAPI Quelle: Eigene Darstellung © Prof. PARAMETERS: flugges TYPE spfli-carrid. *"-----------------------------*"*"Lokale Schnittstelle: *" IMPORTING *" REFERENCE(FGES) *"-----------------------------DATA: it_spfli TYPE sbc400_t_spfli. SELECT * FROM spfli INTO TABLE it_spfli WHERE carrid = fges. H. Dr. Der Importparameter FGES wird im Reiter „Import“ angegeben © Prof. WRITE: / wa_spfli-carrid. wa_spfli-arrtime. wa_spfli-cityto. ENDLOOP. H. wa_spfli-carrid. LOOP AT it_spfli INTO wa_spfli. Krcmar . ENDFUNCTION. Dr. wa_spfli-cityfrom. Der Funktionsbaustein: FUNCTION ZB_05_##_LISTE . wa_spfli-connid. 4. die von außerhalb SAP‘s aus aufgerufen werden können • Übersicht aller verfügbarer BAPI‘s unter der Transaktion BAPI © Prof. 2. 3. auch Anschauen des Quellcodes des BAPI‘s) Testen des BAPI‘s im Function Builder oder über die Transaktion BAPI 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) © Prof. H. Krcmar . Krcmar Umgang mit BAPI‘s • Grundsätzliches Vorgehen beim Verwenden von BAPI‘s: 1. Dr. Nach Möglichkeit zunächst mit der Transaktion vertraut machen.Besondere Funktionsbausteine: BAPI‘s • 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. H. deren Funktion ein BAPI widerspiegelt Suchen des BAPI‘s und lesen der Dokumentation (evtl. Dr. 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. Krcmar Messages • Nachrichtenklassen enthalten vorgefertigte Messages • Es werden folgende Messagetypen unterschieden: • • • • • • A – Abbruch im modalen Fenster I . Dr. 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 © Prof. Dr. H. Krcmar . verursacht Kurzdump • Aufruf: MESSAGE <Typ><Nummer> WITH <Parameter 1> <Parameter 2> <Parameter 3> <Parameter 4> © Prof.Der Debugger • Ermöglicht schrittweises Ausführen einer Anwendung • Überprüfung von Variablen und Strukturen zur Laufzeit • Im Gegensatz zu normalem Ablauf sind nicht nur Breakpoints. H. Krcmar ABAP-Gundlagen: DynPros ABAP-Gundlagen: DynPros . die Sie sinnvoll in das Programm zur Verzweigungsliste einbinden • Hinweis: Sie müssen im Befehl „Report“ angeben.Programm: Messages • Zusatzaufgabe: Erstellen Sie eine Nachrichtenklasse ZB_05_XX und legen Sie mindestens eine Nachricht ein. H. Dr. welche Nachrichtenklasse Sie verwenden möchten © Prof. Eigenschaften von DynPros • Werden pro Programm mit vierstelliger Nummer gespeichert (Selektionsbild hat Nr. H. die Dypros verwenden sind Modulpools • Module beinhalten Dynpro-ABAP • Unterscheidung in Input und Output-Module pro Dynpro © Prof. Krcmar . Krcmar Ablauf eines DynPros Process before Output (PBO) 100 Fluggesellschaft = ‚LH‘ Process after Input (PAI) 100 Select * from spfli Where carrid= fluggesellschaft and … Quelle: Eigene Darstellung © Prof. H. Dr. 1000) • Programme mit Dynpros können nur über Transaktionen aufgerufen werden • Programme. Dr. tables spfli. data: ok_code like sy-ucomm. save_ok like ok_code. sowie die Variablen ok_code und save_ok vom Typ sy-ucomm. H. H. data: wa_spfli like spfli.Ablauf mehrerer DynPros HIDE-Bereich TOP Include DynPro 100 PBO 100 PAI 100 COMMIT PBO 200 PAI 200 DynPro 200 Quelle: Eigene Darstellung © Prof. Deklarieren Sie die Tabelle SPFLI mit Tables *&---------------------------------------------* *& Include ZB_05_##_LH_DYNPRO_TOP Modulpool * *& * *&---------------------------------------------* PROGRAM ZB_05_##_LH_DYNPRO . © Prof. Dr. Krcmar Übung: Dynpro 100 1/5 • Legen Sie das Programm (Modulpool) ZB_05_##_LH_Dynpro mit TOP-Include an (ZB_05_##_LH_DYNPRO_TOP). Dr. Programm ZB_05_##_LH_DYNPRO • Definieren Sie im TOP-Include eine Workarea entsprechend der Tabelle spfli an. Krcmar . 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. H. ü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) © Prof. Dr. 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. H. ENDCASE. save_ok = ok_code. ENDSELECT. SELECT * FROM spfli into wa_spfli WHERE carrid = spfli-carrid AND connid = spfli-connid. CASE save_ok. WHEN 'BACK'. set screen 100. 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!. Krcmar . Krcmar Übung: Dynpro 100 5/5 • • 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. Includes werden autom. CLEAR ok_code. Dr.Übung: Dynpro 100 4/5 • Speichern. ENDMODULE. H. " USER_COMMAND_0100 INPUT • • © Prof. WHEN 'SELECT'. Dr. erstellt) Screen Painter: Dynpro zu ZB_05_##_LH_DYNPRO ändern • ZB_05_## © Prof. LEAVE PROGRAM. 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. LEAVE TO SCREEN 200. WHEN 'ENTER'. Krcmar • • • • . dass für das Feld Flugnummer auch eine F4-Hilfe erscheint ? (Tip: Transaktion ABAPDOCU) © Prof.Ü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 für die Buttons ein Ikon angeben ? • Wie kann erreicht werden. Dr. H. „UPDATE“ (weitere Doku in der Hilfe) • Zusatz: Zeigen Sie durch Meldungen in der Statuszeile an. Krcmar Übung: Dynpro 200 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. H. Dr. der das Speichern ermöglichen soll • Benutzen sie zum Speichern den ABAP-Befehl „MODIFY“ bzw. ob das Speichern erfolgreich war oder nicht © Prof. Dr. Krcmar .ABAP-Gundlagen: ABAP-Gundlagen: Betriebswirtschaftliche Konzepte & Sonstiges Betriebswirtschaftliche Konzepte & Sonstiges Das Sperrkonzept • Was passiert. H. 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 • • © Prof. dass das andere Programm die Sperre aufhebt Deadlock: © Prof. H. Krcmar . Dr. Dr. wird gewartet. • • • • Schreibsperre (exclusive lock) Setzt Sperre auf zu veränderndes Datenobjekt Erlaubt keine weiteren Sperren (auch keine Lesesperre) Kann eine Sperre nicht gesetzt werden. Krcmar Anlegen eines Sperrobjektes • 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 © Prof. • • • Lesesperre (shared lock) 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.Sperrmodi 1. H. bis die Sperre gesetzt werden kann 2 Programme warten gegenseitig darauf. Dr.Verwendung von Sperrobjekten • 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. H. fordern Sie eine Schreibsperre für den entsprechenden Datensatz an • Vergessen Sie nicht. H. die Sperren wieder freizugeben ! © Prof. 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 © Prof. Krcmar . Dr. Krcmar Übung: Sperrobjekte • 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. Dr. Krcmar . H. Krcmar LUW • Problem: • Bei jedem neuen Dynpro werden geändert DB-Tabellen in die DB geschrieben (COMMIT) • Wenn zusammenhängende Daten über mehrere DynPros ermittelt werden. wenn während der Verbuchung einer betriebwirtschaftlich zusammenhängen Buchung über mehrere Dynpros das Netz ausfällt ? Verbuchung Haben-Seite © Prof. ob die Daten gebucht werden sollen oder nicht • Lösung: • Änderungen an DB-Tabellen werden in Verbuchungsbausteinen vorgemerkt • Erst. H. kann erst am Ende ausgesagt werden. 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 © Prof. Dr.Logical Unit of Work (LUW) DynPro 100 Netzausfall PBO 100 PAI 100 DynPro 200 PAI 200 Verbuchung Soll-Seite PBO 200 Was passiert. wenn alle Daten korrekt gesammelt wurden. nicht nachverbuchbar: bei Problemen wird Nachverbuchung nicht vorgenommen . IF sy-subrc NE 0. nur dass als Ablaufart „Verbuchungsbaustein“ gewählt wird • Ausführungsarten: .Start sofort: synchron .Sofort. Krcmar . Dr. • Asynchron: CALL FUNCTION <Verbuchungsbaustein> IN UPDATE TASK. H. 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‘. © Prof. 03 02 01 x x x x x x AA AZ DL LH UA CARRID © Prof. Krcmar Berechtigungsprüfung • Vor jedem DB-Zugriff sollten die Rechte des Benutzers geprüft werden • Überprüfung. H. Dr. … ENDIF.Anlegen/Aufrufen eines Verbuchungsbausteines • Anlegen: • Analog zu normalem Funktionsbaustein.Start verzögert: asynchron • Inhalt: Änderung der DB-Tabelle • Aufrufen: • Synchron:CALL FUNCTION <Verbuchungsbaustein> … COMMIT WORK. Event oder VorgängerJob • Bei Aufruf von Programmen mit Eingabefeldern müssen vorher Varianten gespeichert und angewendet werden • Aufruf von Transaktionen innerhalb ABAP mit : CALL TRANSACTION <ta> © Prof. Dr. H. Krcmar ABAP-Objects ABAP-Objects .Sonstiges • Einplanung von APAB-Programmen für Hintergrundverarbeitung: • Einplanung in TA SM36 mit Zeitintervall. Dr. Krcmar Prinzipien der Objektorientierung 1 • Klassen sind die Definition eines Objektes und enthalten Attribute und Methoden eines Objektes • Instanzen sind die konkrete Ausprägung einer Klasse • Beispiel: . H. H.Klasse: Auto .Instanz: Mein Auto mit dem Kennzeichen xxx © Prof. Krcmar . Dr.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. anzeigen Vererbung Klasse PKW Attribute: Hersteller Anzahl Räder Anzahl Sitze Methoden: Erstellen Attr. H. 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 © Prof. Krcmar Klasse LKW Attribute: Hersteller Anzahl Räder Zuladung Methoden: Erstellen Attr. anzeigen Ladekapazität .Prinzipien der Objektorientierung 2 • Kapselung: innerer Ablauf einer Klasse ist egal. H. Dr. anzeigen Belegte Sitze Quelle: Eigene Darstellung © Prof. Krcmar Beispiel für Objektorientierung Klasse Fahrzeug Vererbung Attribute: Methoden: Hersteller Anzahl Räder Erstellen Attr. Methode „Bremsen“: soll nicht jeder machen können) • Öffentliche Methoden/Attribute können immer aufgerufen/abgefragt werden (z. da jede Instanz eine andere Farbe haben kann) • Statische Methoden/Attribute existieren in nur einmal für alle Instanzen (z.Klassifikation von Methoden und Attributen • Privat öffentlich: • Private Methoden/Attribute können nur aus der Klasse selbst aufgerufen/abgefragt werden (z. H. Krcmar . Auflistung aller Instanzen einer Klasse) © Prof. Krcmar Deklaration einer Klasse • 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 © Prof. Dr. Methode „Farbe abfragen“.B. H. was für eine Farbe hat das Auto ?) • Instanz statisch • Instanz-Methoden/Attribute existieren in jeder Instanz (z.B.B. Dr.B. METHODS: <Methode1> IMPORTING <Importparameter1> TYPE <Datentyp> <Importparameter2> TYPE <Datentyp>. …ABAP-Code… ENDMETHOD. Dr. Krcmar Implementierung einer Klasse CLASS <Klassenname> IMPLEMENTATION. … METHOD <Methodenname>. H. METHODS: … CLASS-METHODS: … DATA: … CLASS-DATA: … ENDCLASS. PUBLIC SECTION. … ENDCLASS. Dr. CLASS-METHODS: <Methode2>. DATA: <Variable1> TYPE <Datentyp> CLASS-DATA: <Variable2> TYPE <Datentyp> PRIVATE SECTION. <Methode2>. © Prof. © Prof. Krcmar .Definition einer Klasse CLASS <Klassenname> DEFINITION. H. H. Krcmar Übung: Klasse anlegen • Erstellen Sie die Klasse lcl_airplane. Dr.Aufruf von Methoden / Attributabfrage • Instanzmethode: [CALL METHOD] <Instanzname>-><Methode>(_<Importparameter> = Wert_). • Instanzattribute: <Instanzname>-><Attribut>. Krcmar . • Klassenmethode: [CALL METHOD] <Klassename>=><Methode>(_<Importparameter> = Wert_). H. © Prof. um sie anzuzeigen © Prof. um diese Attribute zu setzen und eine Weitere. 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. • Statische Attribute: <Klassenname>=><Attribut>. Dr. die ein Flugzeug abbilden soll. / 'Typ des Flugzeugs: '. planetype = im_planetype. PRIVATE SECTION. Dr. attribute_anzeigen. H. PUBLIC SECTION. Krcmar Lösung: Klasse anlegen 2/2 CLASS lcl_airplane IMPLEMENTATION.Lösung: Klasse anlegen 1/2 CLASS lcl_airplane DEFINITION. METHOD attribute_setzen. ENDMETHOD. DATA: name TYPE string. "attribute_setzen METHOD attribute_anzeigen. WRITE: / icon_ws_plane AS ICON. "lcl_airplane IMPLEMENTATION © Prof. ENDCLASS. / 'Name des Flugzeugs: '. "attribute_anzeigen ENDCLASS. Dr. METHODS: attribute_setzen IMPORTING im_name TYPE string im_planetype TYPE string. planetype TYPE string. name. planetype. ENDMETHOD. name = im_name. H. "lcl_airplane DEFINITION © Prof. Krcmar . plane_list TYPE TABLE OF REF TO lcl_airplane. Dr. © Prof. r_plane->attribute_anzeigen( ). START-OF-SELECTION. ENDLOOP. Krcmar . r_plane->attribute_setzen( im_name = 'München' im_planetype = 'Boeing 737' ). DATA: r_plane TYPE REF TO lcl_airplane. H. … LOOP AT plane_list INTO r_plane. CREATE OBJECT r_plane. Krcmar Lösung: Erstellen von Instanzen REPORT zb_05_##_airplane TYPE-POOLS icon. APPEND r_plane TO plane_list. INCLUDE zb_05_##_class.Ü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 Beispiel Konstruktor PUBLIC SECTION METHODS: constructor IMPORTING im_name type string im_name type string. Defaultwerte vergeben …) © Prof. H. H. Dr. durch „CREATE OBJECT“ aufgerufen • Bei fehlender Implementierung. Dr. CREATE OBJECT r_plane exporting im_name = ‚München‘ im_planetype=‚747‘.B. • Preisfrage: Wie sieht die Implementierung aus ? © Prof.Der Konstruktor • Explizit oder implizit definierte Methode „constuctor“. die neue Instanzen erzeugt • Wird autom. Krcmar . 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. Dr.Business Server Pages Business Server Pages Einstieg Business Server Pages (BSP) • Web-Erweiterung für ABAP • Ermöglicht u. Krcmar . a. die auf dem SAP-System gehostet/erstellt sind • Kann zur Realisierung umfangreicher Portallösungen verwendet werden • Erst ab SAP Web Application Server 6. H. die Einbindung von ABAP und serverseitigem JavScript in HTML-Seiten.20 möglich © Prof. %> </table> </body> </html> © Prof. Krcmar 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. H. SELECT * FROM spfli INTO TABLE it_spfli. Dr. %> <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. wa_spfli type spfli. H. Krcmar .%> <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. Dr.Übung: Business Server Page anlegen • Legen Sie BSP-Applikation ZB_05_##_BSP in der ABAP-Workbench an und erstellen Sie darin eine neue Seite 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 ? • © Prof. 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. H. Dr. dass nur noch die Informationen zur gewählten Verbindung angezeigt werden • Zusatzaufgabe: Erweitern sie das Formular sinnvoll um weitere Buttons © Prof. Krcmar Lösung: BSP – Eingabe verarbeiten 1/3 • Formular: <%@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> © Prof.Übung: BSP – Eingabe verarbeiten • Legen Sie eine weitere BSP mit einem Formular an. Krcmar . H. Dr. Dr. des Services © Prof.Lösung: BSP – Eingabe verarbeiten 2/3 • Eventhandler OnInputprocessing DATA: lv_help TYPE string. Dr. H. CASE event_id.htm' ). ENDCASE. navigation->goto_page( 'index. © Prof. H. Krcmar . WHEN 'event_1'. navigation->set_parameter( 'param_connid' ). Krcmar Lösung: BSP – Eingabe verarbeiten 3/3 • Anlegen der Seitenattribute auf der Zielseite Web Application Builder: Seite zu ZB_05_##_BSP ändern ZB_05_## • Aktivieren der beiden Seiten! und evtl. navigation->set_parameter( 'param_carrid' ). de:8002/sap/bc/bsp/sap/<Programmname>\<Se itenname>.informatik.tumuenchen. Krcmar .htm © Prof.tumuenchen.de:8001/sap/bc/bsp/sap/<Programmname>\<Se itenname>. Krcmar Hausaufgabe • • • • Erstellen Sie eine Tabelle ZB_05_##_MA. H. mit der die Daten erstellt. Dr.Aufruf der BSP‘s • http:/hcc1b11.informatik. Dr. in der Daten zu Mitarbeitern erfasst werden können Entwickeln Sie in einem gleichnamigen ABAP-Programm dazu eine grafische Oberfläche.htm oder: • http:/hcc3b11. H. 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.2005 12:00 Uhr • © Prof.11.
Copyright © 2024 DOKUMEN.SITE Inc.