Übungen zum BSP-Framework

Ähnliche Dokumente
Inhalt. Vorwort zur dritten Auflage 15

Quellcodes der BSP-Demos

ajanzen.com Umgang mit zur Laufzeit erstellen Selektions-, Sortier- und IF-Bedingungen

Internet-Technologien

Datenbank und Tabelle mit SQL erstellen

SAP und bunte Bilder geht das?

AG-VIP App Erste Schritte

Trainingsmanagement Gutschein Management. Beschreibung

Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Programmieren lernen in ASP.NET mit C#

10.6 Programmier-Exits für Workitems

Oracle 10g Einführung

PHP- Umgang mit Datenbanken (1)

PHP MySQL - myphpadmin Formulardaten in eine Datenbank speichern

<Insert Picture Here> MySQL Workbench für Einsteiger

Grundlagen der Informatik 2

News. Einleitung. Ansicht im Frontend. Typo3-Support

Aufbau und Bestandteile von Formularen. Oracle Forms. Erstellen eines neuen Blocks (1) Starten von Oracle Forms

Rückgabewerte von Methoden

Folien php/mysql Kurs der Informatikdienste

Webbasierte Informationssysteme

Programmieren für Fortgeschrittene Einführung in die Programmiersprache ABAP

Oracle & Java HOW TO

Gregor Kuhlmann Friedrich Müllmerstadt. MySQL. Der Schlüssel zu Datenbanken-Design und -Programmierung. c 3 E. i- O Rowohlt Taschenbuch Verlag

Online Dispoliste Benutzerhandbuch

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

SCHULSPEZIFISCHEN ROLLENRECHTE

Anleitung zur Nutzung des KNV Self Service

ajanzen.com Verwendung des Custom Controls

ajanzen.com ALV-Anzeige mit eigenen Spaltenüberschriften und aktiven Standardfunktionen

Access Programmierung. Ricardo Hernández García. 1. Ausgabe, November 2013 ACC2013P

Üben von DDL und DML. Ergebnis:

Übung PL/SQL Trigger Lösungen

Startseite. Primadenta Joomla. Unterseite

Import und Export von Veranstaltungen

Datenschutz: Zugriffsrechte in SQL

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

1. Zusammenfassung der letzten Vorlesung

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Projekt Online-Shop:

Bankleitzahlen einlesen

Vorbereitung Ihres Homepage-Baukastens für den Newsletter-Versand mit CleverReach

Erstellen einer Webseite zur Verwaltung von Informationen

Seiten anlegen, ändern, verschieben und löschen

Benutzerhandbuch (Lehrer)

Wählt man einen Wert aus, so wird dieser in das Selektionsbild übernommen und der Docking- Container wird wieder verkleinert.

Datenbankablage für ArchiveLink einrichten

1)Login Funktion ohne Datenbank

FINISS Support Team Konfiguration des Datafeed Zugriffs auf Markt Daten via FINISS

Wie sichert man APEX-Anwendungen gegen schädliche Manipulationen und unerwünschte Zugriffe ab?

Java: MySQL-Anbindung mit JDBC.

Installation der Buchhaltungssoftware

Sie können das Datum im Feld < Option > abändern. Klicken Sie dazu einfach in das Feld, Sie können dann ein Datum eingeben.

12. Datenschutz: Zugriffsrechte in SQL Datenschutz: Zugriffsrechte in SQL

B Synopsis der Programmiersprachen ABAP, VB und Java

Bestandserfassung. Libri.Pro. Partner für Ihren Erfolg. Dezember

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme

Portal-Dokumentation. becom Systemhaus GmbH & Co. KG Antrano.Production Portal-Handbuch Seite 1

PHP und MySQL. Integration von MySQL in PHP. Zellescher Weg 12 Willers-Bau A109 Tel Michael Kluge (michael.kluge@tu-dresden.

ajanzen.com ALV-Anzeige im Selection-Mode mit angepassten Zellenfarben

ajanzen.com ALV-Grid-Anzeige mit eingabebereiten Zellen

Die Erweiterung von PA-Infotypen mittels PM01

Erzeugung eines Dokuments

Übungen. DI (FH) Levent Öztürk

SVG Maut Exact. SVG Wir bewegen Logistik

Datenbankprogrammierung mit MySQL 5 und PHP 5 Spona

Einrichten einer Debug- Umgebung in Eclipse

Nutzerverwaltung juris Online. Individuelles Login (mit persönlicher Kennung)

Technische Informatik für Ingenieure Winter 2005/2006 Übungsblatt Nr. 3

Wie erreiche ich was?

Zusatzoption: Aktuelle Meldungen Erstellung einer Vorlageseite für die Meldungen

Dokumentation zum php-mysql Projekt: Themenvergabe

Codegenerator für APEX Collections und Tabular Forms

ApEx effektiv. Lösungen für Standardanforderungen. Stephan Engel OPITZ CONSULTING Bad Homburg GmbH. Nürnberg,

APEX Datenverwaltung Wo sind die Daten gerade?

Die SQL-Schnittstelle

Handbuch KFM Barkasse Adressverwaltung

Der Beginn einer wunderbaren Freundschaft von Stefan Schnell

Datenbankentwicklung

Eclipse Tutorial.doc

quickterm Plug-In Benutzerhandbuch Version: 1.1

Unterlagen zu: Das Datenanalysesystem SAS SS 2000

Erstellen eines neuen Dokumentes

In der grafischen Darstellungen wie Raumbelegungsplan, Referentenbelegung usw. können Sie Ihre eigenen Farben und Einträge darstellen.

Download von Programmen

Computer Schulung Explorer

[Arbeiten mit dem Nvu Composer]

Transkript:

(1) SAP-Webprogrammierung WI 4. Semester Übungen zum BSP-Framework Prof. Dr. H. Neuendorf System: HCC-SAP-System, ECC 6.0 Basis 7.30 Sommersemester 2016 Anmerkung: Von SAP ausgelieferte BSP-Anwendung IT00 enthält Demo-BSPs zu allen möglichen Aspekten der BSP-Entwicklung... Einstiegsseite ist default.htm

Melden Sie sich am SAP-System an : Benutzer = develop... Passwort = XXXXXXXXX Mandant = 904 Sprache = DE Einstieg (2) Bitte alle Übungen anlegen im vorhandenen Paket : ZBSPWI14R oder ZBSPWI14S oder ZBSPWI14TU Bitte den Namen aller BSP-Anwendungen, Klassen und Dictionary-Objekte im Kundennamensraum Z anlegen und mit der Endung < User-Nr > versehen als eindeutige Unterscheidung von anderen Kursteilnehmern!! Bsp : ZUeb1_12 von User develop12 Meine Demos sind im Paket : ZBSPTEST Coding wird am Ende der Vorlesung in pdf-file zur Verfügung gestellt Debug-Einstellungen : In Object Navigator unter : Hilfsmittel Einstellungen ABAP Editor Debugging muss Debuggen aktiviert und User eingetragen sein!

Einstieg: Arbeiten mit Workbench - Aufruf Transaktion SE80 (3) 1. Werkzeuge ABAP Workbench Übersicht Object Navigator Man landet im Repository- Browser. 2. In Auswahlbox : Paket : ZBSPWI14R bzw S TU + Brille betätigen Eintrag ZBSPWI14 expandieren: Ordner BSP-Bibliothek mit Unterordner BSP-Applikationen Dort befindet sich schon eine Demo-Anwendung 3. Neue BSP-Anwendung anlegen : Rechte Maustaste auf Paketnamen: Anlegen BSP-Bibliothek BSP-Applikation oder Rechte Maustaste auf BSP-Appikationen: Anlegen Namen und Kurzbeschreibung vergeben + speichern Anmerkung : In Screenshots teilweise letztjährige Paket- und Auftragseinträge. Texte der Aufgabenstellungen jedoch aktuell + korrekt

Einstieg: Workbench - Objekte anlegen (4) Zwei Möglichkeiten: 1. Lokales Objekt Dann erscheint die BSP-Anwendung nicht in der Paket- Darstellung, sondern nur bei Auswahl der Selektionen Lokale Objekte + <Username> 2. Speichern-Ikone Es wird ein transportierbares Objekt angelegt - und ein Workbenchauftrag muss gewählt werden. Für unsere Übungen wurde Auftrag R54K900804 angelegt : R54K900804 Eingeben und bestätigen! Zweimal hintereinander - da auch ein Service zur BSP-Anwendunge erzeugt wird. Weiter mit der Übung Auswahl des Auftrags möglich statt händischer Eingabe Andere Aufträge: Dritte Ikone von rechts

Übung 1A : (5) Erstellen Sie eine neue BSP-Anwendung in der SE80 : Gehen Sie in den ObjectNavigator und legen Sie im Paket ZBSPWI14 eine neue BSP-Anwendung mit einer Seite default.htm an: 1. Rechte Maustaste auf Paketnamen: Anlegen BSP-Bibliothek BSP-Applikation 2. Eigenschaften der BSP-Anwendung pflegen: Kurzbeschreibung + Einstiegs-BSP 3. Rechte Maustaste auf Anwendungsnamen: Anlegen Seite 4. Eigenschaften der Seite anschauen, Beschreibung pflegen 5. Im Layout eine HTML-Seite codieren: (zuvor generierte Inhalte löschen) Schreiben Sie etwas HTML (siehe Skript-Beispiele) bauen Sie ABAP-Code ein, der z.b. in einer Schleife etwas ausgibt. 6. Seite prüfen, aktivieren und testen!

Übung 1B: (6) 7. Objekte (Bilder) vom Frontend-Rechner holen (Import)! Rechte Maustaste auf Anwendungsnamen: Anlegen MIME-Objekt importieren MIME-Objekte an gewünschter Stelle in HTML-Seite einbinden : <img src=" " height=... width=... border=1> 8. Service in TA SICF anschauen : In SICF-Einstiegsseite Servicename eingeben! Rechte Maustaste auf Serviceeintrag: Deaktivieren / Aktivieren /... Doppelklick auf Serviceeintrag: Darstellung der Serviceeigenschaften 9. Tragen Sie den Defaultuser ein, um sich den Anmeldedialog im Browser zu ersparen: User: gast PW: mosbach 10. Testen Sie die Anwendung!

Übung 2: (7) Erstellen Sie eine BSP-Anwendung mit mehreren BSP-Seiten : 1. Legen Sie eine neue BSP-Anwendung in unserem Übungs-Paket an 2. Fügen Sie insgesamt drei BSP-Seiten und ein Seitenfragment ein. 3. Pflegen Sie eine der Seiten als Einstiegsseite in die BSP-Anwendung 4. Bauen Sie in eine der Seiten etwas clientseitiges JavaScript ein 5. Deklarieren Sie in einer der Seiten ein Seitenattribut vom Typ String und verwenden Sie dieses im Layout der Seite 6. Realisieren Sie in dem Seitenfragment eine einfache statische Navigation zwischen den Seiten mittels <a href =... > Tags Inkludieren Sie das Seitenfragment in die drei BSP-Seiten, so dass BSP-Seite + Seitenfragment sich zu korrektem HTML ergänzen.

Übung 4 : Werte aus DB beschaffen und darstellen (12) Ziel: Datenbeschaffung in Eventhandler - Darstellung im Layout default.htm : User kann Luftlinie (carrier) vorgeben - Voreinstellung ist 'LH' stateless Übergabe des carrier-werts an results.htm results.htm : Aus DB-Tabelle sflight alle Einträge zu gewünschter Luftlinie (carrier) auslesen Im Layout darstellen default.htm results.htm OnInitialization Layout Form : Benutzer- Eingaben OnInputProcessing OnInitialization Layout Form : Back- Button OnInputProcessing

Übung 4 : Werte aus DB beschaffen und darstellen (13) Erstellen Sie eine BSP-Anwendung : 1. Neue BSP-Anwendung in unserem Paket Zwei BSP-Seiten : default.htm (Einstiegsseite) + results.htm default.htm 2. Seitenattribut : carrier type String 3. OnInitialization: Seitenattribut carrier mit Wert 'LH' vorbelegen 3. Layout mit Form : User kann in Textfeld ( name: carrier ) Wert für Fluglinie eintragen Soll mit Wert von carrier vorbelegt werden Submit-Button mit Aufruf OnInputProcessing 4. OnInputProcessing : Übergabe carrier-wert an + Navigation zur Folgeseite results.htm : navigation set_parameter( ) + navigation goto_page( )

results.htm Übung 4: 5. Typdefinition: types: zflight_type type standard table of sflight. 6. Seitenattribute: carrier type String auto my_flights type zflight_type 7. OnInitialization: Aus DB-Tabelle sflight alle Einträge zu carrier in ITAB my_flights lesen : select * from sflight into table my_flights where carrid = carrier. 8. Layout : Inhalt von my_flights tabellarisch ausgeben HTML-Tabelle verwenden <% data: wa_flights type sflight. %> Loop über my_flights in Arbeitsbereich wa_flight : <% loop at my_flights into wa_flights. %> Inhalt der Struktur wa_flight in separaten Spalten ausgeben : <tr> <td> <%= wa_flights-connid %> </td> <td> <%= wa_flights-fldate %> </td> <td> <%= wa_flights-price %> </td> </tr> <% endloop. %> Form mit Submit-Button - Aufruf OnInputProcessing 9. OnInputProcessing : Navigation zurück zu default.htm (14)

Übung 6 : Ein einfacher Zähler Stateless-Problematik: Schreiben Sie eine 1-seitige BSP-Anwendung, in der serverseitig das Seitenattribut couter bei jedem Selbstaufruf der Seite in OnInitialization hochgezählt wird. Variable ausgeben. Durch Button Verhalten triggern. Verhalten hängt nicht von Auto oder Nicht-Auto ab Seitenattribut Name Typ counter i (17) Anwendung austesten : 1. Anwendung: stateless Testen 2. Anwendung: stateful Testen Umschalten in OnInputProcessing s.u. default.htm 3. Anwendung stateful : Aber User hat im Browser Annahme von Session-Cookies deaktiviert! Testen OnInitialization Layout Form : Benutzer- Eingaben OnInputProcessing

Übung 6 : (18) Erstellen Sie eine BSP-Anwendung mit einer BSP-Seite: 1. Neue BSP-Anwendung in unserem Paket mit einer BSP-Seite: default.htm 2. Deklarieren Sie das Seitenattribut counter vom Typ i. 3. OnInitialization : counter = counter + 1. 4. Layout : Ausgabe Seitenattribut counter Anmerkung: Grundsätzliches Verhalten hängt nicht davon ab, wo counter hochgezählt wird Ausgabe Uhrzeit sy-uzeit und Datum sy-datum Form mit 3 Submit-Buttons, rufen OnInputProcessing Button1: Hochzählen Button 2: Auf stateful schalten Button 3: Auf stateless schalten 5. OnInputProcessing : Stets nur impliziter Selbstaufruf... Uhrzeit und Datum sehen nicht hübsch aus - kann man sie schöner formatieren? event_id in Case-Struktur - drei Fälle : 1) Hochzählen : nichts tun - passiert in OnInitialization 2) Stateful schalten : runtime keep_context = 1. 3) Stateless schalten : runtime keep_context = 0.

Übung 7 : Literaturverwaltung (20) Erstellen Sie eine BSP-Anwendung, mit der sich Literatur verwalten lässt. User kann : 1. Den vorhandenen Bestand ausgeben lassen 2. Neuen Titel in die Literatur-DB einfügen 3. Titel aus der Literatur-DB löschen. 4. Nach Einträgen für gegebenen Autorennachnamen suchen Gesamter Datenbestand befindet sich in einer DB-Tabelle folgender Struktur : ISBN Authlname Authfname Title Publisher Publyear char13 char40 char40 char132 char40 numc4 Im System ist bereits diese Tabelle ZBSPLIT mit einigen Einträgen vorhanden Alle Gruppen arbeiten auf dieser DB-Tabelle!! Anmerkung: Der Suchteil ist am relativ aufwendigsten

Übung 7 : Struktur BSP-Anwendung default.htm* Einstieg (21) head.htm Statische Navigationsleiste In alle Seiten als Seitenfragment includiert allbooks.htm* search.htm* delete.htm* insert.htm* Ausgabe aller Titel in HTML- Tabelle Abfrage Autor-Nachname Dieser Sprung mit navigation-objekt Übergabe: authorlname results.htm Ausgabe der Suchergebnisse in HTML-Tabelle Ausgabe aller Titel in HTML- Tabelle Löschen eines Titels gemäß eingegebener ISBN Einfügen neuer Titel gemäß Eingabe aller Daten Aufgrund inkludierter statischer Navigationsleiste kann User von jeder Seite zu einer der anderen Seiten* springen - und somit jede begonnene Aktion folgenlos abbrechen. Erst durch Buttondruck passiert etwas, das in der DB Folgen hat Stets impliziter Selbstaufruf der Seite, wenn User nicht statisch weg navigiert.

Anforderungen an BSP-Anwendung : (22) 1. Applikation soll Seitenfragment head.htm verwenden, das am Anfang aller BSP-Seiten inkludiert wird. Im Seitenfragment soll enthalten sein eine Navigationsleiste in Form statischer Links auf die BSP-Seiten : default.htm insert.htm allbooks.htm delete.htm search.htm 2. Fehlersituationen rudimentär behandeln : Übung 7: a) fehlende Benutzereingaben beim Suchen, Einfügen, Löschen b) fehlgeschlagener DB-Zugriff sy-subrc <> 0 Im Fehlerfall soll in OnInputProcessing das String-Seitenattribut status mit aussagekräftiger Meldung gefüllt und im Layout auf selber Seite ausgegeben werden. User hat stets Gelegenheit zu einem neuen Versuch Man bleibt auf der Seite - da Navigation nur durch die statischen Links des Seitenfragments erfolgt Ausnahme : Sprung nach results.htm 3. Seitenattribute sollen verwendet und falls erforderlich auto geschaltet sein. 4. Die Anwendung arbeitet zustandslos.

Coding-Schnipsel : 1. Typdefinition Tabellentyp : types: zbooktab_type type standard table of zbsplit. Übung 7: 2. Interne Tabelle vom passenden Typ : (alle anderen Seitenattribute sind strings ) books type zbooktab_type 3. Working area zur Aufnahme von Tabellenzeilen : data: wa_lit type zbsplit. 4. Loop über interne Tabelle books in working area : loop at books into wa_lit. endloop. 5. Nützliche SQL-Statements : select * from zbsplit into table books. (23) if authorlname is not initial. select * from zbsplit into table books where authlname = authorlname. endif. delete from zbsplit where isbn = isbn. insert zbsplit from wa_lit.

Coding-Schnipsel : Eventhandler OnInputProcessing von insert.htm ist am aufwendigsten : (24) data: wa_lit type zbsplit. wa_lit-isbn = request->get_form_field( 'isbn' ). wa_lit-authlname = request->get_form_field( 'authorlname' ). wa_lit-authfname = request->get_form_field( 'authorfname' ). wa_lit-title = request->get_form_field( 'titel' ). wa_lit-publisher = request->get_form_field( 'verlag' ). wa_lit-publyear = request->get_form_field( 'jahr' ). Übung 7 : if wa_lit-isbn is initial or wa_lit-authlname is initial or wa_lit-authfname is initial or wa_lit-title is initial or wa_lit-publisher is initial or wa_lit-publyear is initial. status = ' Daten unvollständig! '. else. insert zbsplit from wa_lit. if sy-subrc <> 0. status = ' Fehler bei Einfügen Datensatz! '. else. status = ' Datensatz geschrieben! '. endif. endif.

(25) SAP-Webprogrammierung WI 4. Semester Testat zum BSP-Framework Prof. Dr. H. Neuendorf System: HCC-SAP-System, ECC6.0 Basis 7.30 Sommersemester 2016

Testat : Mitfahrerzentrale (26) Projekte anlegen im Paket ZWI14TESTAT - Namenskonvention : ZT2016_XX Erstellen Sie eine BSP-Anwendung, mit der sich Mitfahrangebote verwalten lassen User kann : 1. Die vorhandenen Angebote ausgeben lassen 2. Neue Angebote in die DB einfügen 3. Angebote aus der DB löschen. Transportauftrag : R54K900804 wie bei Übungen 4. Eine Mitfahrt buchen dabei wird Zahl der freien Plätze um 1 verringert falls die Zahl noch > 0 ist! ( Prüfen!! ) 5. Nach Angeboten für ein bestimmtes Ziel suchen Der Datenbestand befindet sich in der DB-Tabelle ZBSPFLUCHTXX folgender Struktur : Name Datum Ziel Anzahl char40 dats char40 int1 Jede Gruppe arbeitet auf eigener DB-Tabelle! ZBSPFLUCHTXX Gruppennummern: 01, 02,, 14,15 Speziell SAP-Datumsformat ist 8-stellige Zeichenkette : YYYYMMDD Vom Benutzer Tag, Monat, Jahr getrennt erfragen und in Feld vom Typ d stellen : data: datum type d. concatenate jahr monat tag into datum.

Testat : Struktur BSP-Anwendung (27) Anm: Buchung wird nur angedeutet, da Namen der Mitfahrer nicht erfasst werden dazu wären weitere Tabellen erforderlich default.htm* Einstieg head.htm Statische Navigationsleiste In allen Seiten includiert all.htm* search.htm* book.htm* delete.htm* insert.htm* Ausgabe aller Angebote in Html- Tabelle Mit navigation- Objekt Abfrage Zielort ziel results.htm Ausgabe der Suchergebnisse in HTML-Tabelle Ausgabe aller Angebote in Tabelle Abfrage Name und Datum des Angebots Anzahl freier Plätze in Angebot wird um 1 verringert! Ausgabe aller Angebote in Tabelle Löschen eines Angebots gemäß eingegebenem Namen und Datum Ausgabe aller Angebote in Tabelle Einfügen eines neuen Angebots gemäß Eingabe aller relevanter Daten Aufgrund Navigationsleiste kann User von jeder Seite zu jeder Seite* springen - und somit auch jede begonnene Aktion folgenlos abbrechen. Erst durch einen Buttondruck passiert etwas in der DB, das Folgen hat... Die Anwendung läuft zustandslos.

Anforderungen an BSP-Anwendung : (28) 1. Die Applikation soll ein Seitenfragment head.htm verwenden, das am Anfang aller BSP- Seiten inkludiert wird. Im Seitenfragment soll enthalten sein: a) Ein MIME-Objekt = Bild als Logo b) Eine Navigationsleiste in Form statischer Links auf alle BSP-Seiten*. Testat : 2. Fehlersituationen rudimentär behandeln : a) fehlende Benutzereingaben beim Suchen, Buchen, Löschen, Einfügen b) fehlgeschlagener DB-Zugriff sy-subrc <> 0. Im Fehlerfall soll in OnInputProcessing das String-Seitenattribut status aussagekräftiger Meldung gefüllt und auf selber Seite ausgegeben werden. mit Man bleibt somit auf der Seite + User hat Gelegenheit zu einem neuen Versuch 3. Seitenattribute sollen verwendet und falls erforderlich auto geschaltet sein. 4. Die Anwendung arbeitet zustandslos. 5. Der Navigationsrequest TORESULTS soll gepflegt und verwendet werden. Von search.htm zu results.htm soll mittels navigation-objekt gesprungen werden.

Coding-Schnipsel : (29) 1. Typdefinitionen Tabellentyp : types: zflucht type standard table of zbspflucht. 2. Interne Tabelle passenden Typs : Testat : connections type zflucht. 3. Workarea zur Aufnahme von Tabellenzeilen : data: wa_flucht type zbspflucht. 4. Loop über interne Tabelle connections in workarea : Auf gruppeneigene Tabelle ZBSPFLUCHTxx beziehen! loop at connections into wa_flucht. endloop. 5. Nützliches ABAP / SQL : data: tag(2) type c, monat(2) type c, jahr(4) type c, datum type d. concatenate jahr monat tag into datum. select * from zbspflucht into table connections. sort connections by name. select * from zbspflucht into wa_flucht where ziel = ziel. select single * from zbspflucht into wa_flucht where name = name and datum = datum. update zbspflucht from wa_flucht. delete from zbspflucht where name = name and datum = datum. insert zbspflucht from wa_flucht.