You are on page 1of 257

SAP® R/3® – Übungsbuch

Michael S. Umlauff

SAP R/3 –® ®

Übungsbuch
Programmierung von Internet-
Anwendungskomponenten
Herausgegeben von der
DEKRA Akademie GMBH

eBook
Die nicht autorisierte Weitergabe dieses eBooks
ist eine Verletzung des Urheberrechts!

An imprint of Pearson Education


München • Boston • San Francisco • Harlow, England
Don Mills, Ontario • Sydney • Mexico City
Madrid • Amsterdam
Die Deutsche Bibliothek – CIP Einheitsaufnahme
Ein Titelsatz für diese Publikation ist bei
Der Deutschen Biblothek erhältlich.

Sämtliche in diesem Buch abgedruckten Bildschirmab-


züge unterliegen dem Urheberrecht © der SAP AG,
Walldorf.

SAP©, R/2©, R/3©, ABAP©, SAPoffice©, SAP Business


Workflow©, SAP EarlyWatch©, SAP@WebStudio, SAP
ArchiveLink©, ASAP©, my SAP.com© sind eingetra-
gene Warenzeichen der SAP Aktiengesellschaft
Systeme, Anwendungen, Produkte in der Datenver-
arbeitung, Neurottstraße 16, D-69190 Walldorf.

Andere Produktnamen werden nur zur Identifikation


der Produkte verwendet und können eingetragene
Marken der entsprechenden Hersteller sein.

© 2001 Addison Wesley Verlag


ein Imprint der Pearson Education Deutschland GmbH
Martin-Kollar-Straße 10-12, 81829 München/Ger-
many

10 9 8 7 6 5 4 3 2 1

04 03 02 01

ISBN 3-8273-1788-6

Lektorat Christian Schneider, cschneider@pearson.de


Produktion Elisabeth Egger, eegger@pearson.de
Satz mediaService, Siegen
Druck/Bindung Media Print, Paderborn
Umschlaggestaltung Barbara Thoben, Köln

Das verwendete Papier ist aus chlorfrei gebleichten schützt. Alle Rechte vorbehalten. Kein Teil dieses Bu-
Rohstoffen hergestellt und alterungsbeständig. Die ches darf ohne schriftliche Genehmigung des Verlages
Produktion erfolgt mit Hilfe umweltschonender Tech- in irgendeiner Form durch Fotokopie, Mikrofilm oder
nologien und unter strengsten Auflagen in einem ge- andere Verfahren reproduziert oder in eine für Ma-
schlossenen Wasserkreislauf unter Wiederverwertung schinen, insbesondere Datenverarbeitungsanlagen,
unbedruckter, zurückgeführter Papiere. verwendbare Sprache übertragen werden. Auch die
Rechte der Wiedergabe durch Vortrag, Funk und
Text, Abbildungen und Programme wurden mit größ- Fernsehen sind vorbehalten.
ter Sorgfalt erarbeitet. Verlag, Übersetzer und Autoren
können jedoch für eventuell verbliebene fehlerhafte Die in diesem Buch erwähnten Software- und Hard-
Angaben und deren Folgen weder eine juristische Ver- warebezeichnungen sind in den meisten Fällen auch
antwortung noch irgendeine Haftung übernehmen. eingetragene Marken und unterliegen als solche den
Die vorliegende Publikation ist urheberrechtlich ge- gesetzlichen Bestimmungen.
Inhalt
Vorwort 7

Einführung 9
Kapitel 1
Installation R/3-Internet-Software 13
1.1 Internet: Browser, Webserver installieren 16
1.2 Internet Transaction Server installieren 25
1.3 SAP@Web Studio installieren 41
1.4 SELFHTML einrichten 43
1.5 Übungsszenario im Dictionary einrichten 45

Kapitel 2
Die erste Homepage im Intranet 59
2.1 Seiten gestalten: Head, Body, Texte 60
2.2 Graphiken einbinden 67
2.3 Tabellen anlegen 72
2.4 Hyperlinks und Aufzählungen nutzen 74
2.5 Seiten mit Frames gestalten 77

Kapitel 3
Entwurf WebTransaction: ABAP 81
3.1 Internetbenutzer und Kennwort-BAPI 83
3.2 Dynpro 100: Anmeldung 85
3.3 Pflegen des Internetbenutzers 98
3.4 Dynpro 200: Selektionen 101
3.5 Dynpro 300: Anzeige der Liste 109
3.6 Dynpro 400: Kaufen und verbuchen 118
3.6.1 Sperrobjekt anlegen 119
3.6.2 Verbuchungsfunktionsbaustein anlegen 119
3.6.3 Dynpro 400 anlegen 124

Kapitel 4
SAP@Web Studio und ITS 133
4.1 Projekt, Service und Theme 134
4.2 Templates aus Dynpros generieren 136
4.3 Website definieren und publizieren 144
4.4 Start der IAC über Hyperlink 147
4.5 Sprachunabhängigen Text integrieren 152

5
4.6 HTML-Eingabefelder im Formular 157
4.7 Auswahllistenfeld (HTML-Select) anlegen 160
4.8 Service beenden mit Drucktaste 162
4.9 Funktion wgateURL() in Hyperlinks 163
4.10 Erstes Template überspringen 165
4.11 Browser-Zurück-Taste synchronisieren 167
4.12 WebTransaction mit SAPGUI debuggen 170
4.13 Konkatenation und Stringoperatoren 176
4.14 Funktionen if() und mimeURL() 177
4.15 HTML-Select mit Daten aus R/3 181

Kapitel 5
WebRFC und WebReporting 185
5.1 WebRFC: WWW_HTML_ECHO() 186
5.2 WebReporting: WWW_GET_SELSCREEN() 188
5.3 Ausblick 195

Anhang A
Programmlistings 197
A.1 Die eigene Homepage 197
A.2 WebTransaction: Erste Fassung 207
A.3 Projekt wpbuchung: Erste Fassung 215
A.4 WebTransaction: Letzte Fassung 220
A.5 Projekt wpbuchung: Letzte Fassung 229
A.6 WebRFC und WebReporting 238
A.7 Heraufladen der Transportdateien 239

Anhang B
Transport 245

Stichwortverzeichnis 255

6
Vorwort

Vorwort
Der Herausgeber dieses Buches, die DEKRA Akademie GmbH, ist
Deutschlands größter privatwirtschaftlicher Anbieter für berufliche Aus-
und Weiterbildung. In bundesweit 120 Ausbildungszentren bereiten
sich pro Jahr über 100.000 Teilnehmer auf neue bzw. veränderte beruf-
lichen Aufgaben vor. Die angebotenen Qualifizierungen reichen vom
Tagesseminar bis zur mehrjährigen Berufsausbildung.
Als erstes Bildungsunternehmen schloss die DEKRA Akademie 1997
einen Partnervertrag mit der SAP AG. Die Kooperation beinhaltet die
Organisation und Durchführung von SAP-Qualifizierungen für Privat-
und Firmenkunden durch die DEKRA Akademie und die Nutzung der
original SAP-Schulungs-Infrastruktur, wie sie auch den Seminarkunden
der SAP in Walldorf zur Verfügung steht.
Einen wesentlichen Unterschied gibt es zum Walldorfer Ausbildungs-
konzept: Im Rahmen öffentlich geförderter Bildung haben die Teilneh-
mer der DEKRA Akademie den Vorteil einer etwa doppelt so langen
Ausbildungszeit gemessen an den SAP-Zeitvorgaben. Die Zusatzzeit
dient einem intensiveren Computertraining. Damit dieses Training
strukturiert abläuft, werden praxisbezogene Fallstudien bereitgestellt.
Das Fallstudienkonzept, das die DEKRA Akademie bei der Qualifizie-
rung von mehr als 2.000 SAP-Beratern erprobt hat, bildet die Grundlage
des Buchs.
Diese Trainingsunterlagen eignen sich als Unterrichtsmaterial ebenso
wie für das Selbststudium. In Praxisfällen werden realitätsnahe Szena-
rien und Lösungsansätze angeboten, die den Leser handlungsorientiert
Schritt für Schritt zum Trainingserfolg führen.

7
Vorwort

Lösungsdateien und zusätzliche Hinweise zur Einrichtung der notwendi-


gen IT-Strukturen im Anhang und im Internet unter
http://dekra.akademie.de/download
sichern den Qualifikationserfolg.
Anregungen, Fragen und Kritik mailen Sie bitte an: walter.dirnho-
fer@akademie.dekra.de.
Wir werden uns bemühen, Ihnen schnell zu antworten. Bitte denken Sie
daran, den Buchtitel und am besten auch die Seitenzahl anzugeben, auf
die sich Ihre Anfrage bezieht. So können wir Ihnen gezielter Auskunft
geben.

Viel Erfolg bei Ihrer Qualifizierung wünscht Ihnen

Walter Dirnhofer

Produktmanager der DEKRA Akademie GmbH


SAP-Berater

8
Einführung

Einführung
Das vorliegende Werk will Sie anleiten, das Entwickeln von Internet-
Anwendungskomponenten (IAC=Internet Application Component) zu
erlernen. Es beinhaltet ein – weitgehend durchgängiges – Übungsbei-
spiel, mit dem Sie „von der Pike auf“ eine IAC mit ABAP und HTMLBusi-
ness
programmieren. Dieses handlungsorientierte Werk ist sowohl zum
Selbststudium als auch als Aufgabenbuch für Lehrgänge der beruflichen
Weiterbildung geeignet.
Der Mensch lernt am besten anhand von Beispielen, nicht anhand von
Definitionen, Klauseln oder Syntaxdiagrammen. Es ist daher nicht Ziel
dieses Werkes, eine komplette Einführung in HTML, HTMLBusiness oder
ABAP zu liefern. Diese gibt es bereits in ausreichender Zahl, auf sie wird
an den entsprechenden Stellen hingewiesen. Vielmehr soll der Leser an-
geleitet werden, eine Beispiel-IAC nach hinreichenden Erläuterungen
praktisch am System zu entwickeln.

Sie sollten fortgeschrittene ABAP-Kenntnisse mitbringen, vor allem hin- Benötigte


sichtlich der Transaktionsverarbeitung, aber auch des Reporting. Das Vorkenntnisse
Anlegen und Programmieren von Entwicklungsklassen, Transaktionen,
Modulpools, Dynpros, GUI-Status, GUI-Titel, Views, Reports, Funkti-
onsgruppen, Funktionsbausteinen sowie der Umgang mit dem Dictio-
nary, Repository und den sonstigen Werkzeugen der Workbench sollten
Ihnen vertraut sein.
Falls Sie hier noch Lücken zu schließen haben, wird als geeignete Vorbe-
reitung das Durcharbeiten des Werkes ABAP-Übungsbuch (Umlauff/
Dirnhofer) der DEKRA-Akademie, des bundesweit tätigen Trägers für
berufliche Weiterbildung, erschienen im Fachverlag für Informati-
onstechnologien Addison-Wesley, empfohlen.

9
Einführung

Weiterhin sollten Sie mit einem Browser (Internet Explorer) und natür-
lich generell mit dem Windows-Betriebssystem (Explorer, Notepad, Sys-
temsteuerung) umgehen können.
HTML-Kenntnisse schaden zwar nicht, werden aber soweit als notwen-
dig im Verlaufe des Lehrganges erworben.

Inhaltsübersicht Zunächst installieren Sie im Kapitel 1, Installation R/3-Internet-Soft-


ware, die benötigte Software. Als Wichtigstes wären hier Webserver, In-
ternet Transaction Server und SAP@Web Studio zu nennen. Weiterhin
finden Sie, neben zahlreichen Hinweisen, wie Sie Ihr Netzwerk einrich-
ten müssen, auch die Einrichtung eines Nachschlagewerks für HTML.
Schließlich richten Sie das Übungsszenario Wertpapierdepotverwal-
tung, bestehend aus Datenbanktabellen mit entsprechenden Beziehun-
gen, Datenelementen und Domänen mittels des ABAP Dictionaries und
eines Reports – zum Füllen der Tabellen – ein. Alternativ zur eigenhändi-
gen Programmierung kann das Übungsszenario auch mit einem Trans-
port, den Sie von der Homepage der DEKRA-Akademie herunterladen
können, ins System eingespielt werden.
Um eventuell fehlende HTML-Kenntnisse auszugleichen, wird in Kapi-
tel 2, Die erste Homepage im Intranet, eine Webveröffentlichung, be-
stehend aus zwei HTML-Seiten, aufgebaut. Sollten Sie bereits über gute
HTML-Kenntnisse verfügen, genügt es, wenn Sie Abschnitt 2.5, Seiten
mit Frames gestalten, als Vorbereitung für die WebTransaction bearbei-
ten.
Die Entwicklung einer WebTransaction beginnt mit der Programmie-
rung in ABAP, da diese speziellen Anforderungen genügen muss. Dies
wird in Kapitel 3, Entwurf WebTransaction: ABAP, gezeigt. Als Alterna-
tive zur eigenhändigen Programmierung der WebTransaction steht
auch hierfür wiederum ein Transport bereit. Dies sollten Sie jedoch nur
als sehr erfahrener ABAP-Programmierer tun.
Die WebTransaction wird im Kapitel 4, SAP@Web Studio und ITS, zur
vollständigen IAC, die nicht nur von dem SAPGUI, sondern auch vom
Browser über den Webserver und den ITS gestartet werden kann. Zen-
trales Werkzeug ist das SAP@Web Studio, das automatisch aus jedem
Dynpro ein Template in HTMLBusiness mit Platzhaltern für die Dynpro-In-
halte generiert. Sogar das Debuggen einer vom Browser aus gestarteten
IAC ist möglich und wird gezeigt.
Statt einer Transaktion kann man vom Browser aus über RFC (Remote
Function Call = Aufruf eines Funktionsbausteines von einem anderen
Rechner) einen Funktionsbaustein aufrufen, der Webinhalte zurücklie-
fert; dies wird in Kapitel 5, WebRFC und WebReporting, behandelt.
Eine mögliche Anwendung dieser Technik ist der Start eines Reports

10
Einführung

vom Browser aus: Selektionsbild und Ergebnisliste werden dabei zu


HTML-Seiten umgesetzt.
Alle Programme sind im Anhang A: Programmlistings abgedruckt. Dieses
Kapitel steht auf der Homepage der DEKRA-Akademie zum Herunter-
laden bereit, damit der Anwender die Programmtexte über die Windows-
Zwischenablage einfügen kann, statt sie mühsam einzutippen.
Der Anhang B: Transport beinhaltet eine ausführliche Anleitung zum
Transport, den Sie jedoch nicht ohne die Unterstützung eines erfahre-
nen R/3-Administrators durchführen sollten.

11
Installation R/3-Internet-Software 1

Kapitel 1
Installation R/3-Internet-
Software
Sie benötigen als zugrunde liegende IT-Ausstattung (IT = Informati- IT-Ausstattung
onstechnologie) ein funktionierendes Intranet mit einem R/3-Zugang
und installiertem SAPGUI. Für das vorliegende Werk wird das SAP R/3
Release 4.6B verwendet. Für den R/3-Account muss ein Entwickler-
schlüssel eingepflegt worden sein, diesen erhalten Sie über den Admi-
nistrator oder im Online-Service-System (OSS) von SAP.
Die Entwicklung der IAC erfolgt in diesem Buch auf einem lokal instal-
lierten Webserver und dem Internet Transaction Server (ITS) von SAP.
Als Betriebssystem wird für dieses Werk Windows 2000 verwendet, zu
Übungszwecken genügt die Professional-Version. Zum Produktivein-
satz allerdings sollte die Server-Version eingesetzt werden. Ebenso ist
Windows NT 4.0 (Workstation und Server) geeignet, allerdings sind ei-
nige Menüpfade hier anders.
IACs können Sie auch mit SAP R/3 Release 4.0 erstellen. Der Verfasser
empfiehlt in diesem Falle Windows NT 4.0 und ein ITS-Release ab 4.0
bis höchstens 4.5 (diese korrespondieren zu den R/3-Releases). Auf
Windows 2000 laufen nur neuere ITS-Releases ab 4.6, die in der Anbin-
dung mit SAP R/3 Release 4.0 dem Verfasser Probleme bereiteten.

Für den Fall, dass Ihr Administrator die Installationsdateien nicht oder Bezugsquellen
nur in veralteten Releases verfügbar hat, werden an entsprechender
Stelle jeweils Bezugsquellen als WWW-Adressen (WWW = World Wide
Web) zum Herunterladen angegeben. Diese können sich allerdings seit
Drucklegung geändert haben.

13
1 Installation R/3-Internet-Software

Die Anleitungen in diesem Buch beziehen sich auf die beim Verfassen
aktuellen Release-Stände. Inwieweit neuere Releases abwärtskompati-
bel sind, entnehmen Sie bitte den Hinweisen des jeweiligen Software-
herstellers.

Stimmen Sie sich in allen Aufgaben und Schritten dieses Kapitels


sowie in Ihrem Gesamtvorhaben der Programmierung einer IAC
unbedingt vorher mit Ihrem Administrator, Systemverwalter, Vor-
gesetzten oder sonstigen Verantwortlichen ab. So vermeiden Sie
unnötigen Ärger.
Beachten Sie auch stets die Lizenzbestimmungen der SAP AG,
Microsoft Corp. und der übrigen Hersteller jener Software, die Sie
einsetzen. Dies gilt insbesondere für den Produktivbetrieb.

R/3-System Vermutlich verfügen Sie über einen R/3-Zugang zu einem Ausbildungs-


oder Trainingssystem in Ihrer Firma, das Produktivsystem sollte für
Übungsaufgaben nicht eingesetzt werden.

Linux Test-Drive Falls Sie noch keinen R/3-Zugang haben, können Sie sich ein eigenes
Demo-R/3-System auf Linux zu Lern- und Testzwecken einrichten, das
SAP freundlicherweise kostenlos im SAP KNOWLEDGE SHOP seiner
Homepage anbietet.1

Bevor Sie sich an die komplizierte Installation heranwagen, soll-


ten Sie sich der Hilfe eines versierten Linux-Fachmanns vergewis-
sern – falls Sie nicht selbst einer sind.

Auf http://www.sap.com/linux erhalten Sie alle benötigten Informatio-


nen. Sie sollten die dort zu findende Dokumentation gründlich lesen,
insbesondere das Test-Drive-FAQ und die Tips and tricks. Auf der CD
finden Sie eine gute Einführung und Installationsanleitung in den Da-
teien README.TXT und INSTALL.TXT. Ganz wichtig: Den Entwickler-
schlüssel zum Programmieren eigener ABAP-Programme finden Sie in
der Datei 1st_ABAP.TXT auf der CD.
Es handelt sich um ein komplettes, aber reines Basissystem mit ABAP
Workbench, Administration und SAP-Office. Nicht enthalten sind alle

1. Es gibt neuerdings auch für Windows ein Demo R/3-System, dieses konnte aber
für das vorliegende Werk nicht mehr getestet werden.

14
Installation R/3-Internet-Software 1
betriebswirtschaftlichen Anwendungskomponenten, also Rechnungs-
wesen, Logistik und Personalwirtschaft sowie das IDES-Trainingssys-
tem.
Für den ABAP-Entwickler ist es jedoch ein geeignetes Werkzeug zum
Lernen und Testen. Während der Installation benötigt man einen Li-
zenzkey, der über http://www.sap.com/linux/evaluation.htm kosten-
los per E-Mail erhältlich ist. Nach 90 Tagen erlischt die Lizenz, sie kann
aber erneuert werden.

Die Lizenz des Linux Test-Drives gilt nur für interne Zwecke und
zur Verwendung für Evaluationen. Produktivbetrieb, die Vorbe-
reitung des Produktivbetriebs oder auch der Einsatz für Lehrgänge
ist mit dieser Lizenz nicht gestattet! Lesen Sie auf jeden Fall die
Lizenzbestimmungen in LIZENZ.TXT auf der CD und die License
Agreements auf der SAP-Webseite genau durch!

Sie benötigen einen Rechner mit mindestens einem Pentium II oder bes-
ser, mindestens 192 MB RAM (256 MB RAM empfohlen) und mindes-
tens 5 GB freier Festplattenkapazität. Mit Linux-Betriebssystem und
vorgeschriebenen 600 MB Linux-Swap-Space ergibt dies mindestens
7 GB. Optimiert ist das System für die Linux-Distribution Red Hat 6.1.
Dem Verfasser gelang eine Installation unter Red Hat 6.2, unter Suse
7.0 ist es deutlich schwieriger. Auf der CD befindet sich:
• der Anwendungsserver mySAP.com Basis Release 4.6B
• der Datenbankserver SAP DB, der von der Datenbank Adabas D der
Software AG abgeleitet und von SAP unabhängig weiterentwickelt
wurde
• der Präsentationsserver PlatinGUI (Platform Independent GUI) unter
Java und das zugehörige Java Runtime Environment
• Erweiterungen für Red Hat 6.1.
Der ITS oder das SAP@Web Studio sind auf der CD nicht enthalten.
Dennoch können Sie die Übungsaufgaben dieses Buches durcharbeiten,
wenn Sie mindestens folgendes Rechnernetzwerk aufbauen:
• Rechner 1: Linux Red Hat 6.1 mit mysap.com 4.6B R/3 Basis
• Rechner 2: Windows 2000/NT mit ITS Single-Host (WGate und
AGate) und dem Webserver IIS. Hier können Sie auch SAPGUI und
Browser installieren.

15
1 Installation R/3-Internet-Software

Eine Konfiguration auf nur einem Rechner mit der Linux-Demo-Soft-


ware ist nicht möglich, da das AGate nur auf Windows 2000/NT läuft.
Erwähnt werden muss allerdings, dass, da es sich um eine reine Basis-In-
stallation handelt, alle Business-Objekte fehlen, so dass ein in Abschnitt
3.1 bis 3.2 verwendetes BAPI zur Überprüfung des Internetbenutzers
nicht vorhanden ist. In diesem Zusammenhang tritt ein weiteres Pro-
blem auf, weitere Details finden Sie in Abschnitt 3.3.
Dennoch können Sie den größten Teil der Übungsaufgaben lösen,
indem Sie die Prüfung des Internetbenutzers auf dem betreffenden
Dynpro einfach weglassen.

Konfiguration des Die Übungsbeispiele für dieses Buch wurden auf einem R/3-System Re-
Verfassers lease 4.6B unter Windows NT entwickelt. Sie funktionieren jedoch auch
auf den Releases 4.6A, 4.6C und 4.6D. Die Releases ab 4.6C bieten an-
stelle des SAP@Webstudios einen R/3-internen Internetservice an. Die
IDES-Modellfirma war auf diesem R/3-System installiert, sie wird jedoch
für die Übungsbeispiele nicht benötigt.
Die Programmcodes funktionieren weitgehend auch auf dem älteren
Release 4.0, allerdings hat das SAPGUI 4.0 ein ganz anderes Aussehen.
Das SAPGUI, der ITS und das SAP@Web Studio wurden auf einem Win-
dows 2000-Rechner installiert.

1.1 Internet: Browser, Webserver installieren


Vorbemerkung Möglicherweise sind einige der benötigten Programme bereits instal-
liert. Erkundigen Sie sich deshalb zunächst bei Ihrem Administrator, und
stimmen Sie mit diesem Ihre Vorgehensweise ab. Von ihm werden Sie
auch die Installationsdateien erhalten. Sie benötigen für alle Installati-
onsarbeiten Administratorenrechte.

1. Installieren Sie den Webbrowser Internet Explorer 5.5.

Sehr wahrscheinlich wurde der Internet Explorer bereits mit Ihrem Win-
dows-Betriebssystem installiert. Für die Übungsbeispiele in diesem Buch
genügt das Release 4.0 aufwärts. Sie müssen in den meisten Fällen den
Browser nicht neu installieren.
Falls Sie doch neu installieren möchten: Den Internet Explorer 5.5 er-
halten Sie am einfachsten auf jenen zahllosen, den IT-Periodika bei-
gelegten, CDs. Sie können ihn auch von http://www.micro-
soft.com/downloads/default.asp? herunterladen. Sie benötigen die
Datei ie5setup.exe.

Schritte Starten Sie die Datei ie5setup.exe, s. Abbildung 1.1.

16
Installation R/3-Internet-Software 1
Abbildung 1.1
Begrüßungsbildschirm
der Installation des
Internet Explorers

Klicken Sie auf die Schaltfläche WEITER. Sie müssen bei Installation in
Windows 2000, anders als in Windows NT 4.0, nichts einstellen.

Abbildung 1.2
Installation.
Anschließend erfolgt der
Neustart des Computers.

2. Verschaffen Sie sich einen Internetzugang. Installieren Sie hierfür


ggf. auch einen Proxy-Server für Ihr lokales Netzwerk.

Ein Internetzugang ist für die Übungsaufgaben zwar nicht zwingend


notwendig, jedoch nützlich, um fehlende Komponenten herunterladen
zu können.

Die Installation des Webzuganges hängt sehr von Ihrem ISP (Internet Schritte
Service Provider) ab. Folgen Sie dessen Installationsanweisungen. In
den meisten Fällen werden Sie das DFÜ-Netzwerk von Windows NT
konfigurieren.
Einen Proxy-Server benötigen Sie, wenn Sie ein lokales Netzwerk ha-
ben, in dem nur ein Rechner über einen direkten Internetzugang, etwa
über eine ISDN-Karte, verfügt. Mittels eines Proxy-Servers gestattet
dieser den anderen Rechnern die Mitnutzung seines Internetzuganges.
So kann einem Entwicklerteam oder auch den Teilnehmern eines Lehr-
ganges von deren Arbeitsplatz aus Zugang zum Internet verschafft wer-
den.
Der Proxy wird auf dem Rechner, der den direkten Zugang z. B. über
eine ISDN-Karte herstellt, installiert. Windows 2000 verfügt über einen
integrierten Proxyserver, der nur noch aktiviert werden muss: SYSTEM-

1.1 Internet: Browser, Webserver installieren 17


1 Installation R/3-Internet-Software

STEUERUNG / NETZWERK- UND DFÜ-VERBINDUNGEN / KONTEXTMENÜ DER


FREIZUGEBENDEN DFÜ-VERBINDUNG / EIGENSCHAFTEN. Aktivieren Sie auf
;
dem Registerblatt FREIGABE das Ankreuzkästchen Gemeinsame Nut-
zung der Internetverbindung aktivieren.
Alternativ können Sie z. B. den Sambar Webserver 4.4 (derzeit Beta 5)
verwenden, der nebenbei auch noch die Aufgaben eines Proxy-Servers
erledigt. Sie erhalten ihn unter http://www.tucows.de/winnt/httpser-
vernt.html für Windows 2000 und NT 4.0. Starten Sie das Programm
setup.exe, und folgen Sie den Anweisungen. Weitere Informationen er-
halten Sie über die integrierte Online-Hilfe. Auf der Tucows-Seite finden
Sie darüber hinaus noch eine Reihe weiterer Proxy-Server.

3. Installieren Sie den Webserver IIS 5.0 für Windows 2000.

Erläuterung Der Webserver ist das Gegenstück zum Webbrowser. Er beherbergt


u. a. HTML-Dateien, Graphiken und multimediale Objekte in seinem
Dateisystem. Auf Anfrage eines Webbrowsers hin versendet er diesem
die angeforderten Dateien, die der Webbrowser – in der Funktion des
Clients im Client-Server-Modell – dann darstellt.
Mit der Installation eines Webservers verfügen Sie über eine Website,
die als Veröffentlichung von überall dort mittels eines Browsers abgeru-
fen werden kann, von wo aus Ihr Rechner über das TCP/IP-Protokoll er-
reichbar ist. Dies ist zunächst Ihr lokales Netzwerk (LAN = Local Area
Network). Von einem anderen LAN aus kann Ihre Website dann abge-
rufen werden, wenn es – auch über WAN-Verbindungen – über ent-
sprechend konfigurierte Router mit Ihrem LAN verbunden ist.
Im vorliegenden Werk wird der Leser angeleitet, den Webserver IIS (In-
ternet Information Server) von Microsoft auf seinem Rechner zu instal-
lieren.
Der Webserver (HTTP-Server) IIS 5.0 von Microsoft läuft auf Windows
2000. Die Serverversion von Windows 2000 erlaubt auch die Installa-
tion so genannter „virtueller Webserver“, die verschiedenen TCP/IP-
Ports zugeordnet sind. Die Professional-Version erlaubt nur einen Web-
server, der standardmäßig dem Port 80 zugeordnet ist.
Da dies ein Übungsbuch ist und da vermutlich mehr Leser an Windows
2000 Professional als an Server arbeiten, wird in diesem Werk durchge-
hend der „kleine Bruder“ des IIS 5.0 ohne virtuelle Webserver verwen-
det.
Die Übungsbeispiele lassen sich natürlich auch mit anderen CGI-, ISAPI-
oder NSAPI-fähigen Webservern durchspielen wie dem Netscape Enter-

18
Installation R/3-Internet-Software 1
prise Server 3.0 (mittlerweile: iPlanet Webserver 4.0), dem Apache
Webserver oder dem Sambar Webserver 4.4.
Wenn Sie Ihre fertige Entwicklung ins öffentliche WWW stellen wollen,
benötigen Sie einen Internet Service Provider (ISP), der Ihre Website auf
seinem Webserver aufnimmt.

Es gibt einen begrifflichen Unterschied zwischen Website und Web- Website vs.
seite. Unter Ersterem versteht man die gesamte Publikation eines Web- Webseite
servers, dessen Einstieg mit der Homepage beginnt, etwa
http://www.dekra-kl.de. Letzteres, eine Webseite, hingegen ist die
Darstellung einer HTML-Datei als Seite in einem Browser, etwa in-
halt.htm. Insofern ist sie von einem Webserver und damit von der Web-
site zumindest begrifflich unabhängig. Eine Website beinhaltet also viele
Webseiten.

Falls Sie mit Windows NT 4.0 arbeiten, können Sie den IIS 4.0 für
NT
NT Server oder die „Peer Web Services 3.0“ (= IIS 3.0) für NT Client
installieren. Spielen Sie dann das Servicepack SP 2 oder höher
wieder auf; Sie erhalten es im Download-Center der Microsoft
Homepage: http://www.microsoft.com/downloads/search.asp.
Der IIS 4.0 unterstützt auch virtuelle Webserver, ist jedoch Win-
dows NT Server vorbehalten.

In Windows 2000 installieren Sie den IIS 5.0 über die Systemsteuerung, Schritte
wie in Abbildung 1.3 gezeigt.

Abbildung 1.3
Starten Sie zur Installation
des IIS das Icon SOFTWARE.

1.1 Internet: Browser, Webserver installieren 19


1 Installation R/3-Internet-Software

Abbildung 1.4
Fügen Sie Windows-
Komponenten hinzu.

Abbildung 1.5

;
Aktivieren Sie
das Ankreuzkästchen
des IIS.

Nach dem Start der Installation des IIS müssen Sie die Windows 2000-
CD einlegen. Das Einrichten der Komponenten kann einige Minuten in
Anspruch nehmen.
Anschließend sollte der Webserver bereits aktiv sein. Sie können dies
nachsehen in der SYSTEMSTEUERUNG / VERWALTUNG, s. Abbildung 1.6.
bis Abbildung 1.8.

Abbildung 1.6
Öffnen Sie DIENSTE, dann
INTERNETDIENSTE-MANAGER.

20
Installation R/3-Internet-Software 1
Abbildung 1.7
Hier kontrollieren Sie, ob
der IIS gestartet ist.

Abbildung 1.8
Der Internetdienste-
Manager informiert über
wichtige Dateipfade.

4. Pflegen Sie die Proxy-Einstellungen des Browsers.

Nun wird es Zeit, Ihre neu geschaffene Website im Browser zu betrach- Erläuterung
ten. Hierfür benötigen Sie die IP-Adresse2 Ihres Rechners. Sie können
Sie einfach herausfinden über die Eingabeaufforderung (DOS-Fenster)

2. Hierfür muss das TCP/IP-Protokoll auf Ihrem Rechner installiert sein. Falls nicht:
SYSTEMSTEUERUNG / NETZWERKEINSTELLUNG UND DFÜ-VERBINDUNG / LAN-VER-
BINDUNG / EIGENSCHAFTEN / INSTALLIEREN... / PROTOKOLL / TCP-IP-PROTOKOLL.
Vergeben Sie die IP-Nummer und Subnetzmaske ähnlich wie in Abbildung 1.9.
Konsultieren Sie hierzu in jedem Falle Ihren Administrator.

1.1 Internet: Browser, Webserver installieren 21


1 Installation R/3-Internet-Software

durch Eingabe von ipconfig, s. Abbildung 1.9. Ein anderer Weg hierfür
ist SYSTEMSTEUERUNG / NETZWERK- UND DFÜ-VERBINDUNGEN / LAN-
VERBINDUNG / EIGENSCHAFTEN / INTERNETPROTOKOLL TCP/IP / EIGEN-
SCHAFTEN.

Abbildung 1.9
Die IP-Adresse dieses
Rechners lautet
172.17.109.125.

Schritte Starten Sie Ihren Browser. Falls Ihr Webzugang über einen Proxy-Server
erfolgt, müssen Sie noch Ihre Proxy-Einstellung abändern. Ihr Webser-
ver ist nämlich nur im lokalen Netzwerk sichtbar. Ihr Proxy-Server aller-
dings sucht im globalen Internet, wo er Ihren Webserver nicht findet.
Deshalb müssen Sie dem Browser mitteilen, dass er Ihre Website direkt
und nicht über den Proxy aufsucht: EXTRAS / INTERNETOPTIONEN, s. Ab-
bildung 1.10 bis Abbildung 1.12. Bei dieser Gelegenheit können Sie
auch schon den gewünschten Namen Ihrer Website – hier: http://
www.dekra-kl.de – dem Browser als lokal bekannt geben.

Abbildung 1.10
So gelangen Sie zu den
Proxy-Einstellungen.

22
Installation R/3-Internet-Software 1
Abbildung 1.11

;
Aktivieren Sie das
Ankreuzkästchen
PROXYSERVER FÜR LOKALE
ADRESSEN UMGEHEN.

Abbildung 1.12
Dieser Rechner befindet
sich im lokalen Subnetz
172.17.109.*, ebenso der
Server www.dekra-kl.de.
Beide sollen nicht über
den Proxy gerufen
werden.

5. Rufen Sie nun vom Browser aus die Standardwebseite des soeben
installierten Webservers durch Angabe der IP-Adresse auf.

Tippen Sie nun die IP-Adresse in das Adressfeld des Browsers. Die Stan- Schritte
dardwebseite sollte nun sichtbar werden, s. Abbildung 1.13 bis Abbil-
dung 1.16.

Abbildung 1.13
Die Standardseite des IIS,
da noch keine eigene
angelegt ist.

1.1 Internet: Browser, Webserver installieren 23


1 Installation R/3-Internet-Software

Abbildung 1.14
Gleichzeitig startet auch
die Online-
Dokumentation des IIS.

6. Pflegen Sie die hosts-Datei, welche die im Netz verwendeten Na-


men definiert. Rufen Sie vom Browser aus die Standardwebseite
über den Uniform Resource Locator (URL) des Webservers auf.

Erläuterung Das Eintippen der IP-Adresse im Browser ist mühselig, man vergisst sie
auch leicht. Deshalb gibt es im Internet und großen Intranets spezielle
Server für das Domain Name System (DNS, auch Domain Name Ser-
vice), welche die Zuordnung eines Rechnernamens, wie www.dekra-
kl.de, zu einer IP-Adresse, wie 172.17.109.125, vornehmen.
Für den lokalen Rechner gibt es eine einfache lokale Namensauflösung
über die Datei hosts, die Sie nun verwenden, um dem eigenen Server
einen Namen zu geben.

Schritte Tragen Sie die IP-Nummer und den Namen Ihres Rechners (hier:
www.dekra-kl.de) in die Datei C:\Winnt\system32\drivers\etc\hosts
mittels eines Texteditors ein, s. Abbildung 1.15.

Abbildung 1.15
Die hosts-Datei dient als
lokaler „DNS-Server“.

Nun können Sie Ihre Website auch durch Eingabe des Servernamens als
URL im Browser aufrufen, s. Abbildung 1.16.

24
Installation R/3-Internet-Software 1
Abbildung 1.16
Aufruf der eigenen
Website über einen URL.

Von anderen Rechnern Ihres lokalen Netzwerkes aus können Sie über
die Pflege der hosts-Datei und der Proxy-Einstellungen diese Website
ebenfalls aufrufen, s. Abbildung 1.17. Dort wird allerdings nur eine
Seite „Under Construction“ zu sehen sein. In Kapitel 2 wird dann eine
eigene Homepage entworfen, die diese Standardseiten ersetzt.

Abbildung 1.17
Die Website, von einem
anderen Rechner im
lokalen Netzwerk aus
gesehen

1.2 Internet Transaction Server installieren


Der Webserver hat zunächst keinen eingebauten Zugang zu einem SAP
R/3-Anwendungsserver. R/3 wiederum wurde vorrangig für Zugriffe
über das SAPGUI konzipiert. Der Internet Transaction Server (ITS) stellt
das Bindeglied zwischen beiden dar. Er besteht aus zwei Teilen: WGate
(Web Gate) und AGate (Application Gate).
Das WGate, die eine Hälfte des ITS, kommuniziert über die CGI-, ISAPI-
oder NSAPI-Schnittstelle mit dem Webserver und muss deshalb auf des-
sen Rechner installiert werden. Im Falle des hier verwendeten IIS von
Microsoft erfolgt die Kommunikation über die ISAPI-Schnittstelle. Das
WGate wird für Windows 2000, Windows NT 4.0 und Unix (auch Li-
nux) ausgeliefert.
Das AGate, die andere Hälfte des ITS, können Sie wahlweise auf dem
Webserver-Rechner, dem R/3-Rechner oder einem dazwischengeschal-
teten Rechner installieren. In diesem Buch wird, der Einfachheit halber,
die erste Variante gewählt, dies nennt man eine Single-Host-Installa-
tion. Das AGate kommuniziert über TCP/IP sowohl mit dem WGate als
auch mit dem R/3-Anwendungsserver.

1.2 Internet Transaction Server installieren 25


1 Installation R/3-Internet-Software

Die so beschriebene Konfiguration genügt für eine Veröffentlichung im


eigenen Intranet. Für eine Veröffentlichung im WWW benötigen Sie,
wie bereits erwähnt, einen ISP, der Ihre Webseiten auf seinem Webser-
ver verfügbar macht („hostet“). Auf diesem Rechner muss der ITS, zu-
mindest das WGate, installiert werden. Obendrein benötigt der Web-
server-Rechner eine permanente Online-Verbindung über TCP/IP zum
AGate und von hier aus zu Ihrem R/3-Anwendungsserver.

7. Beschaffen Sie sich eine zweite Benutzerkennung ITSADM für das


R/3-System.

Erläuterung Aus lizenzrechtlichen Gründen darf sich ein R/3-Benutzer nur einmal
am R/3-System anmelden. Versucht er es ein zweites Mal unter dersel-
ben Kennung, erfolgt ein Warnhinweis, s. Abbildung 1.18.

Abbildung 1.18
Diese Meldung erscheint
beim Anmelden an R/3,
wenn derselbe Benutzer
bereits angemeldet ist.
(© SAP AG)

Der ITS benötigt die Benutzerdaten – Name, Kennwort, Mandant –


eines normalen Dialogbenutzers, da er sich, ähnlich wie Sie mit dem
SAPGUI, über das DIAG-Protokoll an R/3 anmeldet. Den gezeigten
Warnhinweis erhalten Sie deshalb auch dann, wenn der ITS sich nach
einem IAC-Aufruf am System unter derselben Benutzerkennung ange-
meldet hat, unter der Sie sich, wenig später, über das SAPGUI anmel-
den.
Deshalb benötigen Sie eine zweite Benutzerkennung, die nur der ITS
verwendet. Diese Kennung benötigt ausreichend Berechtigungen, um
die Standard-WebTransactions und Ihre eigenen Kunden-WebTransac-
tions starten zu können.

26
Installation R/3-Internet-Software 1
Der Verfasser verwendet zum Anmelden über das SAPGUI die Kennung
UMLAUFF, zum Anmelden des ITS die Kennung ITSADM. Beide verfügen
über die Berechtigungsprofile SAP_ALL und SAP_NEW, die als Superuserpro-
file beim Entwickeln von Transaktionen die wenigsten Probleme berei-
ten. Für den Produktivbetrieb müssen allerdings aus Sicherheitsgründen
die Berechtigungen von ITSADM auf die benötigten Transaktionen be-
schränkt werden.

Wenn der Benutzer ITSADM über zu wenige Berechtigungen verfügt,


funktioniert der IAC-Aufruf über Browser und ITS nicht!

Das Anlegen von Benutzern ist exklusives Privileg des Administrators! Schritte
Folgende Schritte führen Sie bitte nur durch, wenn Ihnen dies der Admi-
nistrator erlaubt hat und Sie selbst die nötigen Berechtigungen haben.
Starten Sie Werkzeuge / Administration / Benutzerpflege / Benutzer
und pflegen Sie die Einstellungen entsprechend Abbildung 1.19 bis Ab-
bildung 1.23. Melden Sie sich mit dem SAPGUI neu an und vergeben
Sie das endgültige Kennwort.

Abbildung 1.19
So legt ein Administrator
einen Benutzer im R/3 an.
(© SAP AG)

Abbildung 1.20
Pflege der Adressdaten
des Benutzers ITSADM
(© SAP AG)

1.2 Internet Transaction Server installieren 27


1 Installation R/3-Internet-Software

Abbildung 1.21
Eintragen eines
Initialkennworts
(© SAP AG)

Abbildung 1.22
Diese Superuserprofile
sorgen für problemlose
IAC-Entwicklung, sind
aber für Produktivzwecke
zu unsicher.
(© SAP AG)

Abbildung 1.23
Erstanmeldung: Dieses
Kennwort müssen Sie dem
ITS zur Benutzerkennung
ITSADM mitgeben.
(© SAP AG)

8. Beschaffen Sie sich die Installationsdateien für den Internet Trans-


action Server.

Schritte Den ITS finden Sie im Internet unter http://www.saplabs.com/its (Da-


tei setupits46d_325330.exe für Release 4.6D, setupits46b_266017.exe
für Release 4.6B) oder auf der SAP R/3-Präsentationsserver-CD. Sie
können ein höheres Release des ITS gegenüber Ihrem R/3-Release in-
stallieren, benötigen dann aber das zum R/3-Release passende IAC-
Package. Für Release 4.6B heißt das IAC-Package 46b_all.car. Sie fin-
den es auf der gleichen Download-Seite; hier können Sie auch das
SAP@Web Studio herunterladen, s. Abschnitt 1.3.

28
Installation R/3-Internet-Software 1

9. Legen Sie einen ITS-Administrator mit Administrationsrechten und


eine ITS-Benutzergruppe auf dem NT-Rechner an, auf dem der ITS
installiert werden soll.

Der ITS-Administrator und die ITS-Benutzergruppe werden benötigt, Erläuterung


um den ITS gegen unbefugte Zugriffe zu schützen. Dies ist von großer
Bedeutung für den Produktivbetrieb des Webauftritts, wo mit Hacker-
angriffen gerechnet werden muss. Bei der Installation des ITS müssen
beide Benutzereinstellungen angegeben werden.

Legen Sie in Windows den Benutzer ITSADM an: SYSTEMSTEUERUNG / Schritte


BENUTZER UND KENNWÖRTER, s. Abbildung 1.24. bis Abbildung 1.27.

Abbildung 1.24
Hinzufügen eines
Benutzers

Abbildung 1.25
Informationen zum
Benutzer ITSadm

Abbildung 1.26
Vergeben des Kennwortes

1.2 Internet Transaction Server installieren 29


1 Installation R/3-Internet-Software

Abbildung 1.27
Der ITSadm benötigt
Administrationsrechte zur
Installation

Legen Sie die Benutzergruppe ITSUSER an: SYSTEMSTEUERUNG / BENUT-


ZER UND KENNWÖRTER / ERWEITERT, s. Abbildung 1.28 bis Abbildung
1.31

Abbildung 1.28
Anlegen einer
Benutzergruppe

Abbildung 1.29
Benutzergruppe ITSUSER
anlegen mit VORGANG /
NEUE GRUPPE...

Abbildung 1.30
Gruppenmitglieder haben
Zugriffsrecht auf die
Dateien des ITS.

30
Installation R/3-Internet-Software 1
Abbildung 1.31
Hinzufügen der
Gruppenmitglieder

10.Melden Sie sich als ITSADM am Windows-System neu an.


Installieren Sie den ITS.

Es wird eine Single-Host-Installation durchgeführt: Sowohl das AGate Erläuterung


als auch das WGate befinden sich auf dem gleichen Rechner wie der
Webserver. Für Produktivzwecke wählt man aus Performance-Gründen
besser eine Dual-Host-Installation, bei der WGate – dieses muss auf
dem gleichen Rechner wie der Webserver installiert werden – und
AGate sich auf verschiedenen Rechnern befinden und über TCP/IP ver-
bunden sind. Dann kann man nicht nur das WGate, sondern auch das
AGate mit jeweils einer eigenen Firewall vor Hackerattacken schützen.

Melden Sie sich ab mit START / BEENDEN / "[AKTUELLER BENUTZER]" AB- Schritte
MELDEN. Melden Sie sich nun als ITSADM mit dem vorhin gewählten
Kennwort an.
Starten Sie die aus dem WWW heruntergeladene Datei setupits46d_
325330.exe3 (oder die entsprechende Datei von der SAP-Präsentations-
CD) über START / AUSFÜHREN / DURCHSUCHEN..., s. Abbildung 1.32 bis
Abbildung 1.48.

3. Hier wird die Installation des ITS Release 4.6D gezeigt. Da dieses beim Verfasser
den Bug offenbarte, die Icon-Anzeige der SAPGUI 4.6B zu ruinieren, musste an-
schließend das etwas ältere ITS-Release 4.6B (Datei setupits46b_266017.exe)
verwendet werden. Hinsichtlich der Installationsschritte unterscheiden sich die
beiden Releases nicht.

1.2 Internet Transaction Server installieren 31


1 Installation R/3-Internet-Software

Abbildung 1.32
Installation des ITS
(© SAP AG)

Abbildung 1.33
Single-Host: WGate und
AGate auf einem Rechner
(© SAP AG)

Abbildung 1.34
Empfehlung:
Programmpfad auf
deutschen Standard
setzen (© SAP AG)

32
Installation R/3-Internet-Software 1

~
Abbildung 1.35
Typical installiert
eine ITS-Instanz für

~
den Aufruf von IACs,
Administration in
einem zweiten Durchgang
das Administrationstool.
(© SAP AG)

Abbildung 1.36
Als Name des ITS
empfiehlt sich der Name
des R/3-Systems.
(© SAP AG)

Abbildung 1.37
Zuordnung der ITS-
Instanz zum IIS-
Webserver
(© SAP AG)

Abbildung 1.38
URL zur Homepage
des Webservers
(© SAP AG)

1.2 Internet Transaction Server installieren 33


1 Installation R/3-Internet-Software

Abbildung 1.39
Auswahl des IAC-
Packages 46b_all.car mit
den Standard-IACs; das
IAC-Release muss mit
dem R/3-Release
übereinstimmen., s.
Aufgabe 7 (© SAP AG)

Abbildung 1.40
Diese Warnmeldung
erscheint auch bei der
Erstinstallation.
(© SAP AG)

Abbildung 1.41
Für Übungszwecke
genügt ein AGate.
Mehrere AGates können
zur Lastverteilung
eingesetzt werden.
(© SAP AG)

~Default configuration
Abbildung 1.42

MB RAM, ~Minimize
benötigt mindestens 128

memory usage
mindestens 32 MB RAM.
(© SAP AG)

Abbildung 1.43
Anbindung des ITS an das
R/3-System mit den
gleichen Anmeldedaten
wie bei dem SAPGUI
(© SAP AG)

34
Installation R/3-Internet-Software 1
Abbildung 1.44
Festlegen der Anmeldung
am R/3; hier direkt am
Anwendungsserver, ohne
Lastverteilung (© SAP AG)

Abbildung 1.45
Mittlere Sicherheit: Nur
Benutzer ITSADM und
Mitglieder von ITSUSER
haben Zugriff auf ITS-
Dateien (© SAP AG).

Abbildung 1.46
Account und Kennwort
des ITS-Administrators
und der ITS-
Benutzergruppe zur
Nutzung der Windows
NT-Sicherheitsmecha-
nismen (© SAP AG)

1.2 Internet Transaction Server installieren 35


1 Installation R/3-Internet-Software

Abbildung 1.47
URL zum eigenen
Webserver (© SAP AG)

Abbildung 1.48
Anschließend beginnt die
Installation, sie dauert
einige Minuten.
(© SAP AG)

Nach erfolgter Installation können Sie noch die Release-Notes lesen, der
Rechner muss neu gestartet werden.

11.Kontrollieren Sie, ob der ITS gestartet ist. Betrachten Sie im Browser


die neue Website mit den Standard-IACs. Erkunden Sie die Stan-
dard-IAC ONLINE-STORE. Geben Sie eine Bestellung auf, lassen Sie
sich eine Kundennummer geben.

Erläuterung Ziel dieser Aufgabe ist es, einen ersten Überblick über die Funktion des
ITS zu erhalten. Hierzu wird eine Standard-IAC eingehend betrachtet.
Nach dem Durcharbeiten des vorliegenden Werkes sind Sie imstande,
derartige IACs selbst zu entwickeln.
Mit der Installation des ITS wurde eine Datei C:\Inetpub\wwwroot\de-
fault.htm angelegt; dies ist die Standardseite, die der Webserver liefert,
falls der URL keinen Dateipfad enthält. Sie ersetzt nun die Standardseite
des Webservers, dies waren localstart.asp respektive iisstart.asp. Sie fin-
den sie im Windows Explorer, s. Abbildung 1.49.

Abbildung 1.49
Standardwebseite
default.htm des
Webservers

36
Installation R/3-Internet-Software 1
Der ITS wurde als Dienst installiert: SYSTEMSTEUERUNG / VERWALTUNG / Schritte
DIENSTE, s. Abbildung 1.50.

Abbildung 1.50
Die ITS-Instanz ist
gestartet.

Starten Sie nun den Browser, und gehen Sie auf Ihre Website, s. Abbil-
dung 1.51 bis Abbildung 1.64. Die Transaktion WW20 (Online-Store) des
R/3-Standards muss implementiert sein – bei dem mysap.com 4.6B on
Linux Test-Drive, s. Abschnitt 1.5, ist dies nicht der Fall, da es sich nur
um eine reine R/3-Basis handelt. Die Daten für den Online-Store stam-
men aus dem IDES-System.

Abbildung 1.51
Nach Installation des ITS:
Homepage der Standard-
IACs (© SAP AG)

Abbildung 1.52
Deutsche Fassung der
IAC-Homepage: Zum
Online-Store (© SAP AG)

1.2 Internet Transaction Server installieren 37


1 Installation R/3-Internet-Software

Abbildung 1.53
Start der Standard-IAC
Online-Store (© SAP AG)

Abbildung 1.54
Zum deutschen
Computer-Store
(© SAP AG)

Abbildung 1.55
Leider installiert der ITS
nicht alle benötigten
Bilder. (© SAP AG)

Abbildung 1.56
Nach der Auswahl von
Hardware weiter zu den
PC-Systemen (© SAP AG)

38
Installation R/3-Internet-Software 1
Abbildung 1.57
Füllen des
Einkaufskorbes; weiter
zum EINKAUFSKORB /
BESTELLEN. In diesem IDES-
System sind leider die
Preise nicht gepflegt.
(© SAP AG)

Abbildung 1.58
Der Online-Store
registriert seine Kunden
in R/3. (© SAP AG)

Abbildung 1.59
Die Registrierung erfolgt
beim ersten Einkauf.
(© SAP AG)

Abbildung 1.60
Erfassung der
Kundendaten
(© SAP AG)

1.2 Internet Transaction Server installieren 39


1 Installation R/3-Internet-Software

Abbildung 1.61
Vergabe der
Kundennummer,
Festlegen des Kennwortes
(© SAP AG)

Abbildung 1.62
Merken Sie sich Ihre
Kundennummer!
(© SAP AG)

Abbildung 1.63
Absenden des fertigen
Bestellformulars
(© SAP AG)

40
Installation R/3-Internet-Software 1
Abbildung 1.64
Die Bestellung wurde in
R/3 generiert. Ihr R/3-
Administrator liefert sie
freundlicherweise frei
Haus ... (© SAP AG)

1.3 SAP@Web Studio installieren

1. Installieren Sie das SAP@Web Studio.

Das SAP@Web Studio – der HTMLBusiness-Editor von SAP – finden Sie im Erläuterung
WWW unter http://www.saplabs.com/its als Datei setupstudio46d_
314924.exe zum Herunterladen. Sie befindet sich auch auf der SAP
R/3-Präsentationsserver-CD. Ab Release 4.6C können Sie stattdessen
den R/3-internen Internetservice verwenden.

Starten Sie die aus dem WWW heruntergeladene Datei setupstudio- Schritte
46d_314924.exe (oder die entsprechende Datei von der SAP-Präsenta-
tionsserver-CD) über START / AUSFÜHREN / DURCHSUCHEN..., s. Abbil-
dung 1.65 bis Abbildung 1.67.

Abbildung 1.65
Installation des
SAP@Web Studios
(© SAP AG)

1.3 SAP@Web Studio installieren 41


1 Installation R/3-Internet-Software

Abbildung 1.66
Auswahl des
Installationspfades
(© SAP AG)

Abbildung 1.67
Nach der Installation
erscheinen auch die
Release-Notes.
(© SAP AG)

Starten Sie das SAP@Web Studio mit START / PROGRAMME / SAP@WEB


STUDIO / STUDIO 4.6D, s. Abbildung 1.68.

Abbildung 1.68
SAP@Web Studio nach der
Installation, noch ohne
Projekt (© SAP AG)

42
Installation R/3-Internet-Software 1

1.4 SELFHTML einrichten


Das vorliegende Werk vermittelt Ihnen einige grundlegende HTML- Vorbemerkung
Kenntnisse, jedoch nur insoweit, als dies für die nachfolgende IAC-Ent-
wicklung notwendig ist. Für weitergehendes Erlernen von HTML emp-
fiehlt der Verfasser SELFHTML von Stefan Münz, das kein Programm ist,
sondern ein umfassendes Kompendium über HTML und vieles weitere,
was mit Internet und Webdesign zusammenhängt. Es ist in HTML ver-
fasst und kann mit dem Browser gelesen werden. Sie können die Datei
selfhtml.zip von der Website http://www.teamone.de/selfaktuell/ex-
tras/download.htm herunterladen.
Das Kompendium ist zwar kostenlos erhältlich, der Autor Stefan Münz
freut sich aber über Spenden für seine geleistete Arbeit, s. SELFHTML /
EDITORIAL / HINWEISE ZUM DOKUMENT / SPENDEN. Wenn Sie aus seinem
Werk Nutzen gezogen haben und es sich leisten können, wäre eine
Spende sicherlich angebracht.

1. Richten Sie das Kompendium SELFHTML von Stefan Münz ein.

Benutzen Sie SELFHTML beim weiteren Bearbeiten der Übungsaufga-


ben stets zum Nachschlagen allgemeiner Fragen zu HTML, WWW oder
dem Internet.

Zum Dekomprimieren und Entpacken von Archiven können Sie – wie Erläuterung
hier gezeigt – die Shareware Winzip verwenden. Man benötigt ein der-
artiges Tool für die meisten heruntergeladenen Programme. Erhältlich ist
es unter http://www.winzip.de.

Shareware ist keine Freeware! Nach Ablauf der vom Autor/Eigen-


tümer festgelegten Evaluationsphase (meist 30 Tage) muss sie
lizenziert werden! Mit dem Erwerb der Lizenz fördern Sie die
Weiterentwicklung des jeweiligen Programms.

Auf der TUCOWS-Seite finden Sie neben Winzip eine Vielzahl


gleichwertiger Shareware und Freeware zum Packen und Entpacken:
http://www.tucows.de/win2k/comp2k.html für Windows 2000,
http://www.tucows.de/winnt/compnt.html für Windows NT 4.0.

1.4 SELFHTML einrichten 43


1 Installation R/3-Internet-Software

Schritte Entzippen Sie die Datei selfhtml.zip in einen neu anzulegenden Ordner,
z. B. nach C:\Selfhtml\ (siehe Abbildung 1.69).

Abbildung 1.69
Extrahieren von
selfhtml.zip mit Winzip

2. Suchen Sie in SELFHMTL das Kapitel HTML auf.

Schritte Starten Sie dann im Browser die Datei C:\Selfhtml\selfhtml.htm mit


DATEI / ÖFFNEN...
Neben einer umfassenden Beschreibung der WWW-Sprache HTML fin-
den Sie viele weitere Kapitel zum Thema Webdesign und Internet, die
im Rahmen dieses Buches leider nicht behandelt werden können. Sie
können, wie im WWW üblich, über Verweise – so genannte Hyperlinks
– zu den einzelnen Themen navigieren, so wie dies in Abbildung 1.70
und Abbildung 1.71 dargestellt ist.

Abbildung 1.70
SELFHTML ist ein
umfassendes
Kompendium für
Webdesigner.

44
Installation R/3-Internet-Software 1
Abbildung 1.71
In diesem Kapitel ist alles
Wissenswerte zu HTML zu
finden.

Es lohnt sich, im Kapitel HTML zu stöbern. SELFHTML ist auch ein gutes
Nachschlagewerk, um die benötigten HTML-Tags (s. Kapitel 2) zu su-
chen oder um die Bedeutung unbekannter HTML-Tags zu finden.

1.5 Übungsszenario im Dictionary einrichten


Die in diesem Werk durchgängig als Grundlage der Übungsbeispiele he- Vorbemerkung
rangezogene Datenbank WERTPAPIERDEPOTVERWALTUNG des DEKRA EF-
FEKTEN KONTORS muss in R/3 eingerichtet werden. Im Dictionary sind
die zugehörigen Domänen, Datenelemente und Tabellen mit deren rela-
tionalen Beziehungen (Prüftabellen) anzulegen. Dabei können Sie zwi-
schen folgenden beiden Alternativen wählen:
• Alternative A: Eigenhändiges Anlegen aller Objekte mit den Werk-
zeugen Dictionary und ABAP Editor
• Alternative B: Einspielen eines Transports
Die leeren Tabellen werden anschließend mittels des ABAP-Reports ZDA-
TINS mit Beispieldaten gefüllt.

1. Beschaffen Sie das Übungsszenario von der Website der DEKRA-


Akademie GmbH.

1.5 Übungsszenario im Dictionary einrichten 45


1 Installation R/3-Internet-Software

Schritte Der Report ZDATINS ist, zusammen mit Beschreibungen der Dictionary-
Objekte, im Archiv abap.zip zum Herunterladen unter http://www.de-
kra-akademie.de/download erhältlich. Dort finden Sie auch, für die Al-
ternative B zur nachfolgenden Aufgabe, den Transport LNXK900006 sowie
die an anderen Stellen erwähnten Transporte.

Auswahl der Das Übungsszenario können Sie entweder eigenhändig im ABAP Dictio-
Alternative nary und mit dem ABAP Editor anlegen, dies wird in Alternative A der
Aufgabe gezeigt. Ein kürzerer, aber konfliktträchtigerer Weg ist die
Alternative B (s. Anhang B), die Objekte des Übungsszenarios per
Transport LNXK900006 anzulegen.
Wenn Sie den Umgang mit der ABAP Workbench trainieren wollen,
wählen Sie Alternative A. Sie legen dann die Entwicklungsklasse ZDEKRA
und die darin enthaltenen Domänen, Datenelemente, Tabellen und
Fremdschlüsselbeziehungen an. Schließlich legen Sie den Report ZDATINS
an und starten ihn.
Alternative B sollten Sie nur unter folgenden Voraussetzungen wählen:
1. Sie verfügen bereits über sehr gute Übung im Umgang mit ABAP
Dictionary und ABAP Editor.
2. Sie interessieren sich auch für Administrationsaufgaben und das
Transportwesen von R/3.
3. Sie haben einen im Transportwesen erfahrenen Administrator zur
Hand, der Ihnen bei Komplikationen zur Seite steht.

Alternative A Legen Sie die Dictionary-Objekte, relationale Beziehungen und einen


Report in R/3 an, wie es in der Anleitung Liesmich.rtf beschrieben ist.
Verwenden Sie hierzu einen Änderungsauftrag und eine Entwicklungs-
klasse ZDEKRA

2. Legen Sie mit dem Workbench Organizer einen Änderungsauftrag


an.

Erläuterung Soll der Änderungsauftrag transportierbar sein, muss das Transportsys-


tem entsprechend vom Administrator eingerichtet worden sein. Für die
Übungen genügt notfalls auch ein lokaler Änderungsauftrag.

Schritte Starten Sie den Workbench Organizer vom SAP-Menü aus, und legen
Sie einen Änderungsauftrag an, s. Abbildung 1.72 bis Abbildung 1.75.

46
Installation R/3-Internet-Software 1
Abbildung 1.72
SAPGUI eines IDES-
Systems. Für die Übungen
genügt ein R/3-System
ohne IDES-Mandant und
dessen Beispieldaten und
-programme. (© SAP AG)

Abbildung 1.73
Anlegen eines
transportierbaren
Änderungsauftrages
(© SAP AG)

Abbildung 1.74
Eigenschaftspflege des
Änderungsauftrages
(© SAP AG)

1.5 Übungsszenario im Dictionary einrichten 47


1 Installation R/3-Internet-Software

Abbildung 1.75
Änderungsauftrag und
Aufgabe für den
Entwickler (© SAP AG)

3. Legen Sie die Entwicklungsklasse ZDEKRA an..

Schritte Starten Sie vom SAP-Menü aus WERKZEUGE / ABAP WORKBENCH /


ÜBERSICHT / OBJECT NAVIGATOR, s. Abbildung 1.76 bis Abbildung 1.78.
Anschließend wird die Entwicklungsklasse dem Änderungsauftrag zu-
geordnet.

Abbildung 1.76
Object Navigator zum
Anlegen von Objekten
(© SAP AG)

Abbildung 1.77
Anlegen einer
Entwicklungsklasse
(© SAP AG)

48
Installation R/3-Internet-Software 1
Abbildung 1.78
Eigenschaftspflege der
Entwicklungsklasse
(© SAP AG)

4. Legen Sie die Domäne Z_NR im ABAP Dictionary an.

Sie starten wiederum mit dem Object Navigator der ABAP Workbench, Schritte
s. Abbildung 1.79 bis Abbildung 1.82. Mit dem Aktivieren ordnen Sie
die Domäne der Entwicklungsklasse ZDEKRA und Ihrem Änderungsauf-
trag zu.

Abbildung 1.79
Anlegen einer Domäne
(© SAP AG)

Abbildung 1.80
Beim erstmaligen
Anlegen eines
Entwicklungsobjektes
wird der
Entwicklerschlüssel
abgefragt.
(© SAP AG)

1.5 Übungsszenario im Dictionary einrichten 49


1 Installation R/3-Internet-Software

Abbildung 1.81
Pflege des Formats und
der Ausgabeeigen-
schaften der Domäne
(© SAP AG)

Abbildung 1.82
Aktivieren der Domäne
mit gleichzeitigem
Speichern (© SAP AG)

5. Legen Sie in ähnlicher Weise die fehlenden Domänen an.

Schritte Das Übungsszenario benötigt folgende Domänen:


Domäne Datentyp Länge Ausgabelänge

Z_NR NUMC 10 10
Z_NAME CHAR 15 15
Z_BESCHR CHAR 20 20
Z_DATUM DATS 8 10
Z_KURSWERT DEC 10 13
Z_DEPOTTYP CHAR 1 1

6. Legen Sie das Datenelement Z_KUNDENNR im Dictionary an.

Schritte Legen Sie das Datenelement mit dem Object Navigator an, s. Abbildung
1.83 bis Abbildung 1.85. Mit dem Aktivieren ordnen Sie das Datenele-
ment der Entwicklungsklasse ZDEKRA und Ihrem Änderungsauftrag zu.

50
Installation R/3-Internet-Software 1
Abbildung 1.83
Anlegen eines
Datenelements
(© SAP AG)

Abbildung 1.84
Zuordnung einer Domäne
zum Datenelement
(© SAP AG)

Abbildung 1.85
Pflege der Feldbezeichner
des Datenelements
(© SAP AG)

7. Legen Sie in ähnlicher Weise die fehlenden Datenelemente an.

Das Übungsszenario benötigt folgende Datenelemente: Schritte


Datenelement Domäne Datenelement Domäne

Z_WKN Z_NR Z_WOHNORT Z_NAME


Z_DEPOTNR Z_NR Z_EMITTENT Z_NAME
Z_KUNDENNR Z_NR Z_WPTITEL Z_BESCHR
Z_ANZAHL Z_NR Z_DATUM Z_DATUM
Z_NAME Z_NAME Z_KURS Z_KURSWERT
Z_VORNAME Z_NAME Z_DEPOTTYP Z_DEPOTTYP

8. Legen Sie die Datenbanktabelle ZKUNDEN als Anwendungstabelle


(Stamm- und Bewegungdaten) an. Tabellenpflege – Dateneingabe
mittels des Data Browsers – soll erlaubt sein.

1.5 Übungsszenario im Dictionary einrichten 51


1 Installation R/3-Internet-Software

Schritte Legen Sie die Datenbanktabelle mit dem Object Navigator an, s. Abbil-
dung 1.86 bis Abbildung 1.92. Mit dem Aktivieren ordnen Sie die Da-
tenbanktabelle der Entwicklungsklasse ZDEKRA und Ihrem Änderungsauf-
trag zu. Danach werden automatisch die technischen Eigenschaften
abgefragt.

Abbildung 1.86
Anlegen einer
Datenbanktabelle
(© SAP AG)

Abbildung 1.87
Pflege der
Tabelleneigenschaften
(© SAP AG)

Abbildung 1.88
Anlegen der
Tabellenfelder; Anlegen
eines Feldes als
Fremdschlüssel
(© SAP AG)

Abbildung 1.89
Mandantentabelle T000
wird als Prüftabelle
vorgeschlagen.
(© SAP AG)

52
Installation R/3-Internet-Software 1
Abbildung 1.90
Die vorgeschlagene
Fremdschlüsseldefinition
ist korrekt und kann
übernommen werden.
(© SAP AG)

Abbildung 1.91
Die aktivierte Tabelle mit
Fremdschlüssel
(© SAP AG)

Abbildung 1.92
Pflege der technischen
Einstellungen der Tabelle;
anschließend: Speichern
und zurück zum Object
Navigator (© SAP AG)

9. Legen Sie die Tabelle ZDEPOT an. Das Feld KUNDENNR ist ein Fremd-
schlüssel auf den Primärschlüssel der Prüftabelle ZKUNDEN

Legen Sie die Tabelle ZDEPOT ähnlich wie die Tabelle ZKUNDEN an, und er- Schritte
gänzen Sie in der Zeile KUNDENNR die Fremdschlüsselbeziehung, s. Abbil-
dung 1.93 bis Abbildung 1.96.

1.5 Übungsszenario im Dictionary einrichten 53


1 Installation R/3-Internet-Software

Abbildung 1.93
Tabelle ZDEPOT; Anlegen
Fremdschlüssel für ein
Feld (© SAP AG)

Abbildung 1.94
Prüftabelle angeben
(© SAP AG)

Abbildung 1.95
Der Vorschlag wird
aufgrund gleicher
Domänen der Felder
erstellt. (© SAP AG)

Abbildung 1.96
Dieser Vorschlag ist
korrekt und kann
übernommen werden.
(© SAP AG)

10.Legen Sie in ähnlicher Weise die fehlenden Tabellen an.

54
Installation R/3-Internet-Software 1
Das Übungsszenario benötigt folgende Tabellen: Schritte

Tabelle Felder Schlüssel Datenelement Prüftabelle

ZKUNDEN MANDT ; MANDT T000


KUNDENNR ; Z_KUNDENNR
NAME … Z_NAME
VORNAME … Z_VORNAME
WOHNORT … Z_WOHNORT
ZDEPOT MANDT ; MANDT T000
DEPOTNR ; Z_DEPOTNR
KUNDENNR … Z_KUNDENNR ZKUNDEN
DEPOTTYP … Z_DEPOTTYP
ZDEPOTPSTN MANDT ; MANDT T000
DEPOTNR ; Z_DEPOTNR ZDEPOT
WKN ; Z_WKN ZWPAPIER
ANZAHL … Z_ANZAHL
ZWPAPIER MANDT ; MANDT T000
WKN ; Z_WKN
TITEL … Z_WPTITEL
EMITTENT … Z_EMITTENT
ZKURSE MANDT ; MANDT T000
WKN ; Z_WKN ZWPAPIER
DATUM ; Z_DATUM
KURS … Z_KURS

11.Legen Sie den Report ZDATINS an.

Den Programmcode finden Sie in der Datei zdatins.txt aus dem Archiv Erläuterung
abap.zip. Öffnen Sie die Datei mit dem Windows-Editor, s. Abbildung
1.100.

Legen Sie den Report ZDATINS an, s. Abbildung 1.97 bis Abbildung Schritte
1.101. Der Report muss der Entwicklungsklasse ZDEKRA sowie dem Än-
derungsauftrag zugeordnet und schließlich aktiviert werden.

Abbildung 1.97
Anlegen des Reports
ZDATINS (© SAP AG)

Abbildung 1.98
Dieser Report bedarf
keiner Include-Technik.
(© SAP AG)

1.5 Übungsszenario im Dictionary einrichten 55


1 Installation R/3-Internet-Software

Abbildung 1.99
Eigenschaftspflege des
Reports (© SAP AG)

Abbildung 1.100
Markieren des
Programmcodes ab der
zweiten Zeile; mit
BEARBEITEN / KOPIEREN in die
Zwischenablage
(© SAP AG)

Abbildung 1.101
Einfügen des
Programmcodes in den
Report (© SAP AG)

12. Füllen Sie die Tabellen mit dem Report ZDATINS.

Erläuterung Nach dem Anlegen aller Objekte – oder nach erfolgreichem Transport
LNXK900006 – sind alle Dictionary-Objekte und der Report ZDATINS der
Entwicklungsklasse ZDEKRA in der ABAP Workbench sichtbar: WERKZEUGE
/ ABAP WORKBENCH / ÜBERSICHT / OBJECT NAVIGATOR. Der Report
ZDATINS fügt in alle Tabellen eine große Anzahl an Beispieldaten ein.

Schritte Starten Sie den Report ZDATINS aus der Entwicklungsklasse ZDEKRA her-
aus: KONTEXTMENÜ REPORT ZDATINS / AUSFÜHREN / DIREKT, s. Abbil-
dung 1.102 bis Abbildung 1.105.

56
Installation R/3-Internet-Software 1
Abbildung 1.102
Entwicklungsklasse
ZDEKRA; Start des Reports
ZDATINS über das
Kontextmenü
(© SAP AG)

Abbildung 1.103
Komplettgenerierung der
Beispieldaten ohne
Parametereingabe
(© SAP AG)

Abbildung 1.104
Diese Liste darf keine
Fehlermeldungen
enthalten. Ursachen sind
dann meist fehlerhaft
angelegte Dictionary-
Objekte.
(© SAP AG)

Betrachten Sie auch die Tabelleninhalte im Data Browser, z. B. die Ta-


belle ZKUNDEN: KONTEXTMENÜ ZKUNDEN / TABELLENINHALT, s. Abbildung
1.105 bis Abbildung 1.106.

1.5 Übungsszenario im Dictionary einrichten 57


1 Installation R/3-Internet-Software

Abbildung 1.105
Data Browser mit der
Tabelle ZKUNDEN
(© SAP AG)

Abbildung 1.106
Die Tabellen sind nun mit
Beispieldaten gefüllt.
(© SAP AG)

Nun ist Ihre Systemumgebung inklusive des R/3-Systems komplett ein-


gerichtet, um eine Beispiel-IAC zu entwickeln.

58
Die erste Homepage im Intranet 2

Kapitel 2
Die erste Homepage im
Intranet
In diesem Kapitel richten Sie sich Ihre erste eigene Website ein. Sie legen Vorbemerkung
HTML-Dateien an, die Sie auf Ihrem Webserver publizieren. Dies dient
dem Erlernen der Grundlagen von HTML und damit der Vorbereitung
auf den Umgang mit HTMLBusiness, der SAP-Erweiterung von HTML in
Kapitel 4. Ihre Website ist hier noch unabhängig vom R/3-System, des-
sen Anschluss über den ITS an Ihre Website erfolgt erst in besagtem Ka-
pitel 4.
Sie werden HTML nur so weit kennen lernen, wie dies zum Erstellen der
nachfolgenden IACs notwendig ist.
HTML ist – obwohl ähnlich aufgebaut – genau genommen keine Pro-
grammiersprache, sondern eine Beschreibungssprache für Webseiten.
Grundkonstruktion ist das so genannte Tag, das in spitzen Klammern
! geschrieben wird. Es gibt öffnende Tags – wie <html>, das einen
HTML-Text einleitet – und schließende Tags mit </ am Anfang – wie
</html>, das einen HTML-Text beendet. Die meisten, nicht alle, Tags
müssen abgeschlossen werden.
Die HTML-Tags werden kurz erläutert. Ausführliche Beschreibungen
finden Sie in SELFHTML, das Sie während der Arbeit stets in einem eige-
nen Browser-Fenster offen halten sollten, um das jeweilige Tag nachzu-
schlagen.

59
2 Die erste Homepage im Intranet

2.1 Seiten gestalten: Head, Body, Texte


Übungsszenario Sie sind ABAP-Entwickler des Finanzdienstleisters DEKRA EFFEKTEN KON-
TOR, das für seine Kunden Wertpapierdepots einrichtet und mittels SAP
R/3 verwaltet.
Sie möchten für Mitarbeiter der Außenstellen, die lediglich über einen
Internetzugang, nicht jedoch über eine R/3-Anbindung über das SAP-
GUI verfügen, die Möglichkeit der webbasierten Online-Verbuchung
von Wertpapierkäufen in R/3 über eine IAC eröffnen.

1. Erstellen Sie eine erste Homepage in HTML mit einer Seite für die
Firma Dekra Effekten Kontor, nach dem Muster von Abbildung 2.1.

Eröffnen Sie den Text mit <html>, und schließen Sie ihn mit </html>.
Gliedern Sie die HTML-Datei in <head> und <body>. Verwenden Sie
die Tags <title> (Titel), <h1> (Überschrift Größe 1), <h2> (Überschrift
Größe 2), <em> (kursiv). Setzen Sie auch einen (im Browser unsicht-
baren) Kommentar.

Erläuterung Über <html> und </html> hinaus verwenden Sie folgende Tags:
• <head> und </head> bilden den „Kopfteil“. Dieser ist zwar im Anzeige-
bereich des Browsers nicht direkt zu sehen. Dennoch ist er wichtig,
da er beschreibende Inhalte wie den Seitentitel, den verwendeten
Zeichensatz und Informationen, die von Suchmaschinen ausgewertet
werden, enthält.
• <title> und </title> legen den Seitentitel fest, den der Browser in
der Titelleiste anzeigt.
• <body> und </body> bilden den „Körperteil“, dessen Inhalte der Anzei-
gebereich des Browsers anzeigt und in dem Sie folgende Tags ver-
wenden können:
• Den Text zwischen <h1> und </h1> zeigt der Browser als Überschrift
der Größe 1 an. Wie groß diese ist, entscheidet allein der Browser.
• Den Text zwischen <h2> und </h2> zeigt der Browser als – etwas
kleinere – Überschrift der Größe 2 an.
• Den Text zwischen <em> und </em> zeigt der Browser als Kursivtext
an.
• Mit <!-- beginnt ein Kommentar im HTML-Code, der bis --> reicht.

60
Die erste Homepage im Intranet 2
Abbildung 2.1
Die erste eigene
Homepage im Browser,
geliefert vom Webserver

Legen Sie mit dem Windows-Editor einen HTML-Text an. Schritte


START / PROGRAMME / ZUBEHÖR / EDITOR, s. Abbildung 2.2.

Abbildung 2.2
Anlegen der ersten
Homepage mit dem
Windows-Editor

Geben Sie folgenden Programmcode ein.


<html>
<head>
<title>Dekra Effekten Kontor</title>
</head>

<body>
<h1> Dekra Effekten Kontor </h1>
<h2> Herzlich Willkommen </h2>
Wir <!-- Kommentar, ist unsichtbar --> verwalten
<em> Ihre </em>
Schätze!

</body>
</html>

2. Benennen Sie die vom ITS installierte Standard-Homepage in


default_ITS.htm um. Veröffentlichen Sie die Homepage als Datei
default.htm in Ihrem Intranet auf dem in Übung 1.1 eingerichteten
Webserver.

2.1 Seiten gestalten: Head, Body, Texte 61


2 Die erste Homepage im Intranet

Schritte Zunächst sollten Sie die vom ITS vorinstallierte Datei C:\Inetpub\
wwwroot\default.htm umbenennen in default_ITS.htm, s. Abbildung
2.3. Die Datei default.htm spielt eine Sonderrolle, da dies die Standard-
webseite ist, die der IIS 5.0 anbietet, sofern im URL kein Dateipfad ent-
halten ist.

Abbildung 2.3
Umbenennen der
Standard-IAC-Seite im
Windows Explorer

Das Veröffentlichen der Seite auf dem Webserver erfolgt anschließend


durch Speichern im Pfad C:\Inetpub\wwwroot\default.htm. Nach dem
Speichern sollte die Seite von allen Rechnern im Intranet erreichbar sein,
s. Abbildung 2.1.
Voraussetzung für die Verwendung des Rechnernamens im Browser
(hier: www.dekra-kl.de) ist, dass der Name in der hosts-Datei eingetra-
gen ist (s. Aufgabe 1.1) oder von einem DNS-Server geliefert wird. An-
sonsten kann stattdessen auch die IP-Adresse des Webservers verwen-
det werden. Anschließend sollte Ihre Homepage gleich der Abbildung
2.1 aussehen.

Wenn Sie ein bereits vorhandenes HTML-Dokument erneut in den Edi-


tor laden möchten, so funktioniert dies vom Windows Explorer aus
meist nicht durch Doppelklick auf die Datei, da die Endung .htm ande-
ren Programmen, meist dem Browser, zugeordnet ist. Verwenden Sie
stattdessen die rechte Maustaste: KONTEXTMENÜ AUF DIE DATEI / ÖFF-
NEN MIT / EDITOR, s. Abbildung 2.4.

Abbildung 2.4
Laden einer .htm-Datei in
den Editor mit der rechten
Maustaste

62
Die erste Homepage im Intranet 2
Natürlich dürfen Sie – anstelle des Windows-Editors – auch Ihren Lieb-
lings-HTML-Editor verwenden. Achten Sie jedoch darauf, dass Sie di-
rekt mit dem HTML-Code und nicht nur mit der WYSIWYG-Ansicht
(„What you see is what you get“) arbeiten. Schließlich wollen Sie HTML
als Vorbereitung auf HTMLBusiness erlernen.

Meist startet sich durch Doppelklick auf die Datei C:\Inetpub\


wwwroot\default.htm der Browser und zeigt, wie in Abbildung
2.5, diese in ähnlicher Weise an wie durch Auswahl des URL Ihrer
Webseite, hier http://www.dekra-kl.de.

Zu beachten ist jedoch, dass Sie dadurch den Webserver umgehen. Die
Datei wird rein lokal anzeigt, was im vorliegenden Kapitel noch keine
Rolle spielt. Diese Methode funktioniert jedoch dann nicht mehr, wenn
die Webseite dynamische Inhalte einer SAP R/3-Transaktion darstellen
soll. Der Kontakt zwischen R/3 und der Website erfolgt zwingend über
Webserver und Internet Transaction Server; der lokale Browser kann
dies nicht bewerkstelligen. Deshalb sollten Sie sich das lokale Öffnen
Ihrer Webseite default.htm vorerst nicht angewöhnen.

Abbildung 2.5
Lokales Anzeigen einer
HTML-Datei im Browser.
Dynamische Inhalte, die
auf R/3-Transaktionen
zugreifen, können so
nicht dargestellt werden.

3. Füllen Sie im <head> die Metainformationen aus: <meta name= "des-


cription" ...> <meta name="author" ...> <meta name="keywords" ...>
<meta http-eqiv="content-type" ...>

Die Metainformationen im Kopfteil werden von Suchmaschinen wie Al- Erläuterung


tavista (http://www.altavista.com) oder Google (http://www.
google.com) ausgewertet und für die Beantwortung von Suchanfragen
verwendet. Sie sollten sie ausfüllen, damit Web-Surfer, die sich für Ihr
Thema interessieren, auch Ihre Seite finden.
• <meta name="description" content="[Beschreibung]"> nennt einen
Beschreibungstext für Suchmaschinen.
• <meta name="author" content="[Autorenname]"> nennt den Namen des
Autors.

2.1 Seiten gestalten: Head, Body, Texte 63


2 Die erste Homepage im Intranet

• <meta name="keywords" content="[Schlüsselwörter]"> nennt Schlüssel-


wörter, nach denen jemand, für den Ihre Webseite interessant sein
könnte, sucht.
• <meta http-eqiv="content-type" content= "text/html; charset=iso-
8859-1"> legt den so genannten „Mime-Type“ – bei HTML-Dateien
immer text/html, dazu mehr in Abschnitt 4.14 – und als Zeichensatz
ISO 8859-1, den Standard für Westeuropa, fest. So sorgen Sie u. a.
dafür, dass Umlaute korrekt dargestellt werden.

Schritte Ergänzen Sie default.htm um den fett gedruckten Programmtext. Diese


Konvention gilt auch für den Rest des vorliegenden Werkes!
1. ...
<head>
<title>Dekra Effekten Kontor</title>
<meta name="description" content="Verwaltung von
Wertpapieren durch Aussendienstmitarbeiter">
<meta name="author" content="Michael S. Umlauff">
<meta name="keywords" content="Wertpapier, Effekten,
Depot, Verbuchung">
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-1">
</head>
...
Im Browser werden Sie, wie bereits erwähnt, keinen Unterschied be-
merken.

4. Stellen Sie die Hintergrundfarbe sowie die Farben von Texten, Hy-
perlinks und besuchten Hyperlinks für den gesamten <body> nach
Ihrem Geschmack ein.

Erläuterung Das <body>-Tag erlaubt u. a. folgende Zusätze zum Festlegen von Far-
ben.
• bgcolor=[Farbe] legt die Hintergrundfarbe fest.
• text=[Farbe] legt die Farbe für Text fest.
• link=[Farbe] legt die Farbe für noch nicht besuchte Hyperlinks fest.
• vlink=[Farbe] legt die Farbe für bereits besuchte Hyperlinks fest.
Die Namen der 16 Grundfarben können Sie in SELFHTML nachschla-
gen, s. Abbildung 2.6. Es gibt darüber hinaus noch spezielle Farben, s.
Abbildung 2.7. Alternativ können Sie auch einen beliebigen RGB-Wert
(Rot-Grün-Blau) angeben.

64
Die erste Homepage im Intranet 2
Abbildung 2.6
Die 16 Grundfarben von
HTML

Abbildung 2.7
Speziellere Farben, die
der Browser interpretieren
kann

2.1 Seiten gestalten: Head, Body, Texte 65


2 Die erste Homepage im Intranet

Schritte Ergänzen Sie default.htm.


</head>

<body bgcolor="black" text="green" link="red" vlink=


"indianred">
<h1> Willkommen beim Dekra Effekten Kontor</h1>

5. Fügen Sie eine kleine Überschrift der Größe <h5> ein. Verfassen Sie
einen kurzen Beschreibungstext. Verwenden Sie in diesem das Ab-
satztag <p>. Stellen Sie Schriftgröße und Farbe auf <font size="2"
color="red"> ein. Das Ergebnis sollte nach dem Speichern und Aktu-
alisieren im Browser Abbildung 2.8 ähneln.

Abbildung 2.8
Die Homepage mit Farben
und Schriften

Schritte Ergänzen Sie default.htm.


<h2> Herzlich Willkommen </h2>
<h5> Die <b> clevere </b> Depotverwaltung</h5>
<p>
Wir <!-- Kommentar, ist unsichtbar --> verwalten
<em> Ihre </em>
Schätze!
<p><font size="2" color="red"> Damit Ihre Erben auch
was zu lachen haben!
</font></p>
</body>

66
Die erste Homepage im Intranet 2
Speichern Sie die Datei. Aktualisieren Sie im Browser Ihre Homepage, sie
sollte nun Abbildung 2.8 ähneln. Das schließende Tag </p> können Sie
übrigens auch weglassen.

Beim Entwickeln einer Homepage wollen Sie, dass der Browser stets die
aktuelle Fassung anzeigt. Um zu gewährleisten, dass dieser keine veral-
teten Inhalte – etwa Bilder – aus seinem Cache anzeigt, sondern stets
die aktuelle Fassung wählt, stellen Sie ihn bitte wie folgt ein: E XTRAS /
~
INTERNETOPTIONEN / ALLGEMEIN / EINSTELLUNGEN… Option BEI JEDEM
ZUGRIFF AUF DIE SEITE, s. Abbildung 2.9

Abbildung 2.9
Der Browser soll stets die
aktuellste Version
anzeigen.

2.2 Graphiken einbinden


1. Beschaffen Sie eine Graphik im .jpg- oder .gif-Format. Speichern Sie
diese im Veröffentlichungsordner des Webservers. Fügen Sie sie un-
ter Angabe von Höhe und Breite in Pixel in Ihre Homepage ein, s.
Abbildung 2.10.

Abbildung 2.10
Graphik in der Homepage

Graphiken werden mit dem Tag <img src="[Graphikdatei]" height=[Höhe] Erläuterung


width=[Breite]> eingefügt, wobei der Dateiname der Graphik anzuge-
ben ist. Dieses Tag muss nicht geschlossen werden.

2.2 Graphiken einbinden 67


2 Die erste Homepage im Intranet

Die Angabe von Höhe und Breite der Graphik in Pixel mit den Zusätzen
height= und width= hat den Vorteil, dass der Browser den reinen Text be-
reits anzeigen kann, während die zugehörige Graphik noch geladen
wird, was oft länger dauert. Stattdessen erscheint vorübergehend ein
rechteckiger Platzhalter mit dem nach alt= angegebenen Alternativtext.
So vermeiden Sie, dass ungeduldige Besucher Ihre Seite vorzeitig verlas-
sen.

Schritte Graphiken können Sie selbst mit einem der zahlreichen Tools hierfür er-
stellen (Corel Draw, Photopaint, Photoshop etc.).
Mit einem Scanner können Sie sich auch Fotografien oder andere Vorla-
gen einscannen.

Beispiel Graphiken, die Sie auf einer anderen Webseite finden, können Sie her-
unterladen über das Kontextmenü der rechten Maustaste, so wie in Ab-
bildung 2.11 demonstriert. Die abgebildete Graphik finden Sie auf der
Website http://www.dekra-akademie.de. Speichern Sie sie als C:\Inet-
pub\wwwroot\dekra-logo.gif. Sie finden sie auch im Archiv abap.zip.

Beachten Sie jedoch bitte das Urheberrecht derart heruntergela-


dener Graphiken! Für Veröffentlichungen müssen Sie das Einver-
ständnis des Urhebers einholen.

Abbildung 2.11
Graphik herunterladen
von der DEKRA-
Akademie-Homepage

Verwenden Sie bei der Vergabe von Dateinamen als Konvention stets
Kleinbuchstaben. Viele Webserver achten penibel auf Groß- und Klein-
schreibung1.

1. Diese Eigenschaft gilt vor allem für die UNIX-basierten Webserver, nicht jedoch für
den IIS auf Windows 2000/NT. Damit Ihr Webentwicklungsprojekt bei einem Pro-
viderwechsel immer noch funktioniert, empfiehlt es sich dennoch, besagte Kon-
vention zu beachten.

68
Die erste Homepage im Intranet 2
Wenn Sie in Ihrem HTML-Quellcode Dateinamen falsch schreiben, wer-
den die zugehörigen Graphiken nicht gefunden, so wie in Abbildung
2.12.

Abbildung 2.12
Ein falscher Dateiname im
HTML-Code führt zu
diesem Fehler.

Informieren Sie sich über die Größe Ihres Bildes in Pixel. Dies geht mit
den meisten gängigen Bildbearbeitungswerkzeugen. In Microsoft Pho-
toDraw etwa öffnen Sie die Datei, klicken KONTEXTMENÜ DER GRAPHIK /
BILDSETUP... und stellen Pixel ein. In Abbildung 2.13 sehen Sie, dass
diese Graphik 182 * 55 Pixel groß ist.

Abbildung 2.13
Ermitteln der Pixelgröße
einer Graphik mit
Microsoft PhotoDraw

2.2 Graphiken einbinden 69


2 Die erste Homepage im Intranet

Anmerkung Die Farbeinstellungen im <body>-Tag wurden der besseren Sichtbarkeit


halber wieder entfernt.
Ergänzen Sie nun default.htm.
<body>
<img src="dekra-logo.gif" alt="Dekra-Logo" width=182
height=55>
<h1> Dekra Effekten Kontor</h1>

2. Legen Sie eine zweite Datei vorzuege.htm im Veröffentlichungs-


ordner an, in der die Vorzüge der Depotverwaltung des DEKRA EF-
FEKTEN KONTORS gepriesen werden.

Legen Sie vorerst nur eine <h1>-Überschrift sowie die <meta>-Infor-


mationen für die Suchmaschinen an (siehe Abschnitt 2.1). Laden
Sie die Seite in den Browser durch direkte Eingabe des URL in die
Adresszeile, s. Abbildung 2.14.

Abbildung 2.14
Die zweite Webseite,
aufgerufen über Ihren
URL

Schritte Legen Sie C:\Inetpub\wwwroot\vorzuege.htm mit dem Texteditor an.


<html>
<head>
<title>Vorzuege Dekra Effekten Kontor</title>
<meta name="description" content="Reich werden mit
Dekra Effekten Kontor"
<meta name="Author" content="Michael S. Umlauff">
<meta name="keywords" content="Reichtum, Depot,
Effekten, Vorzuege">
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-1">
</head>

70
Die erste Homepage im Intranet 2
<body>
<h1> Werden auch Sie reich mit einem <br>
Depot beim Dekra Effekten Kontor! </h1>
</body>
</html>

Laden Sie die Seite in den Browser mit dem URL http://www.dekra-
kl.de/vorzuege.htm, so wie es Abbildung 2.14 zeigt.
3. Beschaffen Sie eine zweite Graphik im .jpg- oder .gif- Format, und
speichern Sie diese im Veröffentlichungsordner. Sie sollte farblich
hell und zurückhaltend sein.

Stellen Sie sie als Hintergrundbild in vorzuege.htm ein, wie in Abbil-


dung 2.15 zu sehen.

Abbildung 2.15
Die zweite Webseite, mit
einer Hintergrundgraphik

Kopieren Sie beispielsweise die Datei hintergrund.jpg aus dem Archiv Schritte
abap.zip nach C:\Inetpub\wwwroot\. Achten Sie auf die Groß-/Klein-
schreibung des Dateinamens.
Ergänzen Sie vorzuege.htm.
<body background="hintergrund.jpg">
<h1> Werden auch Sie reich mit einem <br>
Depot beim Dekra Effekten Kontor! </h1>

Ihr Browser sollte nun die zweite Webseite mit dem Hintergrundbild
darstellen, wie in Abbildung 2.15 gezeigt.

2.2 Graphiken einbinden 71


2 Die erste Homepage im Intranet

2.3 Tabellen anlegen


1. Legen Sie in default.htm unter Verwendung von <table> eine Ta-
belle mit Wertpapierpreisen, wie sie Abbildung 2.16 zeigt, an. Die
Breite der Tabelle umfasst 40% des Browser-Fensters, was Sie mit
dem Zusatz width=[Breite] einstellen. Rahmenlinien werden ange-
zeigt durch den Zusatz border=1.

Tabellenzeilen legen Sie mit <tr> an.

Die erste Zeile wird als Überschrift ausgelegt. Für deren Zellen ver-
wenden Sie <th>. Sie ist 40pt hoch, was Sie mit dem Zusatz-
height=[Höhe] einstellen. Der Text ist mittels des Zusatzes valign=bot-
tom zum unteren Rand hin ausgerichtet.

Die zweite und dritte Spalte der Tabelle wird von der gemeinsamen
Überschrift „Preis“ überspannt, was Sie mit dem Zusatz colspan=2
erreichen.

Ab der zweiten Zeile legen Sie die Zellen mit <td> statt <th> an.

Alle Geldbeträge sind mittels align=right rechtsbündig ausgerichtet.

Abbildung 2.16
Tabelle mit Überschrift,
Zeilen, Spalten und
Rahmenlinien

72
Die erste Homepage im Intranet 2
Ergänzen Sie default.htm. Schritte
<p><font size="2" color="red"> Damit Ihre Erben auch
was zu lachen haben!
</font></p>
<table border=1 width=40%>
<tr>
<th height=40pt valign=bottom>Sonderangebote
der
Woche </th>
<th colspan=2 valign=bottom>Preis</th>
</tr>
<tr>
<td>Whistler Corp.</td>
<td align=right>360 DM</td>
<td align=right>180$2</td>
</tr>
<tr>
<td>Stromberg Reed. </td>
<td align=right>764DM</td>
<td align=right> 382$</td>
</tr>
<tr>
<td>Zorin Industries </td>
<td align=right>2811DM</td>
<td align=right>1406$</td>
</tr>
</table>
</body>

2. Den fiktiven Wechselkurs DM/Dollar von 2:1 dürfen Sie gerne aktualisieren!

2.3 Tabellen anlegen 73


2 Die erste Homepage im Intranet

2.4 Hyperlinks und Aufzählungen nutzen


1. Fügen Sie in default.htm einen Hyperlink nach vorzuege.htm ein, s.
Abbildung 2.17.

Abbildung 2.17
Hyperlink von der
Homepage zu
vorzuege.htm

Erläuterung Mittels eines Hyperlinks kann der Anwender zu einer anderen Webseite
verzweigen. Legen Sie sie nach dem Schema <a href="[Verweisziel]">
an. Das Verweisziel kann sich auf Dateien des eigenen Webservers oder
auch auf eine beliebige andere Ressource im Internet beziehen.
Es schließt sich der dem Anwender sichtbare Verweistext an. Sie müssen
den Hyperlink mit </a> abschließen.

Schritte Ergänzen Sie default.htm.


<p><font size="2" color="red"> Damit Ihre Erben auch
was zu lachen haben!
</font></p>
<p> Wie Sie mit Dekra Effekten Kontor <a href=
"vorzuege.htm"> reich werden </a> können.</p>
<table border=1 width=40%>

2. Fügen Sie in vorzuege.htm einen Hyperlink zurück zur Homepage


default.htm ein, s. Abbildung 2.18.

74
Die erste Homepage im Intranet 2
Abbildung 2.18
Hyperlink von
vorzuege.htm zurück
zur Homepage

Ergänzen Sie vorzuege.htm. Schritte


<h1> Werden auch Sie reich mit einem <br>
Depot beim Dekra Effekten Kontor! </h1>
<p> Zurück zur <a href="default.htm"> Homepage
</a></p>
</body>

3. Fügen Sie in default.htm einen Hyperlink zu SAP und Addison-


Wesley ein: http://www.sap.de und http://www.addison-wes-
ley.com. Fügen Sie weiterhin eine Graphik als Hyperlink zur DE-
KRA-Akademie ein: http://www.dekra-akademie.de, s. Abbildung
2.19.

Abbildung 2.19
Hyperlinks zu anderen
Websites, als Text und
als Graphik

Diese Hyperlinks führen auf andere Websites im Internet. Erläuterung


Sie können eine Graphik als Hyperlink anlegen, indem Sie statt des Ver-
weistextes zwischen <a href=...> und </a> das <img src="[Graphikda-
tei]">-Tag einsetzen.

Ergänzen Sie default.htm. Schritte


<p> Wie Sie mit Dekra Effekten Kontor <a href=
"vorzuege.htm"> reich werden </a> können.</p>
<p> Besuchen Sie auch
<a href="http://www.sap.de">SAP</a>
und der <a href="www.dekra-akademie.de">
<img src="dekra-logo.gif" width=182

2.4 Hyperlinks und Aufzählungen nutzen 75


2 Die erste Homepage im Intranet

height=55></a></p>
<table border=1 width=40%>

4. Fügen Sie in vorzuege.htm eine Aufzählung mit Lobpreisungen der


Vorzüge des DEKRA EFFEKTEN KONTORS ein, s. Abbildung 2.20.

Abbildung 2.20
Aufzählung in der
Webseite

Erläuterung Das Tag <ul> leitet eine Aufzählung (unsortierte Liste = unordered list)
ein. Mit <li> beginnt ein Listeneintrag (list item). Beide Tags werden wie
üblich abgeschlossen, bei <li> allerdings nicht zwingend.

Schritte Ergänzen Sie vorzuege.htm.


<h1> Werden auch Sie reich mit einem <br>
Depot beim Dekra Effekten Kontor! </h1>
<ul>
<li>Toprenditen internationaler
Spitzengesellschaften</li>
<li>Permanente Online-Verbindung direkt zu unserem
Broker auf dem Parkett</li>
<li>Steuerfreiheit der Anlage mittels renommierter
Stiftungen in Vaduz/Liechtenstein</li>
</ul>
<p> Zurück zur <a href="default.htm"> Homepage </a></p>

76
Die erste Homepage im Intranet 2

2.5 Seiten mit Frames gestalten


1. Wandeln Sie Ihre Homepage in ein Frameset mit zwei Frames um,
die in der Vertikalen im Verhältnis 20 % : 80 % aufgeteilt sind. Be-
nennen Sie hierzu default.htm in homepage.htm um. Der rechte
Frame soll beim ersten Aufruf der Website die homepage.htm ent-
halten. Der linke Frame soll ein Inhaltsverzeichnis enthalten mit Hy-
perlinks zu
• den bisher erstellten Seiten homepage.htm und vorzuege.htm,
• zur Standard-IAC-Seite default_ITS.htm, die in Abschnitt 2.1 um-
benannt wurde,
• zu SELFHTML.
Zielframe dieser Hyperlinks ist jeweils der rechte Frame, s. Abbil-
dung 2.21 bis Abbildung 2.24.

Abbildung 2.21
Aufteilung in Frames,
links inhalt.htm, rechts
homepage.htm

Abbildung 2.22
Aufteilung in Frames,
links inhalt.htm, rechts
vorzuege.htm

2.5 Seiten mit Frames gestalten 77


2 Die erste Homepage im Intranet

Abbildung 2.23
Aufteilung in Frames,
links inhalt.htm, rechts
default_ITS.htm

Abbildung 2.24
Aufteilung in Frames,
links inhalt.htm, rechts
selfhtml.htm

Erläuterung Frames (Rahmen) erlauben die Unterteilung der Homepage in verschie-


dene Fenster. Die vertikale Unterteilung erfolgt mit dem Tag <frameset
cols="[Breite1],[Breite2]">. Durch den Zusatz rows= erhält man statt-
dessen eine horizontale Unterteilung. Die Angabe der Breite der Frames
kann u. a. in Prozent erfolgen, z. B. besagt die Angabe "20%,80%", dass
der linke Frame 1/5 und der rechte 4/5 der Breite des Browser-Fensters
ausmacht.
Frames sind schachtelbar, beispielsweise könnte also der rechte Frame
weiter in der Horizontalen unterteilt werden. Oftmals wird – wie hier –
eine Navigationsleiste durch Frames realisiert.
Die Frames werden innerhalb des Framesets nach dem Schema <frame
name="[Frame-Name]" src="[HTML-Datei]"> angelegt. Der Zusatz src= legt
die Datei fest, mit welcher der Frame beim Aufruf des Framesets gefüllt
wird.
Hier wird vom linken Frame aus der Inhalt des rechten Frames durch
Hyperlinks zugewiesen, dafür wird der Frame-Name benötigt. Ein
Hyperlink hierfür ist nach dem Schema <a href="[HTML-Datei]" tar-
get="[Frame-Name]"> [Hyperlink-Text] </a> aufgebaut, was bedeutet,
dass dem Frame mit dem Frame-Name die HTML-Datei zugewiesen wird.

Schritte Benennen Sie die bisherige Datei default.htm zu homepage.htm um.


Öffnen Sie hierzu den Windows NT-Explorer im Pfad C:\Inetpub\ww-
wroot. Legen Sie neue Dateien C:\Inetpub\wwwroot\default.htm und
C:\Inetpub\wwwroot\inhalt.htm an, s. Abbildung 2.25.

78
Die erste Homepage im Intranet 2
Abbildung 2.25
Umbenennen und
Neuanlegen von
default.htm sowie
inhalt.htm

Verschieben Sie das Verzeichnis C:\Selfhtml nach C:\Inetpub\ww-


wroot, s. Abbildung 2.26.

Abbildung 2.26
Verschieben von
SELFHTML auf den
Webserver

Programmieren Sie C:\Inetpub\wwwroot\default.htm.


<html>
<head>
<title>Dekra Effekten Kontor</title>
<meta name="description" content="Frameset">
<meta name="author" content="Michael S. Umlauff">
<meta name="keywords" content="Wertpapier, Effekten,
Depot, Verbuchung, Reichtum">
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-1">
</head>
<frameset cols="20%,80%">
<frame name="links" src="inhalt.htm">
<frame name="rechts" src="homepage.htm">
</frameset>
</html>

2.5 Seiten mit Frames gestalten 79


2 Die erste Homepage im Intranet

Programmieren Sie C:\Inetpub\wwwroot\inhalt.htm.


<html>
<head>
<title>Dekra Effekten Kontor Inhalt</title>
<meta name="description" content="Inhaltsleiste">
<meta name="author" content="Michael S. Umlauff">
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-1">
</head>
<body>
<h3>Inhalt</h3>
<a href="homepage.htm" target="rechts"> Homepage
</a><br>
<a href="vorzuege.htm" target="rechts"> Reich werden
</a><br>
<a href="default_ITS.htm" target="rechts"> Standard-IACs
</a><br>
<a href="selfhtml/selfhtml.htm" target="rechts"> SELFHTML
</a><br></body>
</html>

80
Entwurf WebTransaction: ABAP 3

Kapitel 3
Entwurf WebTransaction:
ABAP
Die Entwicklung einer Internet-Anwendungskomponente teilt sich auf Vorbemerkung
in:
• die Entwicklung einer WebTransaction in R/3 mit der Programmier-
sprache ABAP,
• auf Ersterem aufbauend mit der Entwicklung im SAP@Web Studio in
der HTML-Erweiterung HTMLBusiness.
Dieses Kapitel befasst sich mit Ersterem, also der WebTransaction in
ABAP.
Sie werden eine vollständige R/3-Transaktion als Modulpool mit vier
Dynpros anlegen. Für jedes Dynpro wird im folgenden Kapitel 4 ein so
genanntes „HTML-Template“ angelegt. Das HTML-Template wie-
derum enthält neben statischem HTML-Code Platzhalter in HTMLBusiness,
die vom AGate zur Laufzeit mit den Daten aus dem Dynpro in Form von
dynamisch generiertem HTML-Code gefüllt werden.
Die komplette betriebswirtschaftliche Ablauflogik und alle betriebswirt-
schaftlichen Daten verbleiben in R/3. Das HTML-Template bestimmt
nur das Erscheinungsbild im Browser und gewährleistet das Einsetzen
der Daten aus dem Dynpro.
Zu beachten ist, dass eine WebTransaction nur eingeschränkten Ge-
brauch von Dynpro-Objekten machen darf. So dürfen als Eingabefelder
nur Textfelder verwendet werden. Ankreuz- und Optionsfelder hingegen

81
3 Entwurf WebTransaction: ABAP

sind nicht erlaubt, stattdessen verwendet man Textfelder der Länge 1.


Auf dem zugehörigen HTML-Template können diese Felder allerdings
wieder als Ankreuz- und Optionsfelder angezeigt werden, so dass der
Anwender am Browser von dieser Einschränkung nichts mitbekommt.
Eine weitere Schwierigkeit, welche die WebTransaction zu meistern hat,
ist das Problem der ZURÜCK-Taste, also des meist grünen oder blauen
Pfeiles nach links im Browser. Das Drücken der Z URÜCK-Taste in den
SAPGUI führt zum nächsten Systemdialogschritt. Das ABAP-Programm
weiß also stets, welches Dynpro der R/3-Anwender gerade sieht.
Drückt der Internetanwender einer WebTransaction jedoch auf die ZU-
RÜCK-Taste seines Browsers, erfährt das ABAP-Programm hiervon zu-
nächst nichts. Es kann also passieren, dass der Anwender ein anderes (mit
Dynpro-Daten ausgefülltes) HTML-Template sieht als jenes Dynpro, wel-
ches das ABAP-Programm gerade erwartet. In diesem Falle sendet das
AGate einen speziellen Funktionscode AWSY[Programm][Dynpro-Nummer], der
jene Dynpro-Nummer enthält, zu der nun unerwarteterweise ein Webfor-
mular geliefert wird. Das ABAP-Programm muss zu PAI diesen Funktions-
code auswerten und zu dem angegebenen Dynpro wechseln. Dieses Ver-
fahren heißt Synchronisation, es wird in Abschnitt 4.11 behandelt.

Übungsszenario In den folgenden Aufgaben wird schrittweise eine komplette WebTrans-


action in ABAP, später in HTML Business angelegt. Sie wird zunächst in R/3
erstellt und dann mittels des SAP@Web Studios über den ITS auf dem
Webserver publiziert. Die WebTransaction besteht aus einem Modul-
pool mit vier Dynpros, den dazugehörigen Modulen, Status, Titeln,
Funktionsbausteinen, Views und Sperrobjekten.
• Dynpro 100 ist der Anmeldebildschirm. Der Angestellte muss sich
identifizieren und authentisieren, hierfür ist in R/3 eine eigene Inter-
netbenutzer-Verwaltung implementiert.
• Dynpro 200 dient der Selektion des Kunden.
• Dynpro 300 listet die Positionen des Wertpapierdepots dieses Kunden
auf.
• Dynpro 400 verbucht den Zu- oder Verkauf weiterer Wertpapiere für
eine vorhandene Wertpapierdepot-Position.

Alternative: Wenn Sie die Transaktion nicht eigenhändig mit den Werkzeugen der
Transport ABAP Workbench anlegen wollen, können Sie auch alternativ den
Transport T53K900013 einspielen, den Sie mit dem Archiv abap.zip von
http://www.dekra-akademie.de/download erhalten. Dort finden Sie
weitere Erläuterungen in der Datei IAC-Programmierung.rtf. Der Trans-
port beinhaltet den Entwicklungsstand zum Ende dieses Kapitels. Ihm
müssen noch einige IAC-spezifische Codeteile hinzugefügt werden, was
dann in Kapitel 4 erfolgt.

82
Entwurf WebTransaction: ABAP 3
Aufbauend auf der Entwicklungsklasse ZDEKRA enthält die Entwicklungs-
klasse ZIACMU, die dieser Transport beinhaltet, eine komplette Web-
Transaction, bestehend aus Programm, Dynpros, Transaktionscode,
View, Sperrobjekt und Verbuchungsfunktionsbaustein. Weitere Informa-
tionen erhalten Sie in der dem Transport beiliegenden Dokumentation.
Der Transport T53K900016 beinhaltet den abschließenden Entwicklungs-
stand von ZIACMU zum Ende dieses Buches, einschließlich der IAC-spezifi-
schen Codeteile des Kapitels 4 und des in Kapitel 5 anzulegenden
ABAP-Reports.
Die Datei ziacmu.txt, die ebenfalls im Archiv abap.zip zu finden ist, ent-
hält die Objektlisten beider Transporte.

3.1 Internetbenutzer und Kennwort-BAPI


1. Suchen Sie einen BAPI-Funktionsbaustein zum Prüfen des Kenn-
wortes eines Mitarbeiters, der als Internetbenutzer über eine IAC
mit R/3 arbeitet. Sehen Sie sich diesen an.

Zur Zugriffskontrolle nichtöffentlicher Seiten im Internet unterstützt R/3 Erläuterung


so genannte Internetbenutzer. Diese werden an gleicher Stelle wie R/3-
Benutzer angelegt, können aber nicht zur Anmeldung über das SAPGUI
verwendet werden. Stattdessen stehen spezielle Funktionsbausteine, so
genannte BAPIs, zur Authentisierung von Benutzername und Kennwort
zur Verfügung.
Für verschiedene Rollen finden sich in R/3-Standard Business-Objekte,
für die BAPIs als Objektmethoden zur Verfügung stehen. Für einige der
Business-Objekte, so für Mitarbeiter, ist jeweils ein BAPI vorgesehen,
mit dem das Kennwort eines Internetbenutzers geprüft werden kann.
Der Internetbenutzer ist also stets an ein Business-Objekt gebunden.
Der BAPI-Funktionsbaustein BAPI_EMPLOYEE_CHECKPASSWORD prüft das
Kennwort eines Mitarbeiters als Internetbenutzer. Dynpro 100 fragt für
dessen Schnittstelle die Parameter BAPIEMPL-PERNR und BAPIUID-PASSWORD
ab. Sollte bei Ihnen das HR-Modul nicht implementiert sein, können Sie
den Internetbenutzer ersatzweise auch an andere Business-Objekte wie
DEBTOR (Debitoren) anbinden.
BAPIs werden derzeit als Funktionsbausteine realisiert mit einem Na-
men, der sich zusammensetzt aus BAPI, dem Namen des Business-Ob-
jekts (Employee) und dem Namen der Methode (Checkpassword). Die
Schnittstelle ist „festgefroren“, was bedeutet, dass auch in künftigen
Releases das BAPI nicht inkonsistent geändert wird. Es dürfen nur optio-
nale, jedoch keine obligatorischen Parameter an der Schnittstelle er-
gänzt werden. Ein Satz von Eingabeparametern muss auch in einem
späteren Release zum gleichen Ergebnis führen.

3.1 Internetbenutzer und Kennwort-BAPI 83


3 Entwurf WebTransaction: ABAP

Linux Test-Drive Wenn Sie mit einer Test-Drive-Installation auf Linux mysap.com 4.6B
Evaluation Demo arbeiten, fehlt das BAPI_EMPLOYEE_CHECKPASSWORD, da es
sich um eine reine Basis-Installation ohne betriebswirtschaftliche An-
wendungen, also auch ohne Business-Objekte, handelt. Allerdings kann
man sich selbst Business-Objekte mit WERKZEUGE / ABAP WORKBENCH /
ENTWICKLUNG / BUSINESS OBJECT BUILDER anlegen.
Der Verfasser empfiehlt dennoch, die Prüfung des Internetbenutzers
und dessen Kennwort in Dynpro 100 einfach wegzulassen. Weitere In-
formationen hierzu finden Sie in Abschnitt 3.3.

Schritte Erkunden Sie zunächst das BAPI: WERKZEUGE / ABAPWORKBENCH /


ÜBERSICHT / BUSINESS OBJECT BROWSER(siehe Abbildungen 3.1 bis 3.3).

Abbildung 3.1
Mitarbeiter werden durch
ein Business-Objekt
repräsentiert.
(© SAP AG)

Abbildung 3.2
Die Methode
Checkpassword
(Kennwortprüfung) des
Business-Objekts
EmployeeAbstract
(Mitarbeiter) ist als BAPI
angelegt.
(© SAP AG)

Abbildung 3.3
Das BAPI seinerseits ist als
Funktionsbaustein
implementiert.
(© SAP AG)

84
Entwurf WebTransaction: ABAP 3
Beachten Sie die Importparameter BAPIEMPL-PERNR und BAPIUID-PASSWORD
an der Schnittstelle des Funktionsbausteins in Abbildung 3.3. Diese Fel-
der werden zur Identifikation und Authentisierung von Internetbenut-
zern, die dem Business-Objekt Mitarbeiter zugeordnet sind, verwendet.
Sie werden auf dem nachfolgend anzulegenden Dynpro 100 des eben-
falls noch anzulegenden Modulpools vom Benutzer abgefragt und dem
BAPI zur Prüfung übergeben.

3.2 Dynpro 100: Anmeldung


Das vorliegende Übungsbuch ist auch für den Einsatz in Lehrgängen Namens-
und Übungsgruppen vorgesehen. Zur Vermeidung von Namenskonflik- konvention
ten, die dadurch entstehen, dass mehrere Benutzer gleichnamige Ob-
jekte in R/3 anlegen, wird hier folgende Namenskonvention vereinbart:
In der nachfolgenden Aufgabe bezeichnet nn im Programmnamen die
von Ihrem Dozenten zugewiesene Nummer der Übungsgruppe. Falls
Sie dieses Werk im Einzelstudium bearbeiten, können Sie ersatzweise
Ihre Initialen verwenden. Der Verfasser wird in seinen Musterlösungen
nn stets durch seine Initialen mu ersetzen.
Diese Konvention gilt auch für alle weiteren Übungsaufgaben des vor-
liegenden Werkes.

1. Legen Sie einen Modulpool SAPMZDEPOTnn mit Top-Include MZDEPOTnn-


TOP in der Entwicklungsklasse ZIACnn an.

Zum Anlegen einer Kunden-Entwicklungsklasse benötigen Sie einen Erläuterung


Änderungsauftrag, den Sie sich wie üblich über den Workbench Orga-
nizer anlegen können; dies wurde bereits in Abschnitt 1.5 gezeigt.
Falls Sie in einer Übungsgruppe arbeiten, klären Sie bitte mit Ihrem Do-
zenten ab, ob ein Änderungsauftrag für die gesamte Gruppe mit jeweils
einer Aufgabe für jeden Ihrer Kommilitonen angelegt werden soll.
Sie können ersatzweise die Objekte auch in der lokalen Entwicklungs-
klasse $TMP anlegen. Diese sind dann allerdings nicht transportierbar.

Starten Sie WERKZEUGE / ABAP WORKBENCH / ÜBERSICHT / OBJECT NA- Schritte


VIGATOR. Legen Sie die Entwicklungsklasse ZIACnn an, s. Abbildung 3.4
bis Abbildung 3.7.

Abbildung 3.4
Anlegen von Objekten
über den Object
Navigator (© SAP AG)

3.2 Dynpro 100: Anmeldung 85


3 Entwurf WebTransaction: ABAP

Abbildung 3.5
Anlegen einer
Entwicklungsklasse
(© SAP AG)

Abbildung 3.6
Eigenschaftspflege der
Entwicklungsklasse
(© SAP AG)

Abbildung 3.7
Das Anlegen der
Entwicklungsklasse
schließt mit dem
Objektkatalogeintrag und
der Zuordnung zum
Änderungsauftrag.
(© SAP AG)

Legen Sie in Ihrer Entwicklungsklasse den Modulpool SAPMZDEPOTnn mit


Top-Include an, s. Abbildung 3.8 bis Abbildung 3.11. Abschließend
legen Sie den Objektkatalogeintrag an, weisen den Änderungsauftrag
zu und speichern das Top-Include.

86
Entwurf WebTransaction: ABAP 3
Abbildung 3.8
Anlegen eines Programms
im Kundennamensraum
„SAPMZ...“
(© SAP AG)

Abbildung 3.9
Ein größeres Programm
sollte die Include-Technik
verwenden.
(© SAP AG)

Abbildung 3.10
Automatisches Anlegen
des Top-Includes
(© SAP AG)

Abbildung 3.11
Anlegen des Programms
als Modulpool – kein
Report!
(© SAP AG)

2. Legen Sie das Dynpro 100 an. Der Screen enthält neben den Über-
schrift-Textfeldern „Dekra Effekten Kontor“ und „WebTransaction
Wertpapierdepotverbuchung“ die Felder BAPIEMPL-PERNR und BAPI-
UID-PASSWORD, wobei letzteres eine mit Sternen verdeckte Eingabe
aufweisen soll. Weiterhin enthält der Screen eine Drucktaste mit
der Aufschrift ANMELDEN.

Die Felder BAPIEMPL-PERNR und BAPIUID-PASSWORD sind die Importparame- Erläuterung


ter von BAPI_EMPLOYEE_CHECKPASSWORD, s. Abbildung 3.3.
Im Linux Test-Drive mysap.com 4.6B Evaluation Demo fehlen mit dem Linux Test-Drive
Business-Objekt Mitarbeiter auch die Felder BAPIEMPL-PERNR und BAPI-
UID-PASSWORD, da es sich um eine reine Basis-Installation handelt. Der
Verfasser empfiehlt, diese beiden Felder in Dynpro 100 einfach wegzu-
lassen.

3.2 Dynpro 100: Anmeldung 87


3 Entwurf WebTransaction: ABAP

Schritte Navigieren Sie von der Entwicklungsklasse ZIACnn zum Modulpool


SAPMZDEPOTnn. Legen Sie Dynpro 100 an, s. Abbildung 3.12 bis Abbildung
3.17.

Abbildung 3.12
Anlegen eines Dynpros
im Modulpool
(© SAP AG)

Abbildung 3.13
Pflege der Dynpro-
Eigenschaften
(© SAP AG)

Abbildung 3.14
Der graphische Screen
Painter, Überschriften
als Textfelder
(© SAP AG)

88
Entwurf WebTransaction: ABAP 3
Abbildung 3.15
Einfügen eines Feldes aus
dem Dictionary
(© SAP AG)

Abbildung 3.16
Einfügen des zweiten
Feldes aus dem Dictionary
(© SAP AG)

Abbildung 3.17
Eingabefelder auf dem
Screen, Einstellen der mit
Sternen verdeckten
Eingabe des Kennworts,
Anlegen der Drucktaste
ANMELDEN.
(© SAP AG)

Ordnen Sie der Drucktaste den Funktionscode LOGIN und dem OK-Code
das Feld OK_CODE zu, s. Abbildung 3.18.

3.2 Dynpro 100: Anmeldung 89


3 Entwurf WebTransaction: ABAP

Abbildung 3.18
Einstellen des
Funktionscodes der
Drucktaste sowie des OK-
Codes in der Elementliste
(© SAP AG)

3. Nehmen Sie benötigte Deklarationen stets im Top-Include vor.

Erläuterung Der Einfachheit halber werden an dieser Stelle bereits die meisten benö-
tigten Deklarationen von Datenobjekten im Top-Include abgedruckt.
Sie können sie in dieser Form direkt übernehmen. Vielleicht ziehen Sie
es aber auch vor, in den späteren Übungen die Deklarationen jeweils
nach Bedarf einzeln zu ergänzen.

Schritte Ergänzen Sie das Top-Include MZDEPOTnnTOP.


PROGRAM sapmzdepotmu .
TABLES: zdepot, zkunden.
DATA: ok_code LIKE sy-ucomm,
save_ok LIKE ok_code.
TABLES: bapiempl, bapiuid.
DATA: ret LIKE bapireturn.
DATA: ind LIKE sy-stepl,
erstezeile LIKE sy-stepl,
pos LIKE sy-stepl,
kaufpos TYPE i,
kaufanzahl LIKE zdepotpstn-anzahl,
zukauf TYPE c.
DATA: offset(2) TYPE n,
benoet_screen LIKE sy-dynnr.

90
Entwurf WebTransaction: ABAP 3
Im Linux Test-Drive mysap.com 4.6B Evaluation Demo fehlen die Ta- Linux Test-Drive
bellen BAPIEMPL und BAPIUID, da es sich um eine reine Basis-Installation
handelt. Der Verfasser empfiehlt, die Zeile
TABLES: bapiempl, bapiuid.

einfach wegzulassen.

4. Legen Sie einen GUI-Status an, der die ZURÜCK-Taste des SAPGUI
aktiviert. Legen Sie ebenso einen GUI-Titel an. Rufen Sie beide zu
PBO auf.

Programmieren Sie die Ablauflogik von Dynpro 100. Schritte


PROCESS BEFORE OUTPUT.
MODULE status_0100.
*
PROCESS AFTER INPUT.
MODULE user_command_0100.

Legen Sie durch Vorwärtsnavigation (Doppelklick auf den Progammtext


STATUS_0100) das PBO-Modul STATUS_0100 im neuen Include MZDEPOTnnO01
an, s. Abbildung 3.19 bis Abbildung 3.20.

Abbildung 3.19
Ablauflogik des Dynpros,
Anlegen des PBO-Moduls
durch Vorwärts-
navigation
(© SAP AG)

Abbildung 3.20
Der Name des neuen
Includes wird
automatisch
vorgeschlagen; die
nötige Include-
Anweisung im
Rahmenprogramm wird
ergänzt.
(© SAP AG)

3.2 Dynpro 100: Anmeldung 91


3 Entwurf WebTransaction: ABAP

Ergänzen Sie das PBO-Modul 100.


MODULE status_0100 OUTPUT.
SET PF-STATUS '100'.
SET TITLEBAR '100'.
ENDMODULE. " STATUS_0100 OUTPUT

Legen Sie – jeweils durch Vorwärtsnavigation mittels Doppelklick auf


den Programmcode '100' – den Status 100 mit dem Funktionscode BACK
für den Rückwärtspfeil und den GUI-Titel 100 an, s. Abbildung 3.21 bis
Abbildung 3.23.

Abbildung 3.21
Anlegen des GUI-Status
(© SAP AG)

Abbildung 3.22
Zuordnen Funktionscode
zur ZURÜCK-Taste im GUI-
Status (© SAP AG)

Abbildung 3.23
Anlegen GUI-Titel
(© SAP AG)

5. Nach dem Klicken der Drucktaste ANMELDEN soll zu PAI mittels BA-
PI_EMPLOYEE_CHECKPASSWORD geprüft werden, ob der Anwender ein
eingetragener Internetbenutzer ist. Ist dies der Fall, soll zu Dynpro
200 verzweigt werden.

Ist dies nicht der Fall, soll über eine Fehlermessage der Anwender
auf Screen 100 verbleiben. Dabei sollen beide Eingabefelder einga-
bebereit bleiben.

92
Entwurf WebTransaction: ABAP 3
In der nachfolgenden Aufgabe wird ein eingetragener Internetbenutzer Erläuterung
angelegt.

Ergänzen Sie die Ablauflogik des Dynpros 100. Schritte


PROCESS BEFORE OUTPUT.
MODULE status_0100.
*
PROCESS AFTER INPUT.
CHAIN.
FIELD: bapiempl-pernr, bapiuid-password.
MODULE user_command_0100.
ENDCHAIN.

Die CHAIN- und FIELD-Befehle sorgen dafür, dass die beiden Felder nach
einer Fehlermeldung eingabebereit bleiben.

Im Linux Test-Drive mysap.com 4.6B Evaluation Demo fehlen die Ta- Linux Test-Drive
bellen BAPIEMPL und BAPIUID, da es sich um eine reine Basis-Installation
handelt. Der Verfasser empfiehlt folgende reduzierte Ablauflogik.
PROCESS BEFORE OUTPUT.
MODULE status_0100.
*
PROCESS AFTER INPUT.
MODULE user_command_0100.

Legen Sie das PAI-Modul user_command_0100 per Vorwärtsnavigation im Schritte


neuen Include MZDEPOTnnI01 an, s. Abbildung 3.24.

Abbildung 3.24
Der Name des neuen
Includes wird
automatisch
vorgeschlagen, die
nötige Include-
Anweisung im
Rahmenprogramm wird
ergänzt. (© SAP AG)

3.2 Dynpro 100: Anmeldung 93


3 Entwurf WebTransaction: ABAP

Ergänzen Sie folgenden Programmcode.


MODULE user_command_0100 INPUT.
save_ok = ok_code.
CLEAR ok_code.

CASE save_ok.
WHEN 'LOGIN'.
CALL FUNCTION 'BAPI_EMPLOYEE_CHECKPASSWORD'
EXPORTING
number = bapiempl-pernr
password = bapiuid-password
IMPORTING
return = ret
EXCEPTIONS
OTHERS = 1.
IF ret-type IS INITIAL.
LEAVE TO SCREEN 200.
ELSE.
MESSAGE ID 'SU' TYPE ret-type NUMBER 000 WITH
ret-code ret-message.
ENDIF.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.

Linux Test-Drive Im Linux Test-Drive mysap.com 4.6B Evaluation Demo fehlt das
BAPI_EMPLOYEE_CHECKPASSWORD, da es sich um eine reine Basis-Installation
handelt. Der Verfasser empfiehlt folgenden reduzierten Programmcode.
MODULE user_command_0100 INPUT.
save_ok = ok_code.
CLEAR ok_code.

CASE save_ok.
WHEN 'LOGIN'.
LEAVE TO SCREEN 200.

94
Entwurf WebTransaction: ABAP 3
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.

Zunächst wird der vom Screen respektive GUI-Status zurückgelieferte Erläuterung


OK-Code gesichert, initialisiert und ausgewertet.
Wenn der Benutzer die Drucktaste zum Anmelden gedrückt hat, prüft
das BAPI_EMPLOYEE_CHECKPASSWORD, ob für die angegebene Personalnum-
mer und das Kennwort ein Internetbenutzer eingetragen wurde. Ist dies
der Fall, liefert das BAPI in der Feldleiste return den Initialwert zurück.
Ansonsten enthält ret-type den Wert 'E' (Error), ret-code und ret-mes-
sage enthalten Informationen über den Anmeldefehler. Die Nachricht
Nr. 000 der Nachrichtenklasse SU1 ist definiert als „& & & &“, zeigt also bis
zu vier übergebene Felder ohne weiteren Text an.
Wenn der Anwender die ZURÜCK-Taste drückt, wird das Programm ver-
lassen.

6. Legen Sie eine SAP-Transaktion ZDEPOTnn zum Starten des Modul-


pools an.

Legen Sie die Transaktion aus der Entwicklungsklasse ZIACnn heraus an, Schritte
s. Abbildung 3.25 bis Abbildung 3.27.

Abbildung 3.25
Anlegen einer
Transaktion
(© SAP AG)

1. Sollte die Nachrichtenklasse SU in Ihrem System fehlen, legen Sie bitte stattdessen
über den OBJECT NAVIGATOR / ANDERES OBJEKT / REGISTER WEITERE eine Kunden-
nachrichtenklasse Znn mit einer Nachricht 000 „& & & &“ an.

3.2 Dynpro 100: Anmeldung 95


3 Entwurf WebTransaction: ABAP

Abbildung 3.26
Pflege der
Transaktionsattribute
(© SAP AG)

Abbildung 3.27
Festlegen des von der
Transaktion zu startenden
Programms und des
Start-Dynpros
(© SAP AG)

7. Generieren Sie alle bisher angelegten Objekte. Starten Sie die


Transaktion ZDEPOTnn, verlassen Sie sie gleich wieder mittels der ZU-
RÜCK-Taste.

Erläuterung Mittlerweile wurde eine Reihe von Objekten angelegt und gespeichert.
Damit sie von der Transaktion gestartet werden können, müssen sie
noch generiert werden.
Bislang wird nur die ZURÜCK-Taste des GUI-Status funktionieren, die
durch Auslösen des Funktionscodes BACK zum Programmende führt.
Eine Eingabe von Personalnummer und Kennwort wird, da noch kein
Internetbenutzer angelegt wurde, stets zur Fehlermeldung führen.

Schritte Aktivieren Sie den kompletten Modulpool, s. Abbildung 3.28 bis Abbil-
dung 3.29. Der Arbeitsvorrat wird alle zu aktivierenden Objekte anzei-
gen. Markieren Sie diese. Wenn Sie bisher stets Ihre Objekte geprüft ha-
ben, sollten nun keine Fehler mehr auftreten. Ansonsten müssen Sie die
Fehler korrigieren.

96
Entwurf WebTransaction: ABAP 3
Abbildung 3.28
Generieren aller Objekte
des Modulpools
(© SAP AG)

Abbildung 3.29
Arbeitsvorrat: Neu
angelegte, noch nicht
generierte Objekte
(© SAP AG)

Starten Sie nun die Transaktion, s. Abbildung 3.30 bis Abbildung 3.32.

Abbildung 3.30
Start der Transaktion
(© SAP AG)

3.2 Dynpro 100: Anmeldung 97


3 Entwurf WebTransaction: ABAP

Abbildung 3.31
Es ist noch kein
Internetbenutzer
angelegt.
(© SAP AG)

Abbildung 3.32
Der Funktionscode BACK
der ZURÜCK-Taste des GUI-
Status führt zum
Programmende.
(© SAP AG)

3.3 Pflegen des Internetbenutzers


Ein Internetbenutzer ist kein R/3-Benutzer, der sich mit dem SAPGUI
anmeldet. Er wird im System angelegt mit Bezug auf ein Business-Ob-
jekt, z. B. auf einen Mitarbeiter. Festgelegt werden Name und Kenn-
wort. Diese können dann, nachdem der Anwender sie in die Webseite
zu Dynpro 100 eingetragen hat, von der WebTransaction durch Aufruf
des Kennwort-BAPIs überprüft werden.
Die hier im Beispiel verwendete Janine Auermann ist Mitarbeiterin im
IDES-Mandanten. Wenn Sie in einem anderen Mandanten üben, kön-
nen Sie jeden beliebigen anderen Mitarbeiter hierfür verwenden. Sie
können sich auch zu diesem Zweck einen neuen Mitarbeiter anlegen:
PERSONAL / PERSONALMANAGEMENT / ADMINISTRATION / PERSONAL-
STAMM / PFLEGEN.

Linux Test-Drive Das in diesem Abschnitt gezeigte Verfahren ist mit der Test-Drive-Instal-
lation mysap.com 4.6B on Linux Evaluation Demo nicht durchführbar,
da dies eine reine Basis-Installation ist. Deshalb fehlen alle für Internet-

98
Entwurf WebTransaction: ABAP 3
benutzer geeigneten Business-Objekte, auch das hier verwendete
BUS1065 (Mitarbeiter).
Man kann sich zwar selbst ein Business-Objekt mit dem Business Ob-
ject Builder durch Bezug auf eine Datenbanktabelle – etwa einer hierfür
anzulegenden Tabelle ZPERSONAL – mit entsprechenden Attributen und
Methoden anlegen. Weiterhin kann man die Zuordnung von Internet-
benutzern zu diesem Business-Objekt durch Pflege der Datenbankta-
belle BFUSER_TYP ermöglichen.
Allerdings scheitert dann der Versuch, mit Bezug auf dieses Business-
Objekt einen Internetbenutzer anzulegen, an einem Programmierfehler
in einem Kernelmodul der R/3-Basis 4.6B, auf die Linux, wohl im Unter-
schied zum toleranteren Windows NT, unwirsch mit dem Abbruch des
betreffenden Dialog-Workprozesses reagiert.
Lesern, die dieses Übungsbeispiel mit der Test-Drive-Installation auf
Linux nachprogrammieren wollen, empfiehlt der Verfasser deshalb, die
Prüfung des Internetbenutzers im Programmcode einfach wegzulassen.
Der Verfasser hat dieses Problem dem SAP-Linux-Team mitgeteilt, in
künftigen Releases dürfte es wohl nicht mehr auftreten.

8. Legen Sie für die Mitarbeiterin Janine Auermann einen Internetbe-


nutzer an.

Suchen Sie zunächst Frau Auermanns Personalnummer: PERSONAL / Schritte


PERSONALMANAGEMENT / ADMINISTRATION / PERSONALSTAMM ANZEI-
GEN (siehe Abbildungen 3.33 und 3.34).

Abbildung 3.33
Suchen einer Personal-
nummer mit der F4-Hilfe
(© SAP AG)

Abbildung 3.34
Suchergebnis: Frau
Auermann hat
Personalnummer 1006.
(© SAP AG)

3.3 Pflegen des Internetbenutzers 99


3 Entwurf WebTransaction: ABAP

9. Legen Sie Janine Auermann mit ihrer Personalnummer als Internet-


benutzer an.

Schritte Der Internetbenutzer wird innerhalb der üblichen Benutzerverwaltung


gepflegt: WERKZEUGE / ADMINISTRATION / BENUTZERPFLEGE / INTERNET-
BENUTZER. Tragen Sie die gefundene Personalnummer ein, und wählen
Sie den Typ BUS1065 (Employee), Abbildung 3.35 bis Abbildung 3.37.

Abbildung 3.35
Internetbenutzer für die
ermittelte Personal-
nummer anlegen
(© SAP AG)

Abbildung 3.36
Leere Eingabe steht hier
für unbegrenzte
Gültigkeit (© SAP AG)

Abbildung 3.37
Ein seltsames Kennwort
wird generiert. Lesen Sie
es mal laut vor! (© SAP
AG)
10.Ändern Sie das schwer zu merkende Kennwort des soeben ange-
legten Internetbenutzers ab.

Prüfen Sie den neu generierten Internetbenutzer noch nicht in der


WebTransaction. Zuvor muss Dynpro 200 angelegt werden.

Schritte Verwenden Sie wiederum die vorhin ermittelte Personalnummer und


das Business-Objekt BUS1065, s. Abbildung 3.38 bis Abbildung 3.39.

100
Entwurf WebTransaction: ABAP 3
Abbildung 3.38
Kennwort eines bereits
angelegten Internet-
benutzers ändern
(© SAP AG)

Abbildung 3.39
Eingeben des neuen,
leichter zu merkenden
Kennworts (© SAP AG)

3.4 Dynpro 200: Selektionen


Nachdem der Mitarbeiter sich auf Dynpro 100 erfolgreich angemeldet
hat, kann er die Konten eines Kunden ansehen und bearbeiten. Auf
Dynpro 200 wird er deshalb die Kundennummer eingeben, zu der auf
Dynpro 300 eine Liste mit allen Wertpapierpositionen des Kunden aus-
gegeben wird.
Über eine Drucktaste SELEKTIEREN gelangt man zum Folgedynpro 300.
Beim Klicken dieser Taste in Dynpro 200 soll zu PAI eine interne Tabelle
mit allen Wertpapierpositionen des Kunden gefüllt werden, die Dynpro
300 zu PBO dann als Steploop ausgeben wird. Die interne Tabelle soll zu
jeder Wertpapierposition folgende Angaben enthalten: WKN, TITEL, EMIT-
TENT, DEPOTNR, ANZAHL und die KUNDENNR.

1. Legen Sie zunächst im Dictionary einen View ZDEPOT_PAPIERnn in der


Entwicklungsklasse ZIACnn über die Tabellen ZDEPOTPSTN, ZWPAPIER
und ZDEPOT an, s. Abbildung 3.40 bis Abbildung 3.49.

Die Joinverknüpfungen ergeben sich aus den bereits festgelegten


Primär-/Fremdschlüsselbeziehungen dieser Datenbanktabellen.

Der View dient als Hilfsmittel zum Füllen der internen Tabelle mit
den Wertpapierpositionen und enthält: MANDT, WKN, TITEL, EMITTENT,
DEPOTNR, ANZAHL und die KUNDENNR.

Aktivieren Sie den View.

3.4 Dynpro 200: Selektionen 101


3 Entwurf WebTransaction: ABAP

Schritte
Abbildung 3.40
Anlegen eines Views
(© SAP AG)

Abbildung 3.41
Auswahl des Viewtyps
(© SAP AG)

Abbildung 3.42
Anlegen der Tabellen und
Joinbedingungen
(© SAP AG)

Abbildung 3.43
Joinbedingungen
ergeben sich aus den
Primär-/Fremdschlüssel-
beziehungen.
(© SAP AG)

Abbildung 3.44
Anlegen der Viewfelder
für Tabelle ZWPAPIER
(© SAP AG)

Abbildung 3.45
Auswahl der Felder aus
Tabelle ZWPAPIER
(© SAP AG)

102
Entwurf WebTransaction: ABAP 3
Abbildung 3.46
Auswahl der Felder aus
Tabelle ZDEPOTPSTN
(© SAP AG)

Abbildung 3.47
Auswahl der Felder aus
Tabelle ZDEPOT
(© SAP AG)

Abbildung 3.48
Alle Viewfelder des Views
ZDEPOT_PAPIERnn
(© SAP AG)

Abbildung 3.49
Aktivieren des Views
(© SAP AG)

2. Legen Sie Dynpro 200 an, s. Abbildung 3.50 bis Abbildung 3.54. Es
enthält ein Eingabefeld mit Dictionary-Bezug auf ZDEPOT-KUNDENNR
und die Drucktaste SELEKTIEREN. Über diese gelangt man zum Fol-
gedynpro 300.

Dynpro 300 wird eine Liste mit allen Wertpapierpositionen des Kun-
den als Steploop ausgeben. Zu dessen Vorbereitung soll zu PAI eine
interne Tabelle mit Daten aus dem soeben angelegten View
ZDEPOT_PAPIERnn gefüllt werden. Sie soll zu jeder Wertpapierposition
folgende Angaben enthalten: WKN, TITEL, EMITTENT, DEPOTNR, ANZAHL
und die KUNDENNR.

3.4 Dynpro 200: Selektionen 103


3 Entwurf WebTransaction: ABAP

Schritte
Abbildung 3.50
Anlegen des Dynpros 200
(© SAP AG)

Abbildung 3.51
Pflege der Dynpro-
Eigenschaften
(© SAP AG)

Abbildung 3.52
Anlegen eines Textfeldes
als Überschrift sowie eines
Eingabefeldes
KUNDENNR aus ZDEPOT
(© SAP AG)

104
Entwurf WebTransaction: ABAP 3
Abbildung 3.53
Drucktaste SELEKTIEREN mit
Funktionscode SELECT

Abbildung 3.54
Einstellen des OK-Code-
Feldes in der Elementliste
(© SAP AG)

3. Der GUI-Status des Dynpro enthält den Funktionscode BACK für den
Rückwärtspfeil. Dieser soll zurück zu Dynpro 100 führen. Der GUI-
Titel enthält die Inschrift „Selektion Wertpapierkunde“.

Programmieren Sie die Ablauflogik des Dynpros 200. Schritte


PROCESS BEFORE OUTPUT.
MODULE status_0200.
*
PROCESS AFTER INPUT.
MODULE user_command_0200.

Legen Sie per Vorwärtsnavigation das Modul status_0200 im PBO-


Include MZDEPOTnnO01 an, s. Abbildung 3.55.

3.4 Dynpro 200: Selektionen 105


3 Entwurf WebTransaction: ABAP

Abbildung 3.55
Auswahl des PBO-
Includes (© SAP AG)

MODULE status_0200 OUTPUT.


SET PF-STATUS '200'.
SET TITLEBAR '200'.
ENDMODULE. " STATUS_0200 OUTPUT

Legen Sie per Vorwärtsnavigation den GUI-Status 200 als Dialogstatus


mit dem Funktionscode BACK für den Rückwärtspfeil an; legen Sie auch
den GUI-Titel an, s. Abbildung 3.56 bis Abbildung 3.57.

Abbildung 3.56
Zuordnen des
Funktionscodes zur
ZURÜCK-Taste im GUI-
Status (© SAP AG)

Abbildung 3.57
Anlegen des GUI-Titels
(© SAP AG)

Ergänzen Sie das Top-Include MZDEPOTnnTOP um die Deklaration des


Views ZDEPOT_PAPIERnn und der hierauf basierenden internen Tabelle
IT_KP samt zugehörigem Arbeitsbereich WA_KP:
TABLES: zdepot, zkunden.
TABLES: zdepot_papiermu.
DATA: it_kp LIKE TABLE OF zdepot_papiermu,
wa_kp LIKE zdepot_papiermu.
DATA: ok_code LIKE sy-ucomm,
save_ok LIKE ok_code.

Legen Sie per Vorwärtsnavigation das Modul user_command_0200 im PAI-


Include MZDEPOTnnI01 an.

106
Entwurf WebTransaction: ABAP 3
MODULE user_command_0200 INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'BACK'.
LEAVE TO SCREEN 100.
WHEN 'SELECT'.
erstezeile = 1.
SELECT * FROM zdepot_papiermu
INTO CORRESPONDING FIELDS OF TABLE it_kp
WHERE kundennr = zdepot-kundennr.
LEAVE TO SCREEN 300.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT

Das Modul sorgt dafür, dass


• die Zurück-Taste zum Screen 100 zurückführt,
• die Selektieren-Taste eine interne Tabelle mit Daten aus dem View
füllt und zum Screen 300 hinführt. Das Feld ERSTEZEILE wird für die
Blätternfunktion von Dynpro 300 vorbelegt.

4. Aktivieren Sie alle bisher angelegten Objekte! Starten Sie die Trans-
aktion ZDEPOTnn, s. Abbildung 3.58 bis Abbildung 3.61. Es erscheint
Dynpro 100. Loggen Sie sich mit der in Abbildung 3.38 angelegten
Internetbenutzerkennung ein.

Schritte
Abbildung 3.58
Aktivieren der bisher
angelegten Objekte
(© SAP AG)

3.4 Dynpro 200: Selektionen 107


3 Entwurf WebTransaction: ABAP

Abbildung 3.59
Start der Transaktion
(© SAP AG)

Abbildung 3.60
Dynpro 100:
Personalnummer und
Kennwort aus
Abschnitt 3.3
(© SAP AG)

Abbildung 3.61
Dynpro 200: Die F4-Hilfe
ist bereits verfügbar.
Meiden Sie die
SELEKTIEREN-Taste, da
zuvor Dynpro 300
angelegt werden muss!
(© SAP AG)

108
Entwurf WebTransaction: ABAP 3

3.5 Dynpro 300: Anzeige der Liste

1. Legen Sie in Dynpro 300 die Überschrift „Wertpapierdepotauszug


für einen Kunden“ sowie für den in Dynpro 200 ausgewählten Kun-
den dessen Kundendaten als reine Ausgabefelder mit Dictionary-
Bezug zur Tabelle ZKUNDEN an: KUNDENNR, NAME, VORNAME, WOHNORT, s. Ab-
bildung 3.62 bis Abbildung 3.65.

Schritte
Abbildung 3.62
Anlegen Dynpro 300
(© SAP AG)

Abbildung 3.63
Pflege der Dynpro-
Eigenschaften
(© SAP AG)

3.5 Dynpro 300: Anzeige der Liste 109


3 Entwurf WebTransaction: ABAP

Abbildung 3.64
Anlegen eines Textfeldes
als Überschrift sowie von
Eingabefeldern aus
ZKUNDEN
(© SAP AG)

Abbildung 3.65
Kundendaten sind reine
Ausgabefelder: Setzen
des Attributs
(© SAP AG)

2. Fügen Sie das im Top-Include bereits deklarierte Feld POS in den


Screen ein. Es bildet die linke Spalte der Liste – die später als Ste-
ploop angelegt wird – und enthält eine fortlaufende Nummerie-
rung. Es ist ein reines Ausgabefeld, s. Abbildung 3.66 bis Abbildung
3.67.

Schritte
Abbildung 3.66
Einfügen eines im
Programm/Top-Include
deklarierten Feldes
(© SAP AG)

110
Entwurf WebTransaction: ABAP 3
Abbildung 3.67
Platzieren des Feldes POS,
Festlegen als reines
Ausgabefeld
(© SAP AG)

3. Fügen Sie die Felder WKN, TITEL, EMITTENT, DEPOTNR und ANZAHL aus
dem View ZDEPOT_PAPIERnn als reine Ausgabefelder ohne die zuge-
hörigen Textfelder in den Screen ein, s. Abbildung 3.68 bis Abbil-
dung 3.72. Sie bilden die restlichen Spalten des Steploops; ordnen
Sie sie auf dem Screen in Zeilenform an.

Erstellen Sie über dieser Zeile aus Textfeldern passende Spalten-


überschriften.

Markieren Sie die Ausgabefelder, und definieren Sie sie als Steploop
mit zehn Zeilen.

Die Textfelder, die normalerweise automatisch mit den Ausgabefeldern Erläuterung


als Bezeichner eingefügt werden, führen bei der Umwandlung zu einem
Steploop zu Fehlermeldungen. Durch das Weglassen dieser Felder mit
anschließendem manuellen Einfügen separater Textfelder als Spalten-
überschriften wird das Problem vermieden.

Schritte
Abbildung 3.68
Der View ZDEPOT_
PAPIERnn liefert die
Spalten des künftigen
Steploops. Fügen Sie sie
ohne Textfeld ein.
(© SAP AG)

3.5 Dynpro 300: Anzeige der Liste 111


3 Entwurf WebTransaction: ABAP

Abbildung 3.69
Anordnung der
Ausgabefelder von links
nach rechts: POS, WKN,
TITEL, EMITTENT,
DEPOTNR, ANZAHL
(© SAP AG)

Abbildung 3.70
Ergänzen der
Spaltenüberschriften,
Markieren der Steploop-
Felder (© SAP AG)

Abbildung 3.71
Menü: BEARBEITEN /
GRUPPIERUNG / STEPLOOP /
DEFINIEREN (© SAP AG)

Abbildung 3.72
Vergrößern des Steploops
auf zehn Zeilen
(© SAP AG)

4. Fügen Sie das bereits im Top-Include deklarierte Feld KAUFPOS ein.


Setzen Sie links davon ein Textfeld „Pos“, rechts davon die Druck-
taste KAUFEN mit dem Funktionscode KAUFEN ein.

Pflegen Sie das OK-Code-Feld, s. Abbildung 3.73 bis Abbildung


3.75.

Erläuterung Mit diesen Feldern und der Drucktaste kann der Anwender der Web-
Transaction eine Wertpapierposition zum Kaufen/Verkaufen auswäh-

112
Entwurf WebTransaction: ABAP 3
len. In Dynpro 400 wird der Wertpapierkauf/-verkauf in der betreffen-
den Datenbanktabelle verbucht.

Schritte
Abbildung 3.73
Einfügen eines im
Programm/Top-Include
deklarierten Feldes
(© SAP AG)

Abbildung 3.74
Platzieren des Feldes
KAUFPOS, Anlegen
Textfeld „Pos“, Anlegen
Drucktaste KAUFEN mit
Funktionscode KAUFEN
(© SAP AG)

Abbildung 3.75
Pflege des OK-Code-
Feldes nicht vergessen!
(© SAP AG)

5. Programmieren Sie die Ablauflogik des Dynpros 300:

• Das PBO-Modul STEPLOOP_ZEILE_FUELLEN füllt jeweils eine Zeile des


Steploops.
• Das PBO-Modul TRANS_TO_300 ermittelt und transportiert die Kun-
dendaten zum Dynpro.
• Das PBO-Modul STATUS_0300 legt GUI-Status und GUI-Titel fest.
• Das PAI-Modul USER_COMMAND_0300 wertet den OK-Code aus.
Wenn eine E-Message (Fehler) gerufen wird, soll Feld KAUFPOS
eingabebereit gemacht werden.

Ergänzen Sie die Ablauflogik des Dynpros 300. Schritte


PROCESS BEFORE OUTPUT.
LOOP.
MODULE steploop_zeile_fuellen.
ENDLOOP.

3.5 Dynpro 300: Anzeige der Liste 113


3 Entwurf WebTransaction: ABAP

MODULE status_0300.
MODULE trans_to_0300.
PROCESS AFTER INPUT.
FIELD kaufpos MODULE user_command_0300.
LOOP.
ENDLOOP.

Die LOOP/ENDLOOP-Schleife am Ende ist zwar notwendig, aber leer, da der


Steploop keine veränderten Daten zu PAI zurückliefert.

6. Das PBO-Modul STEPLOOP_ZEILE_FUELLEN füllt jeweils eine Zeile des


Steploops mit dem Inhalt der hierfür in Dynpro 300 angelegten in-
ternen Tabelle IT_KP. Das Feld ERSTEZEILE enthält die Position der er-
sten im Steploop darzustellenden Zeile in IT_KP.

Schritte Legen Sie das Modul STEPLOOP_ZEILE_FUELLEN im PBO-Include an.


MODULE steploop_zeile_fuellen OUTPUT.
ind = erstezeile + sy-stepl - 1.
pos = ind.
READ TABLE it_kp INTO wa_kp INDEX ind.
IF sy-subrc <> 0.
EXIT FROM STEP-LOOP.
ELSE.
MOVE-CORRESPONDING wa_kp TO zdepot_papiermu.
ENDIF.
ENDMODULE. " STEPLOOP_ZEILE_FUELLEN OUTPUT

Die Tabelle wird zeilenweise ausgelesen. Falls sich die anzuzeigende


Seite am Ende der Tabelle befindet, wird das Füllen des Steploops nach
der letzten Tabellenzeile beendet.

7. Das PBO-Modul TRANS_TO_300 ermittelt und transportiert die Kun-


dendaten aus der Datenbanktabelle ZKUNDEN anhand des in Dynpro
200 erfassten Feldes ZDEPOT-KUNDENNR.

Schritte Legen Sie das Modul TRANS_TO_300 im PBO-Include an.


MODULE trans_to_0300 OUTPUT.
SELECT SINGLE * FROM zkunden
WHERE kundennr = zdepot-kundennr.
ENDMODULE. " TRANS_TO_0300 OUTPUT

114
Entwurf WebTransaction: ABAP 3

8. Das PBO-Modul STATUS_0300 legt GUI-Status und GUI-Titel fest.


Der GUI-Status 300 enthält, neben BACK für die =85h&.-Taste,
Funktionscodes mit folgenden Tastenbelegungen:
• (ª)(F9) FIRST zum Blättern zur ersten Seite des Steploops
• (Bild½) UP zum Blättern zur vorherigen Seite des Steploops
• (ª)(F11) DOWN zum Blättern zur nächsten Seite des Steploops
Der GUI-Titel zeigt den Text „Auszug Wertpapierdepot“ an (s. Ab-
bildung 3.77).

3.5 Dynpro 300: Anzeige der Liste 115


3 Entwurf WebTransaction: ABAP

Schritte Legen Sie das Modul STATUS_0300 im PBO-Include an.


MODULE status_0300 OUTPUT.
SET PF-STATUS '300'.
SET TITLEBAR '300'.
ENDMODULE. " STATUS_0300 OUTPUT

Legen Sie den GUI-Status 300 als Dialogstatus an. Der Funktionscode
FIRST wird mit der Tastenkombination (ª)(F9) DOWN mit (ª)(F11) ver-
knüpft. Dies ist notwendig, da in der zur Laufzeit aus dem Dynpro resul-
tierenden Webseite der Steploop als vollständige Liste mit allen Zeilen
dargestellt werden wird. Hierzu wird das AGate beim Füllen des zuge-
hörigen Templates mit diesen Tastenkombinationen zum Anfang des
Steploops respektive jeweils eine Seite nach unten blättern. Die Stan-
dardbelegungen zu (Strg)(Bild½) und (Bild¼) müssen daher ausge-
tauscht werden (s. Abbildung 3.76).
Der Funktionscode UP wird vom AGate hingegen nicht benötigt und
kann daher auf der Belegung (Bild½) verbleiben.

Abbildung 3.76
GUI-Status 300 mit
Funktionscodes und
ausgetauschten
Funktionstasten zum
Blättern im Steploop
(© SAP AG)

Abbildung 3.77
GUI-Titel 300
(© SAP AG)

116
Entwurf WebTransaction: ABAP 3

9. Das PAI-Modul USER_COMMAND_0300 wertet den OK-Code aus:


• BACK führt zurück zu Dynpro 200.
• FIRST blättert den Steploop zur ersten Seite (1 Seite = 10 Zeilen).
• UP blättert den Steploop zur nächsten Seite.
• DOWN blättert den Steploop zur vorherigen Seite.
• KAUFEN liest die zugehörige Zeile aus der internen Tabelle IT_KP in
den Arbeitsbereich. Wenn hierbei kein Fehler erfolgt, wird mit
Dynpro 400 fortgesetzt, ansonsten erscheint eine Fehlermel-
dung.

Legen Sie das Modul USER_COMMAND_0300 im PAI-Include an. Schritte


MODULE user_command_0300 INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'BACK'.
LEAVE TO SCREEN 200.
WHEN 'FIRST'.
erstezeile = 1.
WHEN 'UP'.
IF erstezeile GE 11.
erstezeile = erstezeile - 10.
ELSE.
erstezeile = 1.
ENDIF.
WHEN 'DOWN'.
erstezeile = erstezeile + 10.
WHEN 'KAUFEN'.
READ TABLE it_kp INTO wa_kp INDEX kaufpos.
IF sy-subrc = 0.
LEAVE TO SCREEN 400.
ELSE.
MESSAGE e000(su) WITH
'Wertpapierposition nicht vorhanden'.
ENDIF.
ENDCASE.
ENDMODULE. " USER_COMMAND_0300 INPUT

3.5 Dynpro 300: Anzeige der Liste 117


3 Entwurf WebTransaction: ABAP

10.Aktivieren Sie Dynpro 300 und alle sonstigen, noch nicht aktivierten
Objekte, s. Abbildung 3.78. Starten Sie die Transaktion, und gehen
Sie bis Dynpro 300. Drücken Sie aber nicht die Taste KAUFEN, da zu-
vor Dynpro 400 angelegt werden muss!

Schritte
Abbildung 3.78
Prüfen Sie sicherheits-
halber vor dem Aktivieren
die Syntax. (© SAP AG)

Starten Sie die Transaktion, s. Abbildung 3.79 bis Abbildung 3.81. Fül-
len Sie Dynpro 100 wie in Abbildung 3.60, Dynpro 200 wie in Abbildung
3.61 gezeigt aus. Betätigen Sie die Drucktaste SELEKTIEREN.

Abbildung 3.79
Transaktionsstart über
das Kontextmenü
(© SAP AG)

Abbildung 3.80
Dynpro 300 für Kunde
624456; Blättern in der
Liste (© SAP AG)

118
Entwurf WebTransaction: ABAP 3
Abbildung 3.81
Vorletzte Seite der Liste:
Kunde 624456, Jerome
Newton, hält insgesamt 21
Wertpapierpositionen.
(© SAP AG)

3.6 Dynpro 400: Kaufen und verbuchen


Das Dynpro 400 zeigt den in Dynpro 200 ausgewählten Kunden mit der
in Dynpro 300 gewählten Wertpapierposition an.
Über ein Eingabefeld kann der Anwender die Anzahl der zu kaufen-
den/verkaufenden Stücke eintragen, s. Abbildung 3.82. In einem weite-
ren Eingabefeld wird mit 'X' ein Zukauf, mit ' ' ein Verkauf ausgewählt.
Mit der Drucktaste VERBUCHEN wird der Zu- oder Verkauf in der Daten-
bank gespeichert.
Da es sich um eine Änderungstransaktion handelt, benötigt man ein
Sperrobjekt und einen Verbuchungsfunktionsbaustein. Diese beiden
Objekte legen Sie zuerst an.
Nach erfolgreichem Verbuchen oder mit der ZURÜCK-Taste gelangt der
Anwender wieder zurück zu Dynpro 300.

Abbildung 3.82
Dynpro 400 zum
Wertpapiere handeln
und verbuchen
(© SAP AG)

3.6 Dynpro 400: Kaufen und verbuchen 119


3 Entwurf WebTransaction: ABAP

3.6.1 Sperrobjekt anlegen


1. Legen Sie im Dictionary das Sperrobjekt EZDEPOTPSTN für die Tabelle
ZDEPOTPSTN in Ihrer Entwicklungsklasse ZIACnn an, s. Abbildung 3.83
bis Abbildung 3.84 – falls dies nicht schon vor Ihnen einer Ihrer
Lehrgangskollegen erledigt hat. Speichern und aktivieren Sie das
Sperrobjekt.

Erläuterung Mit dem Aktivieren werden die Funktionsbausteine ENQUEUE_EZDEPOTPSTN


zum Setzen und DEQUEUE_EZDEPOTPSTN zum Freigeben der Sperre ange-
legt.

Schritte
Abbildung 3.83
Anlegen eines
Sperrobjekts mit dem
Object Navigator
(© SAP AG)

Abbildung 3.84
Zuordnen der Tabelle zum
Sperrobjekt. Die
Transaktion verwendet
Schreibsperren.
(© SAP AG)

3.6.2 Verbuchungsfunktionsbaustein anlegen


2. Legen Sie einen Verbuchungsfunktionsbaustein Z_DEPOTPSTNnn_AN-
ZAHL in einer neuen Funktionsgruppe ZDEPOTnn innerhalb Ihrer Ent-
wicklungsklasse an. Er soll für eine Wertpapierposition mit den
Schlüsseln DEPOTNR und WKN eine gegebene ANZAHL in der Tabelle ZDE-
POTPSTN verbuchen.

Schritte Legen Sie in Ihrer Entwicklungsklasse die Funktionsgruppe ZDEPOTnn an,


s. Abbildung 3.85 bis Abbildung 3.86.

120
Entwurf WebTransaction: ABAP 3
Abbildung 3.85
Anlegen der
Funktionsgruppe
(© SAP AG)

Abbildung 3.86
Eigenschaftspflege
Funktionsgruppe
(© SAP AG)

Den Funktionsbaustein Z_DEPOTPSTNnn_ANZAHL legen Sie in dieser Funkti-


onsgruppe an, s. Abbildung 3.87 bis Abbildung 3.89. Stellen Sie SYN-
CHRONE V1-VERBUCHUNG ein, und ordnen Sie die Anwendungsklasse
KUNDE FILIALE zu.

Abbildung 3.87
Anlegen eines
Funktionsbausteines
(© SAP AG)

Abbildung 3.88
Eigenschaftspflege
Funktionsbaustein
(© SAP AG)

Abbildung 3.89
Verbuchungsart V1
synchron sowie Zuordnen
der Anwendungsklasse
(© SAP AG)

Legen Sie die Importparameter fest, s. Abbildung 3.90. Für Verbu-


chungsfunktionsbausteine sind keine Referenzparameter zugelassen,
stellen Sie daher Wertübergabe ein.

3.6 Dynpro 400: Kaufen und verbuchen 121


3 Entwurf WebTransaction: ABAP

Abbildung 3.90
Importparameter des
Funktionsbausteines
(© SAP AG)

3. Folgende Fehler sollen als Ausnahme behandelt werden, s. Abbil-


dung 3.91:
• Datensatz (DEPOTNR und WKN) nicht gefunden
• Sperren nicht möglich
• Verbuchungsfehler

Schritte
Abbildung 3.91
Ausnahmen (Exceptions)
des Funktionsbausteines
(© SAP AG)

4. Programmieren Sie nun den Quelltext des Funktionsbausteines.


Zunächst wird die Wertpapierposition aus der Tabelle ZDEPOTPSTN
gelesen. Prüfen Sie den Erfolg. Wurde kein Datensatz gelesen, wird
eine Ausnahme gerufen.

Schritte Ergänzen Sie den Quelltext des Funktionsbausteines.


FUNCTION z_depotpstnmu_anzahl.
*"-------------------------------------------------
*"*"Verbuchungsfunktionsbaustein:
*"
*"*"Lokale Schnittstelle:
*" IMPORTING
*" REFERENCE(DEPOTNR) TYPE ZDEPOTPSTN-DEPOTNR
*" REFERENCE(WKN) TYPE ZDEPOTPSTN-WKN
*" REFERENCE(ANZAHL) TYPE ZDEPOTPSTN-ANZAHL
*" EXCEPTIONS
*" NOT_FOUND
*" LOCK_ERROR
*" UPDATE_ERROR

122
Entwurf WebTransaction: ABAP 3
*"-------------------------------------------------
TABLES zdepotpstn.
DATA success LIKE sy-subrc.
SELECT SINGLE * FROM zdepotpstn
WHERE depotnr = depotnr
AND wkn = wkn.
IF sy-subrc NE 0.
RAISE not_found.

5. Die betreffende Wertpapierposition soll vor dem Verbuchen ge-


sperrt werden. Rufen Sie im Fehlerfalle eine Ausnahme.

Ergänzen Sie den Quelltext des Funktionsbausteines. Schritte


IF sy-subrc NE 0.
RAISE not_found.
ELSE.
CALL FUNCTION 'ENQUEUE_EZDEPOTPSTN'
EXPORTING
mode_zdepotpstn = 'E'
mandt = sy-mandt
depotnr = depotnr
wkn = wkn
* X_DEPOTNR = ' '
* X_WKN = ' '
* _SCOPE = '2'
* _WAIT = ' '
* _COLLECT = ' '
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc <> 0.
RAISE lock_error.

6. Die Verbuchung erfolgt mit dem Open SQL-Befehl UPDATE. Prüfen


Sie, ob das Verbuchen erfolgreich war.

3.6 Dynpro 400: Kaufen und verbuchen 123


3 Entwurf WebTransaction: ABAP

Schritte Ergänzen Sie den Quelltext des Funktionsbausteines.


IF sy-subrc <> 0.
RAISE lock_error.
ELSE.
zdepotpstn-anzahl = anzahl.
UPDATE zdepotpstn.
success = sy-subrc.

7. Nach dem Verbuchen wird die Wertpapierposition wieder ent-


sperrt. Im Falle eines Misserfolges bei der Verbuchung soll eine
Ausnahme gerufen werden.

Speichern und Aktivieren Sie den Funktionsbaustein.

Schritte Ergänzen Sie den Quelltext des Funktionsbausteines.


UPDATE zdepotpstn.
success = sy-subrc.
CALL FUNCTION 'DEQUEUE_EZDEPOTPSTN'
EXPORTING
mode_zdepotpstn = 'E'
mandt = sy-mandt
depotnr = depotnr
wkn = wkn
* x_depotnr = ' '
* X_WKN = ' '
* _SCOPE = '3'
* _SYNCHRON = ' '
* _COLLECT = ' '
EXCEPTIONS
OTHERS = 1.
IF success NE 0.
RAISE update_error.
ENDIF.
ENDIF.
ENDIF.
ENDFUNCTION.

Vergessen Sie das Speichern und Aktivieren des Funktionsbausteines


nicht!

124
Entwurf WebTransaction: ABAP 3
3.6.3 Dynpro 400 anlegen
Das Dynpro 400 soll den ausgewählten Kunden mit den Feldern KUN-
DENNR, NAME, VORNAME und WOHNORT aus ZKUNDEN anzeigen. Weiterhin soll die
gewählte Wertpapierposition mit WKN, TITEL, EMITTENT, DEPOTNR und ANZAHL
zu sehen sein; sie wurde zu PAI von Dynpro 300 in die Feldleiste WA_KP
eingelesen.

8. Legen Sie Dynpro 400 an, s. Abbildung 3.92 bis Abbildung 3.93.

Schritte
Abbildung 3.92
Anlegen Dynpro 400
(© SAP AG)

Abbildung 3.93
Eigenschaftspflege
des Dynpros
(© SAP AG)

9. Fügen Sie die Felder KUNDENNR, NAME, VORNAME und WOHNORT aus der Da-
tenbanktabelle ZKUNDEN, als reine Ausgabefelder, dem Screen hinzu.
Setzen Sie die Überschrift „Wertpapiere zukaufen oder verkaufen“
als Textfeld ein, s. Abbildung 3.94 bis Abbildung 3.97.

Fügen Sie weiterhin aus dem Programm heraus die Felder WKN, TI-
TEL, EMITTENT, DEPOTNR und ANZAHL der Feldleiste WA_KP – als reine Aus-
gabefelder mit entsprechenden Textfeldern – hinzu.

3.6 Dynpro 400: Kaufen und verbuchen 125


3 Entwurf WebTransaction: ABAP

Schritte
Abbildung 3.94
Einfügen Felder aus
dem Dictionary
(© SAP AG)

Abbildung 3.95
Platzieren der Felder,
Attribut setzen,
Überschrift
(© SAP AG)

Abbildung 3.96
Einfügen der Felder
einer Feldleiste aus
dem Programm
(© SAP AG)

Abbildung 3.97
Platzieren der Ausgabe-
felder, Ergänzen der
Textfelder
(© SAP AG)

10.Über ein Eingabefeld soll der Anwender die Anzahl der Stücke ein-
tragen. In einem weiteren Eingabefeld wird mit 'X' ein Zukauf oder
mit ' ' ein Verkauf ausgewählt. Fügen Sie hierzu die bereits im Top-
Include deklarierten Felder KAUFANZAHL und ZUKAUF aus dem
Programm heraus mit passenden Textfeldern in den Screen ein, s.
Abbildung 3.98 bis Abbildung 3.100.

Mit der Drucktaste VERBUCHEN (Funktionscode VERBUCH) wird der


Zukauf oder Verkauf in der Datenbank gespeichert. Pflegen Sie den
OK-Code.

126
Entwurf WebTransaction: ABAP 3
Schritte
Abbildung 3.98
KAUFANZAHL ist die
Anzahl der zu (ver-)
kaufenden Stücke.
(© SAP AG)

Abbildung 3.99
ZUKAUF entscheidet
zwischen Zukauf und
Verkauf der Stücke.
(© SAP AG)

Abbildung 3.100
Zuordnen Funktionscode
VERBUCH zur Drucktaste
(© SAP AG)

11.Das Feld KAUFANZAHL soll nach einer Fehlermeldung eingabebereit


sein. Der GUI-Status enthält die ZURÜCK-Taste mit dem Funktions-
code BACK. Der GUI-Titel lautet: „Wertpapiere handeln und verbu-
chen“, s. Abbildung 3.101 bis Abbildung 3.102.

3URJUDPPLHUHQ 6LH GLH $EODXIORJLN YRQ '\QSUR 400 Schritte


PROCESS BEFORE OUTPUT.
MODULE status_0400.
*
PROCESS AFTER INPUT.
FIELD kaufanzahl.
MODULE user_command_0400.

Legen Sie das Modul STATUS_0400 im PBO-Include an.


MODULE status_0400 OUTPUT.
SET PF-STATUS '400'.
SET TITLEBAR '400'.
ENDMODULE. " STATUS_0400 OUTPUT

3.6 Dynpro 400: Kaufen und verbuchen 127


3 Entwurf WebTransaction: ABAP

Abbildung 3.101
Zuordnen des Funktions-
codes zur ZURÜCK-Taste im
GUI-Status (© SAP AG)

Abbildung 3.102
Anlegen des GUI-Titels
(© SAP AG)

12.Die PAI-Verarbeitung soll im Falle des Funktionscodes BACK zu Dyn-


pro 300 verzweigen.

Schritte Legen Sie das Modul USER_COMMAND_0400 im PAI-Include an.


MODULE user_command_0400 INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'BACK'.
LEAVE TO SCREEN 300.

13.Zu PAI soll beim Funktionscode VERBUCH der in Aufgabe 3.6.2 pro-
grammierte Funktionsbaustein Z_DEPOTPSTNnn_ANZAHL gerufen wer-
den. Fehlerfälle, also Ausnahmen, sollen durch Ausgabe einer Er-
ror-Message behandelt werden.

Im Falle einer erfolgreichen Verbuchung wird ebenfalls zurück zu


Dynpro 300 verzweigt. Deshalb muss zu PAI von Dynpro 400 die in-
terne Tabelle IT_KP durch erneutes Lesen des Views ZDEPOT_PAPIERnn
aktualisiert werden. Der Steploop wird dann zurück zu Seite 1 ge-
blättert.

128
Entwurf WebTransaction: ABAP 3
Ergänzen Sie das PAI-Modul USER_COMMAND_0400. Schritte
WHEN 'BACK'.
LEAVE TO SCREEN 300.
WHEN 'VERBUCH'.
IF zukauf = space.
wa_kp-anzahl = wa_kp-anzahl - kaufanzahl.
ELSE.
wa_kp-anzahl = wa_kp-anzahl + kaufanzahl.
ENDIF.
CALL FUNCTION 'Z_DEPOTPSTNMU_ANZAHL'
EXPORTING
depotnr = wa_kp-depotnr
wkn = wa_kp-wkn
anzahl = wa_kp-anzahl
EXCEPTIONS
not_found = 1
lock_error = 2
update_error = 3
OTHERS = 4.
CASE sy-subrc.
WHEN 0.
MESSAGE s000(su) WITH
'Wertpapierhandel wurde verbucht'.
erstezeile = 1.
SELECT * FROM zdepot_papiermu
INTO CORRESPONDING FIELDS OF TABLE it_kp
WHERE kundennr = zkunden-kundennr.
LEAVE TO SCREEN 300.
WHEN 1.
MESSAGE e000(su) WITH 'Datensatz nicht gefunden'.
WHEN 2.
MESSAGE e000(su) WITH 'Sperren fehlgeschlagen'.
WHEN 3.
MESSAGE e000(su) WITH 'Änderung fehlgeschlagen'.
WHEN 4.

3.6 Dynpro 400: Kaufen und verbuchen 129


3 Entwurf WebTransaction: ABAP

MESSAGE e000(su) WITH


'Unbekannter Fehler aufgetreten'.
ENDCASE.
COMMIT WORK.
ENDCASE.
ENDMODULE. " USER_COMMAND_0400 INPUT

14.Aktivieren Sie alle neu angelegten Objekte, s. Abbildung 3.103.


Starten Sie die Transaktion. Kaufen Sie 42 Stück Silicon Graphics
von CompEmm. (WKN 872981, DEPOTNR 103573) für den Kunden
Jerome Newton hinzu. Verkaufen Sie davon wieder 23 Stück.

Schritte
Abbildung 3.103
Mit Dynpro 400 werden
alle neu angelegten
Objekte aktiviert.
(© SAP AG)

Starten Sie die Transaktion ZDEPOTnn. Loggen Sie sich in Dynpro 100 als
Mitarbeiter 1006 ein. Wählen Sie in Dynpro 200 den Kunden 624456. In
Dynpro 300 entscheiden Sie sich für den Kauf der Position 13, s. Abbil-
dung 3.104 bis Abbildung 3.107.

Abbildung 3.104
Dynpro 300: Auswahl der
Wertpapierposition des
Kunden (© SAP AG)

130
Entwurf WebTransaction: ABAP 3
Abbildung 3.105
Zukauf von
Wertpapieren, Verbuchen
in der Datenbanktabelle
(© SAP AG)

Abbildung 3.106
Die Anzahl dieser
Wertpapiere hat sich um
42 Stück erhöht.
(© SAP AG)

Abbildung 3.107
Verkauf von
Wertpapieren
(© SAP AG)

Die bis hierhin erstellte Fassung der WebTransaction ist auch als Trans- Alternative:
port T53K900013 von http://www.dekra-akademie.de erhältlich. Dieser Transport
enthält die komplette Entwicklungsklasse ZIACMU, bestehend aus Pro-
gramm, Dynpros, Transaktion, View, Sperrobjekt und Verbuchungs-
funktionsbaustein. Er setzt sich zusammen aus den beiden Dateien
R900013.T53 und K900013.T53. Voraussetzung ist, dass die Entwick-
lungsklasse ZDEKRA komplett eingerichtet wurde, etwa über den Trans-
port LNXK90006.

3.6 Dynpro 400: Kaufen und verbuchen 131


Die ABAP-Programmierung ist noch nicht ganz abgeschlossen. Zu ergän-
zen ist noch IAC-spezifischer Code. Behandelt werden muss der Fall, dass
der Internetbenutzer die ZURÜCK-Taste seines Browsers drückt. Dann
muss die WebTransaction synchronisiert werden, s. Abschnitt 4.11. Wei-
terhin können mittels spezieller ABAP-Makros per RFC Daten aus R/3 in
den Kontext einer AGate-Session gesendet werden, s. Abschnitt 4.15.
SAP@Web Studio und ITS 4

Kapitel 4
SAP@Web Studio und ITS
Die bisher nur intern in R/3 verfügbare webfähige Transaktion wird in
diesem Kapitel mittels des SAP@Web Studios zu einem Webprojekt er-
weitert, aus dem eine komplette Internet-Anwendungskomponente
(IAC) der Kategorie WebTransaction resultiert. Daneben gibt es noch die
in Kapitel 5 behandelten IAC-Kategorien WebRFC und WebReporting.
Zunächst werden Projekt, Service und Theme angelegt. Anschließend
wird für jedes Dynpro ein HTML-Template automatisch durch Zugriff
auf die Dynpro-Definition in R/3 generiert. Nach dem Publizieren der
Templates auf den ITS ist die WebTransaction als IAC von einem beliebi-
gen Browser im Intranet aus aufrufbar.

In diesem Kapitel wird derselbe R/3-Rechner, je nach Funktion, mit


verschiedenen Namen belegt:
• T53: Name des Datenbankservers und damit auch des R/3-Sy-
stems, IP-Nummer 172.16.2.53
• CPQ5508: Name des Anwendungsservers, als Ausbildungsrechner
auf der gleichen Maschine wie der Datenbankserver installiert, da-
her ebenfalls IP-Nummer 172.16.2.53
Wenn Sie Ihre hosts-Datei richtig gepflegt haben, s. Abbildung 1.15
in Abschnitt 1.1, oder sich in Ihrem Intranet ein korrekt installierter
DNS befindet, können Sie auf den nachfolgenden Abbildungen die
IP-Nummer 172.16.2.53 stets durch CPQ5508 ersetzen.

133
4 SAP@Web Studio und ITS

4.1 Projekt, Service und Theme


Das Erweitern der WebTransaction zu einem Webprojekt beginnt mit
dem Anlegen eines Projektes im SAP@Web Studio. Darin wird ein Ser-
vice angelegt, welcher der WebTransaction zugeordnet wird. Um für
dieselbe WebTransaction unterschiedliche Darstellungsweisen, etwa
unterschiedliche Firmenlogos, verwenden zu können, kann ein Service
mehrere verschiedene Themes enthalten.

1. Starten Sie das SAP@Web Studio. Legen Sie das Projekt wpdepot
im Pfad C:\Programme\SAP\Studio\2.0\bin\wpdepot.itsp an.

Schritte Starten Sie das SAP@Web Studio mit START / PROGRAMME / SAP@WEB
STUDIO / STUDIO 4.6D, s. Abbildung 1.62.
Legen Sie mit FILE / NEW... das Projekt im vorgeschlagenen Pfad an, s.
Abbildung 4.1.

Abbildung 4.1
Anlegen des Projektes
(© SAP AG)

2. Legen Sie mittels des Service-Wizards für die WebTransaction ZDE-


POTnn einen Service wpbuchung im soeben angelegten Projekt an.

Schritte Starten Sie im SAP@Web Studio den Service-Wizard mit PROJECT / ADD
TO PROJECT / NEW..., s. Abbildung 4.2 bis Abbildung 4.9. Die Anmelde-
daten wurden bereits bei der Installation des ITS eingegeben, sie befin-
den sich dort in der besonderen Servicedatei global.srvc, die global gül-
tige Einstellungen enthält. Diese können aber von Servicedateien der
einzelnen Services überschrieben werden.
Der Service ist anschließend noch nicht aufrufbar, es müssen erst noch
die HTML-Templates hinzugefügt werden.

134
SAP@Web Studio und ITS 4
Abbildung 4.2
Start des Sevice-Wizards
(© SAP AG)

Abbildung 4.3
Einstiegsseite des
Service-Wizards
(© SAP AG)

Abbildung 4.4
Benennen des Services
(© SAP AG)

Abbildung 4.5
Auswahl des R/3-Systems
(© SAP AG)

Abbildung 4.6
Übernahme Anmelde-
daten aus global.srvc
(© SAP AG)

Abbildung 4.7
Timeout in Minuten, nach
denen eine ITS-Session
beendet wird
(© SAP AG)

4.1 Projekt, Service und Theme 135


4 SAP@Web Studio und ITS

Abbildung 4.8
Zuordnung der
WebTransaction
zum Service
(© SAP AG)

Abbildung 4.9
Abschlussseite des
Service-Wizards
(© SAP AG)

Abbildung 4.10
Die automatisch
generierte Servicedatei
im SAP@Web Studio
(© SAP AG)

3. Legen Sie im Service wpbuchung das Theme 00 an.

Schritte Markieren Sie im SAP@Web Studio den Service wpbuchung. Legen Sie
Thema 00 mit PROJECT / ADD TO PROJECT / THEME an.

Abbildung 4.11
Anlegen eines Themes
(© SAP AG)

4.2 Templates aus Dynpros generieren


Templates sind HTML-Dateien, die neben üblichem HTML-Code Platz-
halter für Objekte des Dynpros enthalten. Sie enthalten jeweils ein
HTML-Formular mit Eingabefeldern und einer Drucktaste zum Absen-
den.

136
SAP@Web Studio und ITS 4
Ein Template ist jeweils einem Dynpro der WebTransaction zugeordnet.
Die Platzhalter sind in HTMLBusiness formuliert und werden zur Laufzeit
vom AGate des ITS mit Daten aus dem jeweiligen Dynpro, mitunter
auch aus der Transaktion, ersetzt.
Das AGate tritt gegenüber dem R/3-System ähnlich wie ein interaktiver
SAPGUI-Benutzer auf. Der Benutzer jedoch sitzt an seinem Browser.
Das AGate
• empfängt ein Dynpro der laufenden Transaktion,
• wandelt es durch Ersetzen der Platzhalter des Templates in ein
HTML-Formular um,
• sendet dieses an das WGate, das es über den Webserver an den
Browser weiterleitet,
• empfängt die vom Benutzer ausgefüllten und zurückgelieferten For-
mulardaten über Webserver und WGate,
• füllt damit die entsprechenden Dynpro-Felder aus und sendet sie zu-
rück ans R/3.
HTMLBusiness-Code wird mit dem Zeichen ` („Backticks“) geklammert,
das in HTML ohne Bedeutung ist. Die Darstellung beispielsweise der
Nummer eines Wertpapierkunden kann so aussehen: `ZDEPOT-KUN-
DENNR.value`. Dies dient der Unterscheidung vom HTML-Code.
Der Template-Wizard kann aus den Dynpros einer WebTransaction her-
aus automatisch Templates generieren. Hierzu verbindet er sich mit dem
R/3-System und fragt die Dynpro-Definitionen ab. Die automatisch ge-
nerierten Templates sind äußerst karg und schnörkellos gehalten. Für
den Webdesigner dienen sie als Basis für weitergehende Gestaltung mit
HTML, Graphiken, JavaScript-Code etc.

1. Legen Sie Templates für die Dynpros 100, 200, 300 und 400 mittels
des Template-Wizards an, s. Abbildung 4.12 bis Abbildung 4.19.
Die Templates sollen zunächst für die Anmeldesprache Deutsch er-
stellt werden.

SAP@Web Studio benötigt zum Abfragen der Dynpro-Eigenschaften Erläuterung


Zugangsdaten eines gültigen R/3 SAPGUI-Benutzers, hier des Benut-
zers ITSADM. Die Online-Verbindung zu R/3 muss verfügbar sein. Auf-
grund der Lizenzbestimmungen darf dieser Benutzer jedoch nicht per
SAPGUI angemeldet sein.
Die Programmlistings der Templates direkt nach deren Anlegen finden
Sie im Anhang 6.3.

Starten Sie den Template-Wizard: PROJECT / ADD TO PROJECT / NEW... Schritte

4.2 Templates aus Dynpros generieren 137


4 SAP@Web Studio und ITS

Abbildung 4.12
Start des Template-
Wizards zum Generieren
von Templates
(© SAP AG)

Abbildung 4.13
Einstiegsseite des
Template-Wizards
(© SAP AG)

Abbildung 4.14
Auswahl des R/3-Systems
mit der WebTransaction
(© SAP AG)

Abbildung 4.15
Der Template-Wizard
meldet sich wie ein
„normaler“ Benutzer,
allerdings über RFC, am
R/3 an. (© SAP AG)

Abbildung 4.16
Die Anmeldung des
Template-Wizards ist nun
auch in der Benutzerliste
zu sehen: Transaktion
SM04. (© SAP AG)

138
SAP@Web Studio und ITS 4
Abbildung 4.17
Programmname, alle
Dynpros, Theme,
deutsche Sprache
(© SAP AG)

Abbildung 4.18
Auslesen Dynpro-
Definitionen, Generierung
der Templates
(© SAP AG)

Abbildung 4.19
Anzeige der HTML-Source:
Für jedes Dynpro wurde
ein Template in
HTMLBusiness angelegt.
(© SAP AG)

2. Sehen Sie sich die Templates in der Browser-Vorschau an.

In der Browser-Vorschau sehen Sie jeweils ein Formular mit Text- und Erläuterung
Eingabefeldern sowie einer Drucktaste zum Absenden. Die Darstellung
ist insofern unvollständig, als die HTMLBusiness-Platzhalter noch nicht er-
setzt wurden. Ferner ist die Drucktaste nicht funktionsfähig, dies wird
erst der Fall sein, wenn die Templates auf den ITS publiziert worden
sind.
Es wird der Standardbrowser für die Dateinamenserweiterung .html,
hier der Internet Explorer, verwendet.

4.2 Templates aus Dynpros generieren 139


4 SAP@Web Studio und ITS

Schritte
Abbildung 4.20
Browser-Vorschau:
Template zu Dynpro 100.
Das Kennwortfeld fehlt,
da es auskommentiert
angelegt wurde.

3. Betrachten Sie den HTMLBusiness-Code der zu den Dynpros 100 und


200 des ABAP-Programms SAPMZDEPOTnn generierten Templates.
Diese werden kurz Template 100 und Template 200 genannt.

Schritte Öffnen Sie das Template 100, das in der Datei sapmzdepotnn_100_
de.html vorliegt, in der Ansicht HTML-SOURCE, s. Abbildung 4.19. Ent-
sprechend öffnen Sie Template 200. Sie finden den HTMLBusiness-Code
dieser Templates auch im Anhang 6.3.

HTML-Formulare Template 100 und 200 enthalten jeweils ein neues Tag <form me-
thod="post" action="...">. Es definiert ein Formular, das neben Textfel-
dern auch Eingabefelder – die der Benutzer bearbeiten kann – und eine
Drucktaste zum Versenden enthält, es ist in der Browser-Vorschau, s.
Abbildung 4.20, bereits erkennbar.
Die Auslassungen "..." beinhalten HTMLBusiness-Code, der vom AGate
durch HTML-Code ersetzt wird. Er wird anschließend erläutert.
Innerhalb des Formulars ist das Eingabefeld <input type=text name="..."
value="..." maxlength="008" size="008"> für Text definiert. Die maximale
Eingabelänge und die sichtbare Länge sind hier auf jeweils acht Zeichen
begrenzt. Der innerhalb von value="..." eingetragene Wert wird im For-
mular angezeigt und kann vom Benutzer verändert werden.
Am unteren Ende des Formulars befindet sich die mittels <input
type=submit name="~okcode=LOGIN" value="..."> definierte Drucktaste zum
Versenden des Formulars. Der innerhalb von value="..." angegebene
Text wird auf der Drucktaste angezeigt.
Das Drücken des Buttons bewirkt die Generierung eines URL, ähnlich
der des Hyperlinks, aus den Formulardaten. Über diesen URL wird das
Formular versendet, wobei die Inhalte der Eingabefelder mitgesendet
werden. Im Falle von <form method="get" ...> werden sie an den URL
angehängt, hier etwa würde der URL lauten:

http://www.dekra-kl.de/scripts/wgate/wpbuchung!?bapiempl-
pernr=1006&bapiuid-password=dekra&~okcode=LOGIN

140
SAP@Web Studio und ITS 4
In diesem URL erkennt man nach dem Pfad zur Website und dem Auf-
ruf des serverseitigen Programms WGate mit dem Service wpbuchung
drei Name/Wert-Paare, die dem Webserver übermittelt werden. Im
Falle von <form method="post" ...> werden die Name/Wert-Paare statt
im URL im HTTP-Header übermittelt:

Name Wert

bapiempl-pernr 1006
bapiuid-password dekra
~okcode LOGIN

Tabelle 4.1 : Name/Wert-Paare, die über das aus Template 100 resultierende Formular
im HTTP-Header versendet werden.

Die post-Methode hat gegenüber der get-Methode den Vorteil, dass die
zurückgelieferten Ergebnisse in keinem Cache gespeichert werden, was
bedeutet, dass stets ein aktuelles, vom zuständigen Webserver gesen-
detes, Formular übermittelt wird.
Die Name/Wert-Paare werden vom Webserver weitergeleitet an das
angegebene serverseitige Programm, hier an das WGate. Die Weiterlei-
tung erfolgt im Standard über die so genannte CGI-Schnittstelle (Com-
mon Gateway Interface), im Falle des IIS von Microsoft jedoch über die
ISAPI-Schnittstelle, die ähnlich funktioniert, aber laut Microsoft schnel-
ler ist. Das WGate wertet die Name/Wert-Paare aus und leitet sie an das
AGate weiter.
Durch Angabe von action="..." innerhalb von <form ...> wird festge-
legt, wohin das Formular geschickt werden soll. Eine Angabe wie etwa
<form method="post" action="/scripts/wgate/wpbu-
chung/~flN0YXRlPTEyMzgyLjAwMS4wMi4wMg==">

führt dazu, dass das Formular über den gleichen Webserver an das ser-
verseitige Programm WGate gesendet wird, das daraufhin den Service
wpbuchung startet. Hierzu verwendet der Webserver die CGI- respek-
tive ISAPI-Schnittstelle.
Der codierte Rest ~flN0YXRlPTEyMzgyLjAwMS4wMi4wMg== des URL wird im
folgenden Abschnitt zusammen mit `wgateurl()` – eine HTMLBusiness-
Funktion, die obigen URL generiert – erläutert.

4.2 Templates aus Dynpros generieren 141


4 SAP@Web Studio und ITS

HTMLBusiness Zwischen jeweils zwei Zeichen ` (Backticks) finden Sie folgenden HTML-
Business
-Code:
• `BAPIEMPL-PERNR.label`: Platzhalter für den Bezeichner eines Dynpro-
Feldes, hier: Personalnr.
• `BAPIEMPL-PERNR.name`: Platzhalter für den ABAP-Namen eines Dyn-
pro-Feldes, hier: BAPIEMPL-PERNR[1].
• `BAPIEMPL-PERNR.value`: Platzhalter für den angezeigten Wert eines
Dynpro-Feldes, hier ist es leer "", da dieses Feld im Dynpro zu PBO
nicht vorbelegt wurde; .value kann auch weggelassen werden.
• `wgateurl()`: Platzhalter für einen URL zum WGate, wie er etwa für
die Formulardefinition gebraucht wird. <form method="post"
action="`wgateurl()`"> resultiert in einem URL, wie er im vorherigen
Abschnitt beispielhaft angedeutet wurde.
Da mehrere Benutzer gleichzeitig verwaltet werden müssen, wird im
AGate – ähnlich der R/3-Basis mit ihren Rollbereichen – für jeden Be-
nutzer ein Sessionspeicher mit dem Benutzerkontext eingerichtet und
durch eine Session-ID identifiziert. Die Session-ID wird in dem co-
dierten Rest des URL nach der Angabe des Services wpbuchung er-
gänzt. Dieser Rest enthält darüber hinaus eine Synchronisationsinfor-
mation, die angibt, welches Formular der Benutzer gerade bearbeitet
hat, und einige weitere Angaben. Die Synchronisationsinformation
ist von Bedeutung für den Fall, dass der Anwender die ZURÜCK-Taste
des Browsers drückt, s. Abschnitt 4.11.
• `~windowtitle`: Platzhalter für den GUI-Titel des Dynpros, hier: Anmel-
dung Wertpapierdepotverwaltung.
• `~messageline`: Platzhalter für die Statuszeile des Dynpros, wichtig
zum Einsehen der Fehlermeldungen.
• `assert(BAPIEMPL-PERNR.name)`: Nach dem Auftreten eines Fehlers bei
der Dynpro-Eingabe ist das Feld, das den Fehler verursachte, hier
BAPIEMPL-PERNR, eingabebereit, die anderen nicht. Da in HTML einem
Feld die Eingabebereitschaft nicht genommen werden kann, wird
stattdessen neben dem betreffenden Feld eine standardisierte Fehler-
meldung angezeigt.

4. Sorgen Sie dafür, dass das Eingabefeld für das Kennwort in Tem-
plate 100 in der Browser-Vorschau sichtbar wird, s. Abbildung
4.21.

142
SAP@Web Studio und ITS 4
Der Template-Wizard hat zwar einen Code für das Kennwortfeld ange- Erläuterung
legt, ihn aber seltsamerweise mit den Zeichenfolgen <!-- und --> auskom-
mentiert. Der Verfasser hat allerdings beobachtet, dass das Kennwort in
früheren Versionen des SAP@Web Studios nicht auskommentiert wurde.

• Entfernen Sie die Kommentarzeichen des Kennwortfeldes in Tem- Schritte


plate 100.
<p>
`BAPIUID-PASSWORD.label`
<input type=text
name="`BAPIUID-PASSWORD.name`"
value="`BAPIUID-PASSWORD.value`" maxlength="016"
size="016">`assert(BAPIUID-PASSWORD.name)`
<p>

Abbildung 4.21
Kennwortfeld nach
Entfernen der
Kommentarzeichen
(© SAP AG)

5. Tragen Sie das Theme 00 in die Servicedatei des Services


wpbuchung ein.

In der globalen Servicedatei global.srvc des ITS ist das Theme 99 einge- Erläuterung
tragen. Um für den Service wpbuchung das Theme 00 einzustellen,
muss dies durch die lokale Servicedatei wpbuchung.srvc überschrieben
werden.

Doppelklicken Sie in die erste freie Zeile von wpbuchung.srvc, s. Abbil- Schritte
dung 4.22. Tragen Sie den Schlüssel ~theme = 00 ein. Das Eingabefenster
bestätigen Sie mit (¢)

Abbildung 4.22
Überschreiben des
Themes durch die
lokale Servicedatei
(© SAP AG)

4.2 Templates aus Dynpros generieren 143


4 SAP@Web Studio und ITS

4.3 Website definieren und publizieren


1. Definieren Sie Ihre Website im SAP@Web Studio, um dessen Publi-
zierfunktion verwenden zu können.

Erläuterung Publizieren der Website bedeutet, die Dateien des Webprojektes – Ser-
vicedateien, HTML-Templates, Sprachressourcendateien etc. – vom
Dateisystem des SAP@Web Studios in das Dateisystem des AGates zu
kopieren. Hierzu können Windows-Ordnerfreigaben oder auch FTP-
Upload-Adressen verwendet werden.

Schritte Starten Sie PROJECT / SITE DEFINITION, s. Abbildung 4.23 bis Abbildung
4.30.

Abbildung 4.23
Definieren einer Website
im SAP@Web Studio
(© SAP AG)

Abbildung 4.24
Site-Wizard: Benennen
der Website
(© SAP AG)

Abbildung 4.25
Netzwerkverbindung
zum Webserver mit
dem WGate
(© SAP AG)

144
SAP@Web Studio und ITS 4
Abbildung 4.26
Netzwerkverbindung
zum AGate des ITS1
(© SAP AG)

Abbildung 4.27
Anstelle der Windows-
Ordnerfreigaben sind mit
CUSTOM statt ITS VIRTUAL
SHARES auch FTP-Adressen
zum Heraufladen der
Dateien möglich.
(© SAP AG)

Abbildung 4.28
Falls der Webserver einen
anderen Port als Port 80
abhört, muss dieses hier
eingetragen werden.
(© SAP AG)

Abbildung 4.29
Schlussseite des
Site-Wizards
(© SAP AG)

Abbildung 4.30
Site-Definition:
Freigegebene ITS-Ordner
zum Publizieren im Netz
(© SAP AG)

1. Wegen der Single-Host-Installation ist dies hier der Gleiche wie der Webserver mit dem WGate.

4.3 Website definieren und publizieren 145


4 SAP@Web Studio und ITS

2. Publizieren Sie den Service und dessen Templates auf das AGate
des ITS.

Schritte Markieren Sie den Service wpbuchung im SAP@Web Studio. PROJECT /


PUBLISH FILES, s. Abbildung 4.31 bis Abbildung 4.34. Nach dem Publi-
zieren sind Kopien der Dateien des Webprojekts im Dateisystem des
AGates zu sehen.

Abbildung 4.31
Publizieren des Services
und der Templates
(© SAP AG)

Abbildung 4.32
Erfolgsmeldungen
des Publizierens im
unteren Teilfenster
(© SAP AG)

Abbildung 4.33
Kopie der Servicedatei im
Dateisystem des AGate
(© SAP AG)

Abbildung 4.34
Kopien der Templates im
Dateisystem des AGate
(© SAP AG)

146
SAP@Web Studio und ITS 4

4.4 Start der IAC über Hyperlink


Die WebTransaction ist nun zu einer Internet-Anwendungskomponente
(IAC) erweitert worden und einsatzbereit, sie muss nur noch gestartet
werden. Dies erfolgt über einen URL, die der Benutzer ins Adressfeld
des Browsers eingeben könnte. Da dies sehr umständlich ist, wird in die
bereits bestehende Homepage ein Hyperlink zu diesem URL angelegt.

1. Starten Sie nochmals Ihre Homepage aus Abschnitt 2.5 im Browser,


s. Abbildung 4.35 bis Abbildung 4.37. Prüfen Sie, ob die Standard-
IACs noch funktionieren, s. auch das Ende des Abschnitts 1.2.

Schritte
Abbildung 4.35
Browser: Eigene
Homepage mit
Standard-IACs

Abbildung 4.36
Start einer Standard-IAC
über einen Hyperlink

Abbildung 4.37
Erfolgreicher IAC-Start

2. Suchen Sie im Dateisystem Ihres Webservers das WGate, s. Abbil-


dung 4.38.

Schritte
Abbildung 4.38
Der Script-Ordner des
Webservers IIS:
C:\\Inetpub\Scripts

4.4 Start der IAC über Hyperlink 147


4 SAP@Web Studio und ITS

3. Legen Sie im linken Frame Ihrer Homepage (Datei inhalt.htm) ei-


nen Hyperlink an, über dessen URL die IAC wpbuchung im rechten
Frame gestartet wird.

Erläuterung Der IAC-Start erfolgt durch einen URL mit Start des Programms WGate
im Script-Ordner des IIS. Dessen virtueller Ordner /scripts findet sich im
Dateisystem als C:\Inetpub\scripts. Dem WGate wird im URL zunächst
der Name des Services wpbuchung übergeben, welcher dann im AGate
gestartet wird. Dem folgen im URL, nach den Trennzeichen "!?", wei-
tere Parameter als Name/Wert-Paare, etwa in der Form ~language=de,
wodurch die Sprache Deutsch eingestellt wird.
Aus der Servicedatei wpbuchung.srvc entnimmt das AGate, welche
Transaktion des R/3 zu starten ist.

Schritte Ergänzen Sie C:\Inetpub\wwwroot\inhalt.htm.


<a href="selfhtml/selfhtml.htm" target="rechts"> SELFHTML
</a><br>
<a href="/scripts/wgate/wpbuchung!?~language=de"
target="rechts"> Wertpapierbuchung </a><br>
</body>

4. Aktualisieren Sie Ihre Browser-Ansicht. Starten Sie die IAC wpbu-


chung, s. Abbildung 4.39 bis Abbildung 4.45. Melden Sie sich auf
der Webseite zu Dynpro 100, kurz Webseite 100 genannt, als Mit-
arbeiter Nr. 1006 an.

Auf Webseite 200 wählen Sie Kundennummer 624456.

Auf Webseite 300 wählen Sie das Papier Isar Amperwerke der
Emission-GmbH, WP-Kennnummer 504500, Depotnummer
937561. Beachten Sie die Nutzung der Blätterfunktion des Dynpro-
Steploops zur Ausgabe der gesamten Liste in der Webseite. Be-
trachten Sie auch die repeat-Schleife im HTMLBusiness-Code von
Template 300.

Kaufen Sie auf Webseite 400 18 Stücke. Verkaufen Sie die 18


Stücke wieder.

148
SAP@Web Studio und ITS 4
Schritte
Abbildung 4.39
Start des Services
wpbuchung mit Webseite
100 über einen Hyperlink,
Anmeldung als
Internetbenutzer mit
noch sichtbarem
Kennwort

Abbildung 4.40
Webseite 200: Eingabe
der Kundennummer

Abbildung 4.41
Webseite 300, obere
Hälfte

4.4 Start der IAC über Hyperlink 149


4 SAP@Web Studio und ITS

Listenausgabe Im Unterschied zum Steploop eines Dynpros, dessen Länge begrenzt ist
durch Blättern – hier auf zehn Zeilen pro Seite, kann eine HTML-Seite beliebig lange
Listen anzeigen. Deshalb blättert das AGate im Steploop, um so wie in
Webseite 300, s. Abbildung 4.42, die Liste Seite für Seite zusammenzu-
stellen. Hierzu verwendet das AGate die im GUI-Status 300, s. Abschnitt
3.5, festgelegten Tastenfunktionen (ª)(F9) für den Funktionscode FIRST
(zum Anfang blättern) und (ª)(F11) für den Funktionscode DOWN (nach
unten blättern).
Die Liste wird durch folgenden HTMLBusiness-Code in Template 300 an-
gezeigt:
<table>
<thead>
<tr>
<td>`'%#AUTOTEXT004'.label`</td>
<td>`'%#AUTOTEXT005'.label`</td>
<td>`'%#AUTOTEXT006'.label`</td>
<td>`'%#AUTOTEXT007'.label`</td>
<td>`'%#AUTOTEXT008'.label`</td>
<td>`'%#AUTOTEXT009'.label`</td>
</tr>
</thead>
<tbody>
`repeat with j from 1 to POS.max`
<tr>
<td>`POS[j].value`</td>
<td>`ZDEPOT_PAPIERMU-WKN[j].value`</td>
<td>`ZDEPOT_PAPIERMU-TITEL[j].value`</td>
<td>`ZDEPOT_PAPIERMU-EMITTENT[j].value`</td>
<td>`ZDEPOT_PAPIERMU-DEPOTNR[j].value`</td>
<td>`ZDEPOT_PAPIERMU-ANZAHL[j].value`</td>
</tr>
`end`
</tbody>
</table>

Mit den Tags <thead> und <tbody> werden der Kopfbereich und der Da-
tenbereich der Tabelle festgelegt. Die Bezeichner der Form %#AUTOTEXT004
wurden vom Screen Painter automatisch vergeben für Textfelder, für die
der Programmierer nicht selbst einen Bezeichner vergeben hatte.

150
SAP@Web Studio und ITS 4
Die HTMLBusiness-Schleife `repeat with j from 1 to POS.max` hat zur Folge,
dass der im Bereich bis `end` eingeschlossene Code solange in die resul-
tierende HTML-Seite eingesetzt wird, bis der Schleifenzähler – begin-
nend mit 1 – bis zu POS.max, dem größten Wert des Feldes POS, hochge-
zählt hat.
Im gezeigten Beispiel läuft j von 1 bis 21. Hat j beispielsweise derzeit
den Wert 5, dann wird in der fünften HTML-Listenzeile
`ZDEPOT_PAPIERnn-TITEL[j].value` ersetzt durch den Wert der Zelle in der
fünften Zeile der Spalte Wertpapiertitel des Steploops in Dynpro 300:
„Isar Amperwerke“.

Abbildung 4.42
Webseite 300, untere
Hälfte; Blätternfunktion
des Steploops (Seite 1:
Pos. 1 bis 10, Seite 2: 11 bis
20, Seite 3: Pos. 21)

Abbildung 4.43
Webseite 400: Kauf von 18
Wertpapieren

4.4 Start der IAC über Hyperlink 151


4 SAP@Web Studio und ITS

Abbildung 4.44
Webseite 300: Erhöhte
Anzahl an Wertpapieren
nach dem Kauf

Abbildung 4.45
Webseite 400: Verkauf
von Wertpapieren

4.5 Sprachunabhängigen Text integrieren


Die Templates wurden bisher nur für die Sprache DE (Deutsch) ange-
legt. In diesem Abschnitt wandeln Sie sie zu sprachunabhängigen Tem-
plates um, die auch die Anmeldesprache EN (Englisch) unterstützen.
Die Sprachunabhängigkeit eines IAC ergibt sich teilweise bereits aus der
Sprachunabhängigkeit des R/3. Die Textfelder eines Dynpros werden
durch HTMLBusiness-Platzhalter in die resultierende HTML-Seite über-
nommen; eine andere Anmeldesprache führt so unmittelbar zur anders-
sprachigen Anzeige der Textelemente.
Der Webdesigner ergänzt das vom Template-Wizard in Rohfassung ge-
nerierte Template um eigene Texte, die nicht vom Dynpro her stammen.
Zu deren Gestaltung mit dem Ziel einer von der Anmeldesprache ab-
hängigen Webseite bietet HTML Business sprachunabhängige Platzhalter
an.

152
SAP@Web Studio und ITS 4

1. Ergänzen Sie Template 100 um einen sprachunabhängigen Platz-


halter #welcome für die Anmeldesprachen Deutsch und Englisch, der
die Anwender in der Überschrift der Stufe <h2> willkommen heißt.

Legen Sie je eine englische und deutsche Sprachressourcendatei an,


und pflegen Sie jeweils den Schlüssel welcome.

Ergänzen Sie Template 100. Schritte


<body>
<p><h2>`#welcome`</h2></p>
`~messageline`

Starten Sie den Resource-Wizard: PROJECT / ADD TO PROJECT / NEW...


Legen Sie den Schlüssel welcome an, s. Abbildung 4.46 bis Abbildung
4.51.

Abbildung 4.46
Resource-Wizard zum
Anlegen einer
Sprachressourcendatei
(© SAP AG)

Abbildung 4.47
Einstiegsseite des
Resource-Wizards
(© SAP AG)

Abbildung 4.48
Zuordnung zu Service,
Theme und Sprache
Deutsch (© SAP AG)

4.5 Sprachunabhängigen Text integrieren 153


4 SAP@Web Studio und ITS

Abbildung 4.49
Es gibt noch keine
Sprachressource für
Service und Theme
(© SAP AG)

Abbildung 4.50
Abschlussseite des
Resource-Wizards
(© SAP AG)

Abbildung 4.51
Anlegen des Sprach-
schlüssels welcome auf
Deutsch (© SAP AG)

Starten Sie den Resource-Wizard erneut für die Sprache Englisch, s. Ab-
bildung 4.52 bis Abbildung 4.54.

Abbildung 4.52
Anlegen der zweiten
Sprachressourcendatei
für Englisch (© SAP AG)

Abbildung 4.53
Bereits vorhandene
Sprachschlüssel aus der
deutschen Sprach-
ressource werden
übernommen.
(© SAP AG)

Abbildung 4.54
Pflege des Sprach-
schlüssels welcome
auf Englisch
(© SAP AG)

2. Benennen Sie die deutschsprachigen Templates sapmzdepotnn_


xxx_ de.html um zu sprachunabhängigen Templates sapmzdepot-
nn_ xxx.html (xxx steht für 100, 200, 300 oder 400), s. Abbildung
4.55 bis Abbildung 4.57.

Publizieren Sie die sprachunabhängigen Templates und die Sprach-


ressourcendateien. Löschen Sie die deutschsprachigen Templates.

154
SAP@Web Studio und ITS 4
Schließen Sie alle Template-Fenster. Entfernen Sie an den Template-Da- Schritte
teinamen die Endung _de. Markieren Sie das Thema 00, und publizieren
Sie diese erneut mit PROJECT / PUBLISH FILES. Die deutschsprachigen
Templates zum Löschen finden Sie über den Explorer im Pfad
C:\Programme\SAP\ITS\2.0\<r3>\templates\wpbuchung\00, wobei
<r3> der Name Ihres R/3-Systems ist.

Abbildung 4.55
Umbenennen der
deutschsprachigen
Templates (© SAP AG)

Abbildung 4.56
Erneutes Publizieren
des Themes
(© SAP AG)

Abbildung 4.57
Löschen der
deutschsprachigen
Templates im AGate
(© SAP AG)

3. Ergänzen Sie inhalt.htm um einen Link zur Anmeldung auf Eng-


lisch. Rufen Sie die WebTransaction in Deutsch und Englisch auf.

Die Anmeldesprache DE respektive EN wird im aufrufenden URL festge- Erläuterung


legt durch den Parameter ~language, der als Name/Wert-Paar mitgege-
ben wird.

Ergänzen Sie C:\Inetpub\wwwroot\inhalt.htm. Schritte


<a href="/scripts/wgate/wpbuchung!?~language=de"
target="rechts"> Wertpapierbuchung </a><br>
<a href="/scripts/wgate/wpbuchung!?~language=en"
target="rechts"> Deposit account booking </a><br>
</body>

4.5 Sprachunabhängigen Text integrieren 155


4 SAP@Web Studio und ITS

Aktualisieren Sie Ihren Browser, s. Abbildung 4.58 bis Abbildung 4.59.

Abbildung 4.58
Start der WebTransaction
mit Anmeldesprache
Deutsch

Abbildung 4.59
Start der WebTransaction
mit Anmeldesprache
Englisch; einige
Textfelder und die
Drucktaste sind noch
nicht übersetzt.

4. Pflegen Sie – der Vollständigkeit halber – die englischen Überset-


zungen der Textelemente Ihrer Dynpros des Programms SAPMZDE-
POTnn.

Schritte Öffnen Sie Dynpro 100 SPRINGEN / ÜBERSETZUNG, s. Abbildung 4.60 bis
Abbildung 4.63. Speichern Sie die Übersetzungen, und aktivieren Sie
das Dynpro neu. Verfahren Sie entsprechend mit allen anderen Dyn-
pros. Starten Sie die IAC erneut.

Abbildung 4.60
Übersetzen der
Textelemente
des Dynpros
(© SAP AG)

156
SAP@Web Studio und ITS 4
Abbildung 4.61
Übersetzungen der
Textfelder und Druck-
tasten von Dynpro 100
(© SAP AG)

Abbildung 4.62
Übersetzung der
Kurzbeschreibung
(Dynpro-Eigenschaften)
(© SAP AG)

Abbildung 4.63
Übersetzungen der
Textfelder und Druck-
tasten von Dynpro 200
(© SAP AG)

Abbildung 4.64
Erneuter Start der IAC:
Alle Texte sind übersetzt.

4.6 HTML-Eingabefelder im Formular


Die WebTransaction unterliegt, was den Teil der ABAP-Programmierung
angeht, einer Reihe von Beschränkungen. So dürfen keine Auswahl-
knöpfe oder Ankreuzfelder ins Dynpro platziert werden, stattdessen
sind Textfelder der Länge 1 zu verwenden. Hingegen werden Auswahl-
knöpfe oder Ankreuzfelder vom Template unterstützt. Die automatisch
generierten Templates sind also für Sie als Webdesigner Ausgangspunkt
zur Gestaltung und Verbesserung.
Zunächst soll die Kennworteingabe vor fremden Blicken geschützt wer-
den. Hierfür sieht HTML den Eingabefeldtyp password vor.

4.6 HTML-Eingabefelder im Formular 157


4 SAP@Web Studio und ITS

Auswahlknöpfe erhält man über den Eingabefeldtyp radio. Eine Aus-


wahlknopfgruppe ergibt sich aus allen Auswahlknöpfen mit gleichem
name; von diesen kann stets genau einer ausgewählt werden.
Ein Ankreuzfeld erhält man über den Eingabefeldtyp checkbox.

1. Verdecken Sie die Eingabe in das Kennwortfeld von Template 100


mit Sternen, s. Abbildung 4.65.

Schritte Ändern Sie Template 100.


`BAPIUID-PASSWORD.label`
<input type=password
name="`BAPIUID-PASSWORD.name`"
value="`BAPIUID-PASSWORD.value`" maxlength="016"
size="016">`assert(BAPIUID-PASSWORD.name)`

Abbildung 4.65
Schutz der
Kennworteingabe vor
neugierigen Blicken

2. Die Anzahl der zu (ver-)kaufenden Stücke in Template 400 soll


statt des Textfeldes über eine Auswahlknopfgruppe (Radiobuttons)
gewählt werden. Sehen Sie Auswahlknöpfe für 1, 2, 5, 10, 20, 50,
100, 200, 500 und 1000 Stück vor, s. Abbildung 4.66.

Schritte Ergänzen Sie Template 400, und kommentieren Sie das vorhandene
Eingabefeld aus.
<p>
<!--<input type=text name="`KAUFANZAHL.name`"
value="`KAUFANZAHL.value`" maxlength="010" size="010"> -->
<input type=radio name="`KAUFANZAHL.name`" value=1> 1 <br>
<input type=radio name="`KAUFANZAHL.name`" value=2> 2 <br>
<input type=radio name="`KAUFANZAHL.name`" value=5> 5 <br>
<input type=radio name="`KAUFANZAHL.name`" value=10> 10
<br>
<input type=radio name="`KAUFANZAHL.name`" value=20> 20
<br>
<input type=radio name="`KAUFANZAHL.name`" value=50> 50
<br>

158
SAP@Web Studio und ITS 4
<input type=radio name="`KAUFANZAHL.name`" value=100> 100
<br>
<input type=radio name="`KAUFANZAHL.name`" value=200> 200
<br>
<input type=radio name="`KAUFANZAHL.name`" value=500> 500
<br>
<input type=radio name="`KAUFANZAHL.name`" value=1000>
1000 <br>
`assert(KAUFANZAHL.name)`
`'%#AUTOTEXT007'.label`

3. Die Entscheidung über Zu- oder Verkauf des Wertpapiers soll im


Template 400 statt des Textfeldes durch ein Ankreuzfeld (Check-
box) erfolgen, s. Abbildung 4.66.

Zu beachten ist beim Anlegen eines Ankreuzfeldes, dass es im URL nur Erläuterung
im angekreuzten Zustand als Name/Wert-Paar gesendet wird. Ist es
hingegen nicht angekreuzt, fehlt das Name/Wert-Paar. Deshalb sollte
man vor dem checkbox-Feld stets ein gleichnamiges verstecktes Feld
vom Eingabefeldtyp hidden vorsehen. Der URL sieht dann folgenderma-
ßen aus:
• …: ...&name=ZUKAUF&value=" "&...
• ;: ...&name=ZUKAUF&value=" "&name=ZUKAUF&value="X"...
Das zweite Name/Wert-Paar überschreibt das erste im Falle des ange-
kreuzten Feldes.

Ergänzen Sie Template 400, und kommentieren Sie das vorhandene Schritte
Eingabefeld aus.
<p>
<!-- <input type=text name="`ZUKAUF.name`"
value="`ZUKAUF.value`" maxlength="001" size="001"> -->
<input type=hidden name="`ZUKAUF.name`" value=" ">
<input type=checkbox name="`ZUKAUF.name`" value="X">
`assert(ZUKAUF.name)`
`'%#AUTOTEXT008'.label`

4. Kaufen Sie, unter Verwendung der neuen Auswahlknöpfe und An-


kreuzfelder, 20 Stücke Silicon Graphics für den Kunden 624456
von CompEmm. (WKN 872981, Depotnummer 103573) hinzu
(s. Abbildung 4.66). Verkaufen Sie davon wieder 10 Stück.

4.6 HTML-Eingabefelder im Formular 159


4 SAP@Web Studio und ITS

Schritte Publizieren Sie Template 400, und starten Sie das IAC neu. Wählen Sie
in Webseite 300 die Position 13.

Abbildung 4.66
Auswahlknöpfe und
Ankreuzfeld

4.7 Auswahllistenfeld (HTML-Select) anlegen


Die F4-Hilfe des R/3 gibt es in vergleichbarer Funktionalität in HTML
nicht. Allerdings können in einfacher Form Auswahllistenfelder angebo-
ten werden, aus denen der Benutzer sich einen Eintrag herauswählt.

1. Ersetzen Sie im Template 200 die Textfeldeingabe der Kunden-


nummer durch ein HTML-Select, s. Abbildung 4.67 bis Abbildung
4.68. Von den folgenden Einträgen sollen stets vier sichtbar sein:
124456
124457
124458
124459
124460
274067
284104
396710
472016
492569
624456
649912
729461
826452
936294

160
SAP@Web Studio und ITS 4
Hier wird zunächst ein Auswahllistenfeld mit festen Werten, die im Tem- Anmerkung
plate gespeichert sind, angelegt. Besser wäre es jedoch, wenn das Aus-
wahllistenfeld aktuelle Werte aus der betreffenden R/3-Tabelle bezie-
hen würde. Dies wird in Abschnitt 4.15 behandelt: ABAP-Makros
senden diese Werte per RFC aus R/3 in den Benutzerkontext der
AGate-Session.

Ergänzen Sie Template 200, und kommentieren Sie das vorhandene Schritte
Eingabefeld aus. Publizieren Sie das Template.
`ZDEPOT-KUNDENNR.label`
<!-- <input type=text name="`ZDEPOT-KUNDENNR.name`"
value="`ZDEPOT-KUNDENNR.value`" maxlength="010"
size="010"> -->
<select name="`ZDEPOT-KUNDENNR.name`" size=4>
<option value="124456"> 124456
<option value="124457"> 124457
<option value="124458"> 124458
<option value="124459"> 124459
<option value="124460"> 124460
<option value="274067"> 274067
<option value="284104"> 284104
<option value="396710"> 396710
<option value="472016"> 472016
<option value="492569"> 492569
<option value="624456"> 624456
<option value="649912"> 649912
<option value="729461"> 729461
<option value="826452"> 826452
<option value="936294"> 936294
</select>
`assert(ZDEPOT-KUNDENNR.name)`

Abbildung 4.67
Webseite 200: HTML-
Select als Ersatz für
die F4-Hilfe

4.7 Auswahllistenfeld (HTML-Select) anlegen 161


4 SAP@Web Studio und ITS

Abbildung 4.68
Webseite 300: Die
gewählte Kundennummer
wurde übernommen.

4.8 Service beenden mit Drucktaste


1. Ergänzen Sie Template 300 um eine sprachabhängige Drucktaste
zum Beenden des Services. Die SAPGUI-Verbindung zwischen ITS
und R/3 soll dabei getrennt werden, s. Abbildung 4.70 bis Abbil-
dung 4.71.

Nach dem Beenden soll im rechten Frame wieder die Homepage –


Pfad C:\Inetpub\wwwroot\homepage.htm – dargestellt werden.

Erläuterung Der Service wird beendet durch Übermittlung des Funktionscodes /NEX
im Parameter ~OkCode. Der danach darzustellende URL wird in der Datei
mit den globalen Servicestellungen global.srvc des ITS im Parameter
~exiturl festgelegt.

Schritte Ergänzen und publizieren Sie Template 300.


<input type=submit name="~okcode=KAUFEN"
value="`BUTTON_KAUFEN.label`">
<input type=submit name="~OkCode=/NEX"
value="`#ende`">
<p>
`ZKUNDEN-NAME.label`

Pflegen Sie die Sprachressourcendateien wpbuchung_de.htrc und


wpbuchung_en.htrc für den Schlüssel ende, s. Abbildung 4.69.

162
SAP@Web Studio und ITS 4
Abbildung 4.69
Pflege der
Sprachressource ende
(© SAP AG)

Pflegen Sie mit dem Texteditor in der Datei global.srvc den Parameter
~exiturl mit dem URL der Datei homepage.htm des Webservers. Sie finden
sie im Pfad C:\Programme\ SAP\ITS\2.0\<r3>\services\global.srvc.
~urlmime /sap/its/mimes
~exiturl http://www.dekra-kl.de/homepage.htm
~clientcert 1

Abbildung 4.70
Drucktaste zum Beenden
der WebTransaction

Abbildung 4.71
Nach dem Senden von
~ ~ aOkCode=/NEX:zurück
zu homepage.htm

4.9 Funktion wgateURL() in Hyperlinks


Die HTMLBusiness-Funktion wgateURL() generiert einen URL, der in die re-
sultierende HTML-Seite eingesetzt wird. Als Parameter können der
Funktion Name/Wert-Paare mitgegeben werden.
Neben dem Versenden von Formularen durch eine Drucktaste kann
man diese Funktion auch zur Konstruktion von Hyperlinks verwenden,
was hier an zwei Beispielen demonstriert wird.
Zu beachten ist allerdings, dass beim Aufruf eines Hyperlinks im Unter-
schied zur Drucktaste die Formularfelder im URL nicht mitgesendet
werden, auch wenn der Anwender sie ausgefüllt hat.

4.9 Funktion wgateURL() in Hyperlinks 163


4 SAP@Web Studio und ITS

1. Fügen Sie in Template 200 einen Hyperlink ein, der direkt den OK-
Code SELECT und die Kundennummer 624456 des Stammkunden Je-
rome Newton übergibt, s. Abbildung 4.72 bis Abbildung 4.73.

164
SAP@Web Studio und ITS 4
Ergänzen und publizieren Sie Template 200. Schritte
<input type=submit name="~okcode=SELECT"
value="`BUTTON_SELECT.label`">
<p>
<a href="`wgateURL(~OKCode="SELECT",
zdepot-kundennr="624456")`"> Stammkunde Jerome Newton
</a>
</form></P>

Abbildung 4.72
Mit wgateurl()
dynamisch erzeugter
Hyperlink

Abbildung 4.73
Der Hyperlink führt direkt
von Webseite 200 nach
Webseite 300

2. Ermöglichen Sie es dem Benutzer, in Webseite 300 eine Buchungs-


position aus der Liste direkt per Hyperlink in der gleichen Zeile zum
Kaufen auszuwählen, s. Abbildung 4.74 bis Abbildung 4.75. Kau-
fen Sie für Jerome Newton 10 Stück seiner Wertpapierposition 4.

Geben Sie wgateURL() die Parameter ~OkCode="KAUFEN" und KAUFPOS=j mit – Erläuterung
j ist der Schleifenzähler der repeat-Schleife, welche die Liste der Wert-
papierpositionen aufbaut.

Ergänzen und publizieren Sie Template 300. Schritte


<td>`ZDEPOT_PAPIERMU-ANZAHL[j].value`</td>
<td> <a href="`wgateURL(~OKCode="KAUFEN",
KAUFPOS=j)`"> Kaufen </a></td>
</tr>

4.9 Funktion wgateURL() in Hyperlinks 165


4 SAP@Web Studio und ITS

Abbildung 4.74
Zeilenauswahl über
dynamische Hyperlinks
aus wgateURL()

Abbildung 4.75
Der Hyperlink führt von
Webseite 300 nach
Webseite 400.

4.10Erstes Template überspringen


Mit dem URL des Hyperlinks können alle benötigten Parameter inklu-
sive des OK-Codes mitgegeben werden, so dass die zugehörige Web-
seite durch den Hyperlink gewissermaßen „ausgefüllt“ wird.
Dieses Verfahren kann dazu verwendet werden, Webseite 100 automa-
tisch auszufüllen und so direkt zu Webseite 200 zu gelangen.

Da durch das dargestellte Beispiel Identifikation und Authentisie-


rung übergangen werden, sollten Sie es aus Sicherheitsgründen in
einer Produktivumgebung nicht einsetzen! Obendrein kann das
Kennwort im Klartext ausgespäht werden.

Die Aufgabe dient nur dem Erlernen der Konstruktion von Hyperlinks
mit Parameterübergabe.

1. Legen Sie im linken Frame einen Hyperlink an, der die Anmeldung
des Internetbenutzers für den Mitarbeiter 1006 in Webseite 100
übernimmt und auf diese Weise direkt zu Webseite 200 verzweigt,
s. Abbildung 4.76 bis Abbildung 4.78.
Der Hyperlink enthält die Anmeldesprache ~language, den OK-Code
~okcode, die Personalnummer sowie das Kennwort des Internetbe-
nutzers. Ermitteln Sie zunächst die benötigten Feldnamen in der
Elementliste des Dynpros 100.
Ermitteln Sie den OK-Code, der zum Einloggen verwendet wird.
Legen Sie den Hyperlink im linken Frame an.

166
SAP@Web Studio und ITS 4
Öffnen Sie die Elementliste von Dynpro 100 Schritte
Abbildung 4.76
Ermitteln der Feldnamen
zur Anmeldung aus
der Elementliste
(© SAP AG)

Abbildung 4.77
Ermitteln des OK-Codes
zur Anmeldung aus
der Ablauflogik
(© SAP AG)

Ergänzen und publizieren Sie C:\Inetpub\wwwroot\inhalt.htm.


<a href="/scripts/wgate/wpbuchung!?~language=en"
target="rechts"> Deposit account booking </a><br>
<a href="/scripts/wgate/wpbuchung!?~language=de
&~okcode=LOGIN&BAPIEMPL-PERNR=1006
&BAPIUID-PASSWORD=dekra" target="rechts">
WPBuchung für PNr 1006 </a><br>
</body>

Abbildung 4.78
Direktstart zu Webseite
200 durch Mitgeben aller
benötigten Parameter für
Webseite 100 im Hyperlink

4.10 Erstes Template überspringen 167


4 SAP@Web Studio und ITS

4.11 Browser-Zurück-Taste synchronisieren


Die ZURÜCK-Taste des Browsers führt in der WebTransaction zu fehler-
haften Ergebnissen. Ursache für dieses Problem ist, dass die R/3-Trans-
aktion – anders als bei dem SAPGUI, das ebenfalls eine ZURÜCK-Taste
besitzt – das Drücken der ZURÜCK-Taste nicht nachvollzieht und auf
dem alten Dynpro verbleibt. Der OK-Code, der von der unerwarteten
Webseite gesendet wird, wird vom falschen Dynpro gar nicht oder
sogar falsch ausgewertet.
Die Lösung dieses Problems heißt Synchronisation. Der ITS sendet für
den Fall, dass eine unerwartete Webseite eintrifft, einen OK-Code, der
mit AWSY beginnt. Es folgt der Programmname. Am Ende enthält der OK-
Code in vier Stellen die Nummer der vom Browser gesandten Webseite.
Wenn im Beispielprogramm die Webseite 200 unerwartet eintrifft, heißt
der OK-Code also AWSYSAPMZDEPOTnn0200.
Aufgabe der WebTransaction ist es, diesen Funktionscode auszuwerten
und zu dem unerwarteten Dynpro, hier also 200, zu verzweigen. Dann
kann das eingetroffene Formular korrekt bearbeitet werden.
Eine herkömmliche R/3-Transaktion kann – nicht nur wegen der fehlen-
den Synchronisation – im Allgemeinen nicht als WebTransaction einge-
setzt werden. Neben der Ergänzung des Synchronisationscodes dürfen
bei WebTransactions auf den Dynpros nur einfache Eingabefelder, also
keine Ankreuzfelder oder Auswahlknöpfe verwendet werden.

1. Testen Sie die fehlerhaften Ergebnisse der ZURÜCK-Taste des Brow-


sers bei der WebTransaction ZDEPOTnn aus.

Schritte Gehen Sie zunächst für Kunden 624456 zu Webseite 300, s. Abbildung
4.79 bis Abbildung 4.81. Betätigen Sie die ZURÜCK-Taste, sie führt Sie
zu Webseite 200. Wählen Sie Kunde 274067. Sie landen mit der Druck-
taste SELEKTIEREN fehlerhafterweise erneut bei Kunde 624456.

Abbildung 4.79
ZURÜCK-Taste des
Browsers, von Webseite
300 aus gedrückt. Die
WebTransaction in R/3
verbleibt allerdings bei
Dynpro 300

168
SAP@Web Studio und ITS 4
Abbildung 4.80
Auswahl eines anderen
Kunden in Webseite 200.
Der OK-Code SELECT wird
vom immer noch
aktuellen Dynpro 300
nicht ausgewertet.

Abbildung 4.81
Webseite 300 zeigt
nachher immer noch den
alten Kunden an.

2. Beheben Sie diesen Fehler, indem Sie zu PAI für jedes Dynpro den
Synchronisationsfunktionscode der Form AWSY[Programm][Dynpro-
Nummer] auswerten. Verwenden Sie hierfür ein FORM-Unterpro-
gramm.

Ergänzen Sie im PAI-Modul user_command_0100 die CASE-Abfrage des Schritte


Funktionscodes um einen Eintrag für einen OK-Code, der mit AWSY be-
ginnt. Das ABAP-Programm verzweigt dann zum PBO des richtigen
Dynpros, passend zur unerwartet gesendeten Webseite.
MODULE user_command_0100 INPUT.
save_ok = ok_code.
CLEAR ok_code.

CASE save_ok.
WHEN 'LOGIN'.
...
WHEN 'BACK'.
LEAVE PROGRAM.
WHEN OTHERS.
PERFORM backbutton.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT

Ergänzen Sie entsprechend MODULE user_command_0200.


LEAVE TO SCREEN 300.
WHEN OTHERS.
PERFORM backbutton.

4.11 Browser-Zurück-Taste synchronisieren 169


4 SAP@Web Studio und ITS

ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT

Ergänzen Sie entsprechend MODULE user_command_0300.


ENDIF.
WHEN OTHERS.
PERFORM backbutton.
ENDCASE.
ENDMODULE. " USER_COMMAND_0300 INPUT

Ergänzen Sie entsprechend MODULE user_command_0400.


COMMIT WORK.
WHEN OTHERS.
PERFORM backbutton.
ENDCASE.
ENDMODULE. " USER_COMMAND_0400 INPUT

Legen Sie per Vorwärtsnavigation (Doppelklick auf den Code backbut-


ton) das Unterprogramm BACKBUTTON im neuen FORM-Include MZDEPOTnnF01
an, s. Abbildung 4.82 bis Abbildung 4.83. Aktivieren Sie alle Objekte.

Abbildung 4.82
Anlegen eines
Unterprogramms in
einem neuen
FORM-Include
(© SAP AG)

FORM backbutton.
IF save_ok(4) = 'AWSY'.
offset = strlen( save_ok ) - 4.
benoet_screen = save_ok+offset(4).
LEAVE TO SCREEN benoet_screen.
ENDIF.
ENDFORM. " BACKBUTTON

Abbildung 4.83
Aktivieren aller Objekte
(© SAP AG)

170
SAP@Web Studio und ITS 4
Testen Sie nun die obige Fehlersituation erneut aus. Sie kommen nun
zum „richtigen“ Kunden 274067, s. Abbildung 4.84 bis Abbildung
4.86. Wenn dies bei Ihnen nicht funktioniert, fahren Sie einfach mit dem
nächsten Abschnitt fort. Dort finden Sie ein Werkzeug zum Untersu-
chen von Programmierfehlern bei WebTransactions: den ABAP-Debug-
ger, der sogar bei vom Browser gestarteten IACs eingesetzt werden
kann.

Abbildung 4.84
Erneut: ZURÜCK-Taste in
Webseite 300

Abbildung 4.85
Erneut: Auswahl eines
anderen Kunden in
Webseite 200

Abbildung 4.86
Korrekte Synchronisation:
Webseite 300 zeigt
richtigen Kunden

4.12 WebTransaction mit SAPGUI debuggen


Wenn beim Programmieren des vorherigen Beispiels Probleme auftre-
ten, entsteht schnell der Wunsch, den Ablauf des ABAP-Programms in
Einzelschritten nachvollziehen zu können. Dies leistet der ABAP-Debug-
ger, der nun vom AGate aus gesteuert wird.

1. Debuggen Sie die WebTransaction mit dem SAPGUI am Beispiel


der vorherigen Aufgabe. Stellen Sie zunächst in der Registrierda-
tenbank die zugehörigen Schlüssel korrekt ein. Aktivieren Sie den
Debugger durch Neustart des ITS-Dienstes.

Zum Aktivieren des Debuggens muss der Registrierungsschlüssel Admin- Erläuterung


Enabled auf 1 gestellt werden. Sie finden ihn im Pfad HKEY_LO-
CAL_MACHINE / SOFTWARE / SAP / its / 2.0 / <R3> / Programs /
AGate.

4.12 WebTransaction mit SAPGUI debuggen 171


4 SAP@Web Studio und ITS

Schritte Starten Sie den Registrierungseditor: START / AUSFÜHREN, s. Abbildung


4.87 bis Abbildung 4.88. Stellen Sie den Schlüssel ein. Prüfen Sie auch,
ob der voreingestellte Schlüssel SapguiDebuggerPort="sapdp00" auch der
von Ihnen verwendeten R/3-Instanznummer entspricht.

Abbildung 4.87
Start des
Registrierungseditors

Abbildung 4.88
Aktivieren des
WebTransaction-
Debuggers in der
Registrierung

2. Aktivieren Sie den Debugger durch Neustart des ITS-Dienstes.

Schritte Beenden Sie den ITS-Dienst über SYSTEMSTEUERUNG / VERWALTUNG /


DIENSTE, s. Abbildung 4.89 bis Abbildung 4.90. Starten Sie den ITS-
Dienst nun wieder.

Abbildung 4.89
Beenden des ITS-Dienstes

Abbildung 4.90
Neustart des ITS-Dienstes

172
SAP@Web Studio und ITS 4

3. Erstellen Sie im SAPlogon einen Eintrag ITS-Debugger, der sich am


AGate anmeldet.

Das AGate hat nach dem Neustart aufgrund der neuen Registrierungs- Erläuterung
einträge ein Debugger-Port geöffnet, über das ein SAPGUI sich über
das übliche DIAG-Protokoll am AGate anmelden kann, als wäre es ein
R/3-Anwendungsserver. Über das Debugger-Port wird diesem SAPGUI
jenes Dynpro geliefert, das zur derzeit angezeigten Webseite gehört.
Um die dahinter stehende ABAP-Programmlogik zu prüfen, können Sie
an der kritischen Stelle mittels Eingabe von /h in das Kommandofeld des
SAPGUIs den Debug-Modus einschalten.

Starten Sie das SAPlogon, und legen Sie einen neuen Eintrag ITS-De- Schritte
bugger an: START / PROGRAMME / SAP FRONTEND / SAPLOGON, s. Ab-
bildung 4.91. Tragen Sie unter APPLICATION SERVER die IP-Nummer
Ihres AGate-Rechners oder dessen Domainnamen ein.

Abbildung 4.91
Anlegen des
ITS-Debuggers als
Zugang zum AGate
(© SAP AG)

4. Verfolgen Sie in dem SAPGUI das Beispiel aus der vorherigen Auf-
gabe.

Stellen Sie fest, welcher Funktionscode nach dem Drücken der ZU-
RÜCK-Taste geliefert wird.

Starten Sie die IAC im Browser, s. Abbildung 4.92 bis Abbildung 4.96. Schritte
Sie sehen Webseite 100. Starten Sie das SAPGUI über den Eintrag ITS-
Debugger. Sie gelangen ohne die übliche Anmeldung direkt zu Dynpro
100. Gehen Sie als Mitarbeiter 1006 im Browser bis zu Webseite 300 für
Kunde 624456. Betrachten Sie dabei auch das SAPGUI, es macht diese
„Reise“ ohne Ihr Zutun mit. In Dynpro 300 können Sie mit etwas Glück
auch die Blätternfunktion des AGates zum Aufbau der Liste beobach-
ten.

4.12 WebTransaction mit SAPGUI debuggen 173


4 SAP@Web Studio und ITS

Abbildung 4.92
Start der IAC im Browser:
Webseite 100

Abbildung 4.93
Start der SAPGUI-
Anmeldung am AGate
(© SAP AG)

Abbildung 4.94
Ohne Zwischenstation
gelangen Sie direkt zu
Dynpro 100. Füllen Sie die
Felder nicht aus, dies
erfolgt automatisch
durch das AGate.
(© SAP AG)

Abbildung 4.95
Auswahl des Kunden in
Webseite 200

Abbildung 4.96
Das SAPGUI wechselt
automatisch auf
Dynpro 200 mit.
(© SAP AG)

174
SAP@Web Studio und ITS 4
Drücken Sie dann im Browser die ZURÜCK-Taste, s. Abbildung 4.97 bis
Abbildung 4.104. Der Browser wechselt zu Webseite 200, das SAPGUI
verharrt auf Dynpro 300. Tragen Sie zum Wechsel in den Debug-Modus
/h ins Kontrollfeld ein. Mit dem nächsten Schritt im Browser (Drucktaste
SELEKTIEREN) gelangt das SAPGUI in den Debug-Modus.
Im Einzelschrittverfahren können Sie nun den Ablauf des ABAP-Pro-
gramms verfolgen. Dabei können Sie einzelne Datenfelder wie OK_CODE
und BENOET_SCREEN inspizieren. Gehen Sie schrittweise voran bis zum Er-
scheinen des nächsten Screens. Erst dann klicken Sie im Browser die
Drucktaste CONTINUE, wodurch der Debug-Modus wieder ausgeschal-
tet wird.

Abbildung 4.97
Drücken Sie bei Webseite
300 die ZURÜCK-Taste. Das
AGate erfährt von dem
Schritt zurück nichts,
das SAPGUI bleibt auf
Dynpro 300.

Abbildung 4.98
Einschalten des Debug-
Modus in dem SAPGUI
bei Dynpro 300
(© SAP AG)

Abbildung 4.99
Die Statuszeile meldet das
Einschalten des Debug-
Modus. (© SAP AG)

Abbildung 4.100
Der Browser befindet
sich auf der für das
AGate unerwarteten
Webseite 200.

4.12 WebTransaction mit SAPGUI debuggen 175


4 SAP@Web Studio und ITS

Abbildung 4.101
Der Browser meldet nun
auch das Einschalten
des Debuggers.
(© SAP AG)

Abbildung 4.102
Debugger mit Einzel-
schrittverfahren und
Anzeige des OK-Codes:
Er beginnt mit AWSY
und endet mit der
unerwarteten Dynpro-
Nummer 0200.
(© SAP AG)

Abbildung 4.103
Aufruf des FORM-
Unterprogramms zum
Synchronisieren
(© SAP AG)

Abbildung 4.104
Synchronisierung:
Wechsel zu Dynpro 200,
folgend der unerwartet
gesendeten Webseite 200
(© SAP AG)

176
SAP@Web Studio und ITS 4

4.13 Konkatenation und Stringoperatoren


HTMLBusiness enthält eine Vielzahl von Operatoren und Funktionen. Sie
alle zu behandeln würde den Rahmen dieses Werks sprengen. Als Bei-
spiele werden die Konkatenation – das Verbinden von Textfeldern – und
das Extrahieren von Teilstrings gezeigt. Die restlichen Operatoren finden
Sie in der Online-Dokumentation des SAP@Web Studios: HELP / ITS
DOCUMENTATION / ITS/SAP@WEB STUDIO / HTMLBUSINESS LANGUAGE
REFERENCE, s. Abbildung 4.105.

Abbildung 4.105
Online-Hilfe zur
Konkatenation
(© SAP AG)

1. Ändern Sie Template 300 so ab, dass Vorname und Name konkate-
niert in einem statt in zwei Feldern erscheinen, s. Abbildung 4.106.
Zwischen Vorname und Name fügen Sie ein Komma ein. Konkate-
nieren Sie auch die Feldbezeichner des Vornamens und des Na-
mens, trennen Sie diese vom Vornamen mit einem Doppelpunkt.

Zwei Felder können Sie in HTMLBusiness mit dem Operator & konkatenie- Erläuterung
ren. Literale schließen Sie in Anführungszeichen " " ein.

Kommentieren Sie die vorhandenen Eingabefelder ZKUNDEN-NAME und Schritte


ZKUNDEN-VORNAME in Template 300 aus. Ergänzen und publizieren Sie
Template 300.
value="`#ende`">
<p>
<!-- `ZKUNDEN-NAME.label`
`ZKUNDEN-NAME.value`
<p>
`ZKUNDEN-VORNAME.label`
`ZKUNDEN-VORNAME.value` -->
`ZKUNDEN-VORNAME.label & ", " & ZKUNDEN-NAME.label &":"`
`ZKUNDEN-VORNAME.value & ", " & ZKUNDEN-NAME.value`
<p>
`ZKUNDEN-WOHNORT.label`

4.13 Konkatenation und Stringoperatoren 177


4 SAP@Web Studio und ITS

Abbildung 4.106
Webseite 300 mit
konkatenierten Feldern

2. Fügen Sie in die Kundennummer nach der vierten Stelle den Infix –
DEKRA– ein, z. B. 6244-DEKRA-56 für Stammkunde Jerome Newton, s.
Abbildung 4.107.

Erläuterung Die HTMLBusiness-Funktion strsub([Textfeld], [Anfang], [Breite] liefert


einen Teilstring aus einem [Textfeld], der bei Position [Anfang] beginnt
und [Breite] Stellen umfasst.

Schritte Kommentieren Sie das vorhandene Bezeichnerfeld von ZKUNDEN-KUNDENNR


in Template 300 aus. Ergänzen und publizieren Sie Template 300.
<p>
`ZKUNDEN-KUNDENNR.label`
<!-- `ZKUNDEN-KUNDENNR.value` -->
`strsub(ZKUNDEN-KUNDENNR.value,1,4) & "-DEKRA-"
& strsub(ZKUNDEN-KUNDENNR.value,5,2)`
<p>
`'%#AUTOTEXT003'.label`
<input type=text name="`KAUFPOS.name`"

Abbildung 4.107
Webseite 300: Aus
Teilstrings zusammen-
gesetztes Feld

4.14Funktionen if() und mimeURL()


1. Ersetzen Sie in Template 300 die Ausgabe des Emittenten Biotech
Emiss. durch BTE, s. Abbildung 4.108. Ersetzen Sie die Ausgabe des
Emittenten CompEmm. durch CPE. Markieren Sie die Ersetzungen
mittels <em> mit Kursivschrift. Alle anderen Emittenten bleiben un-
verändert.

178
SAP@Web Studio und ITS 4
Mit der HTMLBusiness-Funktion if() können Sie von logischen Bedingun- Erläuterung
gen abhängige dynamische Ersetzungen von HTML-Code vornehmen.
Für die Bedingungen können Sie Vergleichsoperatoren wie == (gleich),
!= (ungleich), > (größer), < (kleiner), >= (größer oder gleich) und <= (klei-
ner oder gleich) verwenden.
Die Funktion if() hat folgenden Aufbau; elseif() und else sind dabei
optional:
`if([Bedingung])`
[HTML-Code für wahre Bedingung]
`elseif([geschachtelte Bedingung])`
[HTML-Code für wahre (geschachtelte) Bedingung]`
`else`
[HTML-Code für falsche (geschachtelte) Bedingung]
`end`

Ändern Sie Template 300. Schritte


<td>`ZDEPOT_PAPIERMU-TITEL[j].value`</td>
<td>
`if (ZDEPOT_PAPIERMU-EMITTENT[j].value==
"Biotech Emiss.")`
<em> BTE </em>
`elseif (ZDEPOT_PAPIERMU-EMITTENT[j].value==
"CompEmm.")`
<em> CPE </em>
`else`
`ZDEPOT_PAPIERMU-EMITTENT[j].value`
`end`
</td>
<td>`ZDEPOT_PAPIERMU-DEPOTNR[j].value`</td>

Abbildung 4.108
Ersetzung von Feldern mit
der if()-Funktion

4.14 Funktionen if() und mimeURL() 179


4 SAP@Web Studio und ITS

2. Je nach Anmeldesprache soll auf Webseite 200 entweder die deut-


sche oder englische Landesflagge als MIME-Objekt erscheinen, s.
Abbildung 4.113 bis Abbildung 4.114. Die Graphikdateien great-
britain.gif und germany.gif finden Sie unter http://www.dekra-
akademie.de/download im Archiv abap.zip.

Erläuterung MIME steht für „Multipurpose Internet Mail Extensions“ und gewähr-
leistet eine eindeutige Zuordnung der Dateitypen zu Anwendungen, die
diese Dateitypen darstellen können. Die Zuordnung erfolgt über ein
Paar Kategorie/Unterkategorie, das zusammen mit der Datei vom Web-
server an den Browser geliefert wird. Kategorien sind beispielsweise
text, image oder audio. Zusammen mit den Unterkategorien ergeben sich
Paare wie z. B.:
• text/plain und text/html: reiner Text oder HTML-Seite.
• image/gif und image/jpeg: Bilder im .gif- oder .jpeg-Format.
• audio/mpeg und audio/wav: Audiodatei im .mpg-, .mp3- oder .wav-
Format.
Der Webbrowser unterhält eine Liste mit Zuordnungen der MIME-
Typen zu Anwendungen, die diese Dateien darstellen können.
Das WGate richtet im Dateisystem des Webservers einen eigenen Pfad zu
MIME-Objekten ein: C:\Inetpub\wwwroot\sap\its\mimes. Die weitere
Schachtelung erfolgt in der Reihenfolge Service, Theme und Sprache, z. B.
C:\Inetpub\wwwroot\sap\its\mimes\wpbuchung\00\de. Die HTML-
Business
-Funktion MIMEURL() generiert zur Laufzeit einen URL zum mit ~name=
angegebenen MIME-Objekt in der mit ~language= angegebenen Sprache.
Die von der Webseite zur Laufzeit verwendete Sprache kann mit ~tem-
platelanguage ermittelt werden.

Schritte Legen Sie in Ihrem Projekt wpbuchung unterhalb des Themas 00 die
Ordner de und en mittels PROJECT / ADD TO PROJECT / FOLDER an, s.
Abbildung 4.109 bis Abbildung 4.112.
Kopieren Sie die Graphikdateien great-britain.gif und germany.gif auf
Ihre Festplatte unter C:\Temp.
Fügen Sie germany.gif nach de in Ihr Projekt ein mittels KONTEXTMENÜ
DES ORDNERS DE / INSERT / FILE. Entsprechend fügen Sie great-bri-
tain.gif nach en ein.
Benennen Sie nun beide Dateien um zu flagge.gif.
Publizieren Sie die beiden Dateien, am einfachsten durch vorheriges
Markieren des kompletten Themes 00. Nun sind die Dateien auf dem
WGate zu sehen in den Pfaden C:\Inetpub\wwwroot\sap\its\mi-
mes\wpbuchung\00\de und ...\en.

180
SAP@Web Studio und ITS 4
Abbildung 4.109
Landessprachenordner de
und en, Einfügen
von Graphiken
(© SAP AG)

Abbildung 4.110
Deutsche und englische
Flaggen in Landes-
sprachenordnern
(© SAP AG)

Abbildung 4.111
Umbenennen beider
Graphiken auf den
gleichen Namen
(© SAP AG)

Abbildung 4.112
Nach dem Publizieren
befinden finden sich die
Dateien im MIME-Ordner
des WGates auf dem
Webserver.

Fügen Sie das Bild nun mittels der mimeURL()-Funktion ins Template 200
ein.
<form method="post" action="`wgateurl()`">
<p>
<img src="`mimeURL(~name="flagge.gif",
~language=~templatelanguage)`">
<p>
`'%#AUTOTEXT001'.label`

In der resultierenden Webseite 200 wird der HTMLBusiness-Code für die


Anmeldesprache DE wie folgt ersetzt:
<img src="/sap/its/mimes/wpbuchung/00/de/flagge.gif">

Für Anmeldesprache EN wird entsprechend ersetzt:


<img src="/sap/its/mimes/wpbuchung/00/en/flagge.gif">

4.14 Funktionen if() und mimeURL() 181


4 SAP@Web Studio und ITS

Abbildung 4.113
mimeURL() liefert
flagge.gif des Landes-
sprachenordners \de.

Abbildung 4.114
mimeURL() liefert
flagge.gif des Landes-
sprachenordners \en.

4.15 HTML-Select mit Daten aus R/3


1. Ersetzen Sie in Template 200 das Auswahllistenfeld (HTML-Select)
mit fixen Selektionsoptionen aus Abschnitt 4.7 durch ein Auswahl-
listenfeld mit dynamischen Selektionsoptionen, die von R/3 aus der
Tabelle ZKUNDEN über die Makros FIELD-SET und FIELD-TRANSPORT in
den Benutzerkontext der AGate-Session geliefert werden.

Dadurch wird die F4-Hilfe des R/3 in HTML nachgebildet, freilich in


einer einfacheren Fassung. Jede Zeile soll die Felder Kundennr, Name,
Vorname und Wohnort enthalten. Wählen Sie mittels des optionalen
Parameters size=0 ein aufklappbares Auswahllistenfeld, s. Abbil-
dung 4.115.

Erläuterung Mit dem Makro FIELD-SET [name] [index] [value] kann der R/3-Anwen-
dungsserver angewiesen werden, per RFC Felder in den Benutzerkon-
textspeicher der AGate-Session zu schreiben. Jedes Kontextfeld wird
mit den Parametern Name, fortlaufender Index – beginnend mit 1 – und
Wert eingetragen, etwa
field-set 'KUNDENNR' zaehler zkunden-kundennr.

FIELD-SET merkt zunächst nur den Sendevorgang vor, der eigentliche


Transport aller Vormerkungen findet aus Performance-Gründen erst mit
dem Makro FIELD-TRANSPORT statt.
Beide Makros sind, nebst FIELD-GET, im Standard-Include AVWRTCXM definiert.

182
SAP@Web Studio und ITS 4
Die in den Kontext übertragenen Felder können vom Template in ähnli-
cher Weise wie Steploop-Felder als HTML Business-Platzhalter verwendet
werden, allerdings ohne den Zusatz .value. Sie werden unter dem glei-
chen Namen angesprochen, unter dem sie gesendet wurden; der Index
wird dabei in eckigen Klammern angegeben, etwa `kundennr[j]`. Zur
Laufzeit wird dieser Platzhalter durch den gesendeten Wert ersetzt, im
Beispiel also durch den Wert von ZKUNDEN-KUNDENNR.

Ergänzen Sie das Top-Include MZDEPOTnnTOP des Programms SAPMZDEPOTnn Schritte


um das Include AVWRTCXM und um weitere benötigte Felddefinitionen:
eine interne Tabelle für ZKUNDEN und einen Zähler.
DATA: offset(2) TYPE n,
benoet_screen LIKE sy-dynnr.
DATA: it_kunden LIKE TABLE OF zkunden,
zaehler TYPE i.
INCLUDE avwrtcxm.

Ergänzen Sie das PBO-Modul status_0200 im Include MZDEPOTnnO01.


SET TITLEBAR '200'.
SELECT * FROM zkunden INTO TABLE it_kunden.
zaehler = 0.
LOOP AT it_kunden INTO zkunden.
zaehler = zaehler + 1.
field-set 'KUNDENNR' zaehler zkunden-kundennr.
field-set 'NAME' zaehler zkunden-name.
field-set 'VORNAME' zaehler zkunden-vorname.
field-set 'WOHNORT' zaehler zkunden-wohnort.
ENDLOOP.
field-transport.
ENDMODULE. " STATUS_0200 OUTPUT

Ersetzen Sie in Template 200 das aus Abschnitt 4.7 stammende HTML-
Select. Der zu löschende Programmcode ist im Folgenden fett gedruckt.
`ZDEPOT-KUNDENNR.label`
<!-- <input type=text name="`ZDEPOT-KUNDENNR.name`"
value="`ZDEPOT-KUNDENNR.value`" maxlength="010"
size="010"> -->
<select name="`ZDEPOT-KUNDENNR.name`" size=4>
<option value="124456"> 124456
<option value="124457"> 124457

4.15 HTML-Select mit Daten aus R/3 183


<option value="124458"> 124458
<option value="124459"> 124459
<option value="124460"> 124460
<option value="274067"> 274067
<option value="284104"> 284104
<option value="396710"> 396710
<option value="472016"> 472016
<option value="492569"> 492569
<option value="624456"> 624456
<option value="649912"> 649912
<option value="729461"> 729461
<option value="826452"> 826452
<option value="936294"> 936294
</select>
`assert(ZDEPOT-KUNDENNR.name)`

Nun können Sie folgenden Programmcode ergänzen. Publizieren Sie


das Template 200.
<!-- <input type=text name="`ZDEPOT-KUNDENNR.name`"
value="`ZDEPOT-KUNDENNR.value`" maxlength="010"
size="010"> -->
<select name="`ZDEPOT-KUNDENNR.name`" size=0>
`repeat with j from 1 to kundennr.max`
<option value="`kundennr[j]`"> `kundennr[j] & " "
& name[j] & " " & vorname[j] & " " & wohnort[j]`
`end`
</select>
`assert(ZDEPOT-KUNDENNR.name)`

Abbildung 4.115
Aufklappbares
Auswahllistenfeld mit
Daten aus R/3
WebRFC und WebReporting 5

Kapitel 5
WebRFC und
WebReporting
WebRFC ermöglicht das Aufrufen von Funktionsbausteinen über einen
URL. Es wird hierzu eine RFC-Verbindung zwischen AGate und R/3-An-
wendungsserver aufgebaut. Dem Funktionsbaustein wird über einen
Tabellenparameter eine Liste von Name/Wert-Paaren übergeben. Nach
deren Auswertung generiert der Funktionsbaustein eine HTML-Seite,
die in Form eines Tabellenparameters ans AGate zurückgegeben wird
und von dort aus zum Browser zurückkehrt. Alternativ kann auch ein
MIME-Objekt statt der HTML-Seite zurückgegeben werden.
Zentraler Funktionsbaustein des WebRFC ist WWW_DISPATCH_REQUEST(). Er
ist RFC-fähig und wird mit dem WebRFC-Service aufgerufen. Über den
Parameter ~function im URL wird ihm mitgeteilt, an welchen Zielfunkti-
onsbaustein er den Aufruf weiterleiten soll.
Als Sonderfall des WebRFC ist das WebReporting anzusehen. Unter
Verwendung einiger vordefinierter Funktionsbausteine, die ihrerseits
wiederum von WWW_DISPATCH_REQUEST() gerufen werden, ist es möglich,
recht einfach Reports über das Web zu starten.
Im Unterschied zur WebTransaction sind die meisten Reports – auch in-
teraktive – hierzu geeignet. Allerdings muss die Berechtigungsgruppe in
den Programmeigenschaften gepflegt sein, was bei den meisten Re-
ports des R/3-Standards nicht der Fall ist. Für diese bietet es sich an, sie
in den Kundennamensraum zu kopieren und die Berechtigungsgruppe
zu pflegen.

185
5 WebRFC und WebReporting

5.1 WebRFC: WWW_HTML_ECHO()


Der Funktionsbaustein WWW_HTML_ECHO() dient vor allem zum Testen, ob
eine WebRFC-Verbindung aufgebaut werden kann. Er empfängt aus
dem URL den Query-String und baut aus dessen Name/Wert-Paaren
eine HTML-Seite auf, die an den Browser zurückgesendet wird, s. Abbil-
dung 5.5 bis Abbildung 5.6.
Der Start dieses Funktionsbausteines erfolgt dadurch, dass beim Aufruf
des WebRFC-Services dem URL ~function=WWW_HTML_ECHO mitgegeben
wird. Dann erfolgt über den RFC-fähigen Funktionsbaustein WWW_DIS-
PATCH_REQUEST ein – lokaler – Aufruf an den Funktionsbaustein
WWW_HTML_ECHO(). Dieser muss also nicht RFC-fähig sein. Beim Aufruf
werden der URL und Einstellungen aus den Servicedateien in Gestalt
des Tabellenparameters QUERY_STRING mitgegeben. Der aufgerufene
Funktionsbaustein muss diesen folglich selbst auswerten, um anschlie-
ßend eine HTML-Seite über WWW_DISPATCH_REQUEST an das AGate zurück-
zuliefern.
Vor dem Aufruf muss noch der WebRFC-Service gepflegt und der Funk-
tionsbaustein fürs Internet freigegeben werden.

1. Ergänzen Sie Ihr Projekt um den Service webrfct, der mit den Stan-
dard-IACs ausgeliefert wird und im AGate zu finden ist. Pflegen Sie
die Parameter ~logon, ~password, ~client und ~language ein, s. Abbil-
dung 5.1 bis Abbildung 5.2.

Schritte Öffnen Sie das Menü PROJECT / ADD TO PROJECT / FILES… Ergänzen Sie
die Servicedatei C:\Programme\SAP\ITS\2.0\T53\services\webrfct.srvc
um die Anmeldedaten. Publizieren Sie die Servicedatei.

Abbildung 5.1
Öffnen der Standard-
Servicedatei webrfct.srvc
(© SAP AG)

Abbildung 5.2
Pflegen der
Anmeldedaten in der
Servicedatei webrfct.srvc
(© SAP AG)

2. Geben Sie den Funktionsbaustein WWW_HTML_ECHO() fürs Internet frei.

186
WebRFC und WebReporting 5
Starten Sie von WERKZEUGE / ABAP WORKBENCH / ÜBERSICHT / OBJECT Schritte
NAVIGATOR, von hier aus geht es weiter mit UMFELD / WEBREPORTING
REPOSITORY, dann INTERNETFREIGABE / FUNKTIONSBAUSTEINE. Geben Sie
den Funktionsbaustein frei, er befindet sich anschließend in der Liste der
freigegebenen Funktionsbausteine, s. Abbildung 5.3 bis Abbildung 5.4.

Abbildung 5.3
Freigabe eines
Funktionsbausteines
für das Internet
(© SAP AG)

Abbildung 5.4
Liste aller für das Internet
freigegebenen
Funktionsbausteine
(© SAP AG)

3. Legen Sie in der Datei inhalt.htm auf dem Webserver einen Link
an, der über den Service webrfct den Funktionsbaustein
WWW_HTML_ECHO() aufruft, s. Abbildung 5.5 bis Abbildung 5.6.
Übergeben Sie im URL einige Name/Wert-Paare, die Sie frei wäh-
len dürfen.

Ergänzen und publizieren Sie C:\Inetpub\wwwroot\inhalt.htm. Schritte


<a href="/scripts/wgate/wpbuchung!?~language=de
&~okcode=LOGIN&BAPIEMPL-PERNR=1006
&BAPIUID-PASSWORD=dekra" target="rechts">
WPBuchung für PNr 1006 </a><br>
<a href="/scripts/wgate/webrfct!?_function=WWW_HTML_ECHO
&region=aus Tirol&name=Anton
&attribut1=toll&attribut2=schoen"
target="rechts"> Hallo Echo</a><br>
</body>

5.1 WebRFC: WWW_HTML_ECHO() 187


5 WebRFC und WebReporting

Abbildung 5.5
Start des WebRFC-
Services mit Aufruf eines
Funktionsbausteines

Abbildung 5.6
Rückgabe aller
Name/Wert-Paare aus
dem URL

5.2 WebReporting: WWW_GET_SELSCREEN()


Der Funktionsbaustein WWW_GET_SELSCREEN() liefert das Selektionsbild des
im Eingabeparameter ~REPORT angegebenen ABAP-Reports zurück.
Wird beispielsweise ~REPORT=ZKUNDENnn im URL mitgegeben, besorgt sich
der Funktionsbaustein das Selektionsbild des Reports und liefert es als
HTML-Seite in Form eines Tabellenparameters zurück. Hierzu verwen-
det er WebReporting-Browser-Templates, die allerdings nicht vom
SAP@Web Studio verwaltet werden, sondern in der R/3-Datenbank lie-
gen und vom Webdesigner an eigene Bedürfnisse angepasst werden
können. Sie enthalten ebenfalls Platzhalter, die allerdings einer anderen
Syntax als HTMLBusiness folgen.
Der Funktionsbaustein WWW_GET_REPORT() startet den Report mit SUBMIT
... AND RETURN, wobei er Parameter und Selektionsoptionen dem Report
übergibt. Das vom Report erzeugte Listenbild wandelt er mit Hilfe der
WebReporting-Browser-Templates in eine HTML-Seite um, die über
den ITS dem Anwender zurückgeliefert wird.

188
WebRFC und WebReporting 5

1. Programmieren Sie für den Einsatz im WebReporting einen kleinen


ABAP-Report ZKUNDENnn, der im Selektionsbild die drei Selektionsop-
tionen NAME, VORNAME und WOHNORT erfragt und aus der Tabelle ZKUNDEN
alle passenden Kunden als Liste ausgibt, s. Abbildung 5.10 bis Ab-
bildung 5.11.

Legen Sie den Report als Programm des Typs Ausführbares Programm Schritte
ohne Top-Include an. Tragen Sie eine Berechtigungsgruppe 1 ein, der Sie
angehören (die abgebildete stammt aus dem IDES-Mandanten), s. Ab-
bildung 5.7 bis Abbildung 5.8.

Abbildung 5.7
Anlegen eines Programms
(© SAP AG)

Abbildung 5.8
Reports können aus
Sicherheitsgründen nur
gestartet werden, wenn
die Berechtigungsgruppe
gepflegt ist.
(© SAP AG)

REPORT zkundenmu.
TABLES zkunden.
SELECT-OPTIONS: so_name FOR zkunden-name LOWER CASE,
so_vname FOR zkunden-vorname LOWER CASE,
so_wnort FOR zkunden-wohnort LOWER CASE.
DATA: it_kunden LIKE TABLE OF zkunden,
wa_kunden LIKE zkunden.

START-OF-SELECTION.
SELECT * FROM zkunden INTO TABLE it_kunden

1. Legen Sie sich ggf. eine Berechtigungsgruppe an. Fragen Sie Ihren Dozenten
oder Administrator.

5.2 WebReporting: WWW_GET_SELSCREEN() 189


5 WebRFC und WebReporting

WHERE name IN so_name


AND vorname IN so_vname
AND wohnort IN so_wnort.
WRITE: /(10) 'Kundennr', (15) 'Name', (15) 'Vorname',
(15) 'Wohnort'.
ULINE.
LOOP AT it_kunden INTO wa_kunden.
WRITE: / wa_kunden-kundennr, wa_kunden-name,
wa_kunden-vorname, wa_kunden-wohnort.
ENDLOOP.

Pflegen und aktivieren Sie die Selektionstexte: SPRINGEN / TEXTELEMENTE


/ SELEKTIONSTEXTE. Starten Sie das Programm mit Funktionstaste (F8), s.
Abbildung 5.9 bis Abbildung 5.11.

Abbildung 5.9
Pflege der Textelemente
des Reports
(© SAP AG)

Abbildung 5.10
Selektionsbild des
Reports
(© SAP AG)

Abbildung 5.11
Ergebnisliste des Reports
(© SAP AG)

2. Geben Sie den Report für das Internet frei.

190
WebRFC und WebReporting 5
Starten Sie vom OBJECT NAVIGATOR aus UMFELD / WEBREPORTING-RE- Schritte
POSITORY, dann INTERNETFREIGABE / REPORTS. Geben Sie den Report
frei, s. Abbildung 5.12.

Abbildung 5.12
Freigabe des Reports
für das Internet
(© SAP AG)

3. Legen Sie in inhalt.htm auf dem Webserver einen Hyperlink an, der
über den Service webrfct den Funktionsbaustein WWW_GET_SEL-
SCREEN() ruft, der wiederum den Report ZKUNDENnn startet und so das
Selektionsbild als HTML-Datei an den Browser sendet, s. Abbildung
5.13 bis Abbildung 5.14.

Ergänzen Sie C:\Inetpub\wwwroot\inhalt.htm. Starten Sie die Web- Schritte


Transaction vom Browser aus.
<a href="/scripts/wgate/webrfct!?_function=WWW_HTML_ECHO
&region=aus Tirol&name=Anton
&attribut1=toll&attribut2=schoen"
target="rechts"> Hallo Echo</a><br>
<a href=
"/scripts/wgate/webrfct!?_function=WWW_GET_SELSCREEN
&_report=ZKUNDENMU" target="rechts"> Report Kundenliste
</a><br>
</body>

Abbildung 5.13
Selektionsbild des
WebReports2

2. Die fehlerhaften Umlaute rühren von einer fehlenden Zeichensatzangabe im Header her,
der im Template, das SAP-seitig zur Verfügung gestellt wird, gepflegt werden müsste.

5.2 WebReporting: WWW_GET_SELSCREEN() 191


5 WebRFC und WebReporting

Abbildung 5.14
Ergebnisliste des
WebReports
(© SAP AG)

4. Erweitern Sie ZKUNDENnn zu einem interaktiven ABAP-Report. Beim


Doppelklick auf eine Kundenzeile soll für jenen Kunden ein Depot-
auszug in der Verzweigungsliste erscheinen, s. Abbildung 5.18 bis
Abbildung 5.20.

Der Depotauszug bezieht seine Daten aus dem View ZDEPOT_PA-


PIERnn. Von jeder Wertpapierposition sollen angezeigt werden: WKN,
TITEL, EMITTENT, DEPOTNR und ANZAHL.

Starten Sie den interaktiven Report zuerst mit dem SAPGUI, und
dann als WebReport.

Zur Anzeige interaktiver WebReports benötigt der Anwender den


Internet Explorer, da die hierfür verwendeten JavaScript-Pro-
gramme in der Webseite nur auf diesen Browser hin ausgelegt
sind.

Schritte Ergänzen Sie ZKUNDENnn.


DATA: it_kunden LIKE TABLE OF zkunden,
wa_kunden LIKE zkunden.
DATA: it_kp LIKE TABLE OF zdepot_papiermu,
wa_kp LIKE zdepot_papiermu.

START-OF-SELECTION.
...
LOOP AT it_kunden INTO wa_kunden.
WRITE: / wa_kunden-kundennr, wa_kunden-name,
wa_kunden-vorname, wa_kunden-wohnort.
HIDE: wa_kunden-kundennr, wa_kunden-name,

192
WebRFC und WebReporting 5
wa_kunden-vorname.
ENDLOOP.

AT LINE-SELECTION.
WRITE: 'Depotauszug für Kunde ', wa_kunden-kundennr,
wa_kunden-vorname, wa_kunden-name.
ULINE.
SELECT * FROM zdepot_papiermu
INTO CORRESPONDING FIELDS OF TABLE it_kp
WHERE kundennr = wa_kunden-kundennr.
WRITE: /(10) 'WP-KennNr', (20) 'Wertpapiertitel',
(15) 'Emittent', (10) 'DepotNr', (10) 'Anzahl'.
LOOP AT it_kp INTO wa_kp.
WRITE: / wa_kp-wkn, wa_kp-titel, wa_kp-emittent,
wa_kp-depotnr, wa_kp-anzahl.
ENDLOOP.

Aktivieren und starten Sie den interaktiven Report zunächst mit dem
SAPGUI, dann als WebReport mit dem Browser, s. Abbildung 5.15 bis
Abbildung 5.20.

Abbildung 5.15
Selektionsbild des
interaktiven Reports
(© SAP AG)

Abbildung 5.16
Grundliste Kunden: Mit
einem Doppelklick
gelangen Sie zur
Verzweigungsliste.
(© SAP AG)

5.2 WebReporting: WWW_GET_SELSCREEN() 193


5 WebRFC und WebReporting

Abbildung 5.17
Verzweigungsliste
Depotauszug für den
ausgewählten Kunden
(© SAP AG)

Abbildung 5.18
Selektionsbild des
interaktiven WebReports

Abbildung 5.19
Grundliste des
interaktiven WebReports

Abbildung 5.20
Verzweigungsliste des
WebReports

194
WebRFC und WebReporting 5

5.3 Ausblick
Mit dem interaktiven WebReport sind Sie am Ende dieses Übungsbuches
angelangt und verfügen bereits über fundierte Kenntnisse zur IAC-Pro-
grammierung. Nun können Sie sich an eigene Webprojekte heranwagen.
Von diesem Punkt aus sollten Sie sich auch kontinuierlich in weiterfüh-
rende Themen hineinarbeiten, die aufgrund der Fülle des Gebiets in die-
sem Werk leider nicht mehr behandelt werden konnten:
• Frame-basierte WebTransactions, die in R/3 als Subscreen-Dynpros
angelegt werden
• Import und Export von MIME-Objekten in WebTransactions
• Anschluss des SAP@Web Studios an den Workbench Organizer, In-
tegration des ITS in eine R/3-Systemlandschaft mit Entwicklungs-,
Test- und Produktivsystem
• Lieferung von MIME-Objekten über WebRFC
• HTML-Templates für WebRFC, SAP-WebRepository und der Funkti-
onsbaustein WWW_HTML_MERGER zum Ersetzen der Platzhalter
• Administration des ITS, Remote Diagnostics, webbasiertes Admin-
Tool auf einem zweiten (oder virtuellen) Webserver zur Überwa-
chung und Verwaltung des ITS
Anleitungen hierfür finden Sie in der Online-Dokumentation des
SAP@Web Studios: HELP / STUDIO DOCUMENTATION und HELP / ITS
DOCUMENTATION. Die DEKRA-Akademie, der Verlag Addison-Wesley
und der Verfasser wünschen Ihnen dabei recht viel Spaß und Erfolg.

5.3 Ausblick 195


Programmlistings A

Anhang A
Programmlistings
Die folgenden Listings zeigen den ABAP-, HTML- respektive HTMLBusi-
ness
-Code der Programme, Webseiten und Templates nach Bearbeiten
der jeweiligen Aufgabe.
Das komplette Kapitel finden Sie auch in der Datei IAC-Muster.rtf im
Archiv abap.zip, das Sie im Web unter http://www.dekra-akade-
mie.de/download finden. Sie können sich so das Eintippen der Pro-
grammtexte durch Kopieren über die Windows-Zwischenablage erspa-
ren.

A.1 Die eigene Homepage


Einfache HTML-Dateien auf dem Webserver IIS, noch ohne Zugriff Abschnitt 2.1
auf R/3-Daten.
C:\Inetpub\wwwroot\default.htm
<html>
<head>
<title>Dekra Effekten Kontor</title>
<meta name="description" content="Verwaltung von
Wertpapieren durch Aussendienstmitarbeiter">
<meta name="author" content="Michael S. Umlauff">
<meta name="keywords" content="Wertpapier, Effekten,
Depot, Verbuchung">

A.1 Die eigene Homepage 197


A Programmlistings

<meta http-equiv="content-type" content="text/html;


charset=iso-8859-1">
</head>

<body bgcolor="black" text="green" link="red"


link= "indianred">
<h1> Dekra Effekten Kontor </h1>
<h2> Herzlich Willkommen </h2>
<h5> Die <b> clevere </b> Depotverwaltung</h5>
<p>
Wir <!-- Kommentar, ist unsichtbar --> verwalten
<em> Ihre </em>
Schätze!
<p><font size="2" color="red"> Damit Ihre Erben auch
was zu lachen haben!
</font></p>
</body>
</html>

Abschnitt 2.2 C:\Inetpub\wwwroot\default.htm


<html>
<head>
<title>Dekra Effekten Kontor</title>
<meta name="description" content="Verwaltung von
Wertpapieren durch Aussendienstmitarbeiter">
<meta name="author" content="Michael S. Umlauff">
<meta name="keywords" content="Wertpapier, Effekten,
Depot, Verbuchung">
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-1">
</head>

<body>
<img src="dekra-logo.gif" alt="Dekra-Logo" width=182
height=55>
<h1> Dekra Effekten Kontor</h1>

198
Programmlistings A
<h2> Herzlich Willkommen </h2>
<h5> Die <b> clevere </b> Depotverwaltung</h6>
<p>
Wir <!-- Kommentar, ist unsichtbar --> verwalten
<em> Ihre </em>
Schätze!
<p><font size="2" color="red"> Damit Ihre Erben auch
was zu lachen haben!
</font></p>
</body>
</html>

C:\Inetpub\wwwroot\vorzuege.htm
<html>
<head>
<title>Vorzuege Dekra Effekten Kontor</title>
<meta name="description" content="Reich werden mit
Dekra Effekten Kontor"
<meta name="Author" content="Michael S. Umlauff">
<meta name="keywords" content="Reichtum, Depot,
Effekten, Vorzuege">
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-1">
</head>

<body background="hintergrund.jpg">
<h1> Werden auch Sie reich mit einem <br>
Depot beim Dekra Effekten Kontor! </h1>
</body>
</html>

A.1 Die eigene Homepage 199


A Programmlistings

Abschnitt 2.3 C:\Inetpub\wwwroot\default.htm


<html>
<head>
<title>Dekra Effekten Kontor</title>
<meta name="description" content="Verwaltung von
Wertpapieren durch Aussendienstmitarbeiter">
<meta name="author" content="Michael S. Umlauff">
<meta name="keywords" content="Wertpapier, Effekten,
Depot, Verbuchung">
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-1">
</head>

<body>
<img src="dekra-logo.gif" alt="Dekra-Logo" width=182
height=55>
<h1> Dekra Effekten Kontor</h1>
<h2> Herzlich Willkommen </h2>
<h5> Die <b> clevere </b> Depotverwaltung</h6>
<p>
Wir <!-- Kommentar, ist unsichtbar --> verwalten
<em> Ihre </em>
Schätze!
<p><font size="2" color="red"> Damit Ihre Erben auch
was zu lachen haben!
</font></p>
<table border=1 width=40%>
<tr>
<th height=40pt valign=bottom>Sonderangebote der
Woche </th>
<th colspan=2 valign=bottom>Preis</th>
</tr>
<tr>
<td>Whistler Corp.</td>
<td align=right>360 DM</td>

200
Programmlistings A
<td align=right>180$</td>
</tr>
<tr>
<td>Stromberg Reed. </td>
<td align=right>764DM</td>
<td align=right> 382$</td>
</tr>
<tr>
<td>Zorin Industries </td>
<td align=right>2811DM</td>
<td align=right>1406$</td>
</tr>
</table>
</body>
</html>

C:\Inetpub\wwwroot\default.htm Abschnitt 2.4


<html>
<head>
<title>Dekra Effekten Kontor</title>
<meta name="description" content="Verwaltung von
Wertpapieren durch Aussendienstmitarbeiter">
<meta name="author" content="Michael S. Umlauff">
<meta name="keywords" content="Wertpapier, Effekten,
Depot, Verbuchung">
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-1">
</head>

<body>
<img src="dekra-logo.gif" alt="Dekra-Logo" width=182
height=55>
<h1> Dekra Effekten Kontor </h1>
<h2> Herzlich Willkommen </h2>
<h5> Die <b> clevere </b> Depotverwaltung</h5>
<p>

A.1 Die eigene Homepage 201


A Programmlistings

Wir <!-- Kommentar, ist unsichtbar --> verwalten


<em> Ihre </em>
Schätze!
<p><font size="2" color="red"> Damit Ihre Erben auch
was zu lachen haben!
</font></p>
<p> Wie Sie mit Dekra Effekten Kontor <a href=
"vorzuege.htm"> reich werden </a> können.</p>
<p> Besuchen Sie auch <a href="http://www.sap.de">SAP</a>,
<a href="http://www.addison-wesley.de">Addison-Wesley</a>
und die <a href="www.dekra-akademie.de">
<img src="dekra-logo.gif" width=182
height=55></a>.</p>
<table border=1 width=40%>
<tr>
<th height=40pt valign=bottom>Sonderangebote der
Woche </th>
<th colspan=2 valign=bottom>Preis</th>
</tr>
<tr>
<td>Whistler Corp.</td>
<td align=right>360 DM</td>
<td align=right>180$</td>
</tr>
<tr>
<td>Stromberg Reed. </td>
<td align=right>764DM</td>
<td align=right> 382$</td>
</tr>
<tr>
<td>Zorin Industries </td>
<td align=right>2811DM</td>
<td align=right>1406$</td>
</tr>
</table>

202
Programmlistings A
</body>
</html>

C:\Inetpub\wwwroot\vorzuege.htm
<html>
<head>
<title>Vorzuege Dekra Effekten Kontor</title>
<meta name="description" content="Reich werden mit
Dekra Effekten Kontor"
<meta name="Author" content="Michael S. Umlauff">
<meta name="keywords" content="Reichtum, Depot,
Effekten, Vorzuege">
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-1">
</head>

<body background="hintergrund.jpg">
<h1> Werden auch Sie reich mit einem <br>
Depot beim Dekra Effekten Kontor! </h1>
<ul>
<li>Toprenditen internationaler
Spitzengesellschaften</li>
<li>Permanente Online-Verbindung direkt zu unserem
Broker auf dem Parkett</li>
<li>Steuerfreiheit der Anlage mittels renommierter
Stiftungen in Vaduz/Liechtenstein</li>
</ul>
<p> Zurück zur <a href="default.htm"> Homepage </a></p>
</body>
</html>

A.1 Die eigene Homepage 203


A Programmlistings

Abschnitt 2.5 C:\Inetpub\wwwroot\default.htm


<html>
<head>
<title>Dekra Effekten Kontor</title>
<meta name="description" content="Frameset">
<meta name="author" content="Michael S. Umlauff">
<meta name="keywords" content="Wertpapier, Effekten,
Depot, Verbuchung, Reichtum">
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-1">
</head>

<frameset cols="20%,80%">
<frame name="links" src="inhalt.htm">
<frame name="rechts" src="homepage.htm">
</frameset>
</html>

C:\Inetpub\wwwroot\inhalt.htm
<html>
<head>
<title>Dekra Effekten Kontor Inhalt</title>
<meta name="description" content="Inhaltsleiste">
<meta name="author" content="Michael S. Umlauff">
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-1">
</head>
<body>
<h3>Inhalt</h3>
<a href="homepage.htm" target="rechts"> Homepage
</a><br>
<a href="vorzuege.htm" target="rechts"> Reich werden
</a><br>
<a href="default_ITS.htm" target="rechts"> Standard-IACs
</a><br>

204
Programmlistings A
<a href="selfhtml/selfhtml.htm" target="rechts"> SELFHTML
</a><br>
</body>
</html>

C:\Inetpub\wwwroot\homepage.htm
<html>
<head>
<title>Dekra Effekten Kontor</title>
<meta name="description" content="Verwaltung von
Wertpapieren durch Aussendienstmitarbeiter">
<meta name="author" content="Michael S. Umlauff">
<meta name="keywords" content="Wertpapier, Effekten,
Depot, Verbuchung">
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-1">
</head>

<body>
<img src="dekra-logo.gif" alt="Dekra-Logo" width=182
height=55>
<h1> Dekra Effekten Kontor </h1>
<h2> Herzlich Willkommen </h2>
<h5> Die <b> clevere </b> Depotverwaltung</h5>
<p>
Wir <!-- Kommentar, ist unsichtbar --> verwalten
<em> Ihre </em>
Schätze!
<p><font size="2" color="red"> Damit Ihre Erben auch
was zu lachen haben!
</font></p>
<p> Wie Sie mit Dekra Effekten Kontor <a href=
"vorzuege.htm"> reich werden </a> können.</p>
<p> Besuchen Sie auch <a href="http://www.sap.de">SAP</a>,
<a href="http://www.addison-wesley.de">Addison-Wesley</a>
und die <a href="www.dekra-akademie.de">

A.1 Die eigene Homepage 205


A Programmlistings

<img src="dekra-logo.gif" width=182


height=55></a>.</p>
<table border=1 width=40%>
<tr>
<th height=40pt valign=bottom>Sonderangebote der
Woche </th>
<th colspan=2 valign=bottom>Preis</th>
</tr>
<tr>
<td>Whistler Corp.</td>
<td align=right>360 DM</td>
<td align=right>180$</td>
</tr>
<tr>
<td>Stromberg Reed. </td>
<td align=right>764DM</td>
<td align=right> 382$</td>
</tr>
<tr>
<td>Zorin Industries </td>
<td align=right>2811DM</td>
<td align=right>1406$</td>
</tr>
</table>
</body>
</html>

206
Programmlistings A

A.2 WebTransaction: Erste Fassung


In den Programmtexten wurde der Übungsgruppen-Platzhalter nn Namens-
durch mu ersetzt. konvention

Modulpool SAPMZDEPOTnn nach Anlegen aller Dynpros Abschnitt


3.2 bis 3.6.3
Modulpool SAPMZDEPOTnn, Rahmenprogramm
INCLUDE mzdepotmutop.

* INCLUDE MZDEPOTMUO01
* INCLUDE MZDEPOTMUI01
* INCLUDE MZDEPOTMUF01

INCLUDE mzdepotmuo01.

INCLUDE mzdepotmui01.

Modulpool SAPMZDEPOTnn, Dynpro 100


PROCESS BEFORE OUTPUT.
MODULE status_0100.
*
PROCESS AFTER INPUT.
CHAIN.
FIELD: bapiempl-pernr, bapiuid-password.
MODULE user_command_0100.
ENDCHAIN.

Modulpool SAPMZDEPOTnn, Dynpro 200


PROCESS BEFORE OUTPUT.
MODULE status_0200.
*
PROCESS AFTER INPUT.
MODULE user_command_0200.

Modulpool SAPMZDEPOTnn, Dynpro 300


PROCESS BEFORE OUTPUT.
LOOP.
MODULE steploop_zeile_fuellen.

A.2 WebTransaction: Erste Fassung 207


A Programmlistings

ENDLOOP.
MODULE status_0300.
MODULE trans_to_0300.

PROCESS AFTER INPUT.


FIELD kaufpos MODULE user_command_0300.
LOOP.
ENDLOOP.

Modulpool SAPMZDEPOTnn, Dynpro 400


PROCESS BEFORE OUTPUT.
MODULE status_0400.
*
PROCESS AFTER INPUT.
FIELD kaufanzahl.
MODULE user_command_0400.

Modulpool SAPMZDEPOTnn, Top-Include MZDEPOTnnTOP


PROGRAM sapmzdepotmu .
TABLES: zdepot, zkunden.
TABLES: zdepot_papiermu.
DATA: it_kp LIKE TABLE OF zdepot_papiermu,
wa_kp LIKE zdepot_papiermu.
DATA: ok_code LIKE sy-ucomm,
save_ok LIKE ok_code.
TABLES: bapiempl, bapiuid.
DATA: ret LIKE bapireturn.
DATA: ind LIKE sy-stepl,
erstezeile LIKE sy-stepl,
pos LIKE sy-stepl,
kaufpos TYPE i,
kaufanzahl LIKE zdepotpstn-anzahl,
zukauf TYPE c.
DATA: offset(2) TYPE n,
benoet_screen LIKE sy-dynnr.

Modulpool SAPMZDEPOTnn, PBO-Include MZDEPOTnnO01

208
Programmlistings A
MODULE status_0100 OUTPUT.
SET PF-STATUS '100'.
SET TITLEBAR '100'.
ENDMODULE. " STATUS_0100 OUTPUT

MODULE status_0200 OUTPUT.


SET PF-STATUS '200'.
SET TITLEBAR '200'.
ENDMODULE. " STATUS_0200 OUTPUT

MODULE steploop_zeile_fuellen OUTPUT.


ind = erstezeile + sy-stepl - 1.
pos = ind.
READ TABLE it_kp INTO wa_kp INDEX ind.
IF sy-subrc <> 0.
EXIT FROM STEP-LOOP.
ELSE.
MOVE-CORRESPONDING wa_kp TO zdepot_papiermu.
ENDIF.
ENDMODULE. " STEPLOOP_ZEILE_FUELLEN OUTPUT

MODULE trans_to_0300 OUTPUT.


SELECT SINGLE * FROM zkunden
WHERE kundennr = zdepot-kundennr.
ENDMODULE. " TRANS_TO_0300 OUTPUT

MODULE status_0300 OUTPUT.


SET PF-STATUS '300'.
SET TITLEBAR '300'.
ENDMODULE. " STATUS_0300 OUTPUT

MODULE status_0400 OUTPUT.


SET PF-STATUS '400'.
SET TITLEBAR '400'.
ENDMODULE. " STATUS_0400 OUTPUT

A.2 WebTransaction: Erste Fassung 209


A Programmlistings

Modulpool SAPMZDEPOTnn, PAI-Include MZDEPOTnnI01


MODULE user_command_0100 INPUT.
save_ok = ok_code.
CLEAR ok_code.

CASE save_ok.
WHEN 'LOGIN'.
CALL FUNCTION 'BAPI_EMPLOYEE_CHECKPASSWORD'
EXPORTING
number = bapiempl-pernr
password = bapiuid-password
IMPORTING
return = ret
EXCEPTIONS
OTHERS = 1.
IF ret-type IS INITIAL.
LEAVE TO SCREEN 200.
ELSE.
MESSAGE ID 'SU' TYPE ret-type NUMBER 000 WITH
ret-code ret-message.
ENDIF.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT

MODULE user_command_0200 INPUT.


save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'BACK'.
LEAVE TO SCREEN 100.
WHEN 'SELECT'.
erstezeile = 1.
SELECT * FROM zdepot_papiermu

210
Programmlistings A
INTO CORRESPONDING FIELDS OF TABLE it_kp
WHERE kundennr = zdepot-kundennr.
LEAVE TO SCREEN 300.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT

MODULE user_command_0300 INPUT.


save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'BACK'.
LEAVE TO SCREEN 200.
WHEN 'FIRST'.
erstezeile = 1.
WHEN 'UP'.
IF erstezeile GE 11.
erstezeile = erstezeile - 10.
ELSE.
erstezeile = 1.
ENDIF.
WHEN 'DOWN'.
erstezeile = erstezeile + 10.
WHEN 'KAUFEN'.
READ TABLE it_kp INTO wa_kp INDEX kaufpos.
IF sy-subrc = 0.
LEAVE TO SCREEN 400.
ELSE.
MESSAGE e000(su) WITH
'Wertpapierposition nicht vorhanden'.
ENDIF.
ENDCASE.
ENDMODULE. " USER_COMMAND_0300 INPUT

MODULE user_command_0400 INPUT.


save_ok = ok_code.

A.2 WebTransaction: Erste Fassung 211


A Programmlistings

CLEAR ok_code.
CASE save_ok.
WHEN 'BACK'.
LEAVE TO SCREEN 300.
WHEN 'VERBUCH'.
IF zukauf = space.
wa_kp-anzahl = wa_kp-anzahl - kaufanzahl.
ELSE.
wa_kp-anzahl = wa_kp-anzahl + kaufanzahl.
ENDIF.
CALL FUNCTION 'Z_DEPOTPSTNMU_ANZAHL'
EXPORTING
depotnr = wa_kp-depotnr
wkn = wa_kp-wkn
anzahl = wa_kp-anzahl
EXCEPTIONS
not_found = 1
lock_error = 2
update_error = 3
OTHERS = 4.
CASE sy-subrc.
WHEN 0.
MESSAGE s000(su) WITH
'Wertpapierhandel wurde verbucht'.
erstezeile = 1.
SELECT * FROM zdepot_papiermu
INTO CORRESPONDING FIELDS OF TABLE it_kp
WHERE kundennr = zkunden-kundennr.
LEAVE TO SCREEN 300.
WHEN 1.
MESSAGE e000(su) WITH 'Datensatz nicht gefunden'.
WHEN 2.
MESSAGE e000(su) WITH 'Sperren fehlgeschlagen'.
WHEN 3.
MESSAGE e000(su) WITH 'Änderung fehlgeschlagen'.

212
Programmlistings A
WHEN 4.
MESSAGE e000(su) WITH
'Unbekannter Fehler aufgetreten'.
ENDCASE.
COMMIT WORK.
ENDCASE.
ENDMODULE. " USER_COMMAND_0400 INPUT

Verbuchungsfunktionsbaustein der WebTransaction

Funktionsbaustein Z_DEPOTPSTNnn_ANZAHL
FUNCTION Z_DEPOTPSTNMU_ANZAHL.
*"-----------------------------------------------------------
*"*"Verbuchungsfunktionsbaustein:
*"
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(DEPOTNR) TYPE ZDEPOTPSTN-DEPOTNR
*" VALUE(WKN) TYPE ZDEPOTPSTN-WKN
*" VALUE(ANZAHL) TYPE ZDEPOTPSTN-ANZAHL
*" EXCEPTIONS
*" NOT_FOUND
*" LOCK_ERROR
*" UPDATE_ERROR
*"-----------------------------------------------------------
TABLES zdepotpstn.
DATA success LIKE sy-subrc.
SELECT SINGLE * FROM zdepotpstn
WHERE depotnr = depotnr
AND wkn = wkn.
IF sy-subrc NE 0.
RAISE not_found.
ELSE.
CALL FUNCTION 'ENQUEUE_EZDEPOTPSTN'
EXPORTING
mode_zdepotpstn = 'E'
mandt = sy-mandt

A.2 WebTransaction: Erste Fassung 213


A Programmlistings

depotnr = depotnr
wkn = wkn
* X_DEPOTNR = ' '
* X_WKN = ' '
* _SCOPE = '2'
* _WAIT = ' '
* _COLLECT = ' '
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc <> 0.
RAISE lock_error.
ELSE.
zdepotpstn-anzahl = anzahl.
UPDATE zdepotpstn.
success = sy-subrc.
CALL FUNCTION 'DEQUEUE_EZDEPOTPSTN'
EXPORTING
mode_zdepotpstn = 'E'
mandt = sy-mandt
depotnr = depotnr
wkn = wkn
* x_depotnr = ' '
* X_WKN = ' '
* _SCOPE = '3'
* _SYNCHRON = ' '
* _COLLECT = ' '
EXCEPTIONS
OTHERS = 1.
IF success NE 0.
RAISE update_error.
ENDIF.
ENDIF.
ENDIF.
ENDFUNCTION.

214
Programmlistings A

A.3 Projekt wpbuchung: Erste Fassung


Die Templates zu den Dynpros 100, 200, 300, 400 liefert der Template- Abschnitt
4.1 bis 4.2
Wizard des SAP@Web Studios aus den Dynpro-Definitionen heraus,
sie werden dem Projekt wpbuchung hinzugefügt.
Service wpbuchung, Template zu Dynpro 100:
sapmzdepotnn_100_ de.html
<html>
<head>
<meta name="GENERATOR"
content="SAP WebStudio HTMLBusiness Designer 4.6D">
<title>`~windowtitle`</title>
</head>
<body>
`~messageline`
<form method="post" action="`wgateurl()`">
<p>
`'%#AUTOTEXT001'.label`
<p>
`'%#AUTOTEXT002'.label`
<p>
`BAPIEMPL-PERNR.label`
<input type=text name="`BAPIEMPL-PERNR.name`"
value="`BAPIEMPL-PERNR.value`" maxlength="008"
size="008">`assert(BAPIEMPL-PERNR.name)`
<p>
`BAPIUID-PASSWORD.label` <!-- <input type=text
name="`BAPIUID-PASSWORD.name`"
value="`BAPIUID-PASSWORD.value`" maxlength="016"
size="016">`assert(BAPIUID-PASSWORD.name)` -->
<p>
<input type=submit name="~okcode=LOGIN"
value="`BUTTON_ANMELDEN.label`">
</form></P>
</body>
</html>

A.3 Projekt wpbuchung: Erste Fassung 215


A Programmlistings

Service wpbuchung, Template zu Dynpro 200:


sapmzdepotnn_200_de. html
<html>
<head>
<title>`~windowtitle`</title>
</head>
<body>
`~messageline`
<form method="post" action="`wgateurl()`">
<p>
`'%#AUTOTEXT001'.label`
<p>
`ZDEPOT-KUNDENNR.label`
<input type=text name="`ZDEPOT-KUNDENNR.name`"
value="`ZDEPOT-KUNDENNR.value`" maxlength="010"
size="010">
`assert(ZDEPOT-KUNDENNR.name)`
<p>
<input type=submit name="~okcode=SELECT"
value="`BUTTON_SELECT.label`">
</form>
</body>
</html>

Service wpbuchung, Template zu Dynpro 300:


sapmzdepotnn_300_de. html
<html>
<head>
<title>`~windowtitle`</title>
</head>
<body>
`~messageline`
<form method="post" action="`wgateurl()`">
<p>
`'%#AUTOTEXT001'.label`
<p>

216
Programmlistings A
`ZKUNDEN-KUNDENNR.label`
`ZKUNDEN-KUNDENNR.value`
<p>
`'%#AUTOTEXT003'.label`
<input type=text name="`KAUFPOS.name`"
value="`KAUFPOS.value`" maxlength="011" size="011">
`assert(KAUFPOS.name)`
<input type=submit name="~okcode=KAUFEN"
value="`BUTTON_KAUFEN.label`">
`ZKUNDEN-NAME.label`
`ZKUNDEN-NAME.value`
<p>
`ZKUNDEN-VORNAME.label`
`ZKUNDEN-VORNAME.value`
<p>
`ZKUNDEN-WOHNORT.label`
`ZKUNDEN-WOHNORT.value`
<p>
<table>
<thead>
<tr>
<td>`'%#AUTOTEXT004'.label`</td>
<td>`'%#AUTOTEXT005'.label`</td>
<td>`'%#AUTOTEXT006'.label`</td>
<td>`'%#AUTOTEXT007'.label`</td>
<td>`'%#AUTOTEXT008'.label`</td>
<td>`'%#AUTOTEXT009'.label`</td>
</tr>
</thead>
<tbody>
`repeat with j from 1 to POS.max`
<tr>
<td>`POS[j].value`</td>
<td>`ZDEPOT_PAPIERMU-WKN[j].value`</td>
<td>`ZDEPOT_PAPIERMU-TITEL[j].value`</td>

A.3 Projekt wpbuchung: Erste Fassung 217


A Programmlistings

<td>`ZDEPOT_PAPIERMU-EMITTENT[j].value`</td>
<td>`ZDEPOT_PAPIERMU-DEPOTNR[j].value`</td>
<td>`ZDEPOT_PAPIERMU-ANZAHL[j].value`</td>
</tr>
`end`
</tbody>
</table>
</form>
</body>
</html>

Service wpbuchung, Template zu Dynpro 400:


sapmzdepotnn_400_de. html
<html>
<head>
<title>`~windowtitle`</title>
</head>
<body>
`~messageline`
<form method="post" action="`wgateurl()`">
<p>
`'%#AUTOTEXT001'.label`
<p>
`ZKUNDEN-KUNDENNR.label`
`ZKUNDEN-KUNDENNR.value`
`'%#AUTOTEXT002'.label`
`WA_KP-WKN.value`
<p>
`ZKUNDEN-NAME.label`
`ZKUNDEN-NAME.value`
`'%#AUTOTEXT003'.label`
`WA_KP-TITEL.value`
<p>
`ZKUNDEN-VORNAME.label`
`ZKUNDEN-VORNAME.value`
`'%#AUTOTEXT004'.label`

218
Programmlistings A
`WA_KP-EMITTENT.value`
<p>
`ZKUNDEN-WOHNORT.label`
`ZKUNDEN-WOHNORT.value`
`'%#AUTOTEXT005'.label`
`WA_KP-DEPOTNR.value`
<p>
`'%#AUTOTEXT006'.label`
`WA_KP-ANZAHL.value`
<p>
<input type=text name="`KAUFANZAHL.name`"
value="`KAUFANZAHL.value`" maxlength="010" size="010">
`assert(KAUFANZAHL.name)`
`'%#AUTOTEXT007'.label`
<p>
<input type=text name="`ZUKAUF.name`"
value="`ZUKAUF.value`" maxlength="001" size="001">
`assert(ZUKAUF.name)`
`'%#AUTOTEXT008'.label`
<p>
<input type=submit name="~okcode=VERBUCH"
value="`'%#AUTOTEXT009'.label`">
</form>
</body>
</html>

A.3 Projekt wpbuchung: Erste Fassung 219


A Programmlistings

A.4 WebTransaction: Letzte Fassung


Anmerkung Gegenüber der ersten Fassung wurde Programmcode zum Synchroni-
sieren der ZURÜCK-Taste des Browsers (OK-Code AWSY...) und zum Set-
zen von Kontextfeldern im AGate (FIELD-SET, FIELD-TRANSPORT) ergänzt.

Namens- In den Programmtexten wurde der Übungsgruppen-Platzhalter nn


konvention durch mu ersetzt.
Abschnitt Modulpool SAPMZDEPOTnn nach Anlegen aller Dynpros
4.11 bis 4.15
Modulpool SAPMZDEPOTnn, Rahmenprogramm
INCLUDE mzdepotmutop.

* INCLUDE MZDEPOTMUO01
* INCLUDE MZDEPOTMUI01
* INCLUDE MZDEPOTMUF01

INCLUDE mzdepotmuo01.

INCLUDE mzdepotmui01.

INCLUDE MZDEPOTMUF01.

Modulpool SAPMZDEPOTnn, Dynpro 100


PROCESS BEFORE OUTPUT.
MODULE status_0100.
*
PROCESS AFTER INPUT.
CHAIN.
FIELD: bapiempl-pernr, bapiuid-password.
MODULE user_command_0100.
ENDCHAIN.

Modulpool SAPMZDEPOTnn, Dynpro 200


PROCESS BEFORE OUTPUT.
MODULE status_0200.
*

220
Programmlistings A
PROCESS AFTER INPUT.
MODULE user_command_0200.

Modulpool SAPMZDEPOTnn, Dynpro 300


PROCESS BEFORE OUTPUT.
LOOP.
MODULE steploop_zeile_fuellen.
ENDLOOP.
MODULE status_0300.
MODULE trans_to_0300.

PROCESS AFTER INPUT.


FIELD kaufpos MODULE user_command_0300.
LOOP.
ENDLOOP.

Modulpool SAPMZDEPOTnn, Dynpro 400


PROCESS BEFORE OUTPUT.
MODULE status_0400.
*
PROCESS AFTER INPUT.
FIELD kaufanzahl.
MODULE user_command_0400.

Modulpool SAPMZDEPOTnn, Top-Include MZDEPOTnnTOP


PROGRAM sapmzdepotmu .
TABLES: zdepot, zkunden.
TABLES: zdepot_papiermu.
DATA: it_kp LIKE TABLE OF zdepot_papiermu,
wa_kp LIKE zdepot_papiermu.
DATA: ok_code LIKE sy-ucomm,
save_ok LIKE ok_code.
TABLES: bapiempl, bapiuid.
DATA: ret LIKE bapireturn.
DATA: ind LIKE sy-stepl,
erstezeile LIKE sy-stepl,
pos LIKE sy-stepl,

A.4 WebTransaction: Letzte Fassung 221


A Programmlistings

kaufpos TYPE i,
kaufanzahl LIKE zdepotpstn-anzahl,
zukauf TYPE c.
DATA: offset(2) TYPE n,
benoet_screen LIKE sy-dynnr.
DATA: it_kunden LIKE TABLE OF zkunden,
zaehler TYPE i.
INCLUDE avwrtcxm.

Modulpool SAPMZDEPOTnn, PBO-Include MZDEPOTnnO01


MODULE status_0100 OUTPUT.
SET PF-STATUS '100'.
SET TITLEBAR '100'.
ENDMODULE. " STATUS_0100 OUTPUT

MODULE status_0200 OUTPUT.


SET PF-STATUS '200'.
SET TITLEBAR '200'.
SELECT * FROM zkunden INTO TABLE it_kunden.
zaehler = 0.
LOOP AT it_kunden INTO zkunden.
zaehler = zaehler + 1.
field-set 'KUNDENNR' zaehler zkunden-kundennr.
field-set 'NAME' zaehler zkunden-name.
field-set 'VORNAME' zaehler zkunden-vorname.
field-set 'WOHNORT' zaehler zkunden-wohnort.
ENDLOOP.
field-transport.
ENDMODULE. " STATUS_0200 OUTPUT

MODULE steploop_zeile_fuellen OUTPUT.


ind = erstezeile + sy-stepl - 1.
pos = ind.
READ TABLE it_kp INTO wa_kp INDEX ind.
IF sy-subrc <> 0.
EXIT FROM STEP-LOOP.

222
Programmlistings A
ELSE.
MOVE-CORRESPONDING wa_kp TO zdepot_papiermu.
ENDIF.
ENDMODULE. " STEPLOOP_ZEILE_FUELLEN OUTPUT

MODULE trans_to_0300 OUTPUT.


SELECT SINGLE * FROM zkunden
WHERE kundennr = zdepot-kundennr.
ENDMODULE. " TRANS_TO_0300 OUTPUT

MODULE status_0300 OUTPUT.


SET PF-STATUS '300'.
SET TITLEBAR '300'.
ENDMODULE. " STATUS_0300 OUTPUT

MODULE status_0400 OUTPUT.


SET PF-STATUS '400'.
SET TITLEBAR '400'.
ENDMODULE. " STATUS_0400 OUTPUT

Modulpool SAPMZDEPOTnn, PAI-Include MZDEPOTnnI01


MODULE user_command_0100 INPUT.
save_ok = ok_code.
CLEAR ok_code.

CASE save_ok.
WHEN 'LOGIN'.
CALL FUNCTION 'BAPI_EMPLOYEE_CHECKPASSWORD'
EXPORTING
number = bapiempl-pernr
password = bapiuid-password
IMPORTING
return = ret
EXCEPTIONS
OTHERS = 1.
IF ret-type IS INITIAL.

A.4 WebTransaction: Letzte Fassung 223


A Programmlistings

LEAVE TO SCREEN 200.


ELSE.
MESSAGE ID 'SU' TYPE ret-type NUMBER 000 WITH
ret-code ret-message.
ENDIF.
WHEN 'BACK'.
LEAVE PROGRAM.
WHEN OTHERS.
PERFORM backbutton.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT

MODULE user_command_0200 INPUT.


save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'BACK'.
LEAVE TO SCREEN 100.
WHEN 'SELECT'.
erstezeile = 1.
SELECT * FROM zdepot_papiermu
INTO CORRESPONDING FIELDS OF TABLE it_kp
WHERE kundennr = zdepot-kundennr.
LEAVE TO SCREEN 300.
WHEN OTHERS.
PERFORM backbutton.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT

MODULE user_command_0300 INPUT.


save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'BACK'.
LEAVE TO SCREEN 200.

224
Programmlistings A
WHEN 'FIRST'.
erstezeile = 1.
WHEN 'UP'.
IF erstezeile GE 11.
erstezeile = erstezeile - 10.
ELSE.
erstezeile = 1.
ENDIF.
WHEN 'DOWN'.
erstezeile = erstezeile + 10.
WHEN 'KAUFEN'.
READ TABLE it_kp INTO wa_kp INDEX kaufpos.
IF sy-subrc = 0.
LEAVE TO SCREEN 400.
ELSE.
MESSAGE e000(su) WITH
'Wertpapierposition nicht vorhanden'.
ENDIF.
WHEN OTHERS.
PERFORM backbutton.
ENDCASE.
ENDMODULE. " USER_COMMAND_0300 INPUT

MODULE user_command_0400 INPUT.


save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'BACK'.
LEAVE TO SCREEN 300.
WHEN 'VERBUCH'.
IF zukauf = space.
wa_kp-anzahl = wa_kp-anzahl - kaufanzahl.
ELSE.
wa_kp-anzahl = wa_kp-anzahl + kaufanzahl.
ENDIF.

A.4 WebTransaction: Letzte Fassung 225


A Programmlistings

CALL FUNCTION 'Z_DEPOTPSTNMU_ANZAHL'


EXPORTING
depotnr = wa_kp-depotnr
wkn = wa_kp-wkn
anzahl = wa_kp-anzahl
EXCEPTIONS
not_found = 1
lock_error = 2
update_error = 3
OTHERS = 4.
CASE sy-subrc.
WHEN 0.
MESSAGE s000(su) WITH
'Wertpapierhandel wurde verbucht'.
erstezeile = 1.
SELECT * FROM zdepot_papiermu
INTO CORRESPONDING FIELDS OF TABLE it_kp
WHERE kundennr = zkunden-kundennr.
LEAVE TO SCREEN 300.
WHEN 1.
MESSAGE e000(su) WITH 'Datensatz nicht gefunden'.
WHEN 2.
MESSAGE e000(su) WITH 'Sperren fehlgeschlagen'.
WHEN 3.
MESSAGE e000(su) WITH 'Änderung fehlgeschlagen'.
WHEN 4.
MESSAGE e000(su) WITH
'Unbekannter Fehler aufgetreten'.
ENDCASE.
COMMIT WORK.
WHEN OTHERS.
PERFORM backbutton.
ENDCASE.
ENDMODULE. " USER_COMMAND_0400 INPUT

226
Programmlistings A

Verbuchungsfunktionsbaustein der WebTransaction


Funktionsbaustein Z_DEPOTPSTNnn_ANZAHL
FUNCTION Z_DEPOTPSTNMU_ANZAHL.
*"--------------------------------------------------------------------
--
*"*"Verbuchungsfunktionsbaustein:
*"
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(DEPOTNR) TYPE ZDEPOTPSTN-DEPOTNR
*" VALUE(WKN) TYPE ZDEPOTPSTN-WKN
*" VALUE(ANZAHL) TYPE ZDEPOTPSTN-ANZAHL
*" EXCEPTIONS
*" NOT_FOUND
*" LOCK_ERROR
*" UPDATE_ERROR
*"--------------------------------------------------------------------
--
TABLES zdepotpstn.
DATA success LIKE sy-subrc.
SELECT SINGLE * FROM zdepotpstn
WHERE depotnr = depotnr
AND wkn = wkn.
IF sy-subrc NE 0.
RAISE not_found.
ELSE.
CALL FUNCTION 'ENQUEUE_EZDEPOTPSTN'
EXPORTING
mode_zdepotpstn = 'E'
mandt = sy-mandt
depotnr = depotnr
wkn = wkn
* X_DEPOTNR = ' '
* X_WKN = ' '

A.4 WebTransaction: Letzte Fassung 227


A Programmlistings

* _SCOPE = '2'
* _WAIT = ' '
* _COLLECT = ' '
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc <> 0.
RAISE lock_error.
ELSE.
zdepotpstn-anzahl = anzahl.
UPDATE zdepotpstn.
success = sy-subrc.
CALL FUNCTION 'DEQUEUE_EZDEPOTPSTN'
EXPORTING
mode_zdepotpstn = 'E'
mandt = sy-mandt
depotnr = depotnr
wkn = wkn
* x_depotnr = ' '
* X_WKN = ' '
* _SCOPE = '3'
* _SYNCHRON = ' '
* _COLLECT = ' '
EXCEPTIONS
OTHERS = 1.
IF success NE 0.
RAISE update_error.
ENDIF.
ENDIF.
ENDIF.
ENDFUNCTION.

228
Programmlistings A

A.5 Projekt wpbuchung: Letzte Fassung

Die Templates zu den Dynpros 100, 200, 300, 400 gehören zum Projekt Abschnitt
wpbuchung. Gegenüber der ersten Fassung wurden sie durch Weg-
4.4 bis 4.15
lassung der Endungen _de zu sprachunabhängigen Templates, die
auf Sprachressourcendateien zurückgreifen. Eine Vielzahl an
HTMLBusiness-Code wurde ergänzt, vorhandener Code wurde aus-
kommentiert.
Auf dem Webserver wurde inhalt.htm um eine Reihe von Hyperlinks
mit URLs zum IAC-Start ergänzt; default.htm blieb unverändert.

C:\Inetpub\wwwroot\default.htm
<html>
<head>
<title>Dekra Effekten Kontor</title>
<meta name="description" content="Frameset">
<meta name="author" content="Michael S. Umlauff">
<meta name="keywords" content="Wertpapier, Effekten,
Depot, Verbuchung, Reichtum">
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-1">
</head>

<frameset cols="20%,80%">
<frame name="links" src="inhalt.htm">
<frame name="rechts" src="homepage.htm">
</frameset>
</html>

C:\Inetpub\wwwroot\inhalt.htm
<html>
<head>
<title>Dekra Effekten Kontor Inhalt</title>
<meta name="description" content="Inhaltsleiste">
<meta name="author" content="Michael S. Umlauff">
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-1">

A.5 Projekt wpbuchung: Letzte Fassung 229


A Programmlistings

</head>
<body>
<h3>Inhalt</h3>
<a href="homepage.htm" target="rechts"> Homepage
</a><br>
<a href="vorzuege.htm" target="rechts"> Reich werden
</a><br>
<a href="default_ITS.htm" target="rechts"> Standard-IACs
</a><br>
<a href="selfhtml/selfhtml.htm" target="rechts"> SELFHTML
</a><br>
<a href="/scripts/wgate/wpbuchung!?~language=de"
target="rechts"> Wertpapierbuchung </a><br>
<a href="/scripts/wgate/wpbuchung!?~language=en"
target="rechts"> Deposit account booking </a><br>
<a href="/scripts/wgate/wpbuchung!?~language=de
&~okcode=LOGIN&BAPIEMPL-PERNR=1006
&BAPIUID-PASSWORD=katze" target="rechts">
WPBuchung für PNr 1006 </a><br>
<a href="/scripts/wgate/webrfct!?_function=WWW_HTML_ECHO
&region=aus Tirol&name=Anton
&attribut1=toll&attribut2=schoen"
target="rechts"> Hallo Echo</a><br>
<a href=
"/scripts/wgate/webrfct!?_function=WWW_GET_SELSCREEN
&_report=ZKUNDENMU" target="rechts"> Report Kundenliste
</a><br>
</body>
</html>

Service wpbuchung, Template zu Dynpro 100: sapmzdepotnn_100.html


<html>
<head>
<meta name="GENERATOR" content="SAP WebStudio HTMLBusiness Designer
4.6D">
<meta name="GENERATOR"

230
Programmlistings A
content="SAP WebStudio HTMLBusiness Designer 4.6D">
<title>`~windowtitle`</title>
</head>
<body>
<p><h2>`#welcome`</h2></p>
`~messageline`
<form method="post" action="`wgateurl()`">
<p>
`'%#AUTOTEXT001'.label`
<p>
`'%#AUTOTEXT002'.label`
<p>
`BAPIEMPL-PERNR.label`
<input type=text name="`BAPIEMPL-PERNR.name`"
value="`BAPIEMPL-PERNR.value`" maxlength="008"
size="008">`assert(BAPIEMPL-PERNR.name)`
<p>
`BAPIUID-PASSWORD.label`
<input type=password
name="`BAPIUID-PASSWORD.name`"
value="`BAPIUID-PASSWORD.value`" maxlength="016"
size="016">`assert(BAPIUID-PASSWORD.name)`
<p>
<input type=submit name="~okcode=LOGIN"
value="`BUTTON_ANMELDEN.label`">
</form></P>
</body>
</html>

Service wpbuchung, Template zu Dynpro 200: sapmzdepotnn_200.html


<html>
<head>
<meta name="GENERATOR" content="SAP WebStudio HTMLBusiness Designer
4.6D">
<title>`~windowtitle`</title>
</head>

A.5 Projekt wpbuchung: Letzte Fassung 231


A Programmlistings

<body>
`~messageline`
<form method="post" action="`wgateurl()`">
<p>
<img src="`mimeURL(~name="flagge.gif",
~language=~templatelanguage)`">
<p>
`'%#AUTOTEXT001'.label`
<p>
`ZDEPOT-KUNDENNR.label`
<!-- <input type=text name="`ZDEPOT-KUNDENNR.name`"
value="`ZDEPOT-KUNDENNR.value`" maxlength="010"
size="010"> -->
<select name="`ZDEPOT-KUNDENNR.name`" size=0>
`repeat with j from 1 to kundennr.max`
<option value="`kundennr[j]`"> `kundennr[j] & " "
& name[j] & " " & vorname[j] & " " & wohnort[j]`
`end`
</select>
`assert(ZDEPOT-KUNDENNR.name)`
<p>
<input type=submit name="~okcode=SELECT"
value="`BUTTON_SELECT.label`">
<p>
<a href="`wgateURL(~OKCode="SELECT",
zdepot-kundennr="624456")`"> Stammkunde Jerome Newton
</a>
</form></P>
</body>
</html>

Service wpbuchung, Template zu Dynpro 300: sapmzdepotnn_300.html


<html>
<head>
<meta name="GENERATOR" content="SAP WebStudio HTMLBusiness Designer
4.6D">

232
Programmlistings A
<title>`~windowtitle`</title>
</head>
<body>
`~messageline`
<form method="post" action="`wgateurl()`">
<p>
`'%#AUTOTEXT001'.label`
<p>
`ZKUNDEN-KUNDENNR.label`
<!-- `ZKUNDEN-KUNDENNR.value` -->
`strsub(ZKUNDEN-KUNDENNR.value,1,4) & "-DEKRA-"
& strsub(ZKUNDEN-KUNDENNR.value,5,2)`
<p>
`'%#AUTOTEXT003'.label`
<input type=text name="`KAUFPOS.name`"
value="`KAUFPOS.value`" maxlength="011" size="011">
`assert(KAUFPOS.name)`
<input type=submit name="~okcode=KAUFEN"
value="`BUTTON_KAUFEN.label`">
<input type=submit name="~OkCode=/NEX"
value="`#ende`">
<p>
<!-- `ZKUNDEN-NAME.label`
`ZKUNDEN-NAME.value`
<p>
`ZKUNDEN-VORNAME.label`
`ZKUNDEN-VORNAME.value` -->
`ZKUNDEN-VORNAME.label & ", " & ZKUNDEN-NAME.label &":"`
`ZKUNDEN-VORNAME.value & ", " & ZKUNDEN-NAME.value`
<p>
`ZKUNDEN-WOHNORT.label`
`ZKUNDEN-WOHNORT.value`
<p>
<table>
<thead>

A.5 Projekt wpbuchung: Letzte Fassung 233


A Programmlistings

<tr>
<td>`'%#AUTOTEXT004'.label`</td>
<td>`'%#AUTOTEXT005'.label`</td>
<td>`'%#AUTOTEXT006'.label`</td>
<td>`'%#AUTOTEXT007'.label`</td>
<td>`'%#AUTOTEXT008'.label`</td>
<td>`'%#AUTOTEXT009'.label`</td>
</tr>
</thead>
<tbody>
`repeat with j from 1 to POS.max`
<tr>
<td>`POS[j].value`</td>
<td>`ZDEPOT_PAPIERMU-WKN[j].value`</td>
<td>`ZDEPOT_PAPIERMU-TITEL[j].value`</td>
<td>
`if (ZDEPOT_PAPIERMU-EMITTENT[j].value==
"Biotech Emiss.")`
<em> BTE </em>
`elseif (ZDEPOT_PAPIERMU-EMITTENT[j].value==
"CompEmm.")`
<em> CPE </em>
`else`
`ZDEPOT_PAPIERMU-EMITTENT[j].value`
`end`
</td>
<td>`ZDEPOT_PAPIERMU-DEPOTNR[j].value`</td>
<td>`ZDEPOT_PAPIERMU-ANZAHL[j].value`</td>
<td> <a href="`wgateURL(~OKCode="KAUFEN",
KAUFPOS=j)`"> Kaufen </a></td>
</tr>
`end`
</tbody>
</table>
</form></P>

234
Programmlistings A
</body>
</html>

Service wpbuchung, Template zu Dynpro 400: sapmzdepotnn_400.html


<html>
<head>
<meta name="GENERATOR" content="SAP WebStudio HTMLBusiness Designer
4.6D">
<title>`~windowtitle`</title>
</head>
<body>
`~messageline`
<form method="post" action="`wgateurl()`">
<p>
`'%#AUTOTEXT001'.label`
<p>
`ZKUNDEN-KUNDENNR.label`
`ZKUNDEN-KUNDENNR.value`
`'%#AUTOTEXT002'.label`
`WA_KP-WKN.value`
<p>
`ZKUNDEN-NAME.label`
`ZKUNDEN-NAME.value`
`'%#AUTOTEXT003'.label`
`WA_KP-TITEL.value`
<p>
`ZKUNDEN-VORNAME.label`
`ZKUNDEN-VORNAME.value`
`'%#AUTOTEXT004'.label`
`WA_KP-EMITTENT.value`
<p>
`ZKUNDEN-WOHNORT.label`
`ZKUNDEN-WOHNORT.value`
`'%#AUTOTEXT005'.label`
`WA_KP-DEPOTNR.value`
<p>

A.5 Projekt wpbuchung: Letzte Fassung 235


A Programmlistings

`'%#AUTOTEXT006'.label`
`WA_KP-ANZAHL.value`
<p>
<!--<input type=text name="`KAUFANZAHL.name`"
value="`KAUFANZAHL.value`" maxlength="010" size="010"> -->
<input type=radio name="`KAUFANZAHL.name`" value=1> 1 <br>
<input type=radio name="`KAUFANZAHL.name`" value=2> 2 <br>
<input type=radio name="`KAUFANZAHL.name`" value=5> 5 <br>
<input type=radio name="`KAUFANZAHL.name`" value=10> 10
<br>
<input type=radio name="`KAUFANZAHL.name`" value=20> 20
<br>
<input type=radio name="`KAUFANZAHL.name`" value=50> 50
<br>
<input type=radio name="`KAUFANZAHL.name`" value=100> 100
<br>
<input type=radio name="`KAUFANZAHL.name`" value=200> 200
<br>
<input type=radio name="`KAUFANZAHL.name`" value=500> 500
<br>
<input type=radio name="`KAUFANZAHL.name`" value=1000>
1000 <br>
`assert(KAUFANZAHL.name)`
`'%#AUTOTEXT007'.label`
<p>
<!-- <input type=text name="`ZUKAUF.name`"
value="`ZUKAUF.value`" maxlength="001" size="001"> -->
<input type=hidden name="`ZUKAUF.name`" value=" ">
<input type=checkbox name="`ZUKAUF.name`" value="X">
`assert(ZUKAUF.name)`
`'%#AUTOTEXT008'.label`
<p>
<input type=submit name="~okcode=VERBUCH"
value="`'%#AUTOTEXT009'.label`">
</form></P>

236
Programmlistings A
</body>
</html>

Deutsche Sprachressourcendatei wpbuchung_de.htrc


welcome Willkommen zur Wertpapierbuchung
ende WebTransaction beenden!

Englische Sprachressourcendatei wpbuchung_en.htrc


welcome Welcome to deposit account booking
ende The End of WebTransaction!

Globale Servicedatei global.srvc


~routestring
~messageserver
~logingroup
~systemname T53
~appserver CPQ5508
~systemnumber 00

~client 403
~login itsadm
~password des26(a99fe9b937ad2d8a)
~language

~timeout 60
~usertimeout 60
~theme 99
~runtimemode pm

~cookies 1

~urlarchive /scripts/sapawl.dll
~urlimage /sap/its/graphics
~urlmime /sap/its/mimes
~exiturl http://www.dekra-kl.de/homepage.htm

~clientcert 1

A.5 Projekt wpbuchung: Letzte Fassung 237


A Programmlistings

~hostunsecure www.dekra-kl.de
~portunsecure 80
~hostsecure www.dekra-kl.de
~portsecure 443

~xgateways sapdiag,sapxgwfc,sapxginet,sapxgbc

~xgateway sapdiag

A.6 WebRFC und WebReporting


Abschnitt Die Login-Daten in der Servicedatei für WebRFC wurden gepflegt,
5.1 bis 5.2
und es wurde ein Beispielreport fürs WebReporting angelegt.
Die abschließende Fassung der Entwicklungsklasse ZIACnn mit der Trans-
aktion ZDEPOTnn und dem Report ZKUNDENnn wurde in den Transport
T53K900016 gesichert, der – ähnlich wie für die Entwicklungsklasse ZDEKRA
beschrieben – ins R/3 transportiert werden kann. Der Transport liegt in
Form der beiden Dateien R900016.T53 und K900016.T53 vor. Sie be-
finden sich im Archiv abap.zip, das unter http://www.dekra-akade-
mie.de/download erhältlich ist. Dort finden Sie auch die Datei
ziacmu.txt mit der Objektliste des Transportes.
Servicedatei webrfct.srvc
~login itsadm
~password dekra
~rfcDetailedError 1
~xgateway sapxgwfc.dll
~language DE

Report ZKUNDENnn
REPORT zkundenmu.
TABLES zkunden.
SELECT-OPTIONS: so_name FOR zkunden-name LOWER CASE,
so_vname FOR zkunden-vorname LOWER CASE,
so_wnort FOR zkunden-wohnort LOWER CASE.
DATA: it_kunden LIKE TABLE OF zkunden,
wa_kunden LIKE zkunden.
DATA: it_kp LIKE TABLE OF zdepot_papiermu,
wa_kp LIKE zdepot_papiermu.

238
Programmlistings A

START-OF-SELECTION.
SELECT * FROM zkunden INTO TABLE it_kunden
WHERE name IN so_name
AND vorname IN so_vname
AND wohnort IN so_wnort.
WRITE: /(10) 'Kundennr', (15) 'Name', (15) 'Vorname',
(15) 'Wohnort'.
ULINE.
LOOP AT it_kunden INTO wa_kunden.
WRITE: / wa_kunden-kundennr, wa_kunden-name,
wa_kunden-vorname, wa_kunden-wohnort.
HIDE: wa_kunden-kundennr, wa_kunden-name,
wa_kunden-vorname.
ENDLOOP.

AT LINE-SELECTION.
WRITE: 'Depotauszug für Kunde ', wa_kunden-kundennr,
wa_kunden-vorname, wa_kunden-name.
ULINE.
SELECT * FROM zdepot_papiermu
INTO CORRESPONDING FIELDS OF TABLE it_kp
WHERE kundennr = wa_kunden-kundennr.
WRITE: /(10) 'WP-KennNr', (20) 'Wertpapiertitel',
(15) 'Emittent', (10) 'DepotNr', (10) 'Anzahl'.
LOOP AT it_kp INTO wa_kp.
WRITE: / wa_kp-wkn, wa_kp-titel, wa_kp-emittent,
wa_kp-depotnr, wa_kp-anzahl.
ENDLOOP.

A.7 Heraufladen der Transportdateien


Der Report ZTPUPLOAD lädt die beiden Transportdateien R900006.LNX
und K900006.LNX vom Pfad C:\TR_WPDV\ des Präsentationsservers
ins Transportverzeichnis des Anwendungsservers. Dies erspart das müh-
same Anlegen von Tabellen, Datenelementen und Domänen für das

A.7 Heraufladen der Transportdateien 239


A Programmlistings

Übungsszenario, so wie dies in Übung 1.5 Alternative 1 beschrieben


wurde. Weitere Beschreibungen finden sich in dem Archiv abap.zip.

zu Anhang B: Report ZTPUPLOAD


Transport
REPORT ZTPUPLOAD.
* Download Dateien vom Präsentationsserver zum
* R/3-Transportverzeichnis
TYPES: BEGIN OF IT_TYPE,
ZEICHEN TYPE X,
END OF IT_TYPE.
DATA ITAB TYPE TABLE OF IT_TYPE.
DATA WA TYPE IT_TYPE.
DATA PATH(50).
DATA LAENGE TYPE I.
DATA DIRNAME(75) TYPE C.
PARAMETERS BINFILE1(50) LOWER CASE.
PARAMETERS BINFILE2(50) LOWER CASE.

INITIALIZATION.
CALL 'C_SAPGPARAM' ID 'NAME' FIELD 'DIR_TRANS'
ID 'VALUE' FIELD DIRNAME.
if sy-opsys cs 'WINDOWS'. " Windows NT/2000
concatenate DIRNAME '\data\R900006.LNX' into binfile1.
concatenate DIRNAME '\cofiles\K900006.LNX' into binfile2.
else. " UNIX
concatenate DIRNAME '/data/R900006.LNX' into binfile1.
concatenate DIRNAME '/cofiles/K900006.LNX' into binfile2.
endif.

START-OF-SELECTION.
CALL FUNCTION 'UPLOAD'
EXPORTING
* CODEPAGE = ' '
FILENAME = 'C:\TR_WPDV\R900006.LNX'
FILETYPE = 'bin'
* ITEM = ' '

240
Programmlistings A
* FILEMASK_MASK = ' '
* FILEMASK_TEXT = ' '
* FILETYPE_NO_CHANGE = ' '
* FILEMASK_ALL = ' '
* FILETYPE_NO_SHOW = ' '
* LINE_EXIT = ' '
* USER_FORM = ' '
* USER_PROG = ' '
* SILENT = 'S'
IMPORTING
FILESIZE = LAENGE
* CANCEL =
* ACT_FILENAME =
* ACT_FILETYPE =
TABLES
DATA_TAB = ITAB
EXCEPTIONS
CONVERSION_ERROR = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
OTHERS = 7.
IF SY-SUBRC <> 0.
WRITE: /
'Datei vom Präsentationsserver wurde nicht gelesen'.
ELSE.
OPEN DATASET BINFILE1 FOR OUTPUT IN BINARY MODE.
LOOP AT ITAB INTO WA.
TRANSFER WA TO BINFILE1.
ENDLOOP.
CLOSE DATASET BINFILE1.
IF SY-SUBRC <> 0.
WRITE: / 'Datei', BINFILE1, 'Länge', LAENGE,

A.7 Heraufladen der Transportdateien 241


A Programmlistings

'erfolgreich gespeichert'.
ENDIF.
ENDIF.
* Das Gleiche für binfile2
CALL FUNCTION 'UPLOAD'
EXPORTING
* CODEPAGE = ' '
FILENAME = 'C:\TR_WPDV\K900006.LNX'
FILETYPE = 'bin'
* ITEM = ' '
* FILEMASK_MASK = ' '
* FILEMASK_TEXT = ' '
* FILETYPE_NO_CHANGE = ' '
* FILEMASK_ALL = ' '
* FILETYPE_NO_SHOW = ' '
* LINE_EXIT = ' '
* USER_FORM = ' '
* USER_PROG = ' '
* SILENT = 'S'
IMPORTING
FILESIZE = LAENGE
* CANCEL =
* ACT_FILENAME =
* ACT_FILETYPE =
TABLES
DATA_TAB = ITAB
EXCEPTIONS
CONVERSION_ERROR = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
OTHERS = 7.
IF SY-SUBRC <> 0.

242
Programmlistings A
WRITE: /
'Datei vom Präsentationsserver wurde nicht gelesen'.
ELSE.
OPEN DATASET BINFILE2 FOR OUTPUT IN BINARY MODE.
LOOP AT ITAB INTO WA.
TRANSFER WA TO BINFILE2.
ENDLOOP.
CLOSE DATASET BINFILE2.
IF SY-SUBRC <> 0.
WRITE: / 'Datei', BINFILE2, 'Länge', LAENGE,
'erfolgreich gespeichert'.
ENDIF.
ENDIF.

A.7 Heraufladen der Transportdateien 243


Transport B

Anhang B
Transport
Als Alternative zum aufwändigen Anlegen der Dictionary-Objekte für Alternative B
das Übungsszenario, wie in der Alternative A im Abschnitt 1.5 gezeigt,
kann man diese auch mittels eines Transports ins R/3 einspielen, was
wesentlich schneller vonstatten geht.
Beschaffen Sie sich das Archiv abap.zip mit dem Transport LNXK900006
TR-Wertpapierdepotverwaltung) von der Website der DEKRA-Akade-
mie GmbH: http://www.dekra-akademie.de/download. Kopieren Sie
die beiden Transportdateien mittels des Reports ZTPUPLOAD, den Sie eben-
falls in diesem Archiv finden, in das Transportverzeichnis des R/3-An-
wendungsservers. Führen Sie den Transport durch.

Das Transportwesen ist eine komplexe Spezialdisziplin innerhalb der Erläuterung


R/3-Basis; bei Transporten treten immer wieder Konflikte auf. Wählen
Sie diese Alternative B nur, wenn Sie zumindest auf Rat und Hilfe eines
im Transportwesen erfahrenen Administrators zurückgreifen können.
Der Transport besteht aus den Dateien K900006.LNX und
R900006.LNX. Sie enthalten die Entwicklungsklasse ZDEKRA, die alle
benötigten Domänen, Datenelemente, Tabellen, deren Fremdschlüssel-
beziehungen sowie den Report ZDATINS enthält. Die Datei zdekra.txt
enthält eine hierarchische Liste der enthaltenen Objekte.
Das gezeigte Verfahren kann auch verwendet werden, um die Transporte
T53K900013 respektive T53K900016, die Sie ebenfalls im Archiv abap.zip fin-
den, zum Transport der Entwicklungsklasse ZIACMU mit der WebTransac-
tion ZDEPOTMU durchzuführen. Die Datei ziacmu.txt, die auch im Archiv
abap.zip zu finden ist, enthält die Objektlisten beider Transporte.

245
B Transport

Schritte Speichern Sie die beiden Transportdateien im Ordner C:\TR_WPDV.


Öffnen Sie die Datei ztpupload.txt. Markieren Sie den ganzen Text ab
der zweiten Zeile, und nehmen Sie ihn in die Zwischenablage mit B EAR-
BEITEN / KOPIEREN. Starten Sie WERKZEUGE / ABAP WORKBENCH / ÜBER-
SICHT / OBJECT NAVIGATOR. Legen Sie den Report ZTPUPLOAD als Objekt
in der lokalen Entwicklungsklasse an, s. Abbildung B.1 bis Abbildung
B.7.

Abbildung B.1
Object Navigator –
Anlegen lokaler Objekte
(© SAP AG)

Abbildung B.2
Report anlegen
(© SAP AG)

Abbildung B.3
Dies ist ein kurzer Report
ohne Include-Technik.
(© SAP AG)

246
Transport B
Abbildung B.4
Eigenschaftspflege
des Reports
(© SAP AG)

Abbildung B.5
Report in der lokalen
Entwicklungsklasse
anlegen
(© SAP AG)

Abbildung B.6
Report ab der zweiten
Zeile in die
Zwischenablage nehmen
mit BEARBEITEN / KOPIEREN

247
B Transport

Abbildung B.7
Einfügen des
Programmcodes aus der
Zwischenablage,
Aktivieren des Reports
(© SAP AG)

Kontrollieren Sie zum besseren Verständnis in einem zweiten Modus


den Transportpfad Ihres R/3-Anwendungsservers durch Start der Trans-
aktion AL11: Eingabe von /NAL11 in das Kommandofeld, s. Abbildung
B.8. Die Zieldateipfade für die Transportdateien lauten z. B. auf dem
R/3-Anwendungsserver CPQ5508:
• \\CPQ5508\sapmnt\trans\data\R900006.LNX, s. Abbildung B.12
• \\CPQ5508\sapmnt\trans\cofiles\K900006.LNX, s. Abbildung B.14

Abbildung B.8
Dateisystempfad des
Transportverzeichnisses
(© SAP AG)

Starten Sie nun den Report, der die beiden Transportdateien ins Trans-
portverzeichnis des R/3-Anwendungsservers überträgt, s. Abbildung
B.9 bis Abbildung B.14.

248
Transport B
Abbildung B.9
Starten des Reports
(© SAP AG)

Abbildung B.10
Selektionsbild mit
Dateipfaden der
Transportdateien
(© SAP AG)

Abbildung B.11
Übertragen der ersten
Transportdatei vom
lokalen Pfad
(© SAP AG)

Abbildung B.12
Prüfung der
Dateiübertragung mit
Transaktion /NAL11 /
DIR_TRANS / DATA
(© SAP AG)

Abbildung B.13
Übertragen der zweiten
Transportdatei vom
lokalen Pfad
(© SAP AG)

Abbildung B.14
Prüfung der
Dateiübertragung mit
Transaktion /NAL11 /
DIR_TRANS / COFILES
(© SAP AG)

249
B Transport

Führen Sie nun den Transport durch: WERKZEUGE / ADMINISTRATION /


TRANSPORT / TRANSPORT MANAGEMENT SYSTEM, s. Abbildung B.15 bis
Abbildung B.26. Der Name des Transportauftrages LNXK900006 setzt sich
zusammen aus dem Systemnamen LNX, K9 und der fortlaufenden Num-
mer 00006.

Abbildung B.15
Transportmanage-
mentsystem
(© SAP AG)

Abbildung B.16
Importübersicht
(© SAP AG)

Abbildung B.17
Importqueue: ZUSÄTZE /
WEITERE AUFTRÄGE /
ANHÄNGEN
(© SAP AG)

Abbildung B.18
Anhängen des
Transportauftrages
(© SAP AG)

250
Transport B
Abbildung B.19
Anhängen des
Transportauftrages
bestätigen
(© SAP AG)

Abbildung B.20
Transportauftrag in
der Queue
(© SAP AG)

Abbildung B.21
Zielmandant muss der
eigene Anmeldemandant
sein. (© SAP AG)

Abbildung B.22
Eventuell müssen für
einen erfolgreichen
Transport weitere IMPORT
OPTIONEN aktiviert
werden. Vorheriger
Testimport ist
empfehlenswert.
(© SAP AG)

251
B Transport

Abbildung B.23
Transport bestätigen
(© SAP AG)

Abbildung B.24
Nach dem Transport:
Prüfen des
Transporterfolges
(© SAP AG)

Abbildung B.25
Transportprotokolle zur
Prüfung des
Transporterfolges
(© SAP AG)

252
Transport B
Abbildung B.26
Die Protokolle listen
detailliert alle Aktivitäten
und deren Erfolg auf. Der
Import erfolgt in
mehreren Schritten
(Steps).
(© SAP AG)

Ein Return-Code von 0 bedeutet, dass keine Fehler aufgetreten sind,


Return-Code 4 zeigt Warnungen an, die aber meist ignoriert werden
können. Höhere Returncodes stellen Fehlermeldungen dar, der Trans-
port ist dann nicht vollständig durchgeführt worden. Ab Return-Code 12
oder höher wurde der Transport sogar ganz abgebrochen.
Nach dem Transport sind die Entwicklungsklasse ZDEKRA, der Report ZDA-
TINS und alle zugehörigen Tabellen wie ZKUNDEN, Datenelemente wie
Z_KUNDENNR und Domänen wie Z_NR angelegt.

Füllen Sie die Tabellen mit dem Report ZDATINS.

Die Anleitung zum Füllen der Tabellen mit dem Report ZDATINS finden Schritte
Sie am Ende des Abschnitts 1.5.

253
Stichwortverzeichnis

Stichwortverzeichnis
/NEX 162 Datenbanktabelle 51
<!-- 60 Datenelement 50
</html> 60 Debugger 170
<a href= 74 Debugger-Port 172
<body> 60, 64 Debug-Modus 172, 174
<em> 60, 177 default.htm 61
<font size= 66 Dekra 45
<form 140 DEKRA-Akademie 245
<form method= 140 Demo-R/3-System 14
<frameset 78 DFÜ-Netzwerk 17
<h1> 60 DIAG-Protokoll 26, 172
<h2> 60 DNS 24
<h5> 66 Domain Name Service 24
<head> 60 Domain Name System 24
<html> 60 Domäne 49
<img src= 67 Dynpro 87, 101
<li> 76 E
<meta http-eqiv= 64 Effekten Kontors 45
<meta name= 63 Einzelschrittverfahren 174
<p> 66 else 178
<table> 72 elseif() 178
<td> 72 Entwicklerschlüssel 13, 14
<th> 72 Entwicklungsklasse 85
<title> 60 F
<tr> 72 FIELD 93
<ul> 76 FIELD-SET 181
~exiturl 162 FIELD-TRANSPORT 181
A Frame 77
action="..." 141 Fremdschlüssel 52, 53
Admin Enabled 170 function 185
AGate 25 Funktionsbaustein 120, 187
AGate-Session 181 Funktionsgruppe 119
Aktivieren 49 G
align 72 Grafik 67
Änderungsauftrag 46 GUI-Status 91
Änderungstransaktion 118
Ankreuzfeld 159 H
Anmeldesprache 155 hidden 159
Apache Webserver 19 hosts-Datei 24
Application Gate 25 HTML 43, 59
Archiv abap.zip 245 HTMLBusiness-Schleife 151
assert 142 HTML-Eingabefeld 157
audio/mpeg 179 HTML-Select 160, 181
audio/wav 179 HTTP-Header 141
Aufzählung 74 Hyperlink 74
Ausnahme 121 I
Auswahlknopfgruppe 158 IAC 9
Auswahllistenfeld 160 IAC-Package 28
AVWRTCXM 181 IAC-Start 148
AWSY 167 IDES 16
B if() 177
BAPI_EM PLOYEE_CHECKPASSWORD 92 IIS 18
BAPIEMPL-PERNR 85 image/gif 179
BAPI-Funktionsbaustein 83 image/jpeg 179
BAPIUID-PASSWORD 85 interaktiver WebReport 192
Beispieldaten 56 Internet Application Component 9
Benutzerkontext 142 Internet Transaction Server 13, 25
Benutzerkontextspeicher 181 Internet-Anwendungskomponente 81, 133
Berechtigungsgruppe 185 Internetbenutzer 16, 83, 98
Blätterfunktion des Dynpro-Steploops 148 Internetdienste-Manager 21
Blättern 114 Internetfreigabe 187, 191
Browser 16 Internetzugang 17
Browser-Vorschau 139 IP-Adresse 21
Browser-Zurück-Taste 167 iPlanet Webserver 19
Business Object Builder 99 ISAPI-Schnittstelle 141
Business-Objekt 98 IT-Ausstattung 13
ITS 13, 25, 31
Cache 67 ITSADM 26
CGI-Schnittstelle 141 ITSadm 29
CHAIN 93 ITS-Administrator 29
Checkbox 159 ITS-Benutzergruppe 29

255
Stichwortverzeichnis
ITS-Debugger 172 Sperrobjekt 118, 119
ITSuser 30 Sprachressourcendatei 153
K Sprachschlüssel 154
Kennwort-BAPI 83 sprachunabhängige
Kennwortfeld 158 Templates 152
Konkatenation 176 Text integrieren 152
L Standard-IAC 36
Landesflagge 179 Start der IAC über Hyperlink 147
language 165 Steploop 111
Lehrgang 85 Stringoperatoren 176
Linux Test-Drive 14, 37, 84, 87, 91, 93, 94, 98 synchrone V1-Verbuchung 120
Literal 176 Synchronisation 82, 167
M Synchronisationsfunktionscode 168
messageline 142
T
Metainformationen 63 Tabelle 72
MIME 179 templatelanguage 179
MIME-Objekt 179, 185 Templates 137
mimeURL() 177, 180, 181 Template-Wizard 137
Modulpool 85 text/html 179
mySAP.com 15 text/plain 179
Textelement 156
N Theme 134, 136, 143
Nachrichtenklasse 95 Top-Include 85, 90
name 179 Transport 46, 82, 130
Name/Wert-Paare 141, 185 U
Namenskonflikt 85
Namenskonvention 85 Übersetzung 156
Netscape Enterprise Server 18 Übungsgruppe 85
Neustart des ITS-Dienstes 170 Übungsszenario 45
NSAPI 25 Uniform Resource Locator 24
O UPDATE 122
URL 24, 140
Object Navigator 48 V
OK-Code 166, 167
OkCode 162, 164 Verbuchungsfunktionsbaustein 118, 119
okcode 165 View 101
Online-Store 36 Vorwärtsnavigation 169
P W
password 157 Web Gate 25
PlatinGUI 15 Webbrowser 16
post-Methode 141 Webdesign und Internet 44
Primärschlüssel 53 WebReporting 185, 188
Projekt 134 WebReporting Repository 187, 191
Proxy-Einstellungen des Browsers 21 WebReporting-Browser-Templates 188
Proxy-Server 17 WebRFC 185
Prüftabelle 52, 53 webrfct 186
Publizieren 146 Webserver 16
Q Website 18
definieren 144
QUERY_STRING 186 publizieren 144
R WebTransaction 81, 133
R/3-System 14 Wertpapierdepotverwaltung 45
Radiobuttons 158 WGate 25, 147
Red Hat 15 wgateURL() 163
Registrierdatenbank 170 wgateurl() 141, 142
repeat with 151 Windows 2000 13
REPORT 188 Windows NT 4.0 13
Report 55 windowtitle 142
Resource-Wizard 153 Winzip 43
RFC-Verbindung 185 Workbench Organizer 46
S World Wide Web 13
Sambar Webserver 18, 19 WWW 13
SAP@Web 133 WWW_DISPATCH_REQUEST() 185
SAP@Web Studio 41 WWW_GET_SELSCREEN() 188
SapguiDebuggerPort 171 WWW_HTML_ECHO() 186
SAPlogon 172 Z
SAP-Menü 46 Zurück-Taste 82
SAP-Transaktion 95
SELFHTML 43
Service 134
beenden 162
Servicedatei 143
global.srvc 134
Sessionspeicher 142
Shareware 43
Single-Host-Installation 25

256
Copyright
Daten, Texte, Design und Grafiken dieses eBooks, sowie die eventuell angebotenen
eBook-Zusatzdaten sind urheberrechtlich geschützt.
Dieses eBook stellen wir lediglich als Einzelplatz-Lizenz zur Verfügung!
Jede andere Verwendung dieses eBooks oder zugehöriger Materialien und
Informationen, einschliesslich der Reproduktion, der Weitergabe, des Weitervertriebs,
der Platzierung im Internet, in Intranets, in Extranets anderen Websites, der
Veränderung, des Weiterverkaufs und der Veröffentlichung bedarf der schriftlichen
Genehmigung des Verlags.
Bei Fragen zu diesem Thema wenden Sie sich bitte an:
mailto:info@pearson.de

Zusatzdaten
Möglicherweise liegt dem gedruckten Buch eine CD-ROM mit Zusatzdaten bei. Die
Zurverfügungstellung dieser Daten auf der Website ist eine freiwillige Leistung des
Verlags. Der Rechtsweg ist ausgeschlossen.

Hinweis
Dieses und andere eBooks können Sie rund um die Uhr
und legal auf unserer Website

(http://www.informit.de)
herunterladen

You might also like