1.1 Firma – SAP Hosting AG & Co. KG

Werbung
Fachbereich Digitale Medien
Raiffeisenring 15
Studiengang Medieninformatik
68789 St. Leon-Rot
Robert-Gerwig-Platz
78120 Furtwangen
Diplomarbeit
Systematisch Portieren
Entwicklung eines Verfahrens zur Portierung ASP basierter
Webanwendungen auf SAP® R/3® Technologien
vorgelegt von:
Ulrike Koch
Referent: Prof. Wilhelm Walter
Matrikelnummer: 200129
Koreferent: Prof. Dr. Günther Hentrich
Pestalozzistraße 13
76669 Bad Schönborn - Mingolsheim
St. Leon - Rot, den 30.06.2004
Eidesstattliche Erklärung
Ich erkläre hiermit an Eides statt, dass ich die vorliegende Diplomarbeit selbstständig und ohne
unzulässige fremde Hilfe angefertigt habe. Alle verwendeten Quellen und Hilfsmittel sind
angegeben.
St. Leon-Rot, den...
II
Kurzdarstellung der Diplomarbeit
Die SAP Hosting AG & Co. KG in St. Leon-Rot, eine 100%-ige Tochter der SAP AG, ist spezialisiert auf
das Betreiben von SAP-Anwendungen. Durch die große Anzahl der betreuten (Kunden-)Systeme, wurden
Anwendungen geschaffen, um die betriebenen Systeme zu überwachen und zu verwalten. Einige dieser
Anwendungen verfügen über eine Web basierte Oberfläche, die beispielsweise zum Großteil auf
Microsoft Produkten (MS Windows, MS Internet Information Server, MS SQL Server, ASP und Perl)
basiert. Eine dieser Anwendungen zur Administration von Servern wird derzeit auf eine SAP R/3Umgebung portiert: Linux (OS), Web Application Server (SAP Webserver), MaxDB (SAP Datenbank)
und BSP (Business Server Pages, SAP eigenes Framework für Web basierte Applikationen).
In der Praxis wird solch ein Vorhaben oft planlos angegangen. Ohne größere Vorbereitung wird
begonnen, die Anwendung umzuschreiben. Zwar scheint diese Methode Zeit einzusparen, aber eine
unstrukturierte Vorgehensweise nimmt letztendlich meistens mehr Zeit in Anspruch als die strukturierte.
Das liegt daran, dass der Programmierer Arbeitsschritte umsetzt, die ihm unverhofft einfallen, obwohl sie
besser schon vorher hätten erledigt werden sollen oder an einem späteren Zeitpunkt im Verlauf besser
angesiedelt wären. Als Folge daraus zieht sich die Portierung unnötig in die Länge. Womöglich wären
manche Arbeitsschritte aber auch nutzlos oder gar vollkommen falsch. Aufgrund solcher Fehler treten
teilweise wieder Folgefehler auf – eine „Spirale“ an Fehlern entsteht.
Auch bewirkt das fehlende Eingehen auf die Ausgangsituation im Vorfeld, dass die gesamten
Anforderungen an die Zielsituation nicht definiert werden. Dies hat zur Konsequenz, dass eine
vollständige Machbarkeit der Portierung zu Beginn des Projektes noch vollkommen ungewiss ist. So
können mögliche Grenzen der Zielplattform erst festgestellt werden, wenn man an der Portierung eines
betroffenen Teils scheitert.
Als Lösungsansatz dieses Problems wird in dieser Diplomarbeit zunächst ein Konzept entwickelt,
welches eine durchdachte Vorgehensweise zum Portieren vorgibt, um einen möglichst reibungslosen
Übergang von der einen Plattform zur anderen zu beschreiben. Dabei wird insbesondere auf die oben
genannten Technologien eingegangen. Anschließend wird dieses Portierungskonzept anhand einer
beispielhaften Portierung der bereits erwähnten Webanwendung geprüft. So wird sich mit dem Konzept
kritisch auseinander gesetzt und es kann ein Ausblick für die Zukunft gegeben werden.
III
Inhaltsverzeichnis
Eidesstattliche Erklärung............................................................................................................ II
Kurzdarstellung der Diplomarbeit ............................................................................................ III
Inhaltsverzeichnis ....................................................................................................................... IV
1
Umfeld der Arbeit ...................................................................................................................1
1.1
Firma – SAP Hosting AG & Co. KG ............................................................................... 1
1.1.1
Überblick................................................................................................................... 1
1.1.2
Die Dienstleistungen ................................................................................................. 3
1.1.2.1
Evaluation Hosting ............................................................................................ 3
1.1.2.2
Implementation Hosting .................................................................................... 4
1.1.2.3
Application Hosting ........................................................................................... 4
1.1.2.4
Remote Application Operation .......................................................................... 5
1.1.2.5
Application Management .................................................................................. 5
1.1.2.6
Upgrade Hosting ................................................................................................ 6
1.1.2.7
Hosted Learning ................................................................................................ 6
1.1.2.8
emaro ................................................................................................................. 9
1.2
Abteilung – GOS RST Technology & Infrastructure I .................................................. 10
1.3
Aufgabenstellung ........................................................................................................... 10
1.4
Verwandte Arbeiten ....................................................................................................... 12
2
1.4.1
Vorhandene Literatur .............................................................................................. 13
1.4.2
Nutzbare Literatur ................................................................................................... 13
Betrachtete Technologien.....................................................................................................14
2.1
Ausgangsplattform ......................................................................................................... 14
2.1.1
IV
Microsoft SQL Server ............................................................................................. 14
2.1.2
Microsoft Internet Information Server .................................................................... 14
2.1.3
Active Server Pages ................................................................................................ 14
2.2
3
Zielplattform................................................................................................................... 14
2.2.1
MaxDB.................................................................................................................... 15
2.2.2
SAP® Web Application Server ............................................................................... 16
2.2.3
Business Server Pages............................................................................................. 18
2.2.4
Entwicklungsumgebung .......................................................................................... 19
Portierungsverfahren ...........................................................................................................28
3.1
Allgemeines zu Portierung ............................................................................................. 28
3.1.1
Aufwand .................................................................................................................. 28
3.1.2
Vorgehensweisen .................................................................................................... 29
3.1.2.1
Top Down ........................................................................................................ 29
3.1.2.2
Bottom Up ....................................................................................................... 30
3.2
Portierungsschrit 1/6: Kennen lernen der Ausgangsanwendung.................................... 31
3.3
Portierungsschrit 2/6: Machbarkeitsprüfung .................................................................. 32
3.3.1
Datentypen der Programmiersprache ...................................................................... 32
3.3.2
Datentypen der Datenbank ...................................................................................... 37
3.3.3
HTMLB................................................................................................................... 42
3.3.4
MVC Design Pattern in BSPs ................................................................................. 45
3.3.5
Funktionlitäten ........................................................................................................ 47
3.4
Portierungsschrit 3/6: Analyse der Ausgangsanwendung .............................................. 48
3.5
Portierungsschrit 4/6: Optimierung ................................................................................ 49
3.5.1
Daten ....................................................................................................................... 49
3.5.2
Ablauflogik ............................................................................................................. 49
3.5.3
Oberfläche ............................................................................................................... 50
3.5.4
Datenbank ............................................................................................................... 50
3.6
Portierungsschrit 5/6: Implementierung der BSP Anwendung ...................................... 56
V
3.6.1
Vorarbeiten ............................................................................................................. 56
3.6.2
Datenportierung ...................................................................................................... 57
3.6.3
Umsetzung .............................................................................................................. 66
3.7
4
Portierungsschrit 6/6: Nacharbeiten ............................................................................... 66
Anwendung und Prüfung des Portierungsverfahrens ......................................................67
4.1
Kennen Lernen der Ausgangsanwendung ...................................................................... 67
4.2
Machbarkeitsprüfung ..................................................................................................... 69
4.3
Analyse der Ausgangsanwendung ................................................................................. 70
4.4
Optimierung ................................................................................................................... 70
4.5
Implementierung der BSP Anwendung.......................................................................... 70
4.6
Nacharbeiten................................................................................................................... 70
5
Zusammenfassung und Ausblick ........................................................................................71
A. Anhang...................................................................................................................................72
A.a.
Glossar spezifischer Ausdrücke und Abkürzungen ....................................................... 72
A.b.
Abbildungsverzeichnis ................................................................................................... 73
A.c.
Tabellenverzeichnis ........................................................................................................ 75
A.d.
Programmkodeverzeichnis ............................................................................................. 75
A.e.
Literaturverzeichnis ........................................................................................................ 76
VI
1 Umfeld der Arbeit
1.1 Firma – SAP Hosting AG & Co. KG
1.1.1 Überblick
SAP Hosting AG & Co. KG ist eine weltweit operierende, hundertprozentige Tochtergesellschaft
der SAP AG mit Hauptsitz in St. Leon-Rot. Weitere Niederlassungen befinden sich Walldorf,
Philadelphia, Palo Alto, Tokyo, Sydney, Singapore und Bangalore.
Die Firma wurde im August 2000 gegründet und als eine Gruppe von Spezialisten im Bereich
Beratung aus der SAP AG herausgelöst.
SAP Hosting AG & Co. KG bietet umfassende Hosting Dienstleistungen, mit denen
Unternehmen schnell und effektiv auf die neusten SAP Lösungen zugreifen können.
Die Services sind optimal auf die Bedürfnisse von Kunden der mySAP Business Suite
abgestimmt und umfassen das im Folgenden noch näher erläuterte Evaluation Hosting,
Implementation Hosting, Application Hosting, Remote Application Operations, Application
Management und Hosted Learning, sowie den Service emaro.
Im Juli des Jahres 2004 sind bei der SAP Hosting AG & Co. KG ca. 350 Mitarbeiter beschäftigt.
Weltweit kann die Firma auf ca. 100 Kunden verweisen. In Deutschland zählen
Berufsförderungswerk GmbH, Braunschweig-IT, CDI Deutsche Private Akademie, ECKART,
LS training and services, Linde AG und TERTIA zu den Kunden. In den Vereinigten Staaten von
Amerika hat die SAP Hosting AG & Co. KG Kunden wie C & H Sugar Company, Day &
Zimmermann Inc., Global Brand Marketing, Gold Banc, Sauer Danfoss Company und York
International Corporation.
Neu: saphosting.de
SAP Hosting AG & Co.KG ist eine weltweit operierende, hundertprozentige Tochtergesellschaft
der SAP AG. SAP Hosting bietet umfassende Hosting Services, mit denen Unternehmen schnell
und effektiv auf die neuesten SAP Lösungen zugreifen können.
1
Der Trend, Dienstleister mit dem teilweisen oder vollständigen Management beziehungsweise
dem Betrieb der Unternehmenssystem zu beauftragen, wird stärker. Hauptursachen sind immer
komplexer werdende IT-Landschaften und ein allgemein steigender Wettbewerbsdruck, der die
Konzentration auf Kernkompetenzen forciert.
Daher stellt SAP Hosting ein Service Portfolio bereit, welches es ermöglicht, dass sich SAP
Kunden auf die eigenen Kerngeschäfte konzentrieren können und gleichzeitig für den Betrieb
professionelle Unterstützung erhalten.
Von Carmen
SAP Hosting AG & Co. KG ist als hundertprozentige Tochter der SAP AG auf Services für den
Betrieb von Lösungen der mySAP Business Suite spezialisiert. Heute arbeiten mehr als 220
Mitarbeiter weltweit daran Dienstleistungen im Bereich Installation, Optimierung und Betrieb
von mySAP Business Suite Lösungen für die Kunden der SAP anzubieten.
Unser Leistungsangebot deckt von der Evaluation und Bewertung über die Implementierung bis
zum Produktivbetrieb und dessen Optimierung das gesamte Spektrum des Lebenszyklus von SAP
Lösungen ab.
Der direkte Zugriff und die Nähe zur Entwicklung und dem Support der SAP AG erlauben den
Kunden von SAP Hosting, zeitnah an tiefgreifendem Know-how zu partizipieren und garantiert
eine schnelle Lösung in Problemfällen. SAP Hosting greift hierbei auch auf ein breites Partner
Netzwerk zu, um spezielle Kundenanforderungen zu erfüllen und einen klaren Mehrwert zu
liefern.
Die ‚state-of-the-art’ Hochleistungsrechenzentren in St. Leon-Rot, Walldorf und Philadelphia
sind die solide Basis für die angebotenen Dienstleistungen, garantieren Hochverfügbarkeit und
höchste Sicherheitsstandrads. SAP Hosting Service und Support Niederlassung rund um den
Globus garantieren zusätzlich höchste Dienstleistungsqualität und einen führenden 7x24 Stunden
Kundensupport.
2
SAP Hosting hilft den Kunden bei der Umsetzung der jeweiligen Unternehmens- und ITStrategie mit flexiblen Dienstleistungen, welche die Wettbewerbsfähigkeit des Kunden stärken
ohne seine unternehmerischen Spielraum einzuschränken.
1.1.2 Die Dienstleistungen
SAP Hosting AG & Co. KG verschafft seinen Kunden den Zugang zu Applikationen und der
dazu notwendigen Infrastruktur, die sein Business erfolgreich machen. Dabei handelt es sich um
Lösungen, die sofort einsatzbereit sind und sich den wachsenden Anforderungen des Kunden
anpassen. So profitieren die Kunden von der schnellen Einführung, den überschaubaren Kosten
und dem Vorteil sich auf ihre Kernkompetenzen konzentrieren zu können.
Mit SAP Hosting AG & Co. KG Dienstleistungen schöpfen die Kunden das volle
Anwendungspotential des führenden Anbieters von integrierten E-Business-Lösungen aus. Dabei
versteht sich die mySAP Business Suite als Gesamtpaket aus Software und Serviceleistungen, die
Kunden,
Partnern
und
Mitarbeitern
eine
erfolgreiche
unternehmensübergreifende
Zusammenarbeit ermöglichen - jederzeit und überall.
SAP Hosting AG & Co. KG Services sind für die Bedürfnisse von mySAP Business Suite
Kunden entwickelt worden, ganz gleich ob es sich um das Hosten von einzelnen Komponenten
oder ganze Landschaften der mySAP Business Suite handelt.
Die SAP Hosting AG & Co. KG unterstützt ihre Kunden von der Evaluierung, über die
Implementierung, bis hin zum optimierten Betrieb ihrer mySAP Business Suite Lösungen mit
folgenden Dienstleistungen:
1.1.2.1 Evaluation Hosting
Mit der Dienstleistung Evaluation Hosting stellt SAP Hosting AG & Co. KG die geeignete
Umgebung zur Verfügung, die das Bewertungsverfahren zur Auswahl einer SAP Lösung
unterstützt. Experten von SAP Hosting AG & Co. KG betreiben die Systemumgebung, dadurch
kann sich der Kunde allein auf die Evaluierung der Software konzentrieren. Zu diesem Zeitpunkt
muss sich der Kunde um Hardware, Sizing oder sonstige IT Ressourcen nicht kümmern.
3
Die Bereitstellung dieser Dienstleistung erfolgt innerhalb kurzer Zeit. Wenn sich der Kunde für
eine Implementierung der SAP Lösung entschieden hat, unterstützt SAP Hosting AG & Co. KG
ihn durch die Dienstleistung Implementation Hosting.
1.1.2.2 Implementation Hosting
Mit Hilfe der Dienstleistung Implementation Hosting kann sich der Kunde auf das Wesentliche,
die Einführung Ihrer mySAP Business Suite konzentrieren. Insbesondere vor einem SoftwareEinführungsprojekt, gibt es oft herausfordernde Anforderungen an die zeitliche Planung und die
erfolgreiche Umsetzung des gesamten Projektes. Durch einen sicheren und stabilen Betrieb der
Systemumgebung werden Planungsrisiken reduziert und die Konzentration auf eine optimale
Abbildung Ihrer betrieblichen Prozesse möglich.
Die Dienstleistung Implementation Hosting bietet die kurzfristige Verfügbarkeit des
Entwicklungssystems zu einem Festpreis. Dies bietet die Möglichkeit, die Planungssicherheit zu
erhöhen und auf diese Weise die Einführungskosten kalkulierbar zu gestalten. Es wird zudem
Flexibilität im Rahmen des zur Verfügung stehenden IT-Budgets gewonnen.
Personalfragen, wie beispielsweise zusätzliche Mitarbeiter, Ausbildung/Skills und Fragen
bezüglich des Betriebs stellen sich zu diesem Zeitpunkt nicht. Mit der Dienstleistung
Implementation Hosting nutzt der Kunde eine optimal auf seine Bedürfnisse zugeschnittene
Hardware in den Hochleistungs-Rechenzentren der SAP Hosting AG & Co. KG.
Durch eine kurze Laufzeit, lässt sich diese Dienstleistung ganz besonders an den zeitlichen
Rahmen des Einführungsprojektes anpassen. Sobald die Einführung abgeschlossen ist, kann der
Kunde die SAP Lösung selbst betreiben oder die SAP Expertise und Erfahrung der SAP Hosting
AG & Co. KG im Betrieb von Lösungen der mySAP Business Suite im Rahmen des Application
Hosting für den produktiven Betrieb nutzen.
1.1.2.3 Application Hosting
Das Motto „SAP Produktivbetrieb auslagern und auf Kernkompetenzen konzentrieren“
verwirklicht die Dienstleistung Application Hosting.
Immer mehr Unternehmen entscheiden sich dafür, ihre mySAP™ Business Suite Lösung von
SAP-Experten der SAP Hosting AG & Co. KG sicher und stabil betreiben zu lassen. Mit der
Dienstleistung Application Hosting profitieren Kunden zudem von transparenten Kosten,
4
garantierten Verfügbarkeiten, einer skalierbaren IT-Lösung und dem spezifischen SAP Knowhow der SAP Hosting.
In einem verschärften Wettbewerb benötigen Unternehmen alle Ressourcen, um sich auf ihre
Kernkompetenzen zu konzentrieren. Insbesondere in Zeiten immer komplexer werdender ITLandschaften ist es für Unternehmen sinnvoll, den Produktivbetrieb ihrer mySAP™ Business
Suite Lösungen einem kompetenten und spezialisierten Partner zu übertragen. Dafür bietet SAP
Hosting AG & Co. KG die Dienstleistung Application Hosting an. Mit SAP Application Hosting
können Infrastruktur-Investitionen reduziert, Ausbildungskosten für Personal gesenkt, und
neueste Technologie problemlos eingesetzt werden.
1.1.2.4 Remote Application Operation
Mit der Dienstleistung Remote Application Operation (RAO) überlässt der Kunde der SAP
Hosting AG & Co. KG die Verantwortung für den Betrieb seiner produktiven mySAP Business
Suite.
Für den Fall, dass das Sicherheitskonzept des Kunden den Betrieb der mySAP Business Suite in
dessen Rechenzentrum erfordert, bietet die SAP Hosting AG & Co. KG ihm die Dienstleistung
Remote Application Service. Das bedeutet, es wird ein störungsfreien Betrieb via RemoteAnbindung garantiert.
Über den weltweiten 7x24h Support ist jederzeit ein mit dem Kundensystem vertrauter
Ansprechpartner für diesen erreichbar.
1.1.2.5 Application Management
Mit der Dienstleistung Application Management greift der Kunde auf das erfahrene Personal
und die SAP-Expertise der SAP Hosting AG & Co. KG zu. Dieses kümmert sich darum, dass die
Kunden mySAP Business Suite Lösung anwendungsseitig reibungslos funktioniert. Die SAP
Hosting AG & Co. KG deckt damit die betriebswirtschaftliche Seite der mySAP Business Suite
Lösung ab und entlastet von Tätigkeiten, die innerhalb der Anwendung durchgeführt werden
müssen.
Der Kunde erhält:

Zugriff auf die mySAP Business Suite Kompetenz
5

Zugriff auf die mySAP Business Suite Experten

Klare und transparente Support-Struktur mit Second Level Support für seine Anwendung

Anwendungsseitige Unterstützung, Monitoring, Wartung, Pflege
Der Umfang der erforderlichen, anwendungsseitigen Tätigkeiten hängt von der mySAP Business
Suite Lösung ab, die beim Kunden im Einsatz ist oder die dieser plant einzusetzen.
Application Management wird für Systeme angeboten, die im SAP Hosting AG & Co. KG
Rechenzentrum stehen oder auch ‚remote' für Systeme im Rechenzentrum des Kunden.
Der Kunde profitiert außerdem vom direkten Draht in die SAP-Produktentwicklung. Damit wird
sicher gestellt, dass selbst neueste Erkenntnisse in den Produktivbetrieb des Kunden einfließen.
Application Management entlastet zu Festpreisen für die gewünschte Leistung von
krankheitsbedingten Ausfällen, Urlaubssituationen und sonstigen Planungsrisiken.
1.1.2.6 Upgrade Hosting
Mit Upgrade Hosting haben die Kunden die notwendigen Ressourcen zur Verfügung - genau für
den von ihnen benötigten Zeitraum.
Diese Möglichkeit ist insbesondere bei einem engen Upgrade-Zeitplan mit benötigter
Planungssicherheit oder bei mangelnder Erfahrung mit den neuen Technologien des neuen
Releases oder bei temporär zusätzlich benötigten Ressourcen sehr wertvoll.
Die SAP Hosting AG & Co. KG unterstützt Sie mit unterschiedlichen Dienstleistungen bei
Upgrades

Upgrade Hosting während des Upgrade-Projektes

Application Hosting für das produktive System nach dem Upgrade
1.1.2.7 Hosted Learning
E-Learning Services der SAP Hosting
Moderne E-Learning- oder Blended-Learning-Konzepte leisten einen wichtigen Beitrag, wenn es
darum geht, Mitarbeiter und Partner auf dem aktuellen Stand des Wissens zu halten.
Der Aufbau und die Betreuung der notwendigen technischen Infrastruktur sollte in der
Verwirklichung Lernkonzepte des Kunden nicht zum Stolperstein werden. SAP Hosting AG &
6
Co. KG bietet Services, die es ihm erlauben, sich voll auf die eigentlichen Inhalte und Prozesse
der Personalentwicklung mit E-Learning zu konzentrieren.
SAP Hosting AG & Co. KG bietet Kunden und Partnern die Möglichkeit, IDES Test- und
Demosysteme auf Mietbasis zu nutzen. Für Trainingszwecke liefert die SAP Hosting AG & Co.
KG im Rahmen von Bildungspartnerschaften und Angeboten der SAP Educational Services den
Zugang zu gehosteten IDES Trainingssystemen.
Auf diese Weise stellt die SAP Hosting AG & Co. KG einen kostengünstigen und professionellen
Zugang zu den aktuellen IDES-Szenarien des mySAP Business Suite Produktspektrums zur
Verfügung.
Installation und Betrieb von IDES-Landschaften der mySAP Business Suite erfordern know-how,
Zeit und Investitionen in die technische Infrastruktur - Ressourcen, die einem Unternehmen
sicher für andere Zwecke dringender gebraucht werden.
Mit dem Hosting von IDES-Systemen erschliesst die SAP Hosting AG & Co. KG eine neue
Option für die Bereitstellung von Demo- und Trainingslandschaften mit wesentlichen Vorteilen:
Der Kunde erhält schnell, kostengünstig und unkompliziert Zugang zu IDES-Landschaften, die
mit SAP-know-how aus erster Hand nach höchsten Standards betrieben werden. Damit eröffnen
sich neue Dimensionen an Qualität, kurzfristiger Verfügbarkeit und Kosteneinsparungen beim
Betrieb von Demo- und Trainingslandschaften.
SAP Learning Solution
Implementation Hosting
Die neue SAP Learning Solution wird durch den Implementation-Hosting-Service der SAP
Hosting AG & Co. KG für den Kunden innherhalb weniger Wochen als Plattform für dessen ELearning-Konzept verfügbar. Lange Vorlaufzeiten für die Hardwarebeschaffung, Einarbeitung
und Systemaufbau gehören der Vergangenheit an.
Technical Operations
7
Für die individuelle Lösung bieten bietet die SAP Hosting AG & Co. KG gemeinsam mit ihren
Partnern nach der Implementierung den produktiven Betrieb im Application Operations sowie
zusätzliche begleitende Dienste an.
Beratung
Integration in bestehende Prozesse
Die Integration einer Lernplattform in bestehende betriebliche Prozesse und Systemlandschaften
erfordert besonderes know-how. Neben der Applikationsberatung und technischen Beratung zur
SAP Learning Solution unterstützt die SAP Hosting AG & Co. KG ihre Kunden durch
qualifizierte Beratung und Projektmanagement an den Schnittstellen zu den Bereichen HR,
Billing, Portale, Web-Content-Management und mySAP Business Intelligence, sowie zur
Organisation des Betriebes auf funktionaler Ebene.
ASP - Plattform plus Inhalt
Eine wesentliche Aufgabe in der Umsetzung eines E-Learning oder Blended-Learning-Konzepts
ist die Beschaffung bzw. Produktion der Lerneinheiten. Das Ziel der SAP Hosting AG & Co. KG
ist es, für mySAP Business Suite Produkte ein ASP-Angebot zur Verfügung zu stellen, das neben
der Nutzung der SAP Learning Solution auch ein Set von modularen Lerneinheiten einschließt.
Diese können dann - z.B. im Rahmen eines SAP-Einführungsprojektes - direkt für den internen
Trainingsbedarf des Kunden genutzt werden oder als Basis für die Erstellung kundenspezifischer
Curricula dienen.
Durch die kombinierte Bereitstellung von Tools und Standardinhalten in einem ASP-Angebot
bietet die SAP Hosting AG & Co. KG dem Kunden eine schnell verfügbare Basis für sein ELearning-Projekt, die er in der Organisation seines internen Rollouts einen großen Schritt
vorwärts bringt.
Sonstiges
Nach Vereinbarung übernimmt die SAP Hosting AG & Co. KG auch Aufgaben des ContentManagements
oder
anderer
Dienstleistungen
Produktionsprozesses für E-Learning.
8
zur
Definition
und
Unterstützung
des
1.1.2.8 emaro
emaro steht für Kompetenz und Leistungsfähigkeit in der elektronischen Beschaffung.
emaro (Geschäftsbereich der SAP Hosting AG & Co. KG) bietet Lösungen zur elektronischen
Beschaffung von katalogbasierten Gütern und Dienstleistungen. Dabei übernimmt emaro den
Betrieb der Beschaffungsplattform, die Sicherstellung des Dokumentenaustausches sowie die
technische Integration der Systeme (Beschaffungs- wie ERP-Systeme). Dienstleistungen im
Katalogmanagement und Sourcing-Bereich runden das Leistungsportfolio ab.
Im Bereich Geschäftsreisemanagement bietet emaro eine innovative Lösung, die sämtliche im
Reiseprozess anfallenden Informationen sammelt und für spätere Prozessschritte (z.B.
Auswertungen) im geeigneten Format bereitstellt.
Im Einzelnen besteht das Produktportfolio der SAP Hosting AG & Co. KG im Bereich der
elektronischen Beschaffung aus:

emaro.integration
o Dokumentenaustausch
o Systemintegration

emaro.procure
o Hosting von eProcurement-Software
o Applikationsmanagement

emaro.catalog
o Katalogmanagement
o Kataloghosting

emaro.sourcing
o Lieferantenmanagement
o Ausschreibungen & Auktionen
9
1.2 Abteilung – GOS RST Technology & Infrastructure I
Die Abkürzung GOS RST steht für Global Operational Services - Regional Service Team
Dieser Gruppe gehören alle Mitarbeiter an, die
Beim Team Tools (engl. steht im Zusammenhang dieser Diplomarbeit für Anwendungen) handelt
sich um ein kleines „Zwei Mann Team“, welches Monitoring Anwendungen programmiert.
Während ein Kollege das sog. Alert Cockpit, einen Monitor auf R/3 Basis betreut und entwickelt,
ist mein Betreuer Andreas Mazzola mit der Entwicklung des Information Administration Centers
(im Folgenden IAC genannt) beschäftigt. Dieser Monitor basiert auf Microsoft SQL Server, ASP
und Perl. Genaueres zu diesem Tool, wird in 1.3 Aufgabenstellung berichtet.
1.3 Aufgabenstellung
Zur Verwaltung der gesamten Hardware, die die SAP Hosting AG & Co. KG durch die SAP
eigenen und Kundensysteme zu betreuen hat, gibt es ein Portal, das sog. IT Administration Portal
Abbildung 1.1 – IT Administration Portal
10
(vgl. Abbildung 1.1). Dort kann der Benutzer direkt Aktionen durchführen (vgl. orangener
Rahmen) oder hat die Möglichkeit, zu einer Vielzahl anderer Administrations- und Monitoring
Anwendungen zu gelangen (vgl. blauer Rahmen).
Dieses Portal ist während der Portierung des sog. IAC entstanden.
Das IAC ist eine Anwendung, die seit dem Jahr 2001 zur Verwaltung der
Hardware aufgebaut wurde. Zwischenzeitlich hatte das IAC Funktionalitäten
(vgl. Abbildung 1.2) wie das Pflegen aller möglichen zu einem Server
gehörenden Daten (IP Adresse, Equipment Nummer, Seriennummer,
Systemname, Hardware, Verrechnung/Fakturierung, System, Dateisystem,
Netzwerk, Backup, Dienste, Software, Verantwortlicher, Hotline, Adresse
und Rechenzentrumsplatz) oder das Herunterladen dieser Daten als Excel
Tabelle. Alle Server konnten auch nach bestimmten Daten durchsucht
werden. Außerdem prüfte und zeigte das IAC die Netzwerkerreichbarkeit
eines Servers an. Server unabhängige Daten (Standorte, technischer Support,
wichtigen Nachrichten, Hotline Listen, Hersteller, Vereinbarung der
Verfügbarkeitsgewährleistung,
Zustände,
Servertypen,
Kostenstellen,
Service Gruppen, Service Einheiten, Niederlassungen und Benutzern)
Abbildung 1.2 – wurden ebenfalls im IAC allerdings an separater Stelle gepflegt. Da das IAC
IAC Menü
selbst mit seiner aus immerhin sechs Servern bestehenden Systemlandschaft
auch verwaltet werden musste, gibt es Funktionen zur Benutzerverwaltung
(Berechtigungsvergabe), zum „Killen1“ der IAC Prozesse, zum Resetten2 und Rebooten3 der
einzelnen Server und zum Umverteilen der Serveraufgaben (Webserver, Applikationsserver,
Datenbankserver).
1
Killen: Beenden eines Prozesses
Resetten: hier: stoppen und wieder anstarten alle IAC Prozesse (nur softwaretechnisch)
3
Rebooten: herunter fahren und wieder hoch fahren, also restarten des Servers (hardwaretechnisch)
2
11
Zur damaligen Implementierung des IAC hatte man sich überwiegend für die Verwendung von
Microsoft Produkten entschieden und es mit MS Internet Information Server, MS SQL Server
2000 und ASP realisiert. Wenn ASP nicht genügend Funktionalität bot, griff man zu Perl.
Parallel zum IAC wurden jedoch noch andere ähnliche Tools auf verschiedenen Plattformen
entwickelt. So gibt es zum Beispiel einen Monitor, der speziell Datenbank Server verwaltet und
spezifische Datenbank Informationen wie den Festplattenplatz oder den Stand des Backups
ermittelt. Diese zahlreichen Tools hatten alle ihre eigene Datenbank mit nicht selten denselben
Daten wie sie schon auf einer anderen existierten. Als Notwendigkeit aus dieser Tatsache ergab
sich, dass alle Redundanzen durch den Aufbau einer völlig neuen Datenbank, die von allen Tools
genutzt würde, beseitigt würden. Da sich die Tools in ihren alten Versionen der verschiedensten
Technologien bedienten, musste sich zur Vereinheitlichung für dieselben Technologien
entschieden werden. Natürlich fiel die Wahl auf die SAP eigenen Technologien Web Application
Server (SAP Webserver), MaxDB (SAP Datenbank) und BSP (Business Server Pages, SAP
eigenes Framework für Webbasierte Anwendungen) unter dem Betriebssystem Linux.
Durch das Zusammenlegen aller Daten in eine Datenbank verloren die meisten Tools einen Teil
ihrer Verwaltungsaufgaben, so auch das IAC. Es verlor sogar alle Funktionen, die
hardwarespezifische Daten pflegten. Die Hauptaufgabe des IAC sollte zukünftig in der grafischen
Aufbereitung in anderen Tools gepflegter Daten und zum Teil automatisch selbst gesammelter
Daten (z.B. Scan nach vorhandenen Hotfixes) liegen. Eine außerdem wichtige Funktionalität
stellte die Suche innerhalb aller Daten dar.
All diese Anwendungen existieren zwar schon, laufen aber noch auf der alten Plattform. Die
Aufgabe meines Betreuers (Andreas Mazzola) und mir soll es sein, diese Anwendungen auf die
SAP Umgebung zu portieren. Dabei ist es sehr sinnvoll, sich zunächst einmal um Portierung
generell Gedanken zu machen, damit sie so effektiv wie möglich verläuft.
Ziel dieser Diplomarbeit ist also, ein Verfahren zur Portierung ASP basierter Webanwendungen
auf SAP® R/3® Technologien zu entwickeln und dieses dann anhand des praktischen Beispiels
anzuwenden und zu prüfen.
1.4 Verwandte Arbeiten
Bei der Literaturrecherche zeigt sich, dass es zum exakten Thema dieser Diplomarbeit keinerlei
Literatur gibt. Da der Schwerpunkt die Vorgehensweise an sich ohne ein tieferes Eingehen auf
12
die Technologien ist bzw. zu den Technologien selbst ausreichende Literatur vorhanden ist, kann
die Suche erweitert werden. So werden nun Bücher von Interesse, in denen auch nur ansatzweise
eine Anleitung zum Portieren gegeben werden könnte. Diese Suche ergab folgende Bücher.
1.4.1 Vorhandene Literatur

Martin C. Brown, (1998). BeOS: Porting UNIX Applications. San Francisco, Californien:
Morgan Kaufmann Publishers, Inc.

SunSoft Developer Engineering,.(1995). Solaris™ Porting Guide. 2.Auflage. SunSoft Press

Jens Ehme, (1997). Portierung einer in Standard C geschriebenen Windows 3.1x Anwendung
in eine objektorientierte C++ Anwendung unter Verwendung der Borland C++ OWL.
Diplomarbeit. Fachhochschule Stralsund

Andrew Lowe, (1997). Porting UNIX Applications to Windows NT. Indianapolis, Indiana:
Macmillan Technical Publishing

Steven Pemberton, (1992). The Ergonomics of Software Porting. Amsterdamm: Institut für
Informatik

Thomas Lauer, (1993). Die 32-Bit-Expedition: Win32™, Windows™ 4.0 und Windows NT™
– Leitfaden und Referenz zur Portierung von Windows 3.x Programmen. Springer-Verlag

Nancy Nicolaisen, (2002). Making Win32® Applications Mobile – Porting to Windows® CE.
Wiley Publishing, Inc.
1.4.2 Nutzbare Literatur
Die Bücher stellen größtenteils nur Hinweise bei der letztendlichen Portierung selbst dar, d.h. sie
bilden die verschiedensten Entsprechungen von vorher zu nacher ab. Lediglich die Bücher
Thomas Lauers und Andrew Lowe’s, gehen auch auf vorangestellte Themen wie Aufwand und
Vorgehensweisen bei der Portierung ein (s. 3.1).
13
2 Betrachtete Technologien
Diese Arbeit vertieft insbesondere die Portierung von einer Microsoft auf eine R/3® Plattform,
deswegen wird sich vor allem auf die dabei vorkommenden Technologien bezogen, so dass
Beispiele immer anhand dieser dargestellt werden. Es wird eine theoretisch sinnvolle Abfolge
von Arbeitsschritten entwickelt, die über die Analyse des Ist-Zustandes zur Synthese des SollZustandes führt. Die mit Microsoft Produkten umgesetzte Ausgangsanwendung stellt also den
Ist-Zustand dar, während die Zielanwendung in R/3® der Soll-Zustand nach der Portierung ist.
Als Vorbereitung auf dieses im nächsten Kapitel entstehende Verfahren wird in diesem Kapitel
zunächst eine Einführung in die betrachteten Technologien gegeben.
2.1 Ausgangsplattform
Die Plattform der Ausgangsanwendung setzt vollkommen auf Microsoft® Produkte. So wird als
Webserver der Internet Information Server und als Datenbank der SQL Server 2000 genutzt.
Beide laufen auf einem Windows® Betriebssystem. Die Webanwendungen sind mit ASP
umgesetzt.
2.1.1 Microsoft SQL Server
ODBC! ODBC anlegen
2.1.2 Microsoft Internet Information Server
2.1.3 Active Server Pages
2.2 Zielplattform
Zusammenhang: Auseinandersetzen und Vorstellen der Zieltechnologien; für den weiteren
Verlauf der Arbeit wichtiges technisches Wissen an den Leser vermitteln
Webserver und Datenbank bilden gemeinsam mit dem Webbrowser eine dreischichtige
Architektur (vgl. Abbildung 2.1), da sie jeweils auf verschiedenen Rechnern laufen. In dieser
dreischichtigen Architektur werden Anfragen des Benutzers über den Webbrowser an den
Webserver weitergeleitet. Der Webserver verarbeitet diese Anfragen, besorgt oder bearbeitet falls
14
nötig Daten des Datenbankservers und gibt das Ergebnis als Webseite wieder an den Webbrowser
des Benutzers zurück.
Inhalt: R/3!!!
2.2.1 MaxDB
Mit MaxDB hat die SAP AG ein eigenes Datenbanksystem entwickelt, dass seit dem Jahr 2000
auch quelloffen ist. Aktuell läuft es in der Version 7.4. MaxDB bietet für unterschiedliche
Anforderungen verschiedene Datenbankinstanztypen. Der grundlegende Instanztyp heißt MaxDB
OLTP (Online Transaction Processing) und ist für die schnelle Bearbeitung einzelner
Transaktionen mit einer hohen Anzahl von Benutzern und großen Datenbanken optimiert. Für
große Datenmengen, die ständig erreichbar und änderbar sind steht der Instanztyp SAP liveCache
zur Verfügung, der objektorientiert arbeitet und ausschließlich im Hauptspeicher des
Datenbanksystems operiert. Zur Verarbeitung möglichst vieler unstrukturierter Daten wie Videos,
XML-Dateien u.v.a. außerhalb der OLTP-Datenbank existiert die Datenbankinstanz MaxDB
Document Server, diese ist besonders performant. Um große Mengen betriebswirtschaftlich
historischer und operativer Daten schnell auf zu bereiten, wurde MaxDB OLAP entwickelt.
Speziell für Internet Kataloge wurde MaxDB OLTP um die TREX-Suchmaschine4 erweitert und
MaxDB E-Catalog entstand. So können Produktbeschreibungen (Langtexte) indiziert und
anschließend effizient
durchsucht
werden
(exakte Suche,
Phrasensuche,
Fuzzysuche,
linguistische Suche).
Datenbankbearbeitung
Neuer Eintrag
Vorhandenen Eintrag updaten
Eintrag löschen
4
TREX-Suchmaschine: SAP eigene Entwicklung einer Suchmaschine
15
2.2.2 SAP® Web Application Server
„Web Application Server dienen als Plattform für die Veröffentlichung und das Management von
Unternehmensanwendungen
im
Internet
und
gelten
als
Schlüsseltechnologie
der
Informationsverarbeitung im E-Business-Zeitalter.“ (SAP® Web Application Server, SAP® Press
2003, S.16)
Die Web Application Server (im Folgenden Web AS genannt) sind Software, die das Entwickeln
und Betreiben von Webanwendungen insbesondere für Business Server Pages (BSPs)
ermöglichen. Mit diesen Entwicklungen sollte den heutigen Anforderungen an geschäftskritische
Webanwendungen im Bezug auf Aktualität, Interaktivität, Individualität, Schnelligkeit und
Hochverfügbarkeit gerecht werden.
SAP® hat mit seinem SAP® Web Application Server einen eigenen Web AS entwickelt. Auch
IBM ist mit seinem WebSphere und BEA mit WebLogic auf dem Markt vertreten.
Mit den SAP® Web AS hat sich die SAP für die 3-Schichten-Architektur entschieden.
Konnektivitätsschicht
Webserver
Internet Communication Manager (HTTP/HTTPS/SMTP/SOAP/WebDAV)
Präsentationsschicht



1.Schicht
Webbrowser
(•
•
Integrationsschicht
Präsentationslogik
Navigation
Interaktion mit Client
Integrationstools
JSP/Servlets/JSP Tag-Bibliotheken
BSP/BSP Extensions
)
2.Schicht
Webserver
Business-Schicht
Applikationsserver



3.Schicht
Datenbankserver
(
Business-Logik
Statusverwaltung
Interaktion mit Datenbank und
externen Ressourcen
J2EE/ABAP
( • Java Connector
• .NET Connector
• XML/XSLT
• SOAP
• WSDL-Proxies
• BAPI/RFC
• IDoc
•…
)
)
Persistenzschicht
Datenbankschnittstelle
(
JDBC/Open SQL
)
SAP® Web Application Server
16
Abbildung 2.1 – Einordnung des Web AS in die 3-Schichten-Architektur, Architektur und mögliche
Technologien (kursiv geschrieben) des SAP® Web AS selbst
Diese Architektur verfolgt den Grundsatz, Anwendungsoberfläche (vgl. Abbildung 2.1:
1.Schicht), Anwendungslogik (vgl. Abbildung 2.1: 2.Schicht) und Anwendungsdaten (vgl.
Abbildung 2.1: 3.Schicht) klar voneinander zu trennen, was eine ihr entsprechende Anwendung
abstrakter, skalierbarer, zuverlässiger und einfacher erweiterbar macht. Die 1.Schicht wird
Client-Schicht genannt, die 2. Applikationsschicht und die 3. Datenbankschicht. Nach dem
Client-Server-Prinzip, nutzen diese drei Schichten Dienste der jeweils darunter liegenden Schicht
und bieten der darüber liegenden Dienste an.
Die Client-Schicht ist die grafische Benutzerschnittstelle, im Webumfeld der Webbrowser. In der
Datenbankschicht liegen auf dem Datenbankserver alle notwendigen Daten.
Der SAP® Web AS stellt in der 3-Schichten-Architektur die Applikationsschicht dar.
Mit dem Internet Communication Manager (ICM) als Konnektivitätsschicht wird auf TCP/IP5
Basis mit Hilfe der unterstützten Protokolle HTTP6, SMTP7 u.a. die Kommunikation mit der
Außenwelt gewährleistet. In der Präsentationsschicht wird mit HTML Seiten die Schnittstelle
zum Benutzer erzeugt. Hier bekommt der Benutzer Informationen angezeigt (Texte, Grafiken,
Datenbankinhalte usw.) und kann Daten (Eingabe-/ Auswahlfelder) zurück geben. Gesteuert
werden dynamische Daten wie Datenbankinhalte von der Business-Schicht, welche z.B. vom
Benutzer eingegebene Daten verarbeitet und die Ergebnisse, wenn nötig, wieder an die
Präsentationsschicht zurück gibt, wo dann mit ihnen neue HTML Seiten generiert werden.
„Die Integrationsschicht gewährleistet die Kommunikation mit einer Vielzahl unterschiedlicher
Systeme und Anwendungen. Der SAP Web AS bietet alle notwendigen Mechanismen, um die
SAP-Welt (z.B. RFC8, BAPI9, IDoc10) und auch die Non-SAP-Welt über eine Vielzahl von
5
TCP/IP: Transmission Control Protocol/Internet Protocol: Softwareprotokoll, das die Kommunikation zwischen
Rechnern definiert
6
HTTP: HyperText Transfer Protocol: Protokoll zwischen Webserver und Webclient
7
SMTP: Simple Mail Transfer Protocol: Protokoll zum Senden und Empfangen von Mails
8
RFC: Remote Function Call: zum Aufruf vordefinierter Funktionen auf entferntem oder gleichem System
17
Konnektoren (z.B. Java- und .NET-Konnektoren) zu verbinden. Der SAP Web AS unterstützt die
Webservice-Technologie (durch ein eigenes SOAP11-Framework) und unterstützt eine Vielzahl
von Dokumentenstandards (insbesondere XML12).“(SAP® Web Application Server, SAP® Press
2003, S.30f)
Die Persistenzschicht sorgt für die Anbindung an verschiedene Datenbanksysteme. Mit der Open
SQL Schnittstelle können verschiedene von der SAP lizenzierte Datenbanken angebunden
werden und mit JDBC andere.
2.2.3 Business Server Pages
Die Benutzeroberfläche (vgl. Abbildung 2.1 Präsentationsschicht) wird mit Business Server
Pages (BSP) realisiert. BSP-Seiten sind ähnlich wie ASP-Seiten Seiten, die zur Darstellung ihrer
Inhalte HTML verwenden und durch eine Skriptsprache befähigt werden, Datenbankzugriffe
vorzunehmen. Im Fall der BSPs kann man neben J2EE13 die SAP eigenen Programmiersprache
ABAP14 als serverseitige Skriptsprache benutzen. Und um bei der Entwicklung von
Anwendungen einheitliche Funktionalitäten und einheitliches Design zu gewährleisten, soll sich
gemäß der Entwicklungsrichtlinien15 sog. BSP-Extensions bedient werden, welche eine
Abstraktionstechnik zur Vereinfachung der Syntax und Semantik von HTML-Codeblöcken
darstellen. Mit Hilfe von BSP-Extensions können also z.B. alle möglichen HTML Elemente in
Farbe, Form und Funktionalität vor eingestellt werden (Bsp.: checkbox) oder besondere Elemente
(Bsp.: tray) geschaffen werden. Der SAP WebAS wird beispielsweise mit der vordefinierten
Extension HTML Business (HTMLB) ausgeliefert. Beim Verwenden solcher Extensions macht
man im HTML Dokument den Namen der Extension zunächst mit <%@extension name="htmlb"
9
BAPI: Business Application Programming Interface: Schnittstelle für den Zugriff auf betriebswirtschaftliche
Objekte eines SAP-Systems
10
IDoc: Intermediate Document: SAP-Standardformat zum elektronischen Datenaustausch zwischen Systemen.
Verschiedene Nachrichtentypen (z.B. Lieferschein oder Bestellung) entsprechen in der Regel verschiedenen
speziellen Formaten, den sogenannten IDOC-Typen.
11 SOAP: Simple Object Access Protocol: zum Aufrufen von Webservices in verteilten Landschaften mit Hilfe des
Transportprotokolls HTTP
12
XML: eXtensible Markup Language: Auszeichnungssprache zur Definition von Dokumentstrukturen
13
J2EE: Java 2 Platform, Enterprise Edition
14
ABAP: Advanced Business Application Programming: objektorientierte Hochsprache
15
Richtlinien für BSP Anwendungen: 1) nur HTMLB Erweiterungen verwenden 2) das von BSP angebotene ModelView-Controller Programmiermodell verwenden 3) Ablauf(=business?)- und Präsentationslogik klar voneinander
trennen
18
prefix="htmlb" %>
bekannt, und leitet dann jedes zur Extension gehörende Element nach dem
Prinzip <htmlb:Elementname> ein.
Eine BSP Datei ist genau wie der WebAS selbst in einer 3 Schichten Architektur gehalten. Es
gibt Präsentations-, Ablauf- und Anwendungslogik. Während diese Architektur lange Zeit mit
sog. Eventhandler16-Methoden innerhalb einer Seite mit Ablauflogik umgesetzt wurde,
empfehlen neuste Richtlinien15 die Verwendung des MVC (Model-View-Controller) Design
Patterns. Dabei wird die Präsentation der BSP Anwendung streng getrennt vom Rest in Views
definiert. Die Ablaufsteuerung wird von sog. Controllern vorgenommen. Dabei sind Controller
Klassen, welche die Verbindung zwischen View und Model realisieren, indem sie Eingabedaten
des Benutzers über den View entgegen nehmen, an das Model weiterleiten und somit dort durch
Methodenaufrufe Änderungen an den Daten auslösen. Die Anwendungslogik wird folglich vom
Model übernommen, dieses stellt die der Anwendung zugrunde liegenden Daten dar und bietet
Methoden zu Datenbeschaffung und -verarbeitung. Das Model kennt seine Views und Controller
nicht.
2.2.4 Entwicklungsumgebung
Transaktionen bezeichnen in einem SAP® R/3® System abgeschlossene Vorgänge, die aus
betriebswirtschaftlich, funktional und logisch zusammenhängenden Arbeitsschritten bestehen.
Aus Anwendersicht könnte solch eine Transaktion z.B. das Ändern von Kundendaten sein. Für
Anwendungsentwickler gibt es die Transaktion „Object Navigator“, welche entweder über die
Navigation im SAP Easy Access, der Einstiegsoberfläche alle SAP Systeme, angesteuert werden
kann
16
19
Abbildung 2.2 – SAP Easy Access, gesamte Oberfläche
oder durch direkte Eingabe ihres zugehörigen Transaktionscodes 17 in der Kommandoeingabe der
Symbolfunktionsleiste.
Abbildung 2.3 – SAP Easy Access, Symbolfunktionsleiste
Bei der direkten Eingabe muss dem Transaktionscode (hier: SE80) selbst /n oder /o vorangestellt
werden. Dabei bewirkt /n, dass die im verwendeten Fenster aktuell laufende Transaktion
abgebrochen und die neu angegebene gestartet wird. Im Gegensatz dazu wird bei /o die neue
Transaktion in einem neu öffnenden Fenster gestartet.
Der
Object
Navigator
(SE80)
ist
für
R/3®
Softwareentwickler
das
umfassende
Verwaltungswerkzeug. Seine grafische Oberfläche besteht aus fünf Bereichen (vgl. Abbildung
2.4).
17
Transaktionscode: eindeutiges Kürzel für eine R/3 Transaktion, das aus vier alphanumerischen Zeichen besteht
20
1.1
1.2
1.3
1.4
2
4
3
5
Abbildung 2.4 – Object Navigator
Die Bereiche 1.1 bis 1.4 stellen die Funktionsleisten dar, welche in ähnlicher Weise in jeder SAP
R/3 Oberfläche vorkommen, sich jedoch vorwiegend auf Funktionen des Aktuellen Werkzeugs
im Werkzeugbereich (vgl. Abbildung 2.4 Punkt 4) beziehen. Die Menüleiste (vgl. Abbildung 2.4
Punkt 1.1) zeigt von der jeweiligen Anwendung abhängige Menüs (z.B. Bearbeiten, Hilfsmittel,
System) und bietet deren Unterpunkte an. Die Symbolfunktionsleiste (vgl. Abbildung 2.4 Punkt
1.2) ist bei jeder Anwendung identisch und beinhaltet die bereits erwähnte Kommandozeile zur
Eingabe von Transaktionscodes (s. oben) sowie Symbole (vgl. Abbildung 2.3 von links nach
rechts) zum Ausführen, Speichern, zurück Springen, Verlassen, Abbrechen, Drucken, Suchen,
Finden, Finden des nächsten Gleichen, zum Blättern auf die erste Seite, auf die vorherige Seite,
auf die folgende Seite und auf die letzte Seite, zum Öffnen einer neuen Session 18, zum Erzeugen
18
Session: hier: weiteres Fenster mit gleicher Anwendung
21
eines Shortcuts19 auf dem Desktop20, zur Hilfe und schließlich zum individuellen Anpassen der
Oberfläche. Die Titelleiste (vgl. Abbildung 2.4 Punkt 1.3) benennt lediglich die Anwendung/das
Werkzeug bzw. die Funktion, die momentan im Werkzeugbereich (vgl. Abbildung 2.4 Punkt 3)
zur Verfügung steht. Die Anwendungsfunktionsleiste (vgl. Abbildung 2.4 Punkt 1.4) bietet
Funktionen der aktuellen Anwendung an.
Der Browserbereich (vgl. Abbildung 2.4 Punkt 2) vereinigt verschiedene Browser, mit denen
MIME-Objekte (Bilder, Symbole, Sounds, Stylesheets, u.v.a.) und Entwicklungsobjekte
(Repository-Objekte wie z.B. ein entwickeltes Paket mit allen Klassen, Webseiten und
Datenbanktabellen) verwaltet und durchsucht werden können. Außerdem bietet der Repository
Information System Browser die Möglichkeit, in alle Arten von Entwicklungsobjekten nach
bestimmten Objekten z.B. über ihren Namen, ihre Beschreibung oder ihr Paket zu suchen. Der
Tag Browser gibt dem Entwickler eine Übersicht und Informationen zu allen verfügbaren Tags
für Webanwendungen. Schließlich gibt es noch den Transport Organizer bei den Browsern, in
ihm kann man auf die eigenen Transportaufträge zugreifen.
In der Objektliste (vgl. Abbildung 2.4 Punkt 3) kann dann schließlich in Form einer Baumanzeige
auf Objekte der gewählten Kategorie zugegriffen werden.
Wählt der Entwickler in der Objektliste ein Objekt aus, erscheint es automatisch mit dem
entsprechenden Werkzeug zur Bearbeitung im Werkzeugbereich (vgl. Abbildung 2.4 Punkt 4). In
diesem
Automatismus
zeigt
sich,
warum
der
Object
Navigator
die
umfassende
Entwicklungsanwendung ist. Der Entwickler muss nämlich nicht explizit zu den einzelnen
Werkzeugen springen. Der Wechsel des Werkzeugs zeigt sich also nur im Werkzeugbereich, in
den Unterpunkten der Menüleiste, in der Symbolfunktionsleiste in der Titelleiste und in der
Anwendungsfunktionsleiste, wobei diese Wechsel beiläufig vom Benutzer fast unbemerkt
ablaufen.
Abgeschlossen wird das Fenster unten durch die Statusleiste, welche links Hinweise, Warnungen
und Fehler ausgibt und rechts aktuelle Informationen zum System liefert, wobei hier die Art der
19
20
Shortcut: hier: direkter Einstieg zu dieser Anwendung
Desktop: Hintergrund des Bildschirms
22
Systeminformation ausgewählt werden kann, z.B. Systemname, Transaktionscode, Antwortzeit,
u.v.a..
Da v.a. in einem R/3 System mit ständiger Entwicklung sehr viele Änderungen vorgenommen
werden, empfiehlt es sich, das System nicht nur als Einzelinstanz zu betreiben, sondern
Integrations-, Konsolidierungs- und Belieferungssystem (vereinfacht Entwicklungs-, Test- und
Produktivsystem genannt) voneinander zu trennen. Dies hat die Vorteile, dass:

Änderungen an Entwicklungsobjekten sich nicht auf das Belieferungssystem auswirken.
Würde nämlich ein Entwickler eine Anwendung ändern, stünde diese den Anwendern
währenddessen nicht zur Verfügung. Ginge bei der Änderung etwas schief, so dass die
Anwendung nicht mehr korrekt arbeitet, könnte sie erst wieder nach der Fehlerbehebung
benutzt
werden.
Dialog-Workprozess? (r/3 systemadministration s.101 punkt 3)

Entwickler, die auf jeden Fall Zugriff auf alle Daten in den Datenbanktabellen brauchen,
keine produktiven und somit wichtigen Daten zerstören können.
So kann also einzig und alleine im Integrationssystem entwickelt werden, bis eine Anwendung
fehlerfrei läuft. Rein theoretisch könnte die funktionierende Anwendung nun auf das
Belieferungssystem übertragen werden, was durch sog. Transporte geschieht. Da jedoch die
transportierte Anwendung noch einmal getestet werden sollte oder vielleicht nur der
Zwischenstand einer Anwendung getestet werden soll, während an dieser längst weiter entwickelt
wird (bei größeren Projekten mit mehreren Entwicklern), wird ein weiteres System zwischen den
beiden benötigt, das Konsolidierungssystem, das der Qualitätssicherung dient (vgl. Abbildung
2.5).
Entwicklung
Integrations-system
Konsolidierungs-
Qualitäts-
Belieferungs-
weg
sicherung
weg
Produktion
Konsolidierungs-
Belieferungs-
system
system
Abbildung 2.5 – R/3 Systemlandschaft mit 3 Instanzen
23
Das hinter dieser Landschaft stehende Transportsystem tangiert den Entwickler insofern, dass
jedes Entwicklungsobjekt im Integrationssystem einen Transportauftrag erhalten muss oder
einem bereits existierenden hinzugefügt wird. Sobald ein Objekt das erste Mal gesichert wird
oder implizit gesichert werden muss (z.B. beim Wechsel zu einem anderen Objekt oder bei der
Kompilierung), kommt die Abfrage nach dem Transportauftrag (vgl. Abbildung 2.6).
Abbildung 2.6 – Abfrage nach Transportauftrag
Hier können über den „Eigene Aufträge“ Knopf oder das
Symbol alle zum eigenen Benutzer
gehörenden Transportaufträge aufgelistet werden, so dass das neue Objekt einem dieser
hinzugefügt werden kann. Sollte das neue Objekt jedoch zu keinem bestehenden Transportauftrag
passen oder noch gar keiner existieren, wird über das
Symbol ein neuer angelegt (vgl.
Abbildung 2.7).
Abbildung 2.7 – Erstellung eines Transportauftrags
An dieser Stelle ist zur erwähnen, dass es keine allgemeine Vorschrift gibt, wie die Organisation
von Transportaufträgen zu handhaben ist. Es ist auf jeden Fall davon abzuraten, alle Objekte in
den gleichen zu packen, da es bei der Parallelentwicklung verschiedener Bausteine zu
24
Behinderungen kommen kann, wenn nicht kompilierbare Teile im Transportauftrag enthalten
sind und somit der gesamte Transport nicht statt finden kann. Andererseits ist es unnötig, jedem
Objekt einen eigenen Transportauftrag zuzuweisen. Zum einen wird es für den Entwickler sehr
arbeitsaufwendig, wenn er dann jeden Transportauftrag einzeln aus dem Integrationssystem
exportieren und in Konsolidierungs- und Belieferungssystem importieren muss und zum anderen
leidet die Performance der beteiligten Systeme unter den vielen kleinen Transporten.
Es ist daher sinnvoll, logisch zueinander gehörende Objekte, d.h. Objekte, die ohne einander
nicht funktionieren (z.B. Views mit ihren Controllern und Models) in einem Transportauftrag
zusammen zu fassen.
Sind alle Objekte eines Transportauftrags
im Integrationssystem fertig entwickelt und
somit soweit, exportiert zu werden, ist dies
auf mehrere Arten möglich. Im Transport
Organizer des Objekt Navigators (vgl.
Abbildung
2.4
Transportauftrag
Transport
frei
Punkt
per
2),
kann
Rechtsklick
gegeben
werden
ein
zum
(vgl.
Abbildung 2.8).
Abbildung 2.8 – SE80 Freigabe eines Transportauftrags
Etwas umständlicher aber auch möglich ist der direkte Aufruf des Transport Organizers als
Transaktion SE09 oder sogar als SE01 mit erweiterter Sicht.
25
Abbildung 2.9 – STMS Liste aller Transportaufträge zum Import
Für einen Entwickler reicht jedoch die Version innerhalb des Object Navigators vollkommen aus.
Auf jeden Fall ist es beim Freigeben eines Transportauftrags so, dass unter dem eigentlich vom
Entwickler selbst angelegten noch automatisch untergeordnete Transportaufträge angelegt
wurden. So entsteht im Transport Organizer ein Baum mit dem ursprünglich händisch angelegten
Auftrag als Hauptknoten in der ersten Hierarchieebene. Bevor dieser freigegeben werden kann,
müssen alle Aufträge unter ihm freigeben werden, sein gesamter Teilbaum zur Freigabe also von
unten her abgearbeitet werden. Mit diesem Export liegt der Transportauftrag dann in einem
Exportverzeichnis, auf das sowohl Konsolidierungs- als auch Belieferungssystem zugreifen
können. Zunächst wird der Transportauftrag jedoch nur zur Qualitätssicherung ins
Konsolidierungssystem importiert. Dazu muss man sich natürlich zunächst in diesem anmelden.
Leider steht dann im Transport Organizer keine Funktionalität zum Import zur Verfügung. Zum
Importieren gibt es einzig und alleine die Transaktion STMS, das Transport Management System.
Dort gelangt man auf der Einstiegsseite über das
Symbol in der Anwendungsfunktionsleiste
(vgl. Abbildung 2.4 Punkt 1.4) zur Anzeige aller zum Import bereit stehenden Transportaufträge
(vgl. Abbildung 2.9).
Es kann zwar eine Verzögerung auftreten, bis ein bereits exportierter Auftrag hier aufgeführt
wird, aber wenn er dann zum Import bereit steht, wird er in der Statusspalte (vgl. Abbildung 2.9
Spalte „St“) mit dem
Symbol angezeigt. In diesem Zustand kann der Auftrag importiert
werden, indem man ihn markiert und auf das Symbol
für Einzelimporte klickt (vgl. Abbildung
2.9). Da in der Importliste die Aufträge aller Entwickler der Systemlandschaft aufgelistet sind,
sollte auf keinen Fall der Import aller Transportaufträge mittels
Symbol vorgenommen
werden!
Beim Vornehmen des Einzelimports erscheint als nächstes das wie in Abbildung 2.10 gezeigte
Fenster. Hier sollte nur unter Optionen der standardmäßig gesetzte Haken der ersten Option
entfernt werden, damit der Import sofort ausgeführt wird. Während des Imports wird der Status
des Auftrags in der Liste aller Importe mit
angezeigt.
26
angezeigt und bei erfolgreicher Beendigung mit
Abbildung 2.10 – STMS Import eines Transportauftrags
Die transportierten Objekte stehen nun im Konsolidierungssystem zur Verfügung. Dort können
sie getestet werden. Treten bei den Tests Probleme oder Fehler auf, müssen diese wieder im
Integrationssystem behoben werden. Da der bisherige Transportauftrag durch seinen Export dort
nicht mehr existiert, muss ein neuer angelegt werden. Erst wenn alle Tests positiv verlaufen und
die Anwendung komplett ist, so dass sie in den produktiven Betrieb genommen zu werden, wird
der Exportauftrag, der bisher nur ins Konsolidierungssystem importiert wurde, auch ins
Belieferungssystem importiert.
Was geschieht mit den aufträgen im exportverzeichnis? Stehen im belieferungssystem dann alle
exporte zum import zur verfügung, die es bis zum erfolgreichen testen gab?
27
3 Portierungsverfahren
3.1 Allgemeines zu Portierung
Inhalt: Definition Portierung:
Software porting is the engineering process of transforming an existing application so that the
resulting software will execute properly on a new platform. The process involves the careful
analysis, build, debug and test of the existing software to make sure that it will run reliably on the
target. (http://www.rtr.com/Ready-to-Run_Software/software_porting_primer.htm)
Software porting is the engineering process that transforms software so that it will
operate
within
a
new
target
environment.
(http://www.reed-
electronics.com/ednmag/article/CA236414?pubdate=8%2F8%2F2002)
Wann kann Portierung notwendig werden, wann ist sie zu empfehlen?
3.1.1 Aufwand
Der Aufwand, der hinter einer Portierung steckt, läßt sich leider nicht genau voraussagen.
Während Thomas Lauer die Aufwandsschätzung sehr wage festlegt, liefert Andrew Lowe jedoch
eine umfangreiche Rechnung. Lowe’s Rechnung bezieht sich allerdings auf die Portierung von
UNIX® zu Windows NT®. Außerdem würde es den zeitlichen Rahmen dieser Arbeit sprengen zu
prüfen, ob sich die Rechnung auf die hier bevorstehende Portierung übertragen oder zumindest
abwandeln ließe. Gleicher Meinung sind beide Autoren in dem Punkt, dass oberflächenintensive
Programme aufwendiger als rechenintensive oder algorithmisch komplexe Programme seien, da
eine einfache und intuitive Bedienung in der Oberfläche meist eine komplexe Weiterverarbeitung
der eingegebenen Daten nach sich zöge.
Nach Lauer beeinflussten Faktoren wie Zeitdruck, Design Änderungen, Faulheit, Schlampigkeit,
mangelnde Informationen, Desinteresse u.v.a. den existierenden Quellcode in seiner
Strukturierung oft negativ. Die Erfahrung zeige, dass Dauer und Aufwand einer Portierung
mindestens logarithmisch, in schweren Fällen auch quadratisch vom Chaos-Koeffizienten der
Quelltexte abhingen.
Folgende Regeln und Hinweise ließen den zu erwartenden Aufwand wenigstens relativ
abschätzen:
28
Stark modularisierte Quelltexte ließen sich besser schrittweise übertragen, da sie durch die
größere Übersichtlichkeit auch verständlicher seien und Fehler besser gefunden werden könnten.
Ausführlich kommentierte Quelltexte seien i.d.R. schneller und besser zu verstehen, könnten also
schneller portiert werden.
Während die oberen beiden Punkte Regeln zum besseren Verstehen beinhalten, ist mit diesem
das Verstehen generell gemeint. Je besser das Programm verstanden würde, desto schneller ginge
die Portierung vonstatten. Der Weg zum kompletten Verstehen wiederum kann natürlich eine
gewisse Zeit in Anspruch nehmen.
3.1.2 Vorgehensweisen
In der Art, wie man eine Anwendung mit all ihren Funktionalitäten portiert, unterscheidet man
hauptsächlich zwei grundlegend gegensätzliche Methoden, Bottom Up und Top Down.
3.1.2.1 Top Down
Abbildung 3.1 – Top Down
Start
Top Down bedeutet (laut Thomas Lauer), dass zuerst
ein funktionierendes Minimalprogramm umgesetzt
wird. Nach und nach werden dann die Funktionalitäten
hinzugefügt.
Der
entscheidende
Vorteil
dieser
Vorgehensweise liegt darin, dass mit dem Testen nach
jeder hinzugekommen Funktionalität auftretende Fehler
sehr gut aufgespürt werden können, die Anpassung
findet kontrolliert statt, zukünftig auftretende Fehler
können kaum auf bereits erfolgreich getestete Teile
Ziel
zurückgeführt werden. Der Programmierer kann sich
mit dieser schritt weisen, dem menschlichen Denken
entsprechenden, Taktik immer auf einen einzigen
Programmteil
konzentrieren,
was
die
Ziel
Fehlerrate
verringert. Des weiteren hat Top Down einen
psychologischen Vorteil - der Programmierer hat von
Anfang an ein sichtbares Resultat. Jede neu eingebaute
29
Start
Funktionalität, jeder erfolgreiche Test motiviert zum Weitermachen. Bei umfangreichen
Projekten kann ein Team von Entwicklern nach Portierung des Hauptprogramms mit all seinen
Schnittstellen relativ unabhängig voneinander portieren und testen. Top Down läßt sich mit
zunehmender Modularisierung des Quelltextes besser durchführen und fördert unabhängig davon
die Modularisierung der Zielanwendung.
3.1.2.2 Bottom Up
Abbildung 3.2 – Bottom Up
Bei Bottom Up werden zunächst einzelne kleinste Funktionalitäten bis zur fehlerfreien Arbeit
portiert. Danach werden diese kleinen Teile zur nächst höheren Einheit mit deren eventuellen
Zusätzen zusammengefasst, welche wiederum bis zum Erfolg getestet werden. So geht es immer
weiter, bis am Ende die komplette Anwendung funktionstüchtig portiert ist.
Bei dieser Methode liegen die Vorteile darin, dass mit den betroffenen Technologien erfahrene
Entwickler wiederkehrende Code-Muster in den Quelltexten besser als mit Top Down erkennen.
Bei größeren Projekten kann der „mechanische“ Teil der Portierungsarbeit, das sture Ändern von
immer wieder ähnlichen Code-Sequenzen, unter der Regie von erfahreneren Entwicklern durch
relativ unerfahrene Programmierer vorgenommen werden. Das Testen übernehmen dann wieder
die Entwickler, die den Code entworfen und implementiert haben.
30
3.2 Portierungsschrit 1/6: Kennen lernen der Ausgangsanwendung
Am Anfang der Portierung muss als erstes die Ausgangsanwendung genaustens kennen gelernt
werden. Dabei scheint es sinnvoll, sich vom Groben ins Detail ein zu arbeiten. Die bloße
Betrachtung der Anwendung als normaler Benutzer bringt einem zunächst den Überblick über die
Funktionalitäten der Anwendung, man sieht, aus welchen Elementen die Oberfläche besteht und
kann einigermaßen einsehen, welche Verarbeitungsschritte ablaufen. Außerdem gewinnt man
einen Einblick in den Seitenumfang und das Seitenzusammenspiel der Anwendung. Da jedoch
bei dieser oberflächlichen Betrachtung kleine Feinheiten leicht übersehen werden können, ist eine
noch genauere Betrachtung ratsam. Das Lesen des hinter der Anwendung stehenden Codes ist
sogar unausweichlich, da nur so jede noch so unscheinbare Funktionalität, die beim Betrachten
gar nicht wahr genommen wird, aufgespürt werden kann.
Ein weiterer Vorteil des genauen kennen Lernens der Ausgangsanwendung durch Lesen des
Codes
besteht
darin,
dass
so
zumindest
die
verwendeten
Funktionalitäten
der
Ausgangstechnologien bekannt und somit die gesamte Anwendung besser verständlich werden.
Erfahrungsgemäß kann eine 100%ige Kenntnis der Ausgangstechnologien nämlich nicht
vorausgesetzt werden.
31
3.3 Portierungsschrit 2/6: Machbarkeitsprüfung
Nachdem man sich mit der Ausgangsanwendung in soweit bekannt gemacht hat, dass man alle
verwendeten Komponenten kennen gelernt hat, ist es notwendig, zu überprüfen, ob sie
problemlos zur gewünschten Zielplattform portiert werden kann, welchen Anforderungen diese
also werden muss. Dieser Schritt ist hier am besten angesiedelt, da vorher noch nicht bekannt
war, was überhaupt nötig ist und da jeder weitere Schritt umsonst sein könnte, solange die
Machbarkeit nicht sichergestellt ist. Die Machbarkeit der Portierung soll hier also festgestellt
werden, um ein Scheitern so frühzeitig wie möglich zu erkennen und durch Verwerfen der
Portierung zu vermeiden.
3.3.1 Datentypen der Programmiersprache
Zunächst müssen die Datentypen der beiden Plattformen verglichen werden, um heraus zu
finden, ob die Portierung auf Ebene der notwendigen Datentypen problemlos oder wenigstens mit
etwas Umstand möglich ist.
Im Falle von JavaScript und ABAP sieht die Gegenüberstellung der Datentypen folgendermaßen
aus.
JavaScript
ABAP
elementare Datentypen fester Länge
32
Typ
Standard-/
Größe
[Byte]
Initialwert
Erläuterung
i
4/ 4
0
Integer, ganze Zahl
p
8/ 1-16
0
Packed, gepackte Zahl
f
8/ 8
0
Float, Gleitpunktzahl
c
1/ 165535
``
Character,
alphanumerischer
Text, Ersatz für
booleschen Datentyp
n
1/ 165535
`0...0`
Numerischer Text
d
8/ 8
`00000000`
Date, Datumsangabe
t
6/ 6
`000000`
Time, Zeitangabe
x
1/ 165535
`00...00`
Hexadezimal
elementare Datentypen variabler Länge
string
String, zeichenartiger
Typ
xstring
Xstring, byteartiger
Typ
Ein Datenobjekt wird in ABAP mit der Anweisung
DATA
Datenobjektname[(Länge)]
TYPE
Datentyp
[DECIMALS
Anzahl]
[VALUE
Initialwert].
erzeugt, wobei Datenobjektname die Bezeichnung des erzeugten Datenobjekts darstellt und
Datentyp durch einen der ABAP Datentypen aus obiger Tabelle gefüllt werden muss. Optional
gibt man bei den Datentypen p, c, n und x noch die benötigte Länge an, ansonsten werden die
jeweiligen Standardlängen verwendet. Für den Datentyp p sollte hinter DECIMALS die Anzahl
der Nachkommastellen festgelegt werden, welche standardmäßig 0 ist und so das deklarierte
Datenobjekt wie einen normalen Integer behandeln lassen würde. Außerdem kann für alle
Datentypen optional noch ein Initialwert mitgegeben werden.
Aus den zehn in ABAP eingebauten Datentypen lassen sich programmlokal auch eigenständige
Datentypen definieren, dies geschieht mit der Anweisung
TYPES Datentypname[(Länge)] TYPE Datentyp [DECIMALS Anzahl].
Nach dieser Datentypdefinition können mit der DATA Anweisung Datenobjekte des selbst
definierten Datentyps erzeugt werden.
Anstatt des TYPE Zusatzes in der Datenobjektdeklaration und der Datentypdefinition kann auch
ein LIKE verwendet werden, hinter dem der Name eines bereits deklarierten Datenobjektes
angegeben wird. Das so erzeugte Datenobjekt oder der Datentyp erhalten dann die Eigenschaften
des Datenobjektes, auf das sich LIKE bezieht.
33
Aus den bisher angesprochenen elementaren Datentypen lassen sich auch komplexe Datentypen
konstruieren. Dabei gibt es zum einen die strukturierten Typen, welche sich aus einer Folge
anderer Datentypen zusammensetzen und dementsprechend auch Struktur genannt werden. Sie
werden nach folgender Anweisungsvorschrift erzeugt:
TYPES|DATA: BEGIN OF Strukturname,
Komponente1name
{TYPE
Datentyp1name|
LIKE
Datenobjekt1name}
[VALUE
{TYPE
DatentypNname|
LIKE
DatenobjektNname}
[VALUE
Initialwert1],
…
KomponenteNname
InitialwertN],
END OF Strukturname.
Eine Komponente kann also ein elementarer, ein selbst definierter Datentyp, eine
Datenbanktabelle oder eine andere Struktur sein. Eine Datenbanktabelle wird einer Struktur
folgendermaßen zugewiesen:
TYPES|DATA Strukturname TYPE Datenbanktabellenname.
Soll eine Struktur andere Strukturen enthalten, kann dies durch Verschachtelung definiert
werden:
TYPES|DATA: BEGIN OF Struktur1name,
Komponente1name {TYPE Datentyp1name| LIKE Datenobjekt1name} …,
Komponente2name {TYPE Datentyp2name| LIKE Datenobjekt2name} …,
BEGIN OF Struktur2name,
Komponente3name {TYPE Datentyp3name| LIKE Datenobjekt3name} …,
Komponente4name {TYPE Datentyp4name| LIKE Datenobjekt4name} …,
END OF Struktur2name,
END OF Struktur1name.
34
Angesprochen werden die Strukturkomponenten, indem der Hierarchie entsprechend Strukturund Komponentenname(n) mit Bindestrich verkettet werden:
Struktur1name- Komponente1name
Struktur1name- Struktur2name- Komponente4name
Sollen die Komponenten einer in einer anderen Struktur enthaltenen Struktur nicht eine
Hierarchiestufe niedriger sein, kann sie per INCLUDE
TYPES|DATA: BEGIN OF Struktur3name,
Komponente5name {TYPE Datentyp5name| LIKE Datenobjekt5name} ….
INCLUDE TYPE|STRUCTURE Struktur1name AS Struktur1alias [RENAMING WITH
SUFFIX Nachsilbe].
…
DATA END OF Struktur3name.
ein gebunden werden. Dabei bezieht sich TYPE auf eine als Datentyp definierte Struktur und
STRUCTURE auf eine als Datenobjekt deklarierte Struktur. STRUCTURE entspricht also dem
LIKE bei nicht strukturierten Datentypen. Durch diese Aufnahme anderer Strukturen können
natürlich Namenskonflikte auftreten, da die Komponenten der anderen Strukturen durchaus
gleiche Namen haben könnten. Sollte ein Namenskonflikt vorkommen muss zwingend eine
eindeutige Nachsilbe angegeben werden. Die Komponenten können sowohl in der verketteten
Schreibweise
Struktur3name- Struktur1alias- Struktur1Komponente1name
als auch in der Kurzschreibweise
Struktur3name- Struktur1Komponente1name+Nachsilbe
angesprochen werden.
35
Die zweite Art komplexer Datentypen sind nach den statischen Strukturen die dynamischen sog.
internen Tabellen. Diese ersetzen auch den nicht vorhandenen Datentyp Array. Sie sind durch
eine Tabellenart, einen Zeilentyp und einen Tabellenschlüssel gekennzeichnet und werden mit
folgender Anweisung angelegt:
TYPES|DATA interneTabellenname {TYPE|LIKE} Tabellenartname
OF {Zeilentypname|Zeilenobjektname}
[WITH Tabellenschlüsselname]
[INITIAL SIZE n].
Dabei gibt die Tabellenart an, wie auf die interne Tabelle zugegriffen wird und es kann zwischen
den drei Arten [STANDARD] TABLE, SORTED TABLE und HASHED TABLE gewählt
werden. Bei [STANDARD] TABLE und SORTED TABLE werden die einzelnen Zeilen durch
einen logischen Index verwaltet, bei SORTED TABLE sind sie jedoch nach dem
Tabellenschlüssel aufsteigend sortiert. Bei beiden Arten kann sowohl über den Index als auch
über den Schlüssel auf die Zeilen zugegriffen werden.
Im Gegensatz dazu steht jedoch die HASHED TABLE, bei der die Einträge durch einen HashAlgorithmus verwaltet und mit der direkt über eine Hash Funktion aus dem Schlüssel berechnete
Position angesprochen werden.
Der Zeilentyp ist meistens eine Struktur oder gar eine Datenbanktabelle bzw. deren Struktur. Er
kann aber auch durch elementare Datentypen, Referenzvariablen oder interne Tabellen
beinhalten.
Je nach Zeilentyp können verschiedene Tabellenschlüssel angegeben werden. Nicht strukturierte
können nur die Pseudokomponente table_line als Schlüssel verwenden, welche den gesamten
Zeileninhalt beinhaltet: [UNIQUE|NON-UNIQUE] KEY table_line.. Dieser Schlüssel kann
auch bei strukturierten Tabellen angegeben werden.
Sinnvoller ist es jedoch bei strukturierten Tabellen die einzelnen Komponenten zu verwenden,
wobei jede Komponente, die keine Tabelle ist oder eine solche enthält, direkt im Schlüssel
angegeben werden kann:
[UNIQUE|NON-UNIQUE] KEY Komponente1name … KomponenteNname.
36
Die Abfolge der Komponenten ist bei der Schlüsselauswertung von Belang.
Bei einer strukturierten Tabelle kann mit [UNIQUE|NON-UNIQUE] DEFAULT KEY. auch
der Standardschlüssel angeben werden. Dieser besteht dann aus allen nicht numerischen
Komponenten (alle außer i, f, p) und denen, die auch keine Tabelle sind. Bei einer Tabelle mit
elementarem Zeilentyp, also nur einer einzigen und auch elementaren Komponente, entspricht
der Standardschlüssel dem oben erwähnten table_line.
Die Angaben UNIQUE und NON-UNIQUE schreiben vor, ob der Schlüssel eindeutig sein muss
oder nicht, ob er nicht mehrfach vorkommen darf oder doch. Der Schlüssel der Standardtabellen
ist immer nicht eindeutig und der der Hash-Tabellen immer eindeutig, der der sortierten Tabellen
kann jedoch beides sein, deswegen sollte die Angabe bei diesen gemacht werden.
Alle Datentypdefinitionen können natürlich auch global vorgenommen werden. Dies geschieht in
der SAP Entwicklungsumgebung des Object Navigators durch Anlegen eines neuen Data
Dictionary Objektes (vgl. Abbildung 3.3).
Abbildung 3.3 – Anlegen eines Data Dictionary Objektes
Das Data Dictionary, auch ABAP Dictionary genannt, ist eine Programm übergreifende Ablage,
auf die alle Entwicklungsobjekte (Repository-Objekte) zugreifen können.
3.3.2 Datentypen der Datenbank
Angebotene datentypen in MS SQL Server: bigint, binary, bit, char, datetime, decimal, float,
image, int, money, nchar, ntext, numeric, nvarchar, real, smalldatetime, smallint, smallmoney,
sql_variant, text, timestamp, tinyint, uniqueindentifier, varbinary, varchar
37
Exact Numerics
Integers
bigint
Integer (whole number) data from -2^63 (-9223372036854775808) through 2^63-1
(9223372036854775807).
int
Integer (whole number) data from -2^31 (-2,147,483,648) through 2^31 - 1 (2,147,483,647).
smallint
Integer data from 2^15 (-32,768) through 2^15 - 1 (32,767).
tinyint
Integer data from 0 through 255.
bit
bit
Integer data with either a 1 or 0 value.
decimal and numeric
decimal
Fixed precision and scale numeric data from -10^38 +1 through 10^38 –1.
numeric
Functionally equivalent to decimal.
money and smallmoney
money
Monetary data
values
from
-2^63
(-922,337,203,685,477.5808)
through
2^63
-
1
(+922,337,203,685,477.5807), with accuracy to a ten-thousandth of a monetary unit.
smallmoney
Monetary data values from -214,748.3648 through +214,748.3647, with accuracy to a tenthousandth of a monetary unit.
Approximate Numerics
float
Floating precision number data from -1.79E + 308 through 1.79E + 308.
real
Floating precision number data from -3.40E + 38 through 3.40E + 38.
38
datetime and smalldatetime
datetime
Date and time data from January 1, 1753, through December 31, 9999, with an accuracy of threehundredths of a second, or 3.33 milliseconds.
smalldatetime
Date and time data from January 1, 1900, through June 6, 2079, with an accuracy of one minute.
Character Strings
char
Fixed-length non-Unicode character data with a maximum length of 8,000 characters.
varchar
Variable-length non-Unicode data with a maximum of 8,000 characters.
text
Variable-length non-Unicode data with a maximum length of 2^31 - 1 (2,147,483,647)
characters.
Unicode Character Strings
nchar
Fixed-length Unicode data with a maximum length of 4,000 characters.
nvarchar
Variable-length Unicode data with a maximum length of 4,000 characters. sysname is a systemsupplied user-defined data type that is functionally equivalent to nvarchar(128) and is used to
reference database object names.
ntext
Variable-length Unicode data with a maximum length of 2^30 - 1 (1,073,741,823) characters.
Binary Strings
binary
Fixed-length binary data with a maximum length of 8,000 bytes.
varbinary
Variable-length binary data with a maximum length of 8,000 bytes.
image
Variable-length binary data with a maximum length of 2^31 - 1 (2,147,483,647) bytes.
Other Data Types
39
cursor
A reference to a cursor.
sql_variant
A data type that stores values of various SQL Server-supported data types, except text, ntext,
timestamp, and sql_variant.
table
A special data type used to store a result set for later processing .
timestamp
A database-wide unique number that gets updated every time a row gets updated.
uniqueidentifier
A globally unique identifier (GUID).
MaxDB: Data Type (data_type)
As well as specifying the column name when you define columns, you can also specify data types.
Syntax
<data_type> ::=
CHAR[ACTER] [(<unsigned_integer>)] [ASCII | BYTE | EBCDIC | UNICODE]
|VARCHAR [(<unsigned_integer>)] [ASCII | BYTE | EBCDIC | UNICODE]
| LONG [VARCHAR] [ASCII | BYTE | EBCDIC | UNICODE]
| BOOLEAN
| FIXED (<unsigned_integer> [,<unsigned_integer>])
| FLOAT (<unsigned_integer>)
| INT[EGER] | SMALLINT
| DATE | TIME | TIMESTAMP
unsigned_integer
CHAR[ACTER], VARCHAR, LONG[VARCHAR], BOOLEAN, FIXED, FLOAT, INT[EGER], SMALLINT,
DATE, TIME, TIMESTAMP
Explanation
40
For the following character strings, a code attribute can be entered as part of a column definition
(column_definition), if required: CHAR[ACTER], VARCHAR, LONG[VARCHAR]
In addition to the data types defined above, the following data types are permitted in a column definition
and are mapped as follows to the data types below:
Data Type
Is Mapped To
BINARY(p)
FIXED(p)
DEC[IMAL](p,s)
FIXED(p,s)
DEC[IMAL](p)
FIXED(p)
DEC[IMAL]
FIXED(5)
DOUBLE PRECISION
FLOAT(38)
FLOAT
FLOAT(16)
FLOAT(39..64)
FLOAT(38)
LONG VARCHAR
LONG
NUMERIC(p,s)
FIXED(p,s)
NUMERIC(p)
FIXED(p)
NUMERIC
FIXED(5)
REAL(p)
FLOAT(p)
REAL
FLOAT(16)
SERIAL
FIXED(10) DEFAULT SERIAL
SERIAL(p)
FIXED(10) DEFAULT SERIAL(p)
Microsoft SQL Server
MaxDB
41
Datentypen fester Länge
Typ
Standard-/
Größe
[Byte]
Initialwert
Erläuterung
i
4/ 4
0
Integer, ganze Zahl
p
8/ 1-16
0
Packed, gepackte Zahl
f
8/ 8
0
Float, Gleitpunktzahl
c
1/ 165535
``
Character,
alphanumerischer
Text
n
1/ 165535
`0...0`
Numerischer Text
d
8/ 8
`00000000`
Date, Datumsangabe
t
6/ 6
`000000`
Time, Zeitangabe
x
1/ 165535
`00...00`
Hexadezimal
Datentypen variabler Länge
string
String, zeichenartiger
Typ
xstring
Xstring, byteartiger
Typ
Tabelle 3.1 – Datentypen
3.3.3 HTMLB
Das Verwenden der bereits in 2.2.3 erwähnten BSP-Extension HTMLB ist dem von
ursprünglichen HTML sehr ähnlich. Eine Seite wird mit den entsprechenden HTMLB Elementen
aufgebaut. Dazu muss jedoch die Extension mit ihrem Namen im HTML Dokument mit
<%@extension name="htmlb" prefix="htmlb" %>
bekannt gemacht werden, und dann jedes
Element nach dem Prinzip <htmlb:Elementname> verwandt werden. Die folgende Tabelle bietet
eine Gegenüberstellung von HTMLB und HTML.
HTMLB Elemente
Elemente zur Seitenaufteilung
Elementname
Beschreibung
entsprechendes HTML Tag
content
Content
-
42
document
documentBody
documentHead
headInclude
form
gridLayout
gridLayoutCell
Dokument
Dokumenten-Body
Dokumenten-Head
Include Bereich des Headers
Formular
Gitter-Layout
Gitter-Layout-Zelle
page
Seite
<html>
<body>
<head> nur für Seitentitel
<head> für styles und scriptings
<form>
unsichtbare <table>
Mischung aus unsichtbaren <tr>
und <td>
-
Elementname
Beschreibung
entsprechendes HTML Tag
breadCrumb
Navigation über Pfadhistorie
-
 breadCrumbItem
Eintrag in der Pfadhistorie
-
button
Drucktaste
<input type="button">
chart
Diagramm
-
checkbox
Ankreuzfeld
<input type="checkbox">
 checkboxGroup
Gruppierung von Ankreuzfeldern
gleicher „name“ mehrerer
Ankreuzfelder
dataContainer
Data Container für dropdownListBox ?
dateNavigator
Kalendersicht
-
days
Tage
-
dropdownListBox
Dropdown-Listbox
<select size=“1“>
fileUpload
Datei hochladen
<input type="file">
group
Gruppe als Designelement
 groupBody
Gruppen-Body
mit <fieldset> vergleichbar
ansonsten mit <table> leicht
nachbaubar
 groupHeader
Gruppen-Header
s.o. entspricht jedoch der
<legend> von <fieldset>
image
Bild
<img>
inputField
Eingabefeld
<input>
itemList
Listeneintrag
label
Beschriftung
<label>
link
Hyperlink
<a href>
listBox
Listbox
<select size=“>1“>
sichtbare Elemente
43
 listBoxItem
Listbox-Eintrag
listItem
Listeneintrag
month
Monat
radioButton
Auswahlknopf
input type="radio"
radioButtonGroup
Auswahlknopfgruppe
gleicher „name“ mehrerer
Auswahlknöpfe
tabStrip
Tabstrip
-
tabStripItem
Tabstrip-Eintrag
-
tabStripItemBody
Body eines Tabstrip-Eintrags
-
tabStripItemHeader
Header eines Tabstrip-Eintrags
-
tableView
TableView
sichtbare <table>
 tableViewColumn TableView-Spalte
 tableViewColumns TableView-Spalten
<option>
Mischung aus sichtbaren <tr> und
<td>
textEdit
TextEdit
<textarea>
textView
TextView zur Textdarstellung
<p>
tray
Tray
-
trayBody
Body des Trays
-
tree
Baum
-
 treeNode
Baum-Knoten
-
week
Woche
?
Tabelle 3.2 – Übersicht über HTMLB Elemente mit HTML Entsprechungen
Jedes dieser HTMLB Elemente lässt sich über Attribute genauer definieren und meistens über das
obligatorische id-Attribut ansprechen. Wie in HTML gibt es dabei zum Beispiel häufig ein
Attribut für die Breite, Höhe, Länge u.v.a.. Oft verfügen die HTMLB Elemente jedoch nicht über
einen funktionellen Mehrwert gegenüber ihrer HTML Entsprechungen. Sie ermöglichen es
vielmehr, aufwandsarm eine SAP Design konforme Anwendung zu entwickeln. Einige Elemente
weisen jedoch auch einen funktionellen Mehrwert auf. So lassen sich beispielsweise breadCrumb,
dataContainer, dropdownListBox und tableView über die Angabe einer internen Tabelle
automatisch befüllen. Desweiteren gibt es Elemente, die es in ihrer Form in HTML vorgefertigt
überhaupt nicht gibt, bzw. die nur komplizierter mithilfe von JavaSkript zu erzeugen wären wie
zum Beispiel das tree Element.
44
Einen auch visuellen
Überblick zu vielen der HTMLB Elemente gibt
es
unter
http://mysap.wdf.sap.corp:2080/resources/htmlb_guidance/.
3.3.4 MVC Design Pattern in BSPs
Wie bereits in 2.2.3 angerissen, werden in BSPs Präsentations-, Ablauf- und Anwendungslogik
streng als Views, Controller und Models voneinander getrennt. Die Views sollten hauptsächlich
mit HTMLB umgesetzt werden. Ähnlich wie bei JavaScript können durch sogenannte
Eventhandler Funktionen ausgelöst werden, mit denen auf Ereignisse in der Präsentationslogik
reagiert wird. Dabei stehen für die HTMLB Elemente allerdings viel weniger Eventhandler zur
Verfügung als in JavaScript. Folgende Tabelle zeigt auf, welche HTMLB Elemente, welche
Eventhandler zur Verfügung stellen. Eventhandler, die „Client“ enthalten, stoßen clientseitige
JavaScript Methoden an, während alle anderen serverseitig die entsprechenden EventhandlerMethoden aufrufen.
HTMLB Element
unterstütze Eventhandler
breadCrumb
onClick
button
onClick, onClientClick
checkbox
onClick, onClientClick
dateNavigator
onDayClick, onMonthClick, onNavigate, onWeekClick
dropdownListBox
onCientSelect, onSelect
image
onClick, onClientClick
inputField
onValueHelp (Client-seitig)
link
onClick, onClientClick
page
onLoad
radioButton
onClick, onClientClick
 tabStripItem
onSelect
tableView
onClientRowSelection, onFilter, onHeaderClick, onNavigate,
onRowSelection
45
HTMLB Element
unterstütze Eventhandler
 tableViewColumn
onCellClick, onItemClick
tray
onCollapse, onEdit, onExpand, onRemove
tree
onTreeClick
 treeNode
onNodeClick
Elemente ohne Eventhandler
breadCrumbItem, chart, checkboxGroup, dataContainer, days, fileUpload, group, groupBody,
groupHeader, itemList, label,. listBox, listBoxItem, listItem, month, radioButtonGroup,.
tableViewColumns, tabStrip, tabStripItemBody, tabStripItemHeader, textEdit, textView,
trayBody, week
Tabelle 3.3 – HTMLB Elemente und ihre Eventhandler
Die verschiedenen Eventhandler lösen bei ihren Namen entsprechenden Ereignissen die
Methoden des Controllers, der Ablauflogik, aus. Das Auslösen der Controllermethoden muss
durch explizites Verwenden dieser geschehen, indem man diesen bei den Attributen des HTMLB
Elements einen Wert zuweist.
<htmlb:breadcrumb
id
= "BreadCrumb1"
tooltip
= "Behaviour Default"
onClick
= "BreadClick1">
<htmlb:breadCrumbItem key="k1" value="text1" />
<htmlb:breadCrumbItem key="k2" value="text2" />
</htmlb:breadCrumb>
Ohne diesen expliziten Aufruf durch das Attribut, wird nicht zum Controller gesprungen, was
u.U. sinnvoll sein kann. So macht es zum Beispiel keinen Sinn, bei jeder Aktion in einem
Formular (z.B. das Anwählen eines Auswahlknopfes) eine Ereignisverarbeitung anzustoßen, da
viele Informationen erst beim endgültigen Absenden der Formulardaten zur Weiterverarbeitung
benötigt werden.
Sollte man mit den vorgestellten Eventhandlern der HTMLB Elemente nicht auskommen, kann
man im Notfall auch ursprüngliches (natives) HTML mit seinen Eventhandlern nutzen und
serverseitige JavaScripts per
<htmlb:headInclude/>
<script language="JavaScript" type="text/javascript">
46
…
</script>
in den View einbinden. Diese Vorgehensweise verstößt allerdings gegen zwei Richtlinien der
aktuellen BSP Entwicklung, welche u.a. Scripting als auch HTML untersagen.
In HTML gibt es folgende Eventhandler:
onAbort (bei Abbruch), onBlur (bei Verlassen), onChange (bei erfolgter Änderung), onClick
(beim Anklicken), onDblClick (bei doppeltem Anklicken), onError (im Fehlerfall), onFocus
(beim Aktivieren), onKeydown (bei gedrückter Taste), onKeypress (bei gedrückt gehaltener
Taste), onKeyup (bei losgelassener Taste), onLoad (beim Laden einer Datei), onMousedown
(bei gedrückter Maustaste), onMousemove (bei weiterbewegter Maus), onMouseout (beim
Verlassen des Elements mit der Maus), onMouseover (beim Überfahren des Elements mit der
Maus), onMouseUp (bei losgelassener Maustaste), onReset (beim Zurücksetzen des Formulars),
onSelect (beim Selektieren von Text), onSubmit (beim Absenden des Formulars), onUnload
(beim Verlassen der Datei)
Bei welchen HTML Elementen die jeweiligen Eventhandler zur Verfügung stehen, ist unter
http://de.selfhtml.org/javascript/sprache/eventhandler.htm einzusehen.
Auch wenn die Entwicklungsumgebung Debugging zulässt, sollte man die Anwendung Schritt
für Schritt wieder aufbauen und nicht gleich alles auf einmal, bevor man das erste Mal testet.
3.3.5 Funktionlitäten
Zusammenhang: Aufzeigen der Probleme durch fehlende funktionelle Möglichkeiten der
Zielplattform bzw. Zeigen, wie solche Grenzen gefunden werden können
Noch umfangreicher als die Datentypen verschiedener Sprachen sind ihre Funktionalitäten,
weswegen das Betrachten verwendeter Funktionalitäten noch wichtiger ist. Hierzu sollten
insbesondere vom normalen Umfang einer Programmiersprache abweichende Funktionalitäten
auf ihre Portierbarkeit geprüft werden. Aber auch Standardfunktionen wie Datenbankoperationen
sollten geprüft werden, um mögliche Probleme ausfindig zu machen.
47
3.4 Portierungsschrit 3/6: Analyse der Ausgangsanwendung
Sollte die Machbarkeitsprüfung für die Anwendung positiv ausgefallen sein, so dass es bei der
bevorstehenden Portierung keine unlösbaren Probleme geben sollte, lohnt es sich, die
Ausgangsanwendung nach dem bisherigen „Kennen Lernen“ nochmals genauer zu analysieren.
Dabei stehen jetzt nicht mehr die verwendeten Funktionalitäten im Vordergrund wie beim
Kennen Lernen sondern die Ablauflogik. In Vorbereitung auf die kommende Optimierung der
Anwendung und Implementierung der Zielanwendung empfiehlt sich dabei, die gesamte
Ablauflogik in Form von Nassi-Schneidermann-Diagrammen ab zu bilden. Zum Darstellen der
Ablauflogik bietet sich die Form eines Nassi-Schneidermann-Diagramms an, weil dieses die
Ablauflogik sehr gut verständlich und anschaulich zeigt. Zusammenhänge zwischen Methoden
und ihren Aufrufen an anderen Stellen werden übersichtlich gezeigt, was bei der
Fließtextdarstellung des originalen Quelltextes nicht der Fall ist. Der Quelltext sollte vom
Kennen Lernen noch einigermaßen bekannt sein, so dass sich nicht erneut vollkommen neu in ihn
eingearbeitet werden muss.
48
3.5 Portierungsschrit 4/6: Optimierung
Natürlich könnte nach dem vorhergegangenen kennen Lernen der Ausgangsanwendung alleine
aufgrund der notwendigen Funktionalitäten die Zielanwendung von Grund auf neu umgesetzt
werden. Es trägt jedoch zur Güte der Zielanwendung bei, wenn eine vorhandene Ablauflogik
erneut geprüft und gegebenenfalls optimiert wird. Dadurch wird die Les- und Wartbarkeit
verbessert. Eine Anwendung wird außerdem selten von der gleichen Person, die sie ursprünglich
entwickelt hat, portiert, deswegen wirkt sich alleine die Prüfung durch eine weitere Person positiv
aus, da die mögliche Betriebsblindheit des Ursprungsentwicklers ausgeglichen werden kann.
Außerdem gewinnt auch der portierende Entwickler durch die bisherige Umsetzung der
Anwendung, weil eventuelle Feinheiten umgesetzt wurden, an die man auf Anhieb gar nicht
denken würde. Kurzum ist es auf jeden Fall besser, eine bestehende Logik zu überarbeiten und
somit zu prüfen, als eine neue zu erarbeiten, welche dann nicht noch mal in Frage gestellt wird.
3.5.1 Daten
Als erstes sollten alle verwendeten Datentypen der Variabeln überprüft werden. Hier ist von
Interesse, ob die möglichen Werte einer Variablen deren Datentyp überhaupt maximal ausfüllen
können oder ob auch ein Datentyp mit weniger Speicherplatz ausreichend wäre. Manchmal
werden Datentypen für Variablen können auch unlogisch vergeben, so dass beispielsweise
anstelle eines booleschen Datentyps ein einzelnes Zeichen (char) verwendet wird, um eine ja/nein
Möglichkeit für eine Variable abzuspeichern.
3.5.2 Ablauflogik
Ist die Ablauflogik der Ausgangsanwendung vollständig verstanden und als NassiSchneidermann-Diagramm abgebildet, kann mit der Optimierung begonnen werden. Bei der
Optimierung gilt es v.a. Logikfehler auszumerzen oder ungenutzten Code zu entfernen.
Ungenutzter Code ist Code, welcher unverwendet bleibt, weil er gar nicht aufgerufen wird oder
gar auskommentiert wurde. Auch nicht verwendete Variablen sollten gesucht und entfernt
werden, da sie den Entwickler nur verwirren. Logikfehler können sehr vielseitig aussehen.
Beispielhaft wären unlogische Abläufe zu nennen, bei denen Variablenwerte mehrfach
hintereinander geändert werden, ohne diese zwischen den Werteänderungen zu verwenden.
49
Einfach alle Abläufe, die keinerlei auf die Anwendung oder die Daten wirksame Veränderungen
bewirken, sind unlogisch, nutzlos und sollten deswegen ausgebessert werden.
Redundanzen Untermenge von Logikfehler?
Redundanzen in Form von Wiederholungen können sich auch negativ auf das Verstehen des
Codes auswirken, da mit zunehmender Menge die Übersichtlichkeit sinkt und somit der
Überblick schwindet. Wiederholungen treten zum Beispiel bei Fallunterscheidungen auf, wenn
die ähnliche Behandlung von eintretenden Fällen separat verarbeitet wird. Dort läßt sich eventuell
mit Variablen ein vorhandener kleiner Unterschied vereinheitlichen, so dass danach ein Fall für
beide ausreicht.
Generell kann jede mehrfach auftretende Abfolge von Befehlen zu einer kleinen Funktion
zusammengefasst werden, um Redundanzen zu vermeiden.
petrinetz? (also das Ding mit den Muenzen)
3.5.3 Oberfläche
Die grafische Oberfläche der Anwendung sollte auch auf ihr Optimierungspotential untersucht
werden. Dabei gilt es, sie so intuitiv bedienbar wie möglich zu machen. Dem Benutzer sollte,
ohne groß nachdenken zu müssen, klar sein, was er wo und wie zu tun hat. Ist dies nicht alleine
durch die Anordnung der Elemente und ihrer Benennung möglich, sollte nicht vor
beschreibenden Erklärungstexten zurück geschreckt werden.
3.5.4 Datenbank
Besteht die Möglichkeit, den Datenbankentwurf für die Portierung zu überdenken und ihn zu
optimieren, so sollte dies durchaus in Betracht gezogen werden. Grenzen wären solch einer
Datenbankoptimierung beispielsweise dadurch gesetzt, dass sich die Portierung der Daten dann
komplexer als durch die Skriptvorgabe (vgl. 3.5.6 Datenportierung S.57 und Programmkode 3.1
S.62) gestalten würde. Es wäre folglich eine finanzielle und zeitliche Frage, ob eine
50
Datenbankoptimierung vorgenommen werden kann. Die Datenbankoptimierung bietet mit der
Minimierung logischer Probleme, dem Vermeiden von Redundanzen21 und der daraus
entstehenden Einsparung von Speicherkapazität, dem Aufrecht erhalten der Integrität22 und der
Vereinfachung von Aktualisierungen der Datenbankeinträge viele Vorteile. Die Problematik, dass
die alten Daten auch für bisherige Anwendungen verfügbar und verwendbar sein müssten, besteht
insofern nicht, dass auch all diese Anwendungen portiert werden müssen.
Wie kann eine Datenbank nun also optimiert werden?
Analog zur Datentyoptimierung (vgl. 3.5.1) der Variablen einer Anwendung wäre ein erster
relativ unaufwendiger Schritt das Überprüfen der verwendeten Datentypen aller Attribute in der
Datenbank. Dabei stellt sich die Frage, ob die möglichen Werte eines Attributes dessen Datentyp
überhaupt maximal ausfüllen können oder ob auch ein Datentyp mit weniger Speicherplatz
genügen würde. Datentypen für Attribute können auch unlogisch vergeben worden sein, so wird
manchmal anstelle eines booleschen Datentyps ein einzelnes Zeichen (char) verwendet, um eine
ja/nein Möglichkeit für ein Attribut abzuspeichern.
Im
Gegensatz
zu
dieser
einfachen
Datentypoptimierung,
ist
die
Optimierung
des
Datenbankentwurfs selbst weitaus aufwendiger. Hier sollten zunächst alle Tabellen der
Datenbank als Functional-Dependency-Diagramm23 (FD-Diagramm) dargestellt werden, um
Abhängigkeiten
zwischen
den
Attributen
einer
Tabelle
darzustellen.
Viele
Datenbankmanagementsysteme unterstützen glücklicherweise die Funktionalität, solche ERDiagramme automatisch zu generieren, so dass dies nicht in Handarbeit getan werden muss (auch
fd-diagramm?). Anhand des FD-Diagramms kann danach der Datenbankentwurf einfacher
normalisiert werden, da es anschaulicher als ohne Darstellung ist. Bei der Normalisierung24 der
Datenbank gibt es sechs/neun Stufen, denen ein Datenbankentwurf entsprechen kann, wobei
21
Redundanz: hier Mehrfachhaltung von Daten in einer Datenbank
Datenkonsistenz, Verfügbarkeit, Vertraulichkeit
23
Die Funktionale Abhängigkeit gibt an, wie Attribute von einander abhängen, ob beispielsweise einem Wert von
Attribut A nur ein bestimmter Wert von Attribut B zugeordnet werden kann.
24
Normalisierung: ideales Strukturieren einer Datenbanktabellen zum Vermeiden von Redundanzen
22
51
i.d.R. die ersten drei ausreichend sind. Jede Normalform schließt die Bedingungen der vorherigen
Normalformen ein.
In der ersten Normalform befinden sich alle Tabellen, deren Attribute atomar sind, d.h. ihre
Wertinformationen nicht mehr in Einzelinformationen zerlegt werden können. Beispielhaft wäre
der Name einer Person in die Einzelinformationen Vorname und Familienname zerlegbar.
#25Person_ID
Name
#Person_ID
Vorname
Familienname
001
‚Ulrike Koch’
001
‚Ulrike’
‚Koch’
Abbildung 3.4 – 1. Normalisierung einer Tabelle
In der zweiten Normalform befinden sich Tabellen, die keine zusammengesetzten
Primärschlüssel sondern nur einzelne haben. Bei der Verwaltung von Musik CDs und ihren
Titeln, müssen allgemeine CD Informationen (Titel, Interpret, Preis, etc.) getrennt von den
einzelnen Liedinformationen (Liedlänge, Liedtitel, Liedposition, etc.) gespeichert werden, um der
zweiten Normalform zu entsprechen. Der CD Titel wird dann in der Liedertabelle als
Fremdschlüssel mit angegeben (trotzdem 2.NF?). Ohne diese Maßnahme, kämen bei einer
einzigen Tabelle die CD Information bei jedem CD Lied redundant vor.
#CD_ID CD_Titel
CD_Interpret
CD_Preis #Track_ID Liedtitel
4711 Not That Kind
Anastacia
15,99€
1 Not That Kind
4711 Not That Kind
Anastacia
15,99€
2 I'm Outta Love
4711 Not That Kind
Anastacia
15,99€
3 Cowboys & Kisses
4712 Wish You Were
Pink Floyd
14,59€
1 Shine On You Crazy
Here
Diamond
Tabelle 3.4 – einzelne nicht 2. Normalform entsprechende Tabelle
25
#: Symbol für ein Schlüsselattribut, von Schlüsselattributen sind andere Attribute funktional abhängig
52
Das
CD_Titel
FD-Diagramm
Ursprungstabelle
#CD_ID
!
#Track_ID
weist
der
mit
der
CD_Interpret
Abhängigkeit des Liedtitels von einem
CD_Preis
zusammengesetzten
Schlüssel
eine
Verletzung der 2. Normalform auf!
Liedtitel
Diese Verletzung der 2. Normalform
CD_Titel
wird durch das Verfrachten der
Liedtitel und ihrer #Track_ID in eine
weitere
Tabelle
behoben.
#CD_ID
CD_Interpret
Dabei
CD_Preis
kommt #CD_ID als Fremdschlüssel
(kein
zusammengesetzter
#CD_ID
schlüssel???) mit in die Tabelle.
Liedtitel
#Track_ID
Abbildung 3.5 – 2. Normalisierung einer Tabelle
#CD_I CD_Titel
CD_Interpret
CD_Preis
D
4711 Not That Kind
Anastacia
15,99€
4712 Wish You Were Here
Pink Floyd
14,59€
#CD_I
#Track_ID Liedtitel
D
4711
1 Not That Kind
4711
2 I'm Outta Love
4711
3 Cowboys & Kisses
4712
1 Shine On You Crazy Diamond
Tabelle 3.5 – zwei der 2. Normalform entsprechenden Tabellen
53
Um auch der dritten Normalform zu entsprechen, darf in der Tabelle ein Attribut nicht abhängig
von einem zweiten sein, dass nicht der Primärschlüssel ist, logischerweise selbst aber genau von
diesem abhängig ist. Werden bei den Mitarbeiterdaten einer Firma zum Beispiel auch deren
Kostenstellenabteilung samt Kostenstellennummer gespeichert, tritt erstere unnötig und vor allem
redundant auf, da die Kostenstellennummer die Kostenstellenabteilung eindeutig angibt. Die
Vermeidung dieser Redundanz wird wieder durch die Aufteilung in zwei Tabellen erreicht.
In einer zweiten Tabelle werden die Kostenstellennummern und die Kostenstellenabteilungen
gespeichert und gleichzeitig bleiben die Kostenstellennummern als Fremdschlüssel in der
Mitarbeiterdatentabelle. Da jede Kostenstellennummer nur einer Kostenstellenabteilung
zugeordnet werden kann, wird sie in der zweiten Tabelle zum Primärschlüssel.
#Person_ID Vorname
Familienname
Abteilung
#Kostenstelle
123 Reiner
Zufall
Einkauf
2004
144 Frank
Frei
Verkauf
2006
146 Susi
Sorglos
Einkauf
2004
148 Frey
Erfunden
Einkauf
2005
Tabelle 3.6 – einzelne nicht 3. Normalform entsprechende Tabelle
Das
Vorname
FD-Diagramm
tabelle
#Person_ID
weist
der
mit
Ursprungs-
der
alleinigen
Familienname
Abhängigkeit der Abteilung von einem
#Kostenstelle
nicht
dem
chenden
!
Primärschlüssel
Attribut
der
entspre-
Tabelle
eine
Verletzung der 3. Normalform auf!
Abteilung
Diese Verletzung der 3. Normalform
wird
durch
das
Verfrachten
Vorname
der
Abteilung in eine weitere Tabelle
#Person_ID
behoben. Dabei verbleibt #Kostenstelle
Familienname
#Kostenstelle
als Fremdschlüssel in der ersten
Tabelle.
54
#Kostenstelle
Abteilung
Abbildung 3.6 – 3. Normalisierung einer Tabelle
#Person_ID Vorname
Familienname
#Kostenstelle
123 Reiner
Zufall
2004
144 Frank
Frei
2006
146 Susi
Sorglos
2004
148 Frey
Erfunden
2005
#Kostenstelle Abteilung
2004 Einkauf
2005 Einkauf
2006 Verkauf
Tabelle 3.7 – zwei der 3. Normalform entsprechenden Tabellen
55
Portierungsschrit 5/6: Implementierung der BSP Anwendung
3.5.5 Vorarbeiten
Wie in 3.1.2 angesprochen gibt es hauptsächlich zwei Vorgehensweisen, um Software zu
implementieren. Aus den bereits genannten Gründen (Fehlerfindung, Motivation) wird hier die
Top Down Methode empfohlen, bei der zunächst ein
kleiner funktionierender Teil implementiert wird und
dann
nach
und
nach
um
alle
weiteren
Funktionalitäten erweitert wird.
Im Bezug auf eine Webanwendung ist der erste
kleinste Teil die Oberfläche der Einstiegsseite. Wie
diese in R/3 umgesetzt wird, soll als erstes gezeigt
werden.
Befindet
Entwicklungssystem,
man
sich
steht
in
einem
einem
R/3
mit
der
Transaktion SE80, dem Object Navigator (vgl.
2.2.4),
die
Entwicklungsumgebung
für
BSP
Anwendungen zur Verfügung.
Abbildung 3.7 – SE80 Erstellung Paket
Hier kann eine BSP-Applikation erstellt werden, welche zunächst nichts beinhaltet sondern nur
als Behälter für alle noch kommenden Komponenten dient. Zum Erstellen einer BSP-Applikation
wird zuerst ein Paket für diese benötigt. Pakete sind ihrerseits ebenfalls Behälter, Behälter für
„sachlogisch zusammenhängende Entwicklungsobjekte, die gemeinsam in ein Nachfolgesystem
transportiert werden“ (SAP® Web Application Server, S.280). Die Pakete könnten auch einfach
als Ordner zur besseren Organisation aller Komponenten gesehen werden, zumal sie im GUI
ähnlich wie in anderen Dateiverwaltungsprogrammen als solche dargestellt werden. Sollte die
Zielanwendung Teil einer insgesamt noch umfangreicheren Anwendung sein, wählt man einfach
eines derer Pakete, ansonsten muss zuvor ein neues Paket angelegt werden. Das Anlegen eines
neuen Pakets funktioniert im Objekt Navigator recht einfach. Dazu muss im Repository Browser
lediglich in der Drop Down Liste der Objekttyp Paket ausgewählt werden und im Inputfeld
darunter der Name des zukünftigen Pakets eingegeben werden. Bei der Namensgebung gilt die
56
Konvention, dass SAP-eigene Programme mit dem Buchstaben ‚S’ beginnen, einige
Kundenfirmen mit einem nur für sie reservierten Buchstaben und alle anderen Kunden mit ‚Y’
oder ‚Z’. Wird nun der Anzeigen Button
genutzt erfolgt automatisch die Abfrage zur
Erstellung des neuen Pakets (vgl. Abbildung 3.7 – SE80 Erstellung Paket), welche zur Erstellung
bejaht wird.
Erst nachdem ein Paket vorhanden ist, kann auch die BSP-Applikation, bzw. ihr Behälter, erstellt
werden. Dies ist einfach per Rechtsklick und dem dadurch angebotenen Menü möglich (vgl.
Abbildung 3.8 – SE80 Erstellung einer BSP Anwendung).
Abbildung 3.8 – SE80 Erstellung einer BSP Anwendung
3.5.6 Datenportierung
Odbc verbindung konfigurieren: Server der 3 r/3 systeme eintragen, maxdb 7.4 treiber
notwendig!
Dank der im Microsoft Betriebssystemen implementierten ODBC26 API27 läßt sich die Portierung
der Datenbank mit Hilfe eines Perl Skriptes recht einfach gestalten. Dabei müssen jedoch
26
ODBC: Open Database Connectivity
57
zunächst innerhalb der BSP Anwendung die leeren Datenbanktabellen erstellt werden. Dies
geschieht, indem man nach Rechtsklick auf das entsprechende Paket der Anwendung Anlegen
DDIC-Objekt
►
►
Datenbanktabelle (ähnlich Abbildung 3.8) auswählt. Zusätzlich zu den bisher
erwähnten Namenskonventionen (3.5.5) darf ein Datenbanktabellenname an den ersten drei
Stellen keinen Unterstrich ‚_’ beinhalten. Als Nächstes müssen unter Auslieferung und Pflege die
Auslieferungsklasse und die Tabellensicht-Pflege ausgewählt werden.
Abbildung 3.9 – Auslieferungsklassen
Als Auslieferungsklassen stehen sieben zur Verfügung, die über das
Symbol aufgelistet
werden (Abbildung 3.9), wobei A die gebräuchlichste Klasse ist. Für die Tabellensicht-Pflege
gibt es die Möglichkeiten, dass die Anzeige/Pflege

eingeschränkt erlaubt

erlaubt

nicht erlaubt
ist. In den meisten Fällen wird die Anzeige/Pflege erlaubt. Des Weiteren muss für eine neue
Datenbanktabelle über Technische Einstellungen in der Anwendungsfunktionsleiste die Datenart
(Abbildung 3.10) und die Größenkategorie (Abbildung 3.11) vor eingestellt werden.
27
API: Application Programming Interface
58
Abbildung 3.10 – Datenart
Abbildung 3.11 – Größenkategorie
Bei der Angabe der Größenkategorie ist zu beachten, dass diese dynamisch nach der reservierten
Größe für einen Datensatz berechnet wird. Nach Festlegen der einzelnen Attribute mit ihren
Feldlängen sollte also überprüft werden, ob die anfangs gewählte Größenkategorie noch
ausreicht! Vorher müssen die Attribute jedoch erst einmal gepflegt werden, was im
Werkzeugbereich unter dem Reiter „Felder“ gemacht wird.
Danach werden auf dem Microsoft SQL Server die ODBC Datenquellen angepasst bzw. erstellt,
die die Verbindung zur Datenbank der Ausgangsanwendung und zur Datenbank der
Zielanwendung darstellen und somit die Datenportierung zwischen den beiden ermöglichen
sollen.
Dies geschieht auf dem Datenbankserver (MS SQL 2000) unter Programs->Administrative
Tools->Data Sources (ODBC) (vgl. Abbildung 3.12)
Abbildung 3.12 – ODBC Datenquellen Administrator öffnen
59
Abbildung 3.13 – ODBC Datenquellen Administrator
Dort können unter System DSN28 neue Datenquellen angelegt oder bestehende konfiguriert
werden (vgl. Abbildung 3.13). Auf jeden Fall wird eine Verbindung zur Datenbank der
Ausgangsanwendung gebraucht, um die Daten per Perl Skript auszulesen. Als Treiber für diese
Datenquelle muss der SQL Server Treiber (vgl. Abbildung 3.13) verwendet werden. Im
nachfolgenden Dialog muss der Datenquelle ein eindeutiger Name vergeben werden, während
eine Beschreibung der Datenquelle optional ist. Sollte der Server der Datenquelle jedoch von
ihrem Namen abweichen, muss er noch explizit angegeben werden, da mit dem Namen als Server
natürlich keine funktionierende Verbindung hergestellt werden kann. Im nächsten Schritt des
Dialoges wird die Prüfung der Authentizität des Benutzers der Datenquelle bestimmt. Für die
Zwecke des Perl Skriptes eignet sich ein fester Benutzer, der als einziger die Berechtigung zum
Nutzen der Datenquelle hat. Er muss für die Datenbank mit den entsprechenden
Leseberechtigungen gepflegt sein und wird in der Datenquelle und später bei ihrer Nutzung samt
Passwort
angegeben.
Vor
dem
folgenden
Dialogschritt
testet
die
ODBC
Administrationsanwendung schon die Verbindung und kann folglich nur bei Erfolg alle auf dem
28
DSN: Data Source Name
60
Server vorhandenen Datenbanken als Quelle der Datenquelle anbieten. Alle weiteren
Einstellungen können standardmäßig bleiben und die Erstellung der Datenquelle abgeschlossen
werden.
Das Erstellen der Datenquelle zu einem R/3® ist weniger komplex. Hierzu muss bei der Auswahl
des Treibers der für eine MaxDB gewählt werden (vgl. Abbildung 3.14).
Abbildung 3.14 – ODBC Datenquellen Treiberauswahl
Sollte der MaxDB ODBC Treiber nicht in der Treiberliste aufgeführt sein, kann er unter
http://www.sapdb.org/7.4/sap_db_software.htm herunter geladen werden. Im Dialog nach der
Auswahl des Treibers muss lediglich wieder ein eindeutiger Name für die Datenquelle vergeben
werden, sowie der Name der R/3 Datenbank mit der sich verbunden werden soll und der
Servername des Datenbankrechners. I.d.R. ist der Datenbankname mit dem des Systemnamens
identisch.
Nachdem die Verbindungen zu den Datenbanken per Datenquellen hergestellt wurden, kann das
Perl Skript29 angepasst werden. Beim Anpassen des Perl Skriptes muss folgendes beachtet
werden:

29
grün Geschriebenes sind Kommentare
Das Skript wurde aus einem bereits durch meinen Betreuer Andreas Mazzola programmierten angepasst
61

blau Geschriebenes sind Variablennamen oder Teile davon, die zum besseren Verständnis
in aussagekräftigere Namen umgewandelt werden können, die sich direkt auf die zu
portierende Datenumgebung beziehen (Bsp.: die Ausgangsdatenbank heißt ‚DB_Einkauf’,
NameQuellDB wird also in DB_Einkauf umgewandelt)

rot Geschriebenes sind Bezeichnungen, die zum Funktionieren des Perl Skriptes unbedingt
an
die
zu
portierende
Datenumgebung
angepasst
werden
müssen!
So
muss
NameQuellDSN exakt der Name sein, mit dem vorhin die ODBC Datenquelle zur
Ausgangsdatenbank benannt wurde. Auch Tabellennamen und Attribute müssen die Namen
haben, mit denen sie angelegt wurden. Das gleiche gilt für Benutzer, ihre Passwörter und
Pfadangaben.
Programmkode 3.1 – anzupassendes Perl Skript für Datenportierung
use Win32;
use Win32::ODBC;
use Sys::Hostname;
#################################################################
# globale Variablen
#################################################################
# System DSNs für Datenbankverbindungen zu Ausgangs- und
Zieldatenbank
$SYSTEM_DSN_NameQuellDB = "NameQuellDSN";
# Ausgangsdatenbank
(lesen)
$SYSTEM_DSN_NameZielDB = "NameZielDSN"; # Zieldatenbank
(schreiben)
$Data_NameQuellDB = new
Win32::ODBC("dsn=".$SYSTEM_DSN_NameQuellDB."; UID=UsernameQuelle;
pwd=PasswortQuelle");
$Data_NameZielDB = new
Win32::ODBC("dsn=".$SYSTEM_DSN_NameZielDB."; UID=UsernameZiel;
pwd=PasswortZiel");
# Konstanten
$HOST = hostname;
# lokaler
Rechnername
$LOGOrdner = "\\\\".$HOST."\\LogOrdnerPfad"; # LogOrdner
$LOGDatei = $LOGOrdner."NameLogDatei.log";
# absoluter
Pfad
62
$LOGDateiGroesze = 1000000;
Dateigröße
# max
#################################################################
# Hauptprogramm
#################################################################
&Log($LOGDatei,"Skript gestartet");
&PortiereDaten();
Datenportierung
# Aufruf der Funktion zur
# Close Database Connections
$Data_NameQuellDB ->Close();
$Data_NameZielDB ->Close();
#################################################################
# Funktionen
#################################################################
#---------------------------------------------------------------# PortiereDaten
#---------------------------------------------------------------sub PortiereDaten
{
&Log($LOGDatei,"portiert Daten...");
print "portiert Daten…";
Fenster
# Ausgabe DOS
my %hash = ();
my $VarQuellPrimärschlüssel, $VarQuellAttribut02,
$VarQuellAttribut03, $VarQuellAttribut04, $err;
my $index=0;
# Zählvariable für Array
my @liste,$id,$fehler;
)
# eventuell vorhandene Daten in Zieltabelle löschen
if ( $Data_NameZielDB->Sql("DELETE FROM NameZielDBTabelle")
{
$fehler = Win32::ODBC::Error();
&Log($LOGDatei,$fehler);
}
# Selektion ganzer Tabelle könnte zu viele Daten für Skript
bedeuten -> Selektion wird zweigeteilt
# 1.Teil der Selektion:
# Selektieren aller Primärschlüssel
if( $Data_NameQuellDB->Sql("Select DISTINCT
NameQuellPrimärschlüssel from NameQuellDBTabelle ") )
{
$fehler = Win32::ODBC::Error();
&Log($LOGDatei,$fehler);
63
}
# schreiben der Primärschlüssel in ein Array
while($Data_NameQuellDB->FetchRow())
{
%hash = $Data_NameQuellDB->DataHash;
$liste[$index++] = $hash{'NameQuellPrimärschlüssel'};
}
$index = 0;
# 2. Teil der Selektion:
# Array der Primärschlüssel wird durchlaufen
foreach $id (@liste)
{
# Primärschlüsseldaten aus Tabelle holen
if( $Data_NameQuellDB->Sql("Select
NameQuellPrimärschlüssel,
NameQuellAttribut02,NameQuellAttribut03,NameQuellAttrib
ut04 from NameQuellDBTabelle where
NameQuellPrimärschlüssel = '".$id."' ") )
{
$err = Win32::ODBC::Error();
&Log($LOGDatei,$id." :".$fehler);
}
while($Data_NameQuellDB->FetchRow())
{
%hash = $Data_NameQuellDB->DataHash;
$VarQuellPrimärschlüssel =
$hash{'NameQuellPrimärschlüssel'}
$VarQuellAttribut02 =
$hash{'NameQuellAttribut02'};
$VarQuellAttribut03 =
$hash{'NameQuellAttribut03'};
$VarQuellAttribut04 =
$hash{'NameQuellAttribut04'};
# Primärschlüsseldaten in Zieltabelle schreiben
if ( $Data_NameZielDB->Sql("INSERT INTO
ZielDBTabelle
(NameZielPrimärschlüssel,NameZielAttribut02,NameZi
elAttribut03,NameZielAttribut04)
VALUES('$VarQuellPrimärschlüssel','$VarQuellAttrib
ut02','$VarQuellAttribut03','$VarQuellAttribut04')
"))
{
$fehler = Win32::ODBC::Error();
&Log($LOGDatei,$fehler." Primärschlüssel =
".$VarQuellPrimärschlüssel);
}
}
}
}
# Ende PortiereDaten ------------------------------------------------64
#--------------------------------------------------------------------# Log
schreibt Strings in die LogDatei
# Parameter:
1. LogDateiPfad
#
2. LogString
#--------------------------------------------------------------------sub Log
{
my $logZeit = localtime(time);
# löschen und anlegen der Logdatei bei überschrittener max.
Größe
if ((-s $_[0]) >= $LOGDateiGroesze )
{
unlink($_[0]) || die return 0;
open(WRITE,"> ".$_[0]) || die return 0;
}
# hinzufügen neuer Logdaten an bestehende/zu erstellende
Logdatei
else { open(WRITE,">> ".$_[0]) || die return 0 }
print WRITE $logZeit.": ".$_[1]."\n";
Fenster
close(WRITE);
return 1;
}
# Ausgabe DOS
# Ende Log -----------------------------------------------------------
Nun kann das Perl Skript auf dem Rechner, auf dem vorhin die ODBC Datenquellen angelegt
wurden ausgeführt werden. Sollte dort noch kein Perl installiert sein, kann man sich auf
http://www.activestate.com/Products/ActivePerl/
eine
der
gängigsten
Perl
Versionen
herunterladen und installieren.
Da die Datenbankinhalte beim Transport zwischen den R/3 Instanzen (Integrations-,
Konsolidierungs- und Belieferungssystem) nicht mit transportiert werden, ist die Portierung zu
jedem einzelnen der drei Systeme nötig. Dazu muss aber lediglich in der Datenquelle, das
Zielsystem mit seinen Zugangsdaten geändert werden, bevor das Perl Skript einfach ein weiteres
mal ausgeführt wird.
65
3.5.7 Umsetzung
Nun sind alle Vorbereitungen getroffen, um zum ersten sichtbaren Teil der Anwendung zu
kommen. Nachdem bisher nur die Theorie des MVC Design Pattern und dessen strikter Trennung
von
Präsentations-,
Ablauf-
und
Anwendungslogik erwähnt wurde, soll nun
dessen Umsetzung in der Praxis gezeigt werden.
Dazu wird als Element der Präsentationslogik
ein View angelegt. Zur Erzeugung eines Views
wählt man im durch Rechtsklick angezeigten
Menü einer BSP Anwendung das Anlegen einer
Seite (vgl. Abbildung 3.15). Beim Anlegen der
Seite
wird
dann
der
Seitentyp
vom
Abbildung 3.15 – SE80 Menü BSP Anwendung
standardmäßigen Seite mit Ablauflogik in View geändert. In den Eigenschaften dieses Views ist es
noch sehr wichtig, beim Seitentyp auch die Controllerklasse zur Ablaufsteuerung anzugeben.
Standardmäßig steht dort noch die Basisklasse
CL_BSP_CONTROLLER2,
von der alle Controller
abgeleitet werden.
Die Oberfläche der Einstiegsseite wird im dafür angelegten View mit HTMLB umgesetzt (vgl.
2.2.3).
Enthält diese ein Formular, welches Benutzerdaten weitergibt.
3.6 Portierungsschrit 6/6: Nacharbeiten
Wie zu jeder Softwareentwicklung gehört auch zur Portierung eine Dokumentation. Dabei kann
in der Funktionsbeschreibung jedoch größtenteils, wenn nicht sogar komplett, die Dokumentation
der Ausgangsanwendung übernommen werden.
66
4 Anwendung und Prüfung des Portierungsverfahrens
Nachdem nun im voran gegangenen Kapitel in der Theorie eine sinnvoll erscheinende
Vorgehensweise zur Portierung entwickelt wurde, soll diese nun auch am praktischen Beispiel
einer vorzunehmenden Portierung geprüft werden.
4.1 Kennen Lernen der Ausgangsanwendung
Die Anwendung, die zur Prüfung des im vorigen Kapitel entwickelten Portierungsverfahrens
portiert wird, stellt eine Suche über alle von der SAP Hosting betreuten Server dar. Dabei gibt es
eine für den Anwender einfache Suche („Simple“) und eine Expertensuche („Expert“), wobei
während dieser Diplomarbeit zunächst nur die umfangreichere einfache Suche portiert wird. Im
Zusammenhang dieser Suchanwendung bedeutet „einfach“, dass der Anwender kein SQL Wissen
braucht und das Suchformular dementsprechend benutzerfreundlich mit umso komplexerer
Ablauflogik im Hintergrund gestaltet ist. Die einfache Suche ist also viel aufwendiger
umzusetzen als die Expertensuche und gilt somit als oberflächenintensiver (s. 3.1.1, S. 28).
67
Abbildung 4.1 – Oberfläche des Suchformulars der Ausgangsanwendung
In der einfachen Suche kann der Benutzer bis zu vier Suchkriterien angeben (vgl. Abbildung 4.1).
Dabei stehen alle möglichen Suchkriterien als Auswahlliste zur Verfügung. Je nach gewähltem
Kriterium wird dann zwei Felder weiter Freitexteingabe, eine Auswahlliste mit „JA“ und „NEIN“
oder eine Auswahlliste mit diversen Datenbankeinträgen angeboten. Dies kommt daher, dass
manche Suchkriterien alle möglichen Werte haben (z.B. Backup Host Name, Backup IP
Address), andere nur vorhanden oder eben nicht sind (z.B. Alerting, Backup, …) und wieder
andere eine sehr begrenzte und aus der Datenbank dynamisch zu erfahrende festgelegte Menge an
Werten haben (z.B. Cost Center, Country, …). Zwischen dem Suchkriterium und dessen Wert
kann noch angewählt werden, ob das gewählte Suchkriterium den angegebenen Wert haben soll
oder alle anderen außer diesem. Insgesamt lassen sich so vier Bedingungen für eine Suche
verknüpfen, wobei dasselbe Suchkriterium mehrfach verwendet werden kann. Die einzelnen
Suchkriterien können auch mit UND verknüpft werden, während standardmäßig eine ODER
Verknüpfung vorliegt.
Des Weiteren kann der suchende Benutzer entscheiden, welche Informationen ihm in welcher
Reihenfolge zu jedem Treffer in der Ergebnisliste ausgegeben werden sollen. Da manche
Rechner mehrere IPs oder Namen haben, kann deren vollständige Ausgabe durch Anwählen der
entsprechenden Checkboxen herbeigeführt werden.
Sind alle Angaben gemacht, wird durch Drücken des Suche (Search) Knopfes, die gewünschte
Suche ausgeführt und ihr Ergebnis in Form einer Tabelle in einem weiteren Browserfenster
Abbildung 4.2 – Darstellung des Suchergebnisses der Ausgangsanwendung
angezeigt (vgl. Abbildung 4.2).
68
Dieses bietet zunächst das Erstellen einer Exceldatei für die Ergebnistabelle per Knopfdruck an.
Darunter wird die Ergebnistabelle anhand von HTML dargestellt. Dabei werden zusätzlich zu den
vom Benutzer gewünschten Ausgabeinformationen Datum und Uhrzeit der Suche, eine
Kurzdarstellung der gewählten Suchkriterien, ihrer Werte und der eventuellen Verknüpfungen
mehrerer Kriterien, sowie ein Zeilenindex mit ausgegeben.
Oberflächlich betrachtet, besteht die Anwendung also aus zwei HTML Dateien, von denen eine
das Suchformular anbietet und die andere das Suchergebnis darstellt. Ein genauerer Blick in die
Anwendung zeigt jedoch, dass noch eine weitere Datei einbezogen wird. Das dynamische
Befüllen der Auswahlliste für Suchkriterien, deren mögliche Werte aus der Datenbank geholt
werden, wird per Remote Scripting30 von einer dritten Datei übernommen.
Auf die Darstellung des absolut genauen Kennen Lernens der Anwendung möchte ich an dieser
Stelle verzichten, da dies erstens schwer möglich ist und zweitens für den Leser recht
uninteressant ist.
4.2 Machbarkeitsprüfung
Während des kennen Lernens lässt sich bereits feststellen, welche Funktionalitäten der
Ausgangsanwendung den normalen Standardumfang einer Programmiersprache überschreiten.
Im Falle der Ausgangsanwendung bewerte ich das ASP Remote Scripting als größte
Sonderfunktion. Weshalb ich zunächst prüfen werde, ob und wie diese auf die BSP Technologie
zu übertragen ist.
Eine ähnliche Funktionalität gibt es wie erwartet in ABAP oder BSPs nicht.
30
Remote Scripting: ermöglicht (trotz geschlossener HTTP Verbindung nach Seitenaufbau auf Client Seite)
Datentransfer von Client zu Server und zurück ohne neuen Seitenaufbau
69
4.3 Analyse der Ausgangsanwendung
4.4 Optimierung
4.5 Implementierung der BSP Anwendung
4.6 Nacharbeiten
70
5 Zusammenfassung und Ausblick
Zusammenhang: kritische Auseinandersetzung aufgrund der Ergebnisse aus 4 und Ausblick für
die Zukunft
http://dynasys.systemnews.com/77/1/sw/index.shtml?13372#13372
Inhalt: Verlauf und Umsetzung der Arbeit
Kritische Bewertung des Portierungskonzeptes: wahrscheinlich nicht umfassend, da nicht alle
möglichen ASP Elemente und deren Portierung dargestellt wurden.
Vorschläge für die Zukunft: automatisierte Portierung (Bsp.: Microsoft ? zu .NET)
71
A. Anhang
A.a. Glossar spezifischer Ausdrücke und Abkürzungen
Abkürzung
Langform
SAP
Systeme, Anwendungen, Produkte
72
Erläuterung
A.b. Abbildungsverzeichnis
Abbildung 1.1 – IT Administration Portal ..................................................................................... 10
Abbildung 1.2 – IAC Menü............................................................................................................ 11
Abbildung 2.1 – Einordnung des Web AS in die 3-Schichten-Architektur, Architektur und
mögliche Technologien (kursiv geschrieben) des SAP® Web AS selbst ............................... 17
Abbildung 2.2 – SAP Easy Access, gesamte Oberfläche .............................................................. 20
Abbildung 2.3 – SAP Easy Access, Symbolfunktionsleiste .......................................................... 20
Abbildung 2.4 – Object Navigator ................................................................................................. 21
Abbildung 2.5 – R/3 Systemlandschaft mit 3 Instanzen ................................................................ 23
Abbildung 2.6 – Abfrage nach Transportauftrag ........................................................................... 24
Abbildung 2.7 – Erstellung eines Transportauftrags ...................................................................... 24
Abbildung 2.8 – SE80 Freigabe eines Transportauftrags .............................................................. 25
Abbildung 2.9 – STMS Liste aller Transportaufträge zum Import ................................................ 26
Abbildung 2.10 – STMS Import eines Transportauftrags .............................................................. 27
Abbildung 3.1 – Top Down............................................................................................................ 29
Abbildung 3.2 – Bottom Up ........................................................................................................... 30
Abbildung 3.3 – Anlegen eines Data Dictionary Objektes ............................................................ 37
Abbildung 3.4 – 1. Normalisierung einer Tabelle ......................................................................... 52
Abbildung 3.5 – 2. Normalisierung einer Tabelle ......................................................................... 53
Abbildung 3.6 – 3. Normalisierung einer Tabelle ......................................................................... 55
Abbildung 3.7 – SE80 Erstellung Paket ......................................................................................... 56
Abbildung 3.8 – SE80 Erstellung einer BSP Anwendung ............................................................. 57
Abbildung 3.9 – Auslieferungsklassen........................................................................................... 58
Abbildung 3.10 – Datenart ............................................................................................................. 59
Abbildung 3.11 – Größenkategorie ................................................................................................ 59
Abbildung 3.12 – ODBC Datenquellen Administrator öffnen ...................................................... 59
Abbildung 3.13 – ODBC Datenquellen Administrator .................................................................. 60
Abbildung 3.14 – ODBC Datenquellen Treiberauswahl ............................................................... 61
Abbildung 3.15 – SE80 Menü BSP Anwendung ........................................................................... 66
Abbildung 4.1 – Oberfläche des Suchformulars der Ausgangsanwendung ................................... 68
73
Abbildung 4.2 – Darstellung des Suchergebnisses der Ausgangsanwendung ............................... 68
74
A.c. Tabellenverzeichnis
Tabelle 3.1 – Datentypen ............................................................................................................... 42
Tabelle 3.2 – JavaScript Eventhandler und BSP ControllerklassenmethodenError!
Bookmark
not defined.
Tabelle 3.3 – Übersicht über HTMLB Elemente ........................................................................... 44
A.d. Programmkodeverzeichnis
Programmkode 3.1 – anzupassendes Perl Skript für Datenportierung........................................... 62
75
5
A.e. Literaturverzeichnis
www.saphosting.de
www.selfhtml.teamone.de
www.learnasp.com
http://www.itb.uni-stuttgart.de/lectures/Programmieren/Xiaolei/Bioinfor02_O.ppt
http://mysap.wdf.sap.corp:2080/resources/htmlb_guidance/
http://sql.idv.edu/thema/normalform/doc.htm
http://de.wikipedia.org/wiki/Normalisierung
“Active Server Pages”, Jörg Krause, Addison-Wesley
“SAP® Web Application Server”, Frédéric Heinemann, SAP™ Press
“ABAP Objects® – Einführung in die SAP®-Programmierung”, Horst Keller, Sascha Krüger,
SAP™ Press
“SAP® R/3® Systemadministration – Basiswissen für das R/3®-Systemmanagement“, Liane Will,
SAP™ Press
„Arbeitsmaterial zur Vorlesung Informatik 3“ Prof. Wilhelm Walter, (Oktober 2001).
Fachhochschule Furtwangen
76
Herunterladen