113
3
Kapitel 3
Integration über Remote Function Call und SAP .NET Connector
Der direkte Zugriff auf ein SAP-System mit C# oder Java lässt sich mit den
SAP-Konnektoren realisieren. In diesem Kapitel stellen wir diese Methoden
vor und erläutern die Vorgehensweise an einfachen Beispielen.
Bevor wir Ihnen in diesem Kapitel die Integration von Microsoft- und SAP-
Lösungen über die SAP-Konnektoren zeigen, klären wir zunächst einige
wichtige Begriffe in diesem Umfeld. Sie sollten diese Begriffe kennen, um
die folgenden Ausführungen nachvollziehen zu können.
Business-ObjekteSämtliche real im betriebswirtschaftlichen Umfeld existierenden Objekte
sind im SAP-System als Business-Objekte abgebildet. Diese Objekte kapseln
die Geschäftsprozesse und zugehörigen Daten. Wenn eine Anwendung ein
Business-Objekt verwenden möchte, werden nur die Informationen zu den
Objektmethoden benötigt. So kann ein Entwickler mit den Business-Objek-
ten arbeiten und die entsprechenden Methoden nutzen, ohne die Details
der Implementierung zu kennen oder gar beachten zu müssen.
BAPIDer Zugriff auf ein Business-Objekt wird mit Business Application Program-
ming Interfaces (BAPIs) realisiert. Bei BAPIs handelt es sich um SAP-Stan-
dard-Schnittstellen. Alle BAPIs im SAP-System sind als Funktionsbausteine
realisiert, die sich im Function Builder des SAP-Systems befinden. Jeder
Funktionsbaustein, der einem BAPI zugrunde liegt, unterstützt die Techno-
logie des Remote Function Calls (RFC).
Remote Function
Call
Als RFC bezeichnet man den Aufruf eines Funktionsbausteins innerhalb
eines SAP-Systems durch ein anderes, externes System bzw. eine Applika-
tion. Es handelt sich bei RFC also um eine Schnittstelle, mit der Funktions-
bausteine aufgerufen und ausgeführt sowie Daten übermittelt und abgefragt
werden können.
librfc32.dllFür die Entwicklung von Applikationen, die RFCs nutzen, hat SAP schon vor
vielen Jahren ein Software Development Kit herausgebracht: das RFC-SDK.
Der zentrale Bestandteil des RFC-SDK war die dynamische RFC-Bibliothek
(Dynamic Link Library, DLL) librfc32.dll. Dabei handelt es sich um eine
6190.book Seite 113 Montag, 28. Mai 2018 3:33 15
3 Integration über Remote Function Call und SAP .NET Connector
114
Bibliothek, die Funktionen für die RFC-Kommunikation bereitstellt. Später
wurden weitere Komponenten hinzugefügt, die die Nutzung der librfc32.dll
vereinfachten und erweiterten. Den Fokus bildeten zunächst COM-fähige
Programmiersprachen, für die verschiedene Objekte zur Verfügung gestellt
wurden, die die librfc32.dll kapseln. Bei dem Component Object Model
(COM) handelt es sich um eine Technologie, die von Microsoft für die Kom-
munikation zwischen verschiedenen Prozessen entwickelt wurde.
SAP .NET Connector
und
SAP Java Connector
In diesem Kapitel stellen wir Ihnen die Konnektoren SAP .NET Connector
und SAP Java Connector vor. Sie dienen im Prinzip auch nur zur Kapselung
der librf32.dll. Auf Basis dieser Werkzeuge lassen sich Proxy-Klassen erstel-
len, über die eine Kommunikation mit dem SAP-System möglich ist. Um
den Zugriff auf SAP-Systeme ausgehend von einer in Java oder mit Visual
Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali-
sieren, stellen die beiden Konnektoren die modernste Lösung dar, die SAP
für diese Integration bereitstellt. Wir gehen im Folgenden insbesondere auf
den SAP .NET Connector ein und zeigen die Verwendung dieses Konnektors
anhand eines Beispiels. Mit diesem Konnektor lassen sich Applikationen in
Visual Studio entwickeln, die über RFC auf SAP-Systeme zugreifen können.
In Kapitel 6, »Verwendung von Drittanbieter-Add-ons«, stellen wir Ihnen
mit Theobald ERPConnect eine weitere Software vor, die noch umfangrei-
chere Möglichkeiten als der SAP .NET Connector bietet.
3.1 Remote Function Call im Überblick
Um einen kundeneigenen Funktionsbaustein remotefähig zu machen, um
also den Zugriff auf diesen Funktionsbaustein per RFC ausgehend von
einem externen System zu ermöglichen, muss dieser Funktionsbaustein
in der ABAP Workbench als remotefähig gekennzeichnet werden. Wie das
geht, beschreiben wir am Beispiel von Webservices in Abschnitt 4.2.2,
»Webservice einrichten«. Für das Beispiel in diesem Kapitel verwenden wir
BAPIs und die dazugehörigen, bereits im System vorhandenen Funktions-
bausteine.
RFC-Typen SAP unterscheidet verschiedenen Typen von RFCs für den Zugriff auf die
SAP-Systeme. Es gibt die folgenden Typen (siehe dazu auch http://s-prs.de/
v619018):
� Synchronous RFC (sRFC) für den lesenden Zugriff
Hierbei handelt es sich um die erste Version des RFC. Die Daten werden
direkt abgerufen oder geschrieben. Dabei werden alle Lese- oder Schreib-
6190.book Seite 114 Montag, 28. Mai 2018 3:33 15
3.2 Remote Function Call mit C# über den SAP .NET Connector
115
3
operationen nacheinander ausgeführt, unabhängig davon, ob ein Fehler
aufgetreten ist. Das ist für das Schreiben der Daten problematisch, denn
der Aufruf kann im Fehlerfall nicht wiederholt werden, da es sonst unter
Umständen zu doppelten Datensätzen kommen könnte. Aus diesem
Grund wird sRFC nicht mehr verwendet.
� Transactional RFC (tRFC) für den transaktionalen Zugriff
Bei dieser Art des RFC erfolgt die Ausführung der Lese- und/oder Schreib-
operationen im SAP-System garantiert nur einmal (transaktional).
� Queued RFC (qRFC) zur Lastverteilung
Die Daten werden angefragt, und die Ausführung des aufrufenden Pro-
gramms wird direkt fortgesetzt. Die Anfrage selbst wird in einer War-
teschlange (Queue) gespeichert und abgearbeitet. Damit lassen sich
Anfragen parallelisieren und die Systeme besser auslasten. Das Resul-
tat ist eine bessere Performance.
� Background RFC (bgRFC) zur Hintergrundverarbeitung
Dieser RFC-Typ wird zum transaktionalen Schreiben verwendet. Es han-
delt sich um die Nachfolgetechnologie aus den vorher genannten Typen
tRFC und qRFC. Der Aufruf erfolgt im SAP-System wie beim tRFC garan-
tiert nur einmal. Außerdem werden die Anfragen über eine Warte-
schlange (Queue) abgearbeitet, damit sichergestellt ist, dass die Anfragen
auch in der richtigen Reihenfolge abgearbeitet werden.
Sowohl mit dem SAP .NET Connector als auch mit dem SAP Java Connector
können Sie alle diese RFC-Typen einsetzen. In unseren Beispielen werden
wir immer bgRFC verwenden. Dazu ist keine besondere Einstellung not-
wendig.
3.2 Remote Function Call mit C# über den SAP .NET Connector
In diesem Abschnitt zeigen wir Ihnen, wie Sie einen remotefähigen Funk-
tionsbaustein aus einem SAP-System in einer in C# programmierten
Microsoft-Windows-Anwendung einsetzen können. Dazu verwenden wir
den SAP .NET Connector. Wir erklären Ihnen zunächst, wie Sie den SAP
.NET Connector installieren und verwenden und welche weiteren Vorbe-
reitungen notwendig sind. Im Anschluss zeigen wir Ihnen, wie Sie den
Funktionsbaustein aus dem SAP-System mithilfe des Konnektors aufru-
fen können.
6190.book Seite 115 Montag, 28. Mai 2018 3:33 15
3 Integration über Remote Function Call und SAP .NET Connector
116
3.2.1 Installation des SAP .NET Connectors
Sie können den SAP .NET Connector unter der Adresse https://service.sap.
com/connectors aus dem SAP Service Marketplace herunterladen. Auf die-
ser Seite können Sie außerdem die librfc32.dll sowie den SAP Java Connec-
tor herunterladen, den wir in Abschnitt 3.3, »Remote Function Call mit Java
über den SAP Java Connector«, verwenden werden. Für den Download
benötigen Sie einen S-Benutzer für den SAP Service Marketplace (siehe
Abschnitt 1.4.2, »Integration in SAP Fiori«).
Technische
Voraussetzungen
Der SAP .NET Connector steht in der aktuellen Version 3.0 (NCo 3.0) sowohl
für das Microsoft .NET Framework 2.0 (und die Versionen 3.0 und 3.5) als
auch für das Microsoft .NET Framework 4.0 (und höher) jeweils in einer
32-Bit- und einer 64-Bit-Version zur Verfügung. In SAP-Hinweis 85863 fin-
den Sie Informationen zur Freigabe- und Support-Strategie für den SAP
.NET Connector. Für die Version des 2.0 .NET Frameworks benötigen Sie die
Microsoft C++-Runtime-DLLs in Version 8.0, für .NET 4.0 Version 10. Der
.NET Connector wurde in C++ geschrieben und verwendet Funktionen, die
in dieser Bibliothek enthalten sind. Diese können Sie auf den folgenden
Microsoft-Seiten als Installationspaket herunterladen:
� Für 64 Bit:
http://s-prs.de/v619019
� Für 32 Bit:
http://s-prs.de/v619020
Der SAP .NET Connector 3.0 ist mit allen SAP-Backend-Systemen ab Release
4.0B kompatibel und unterstützt Unicode- und Nicht-Unicode-Systeme.
Eine Abhängigkeit zur librfc32.dll, die in früheren Versionen zusätzlich zum
Konnektor eingebunden werden musste, besteht nicht mehr.
Installation Haben Sie die passende C++-Laufzeitumgebung installiert und die entspre-
chende Version des SAP .NET Connectors heruntergeladen, können Sie die-
sen über die Installationsdatei (mit der Dateiendung .msi) installieren.
Führen Sie diese Datei aus, um den Installationsassistenten zu starten.
Wählen Sie auf der zweiten Seite der geführten Installationsprozedur die
Option None, um alle zum SAP .NET Connector gehörigen DLLs in das ange-
gebene Verzeichnis zu entpacken. Alternativ können Sie diese DLLs auch in
den Global Assembly Cache (GAC) Ihres Rechners installieren (siehe Abbil-
dung 3.1), wenn die zu entwickelte Applikation später auf diesem Rechner
laufen soll. Idealerweise binden Sie die DLLs aber in Ihr Projekt ein und
geben sie auch über dieses Projekt weiter.
6190.book Seite 116 Montag, 28. Mai 2018 3:33 15
3.2 Remote Function Call mit C# über den SAP .NET Connector
117
3
Abbildung 3.1 Zielverzeichnis für die DLLs auswählen
Im angegebenen Verzeichnis befinden sich anschließend die folgenden
DLL-Dateien:
� libicudecnumber.dll
� rscp4n.dll
� sapnco.dll
� sapnco_utils.dll
Damit ist die Installation des SAP .NET Connectors bereits abgeschlossen.
3.2.2 SAP .NET Connector in ein Visual-Studio-Projekt einbinden
BAPI im Explorer
anzeigen
Um in unserem Beispiel einen Funktionsbaustein aus einer C#-Applikation
aufzurufen, möchten wir eine Funktion (d. h. eine Methode) eines BAPI ver-
wenden. Dazu müssen wir zunächst ein geeignetes BAPI auswählen. Im
BAPI Explorer des SAP-Systems können Sie alle im System vorhanden BAPIs
ansehen und sich die zugehörigen Methoden anzeigen lassen. Den BAPI
Explorer öffnen Sie mit Transaktion BAPI (siehe Abbildung 3.2).
Für das folgende Beispiel verwenden wir Funktionen aus dem Business-Ob-
jekt Customer. Wechseln Sie im BAPI Explorer zur alphabetischen Ansicht,
und navigieren Sie zum Knoten Customer. Hier sehen Sie die verfügbaren
BAPIs für dieses Business-Objekt sowie alle Methoden, die in diesen BAPIs
zur Verfügung stehen. Wir werden die Methode GetList verwenden, die in
dem Funktionsbaustein BAPI_CUSTOMER_GETLIST implementiert ist. Damit
können Sie Kundeninformationen aus dem SAP-System aufrufen. Den Na-
men dieses Funktionsbausteins finden Sie auf der Registerkarte auf der
6190.book Seite 117 Montag, 28. Mai 2018 3:33 15
3 Integration über Remote Function Call und SAP .NET Connector
118
rechten Seite Details, nachdem Sie die Methode in der Baumstruktur ausge-
wählt haben.
Abbildung 3.2 BAPI Explorer
Visual-Studio-
Projekt anlegen
Als Nächstes erstellen wir eine Konsolen-Applikation mit C# in der Micro-
soft-Entwicklungsumgebung Visual Studio. Von dieser Applikation aus
6190.book Seite 118 Montag, 28. Mai 2018 3:33 15
3.2 Remote Function Call mit C# über den SAP .NET Connector
119
3
wollen wir den Funktionsbaustein später über einen RFC aufrufen. Für die
Entwicklung dieses Szenarios müssen Sie Visual Studio installiert haben.
Die kostenlose Visual Studio Community Edition können Sie unter https://
www.visualstudio.com/de/downloads herunterladen und installieren.
Öffnen Sie dann Visual Studio, und legen Sie zunächst ein neues Projekt an.
Fügen Sie diesem Projekt die im vorangehenden Abschnitt installierten
DLL-Bibliotheken des SAP .NET Connectors als Verweis hinzu. Klicken Sie
dafür mit der rechten Maustaste auf das Projekt, und wählen Sie im Kon-
textmenü den Eintrag Hinzufügen � Verweis aus. Sie können auch direkt
mit der rechten Maustaste auf den Knoten Verweise in der Projektmappe
klicken und dann den Eintrag Verweis hinzufügen ... im Kontextmenü aus-
wählen (siehe Abbildung 3.3).
Abbildung 3.3 Verweis hinzufügen
SAP-.NET-
Connector-Verweis
hinzufügen
Im sich daraufhin öffnenden Verweis-Manager klicken Sie auf Durchsuchen
und wählen dann die DLLs sapnco.dll und sapnco_utils.dll aus (siehe Abbil-
dung 3.4).
Abbildung 3.4 Verweis-Manager in Visual Studio
6190.book Seite 119 Montag, 28. Mai 2018 3:33 15
3 Integration über Remote Function Call und SAP .NET Connector
120
Klasse für die SAP-
Systemverbindung
Fügen Sie dem Projekt nun eine neue Klasse hinzu. Klicken Sie dazu mit der
rechten Maustaste in der Projektmappe auf das Hauptprogramm SapCusto-
mers, und wählen Sie im Kontextmenü Hinzufügen � Klasse. Diese Klasse
soll die Verbindung zum SAP-System herstellen und verwalten. Nennen Sie
die Klasse »SAPSystemConnect«.
Wechseln Sie in den Quellcode dieser Klasse, und fügen Sie ihr über die
Anweisung using einen Verweis auf den Konnektor SAP.Middleware.Connec-
tor hinzu (siehe Abbildung 3.5).
Abbildung 3.5 SAP .NET Connector in die C#-Klasse einbinden
Verbindung zum
SAP-System
implementieren
Um eine Verbindung zu einem SAP-System herzustellen, müssen Sie nun
das Interface IDestinationConnection implementieren. Am einfachsten ist
es, im Quellcode direkt hinter der Klassenbezeichnung den Namen des
Interfaces, getrennt durch einen Doppelpunkt anzufügen:
class SAPSystemConnect : IDestinationConfiguration
Klicken Sie anschließend mit der rechten Maustaste auf den Namen des
Interfaces IDestinationConfiguration, und wählen Sie im Kontextmenü
den Eintrag Schnittstelle implementieren (siehe Abbildung 3.6). Visual Stu-
dio legt dann automatisch den notwendigen Programmcode für die Imple-
mentierung dieser Schnittstelle an.
Abbildung 3.6 Schnittstelle durch Visual Studio implementieren lassen
Funktion mit
Verbindungs-
parametern
Im nächsten Schritt wird die Funktion GetParameters mit den Verbin-
dungsparametern (Serveradresse, Systemnummer, Client, Benutzername
und Kennwort, Sprache, Timeout der Verbindung und Anzahl gleichzeiti-
ger Verbindungen) angelegt. Deren Quellcode sehen Sie in Listing 3.1.
6190.book Seite 120 Montag, 28. Mai 2018 3:33 15
3.2 Remote Function Call mit C# über den SAP .NET Connector
121
3
public RfcConfigParameters GetParameters(stringdestinationName){
RfcConfigParameters parameters =new RfcConfigParameters();
if ("Dev".Equals(destinationName)){
parameters.Add(RfcConfigParameters.AppServerHost,"Server");
parameters.Add(RfcConfigParameters.SystemNumber,"10");
parameters.Add(RfcConfigParameters.Client,"010");
parameters.Add(RfcConfigParameters.User,"Benutzer");
parameters.Add(RfcConfigParameters.Password,"Kennwort");
parameters.Add(RfcConfigParameters.Language,"DE");
parameters.Add(RfcConfigParameters.PoolSize,"5");
parameters.Add(RfcConfigParameters.ConnectionIdleTimeout,"600");
}return parameters;
}
Listing 3.1 Verbindungsparameter zum SAP-System festlegen
In diesem Beispiel werden die Verbindungsparameter auf die angegebenen
Werte gesetzt, wenn für den Übergabeparameter destination der Wert
»Dev« gesetzt ist. Die Idee hierbei ist, dass verschiedene SAP-Systeme im
Quellcode vorkonfiguriert werden. Mit dem Parameter lässt sich dann
beim Aufruf der Verbindungsfunktion bestimmen, zu welchem System die
Verbindung hergestellt werden soll. Sie werden im folgenden Abschnitt im
Hauptprogramm noch sehen, wie die Verbindung erstellt wird (siehe Lis-
ting 3.6).
3.2.3 Aufruf des BAPI implementieren
Klasse für Zugriff
auf die Kunden-
daten
Anschließend erstellen Sie eine Klasse Customers. Diese Klasse enthält die
Funktion GetCustomerDetails mit den Parametern für das Zielsystem
(destination, d. h. die RFC-Verbindung) und die Kundennummer
6190.book Seite 121 Montag, 28. Mai 2018 3:33 15
3 Integration über Remote Function Call und SAP .NET Connector
122
(customerID), die zum Aufruf des BAPI für das Business-Objekt Customer
benötigt werden. Die vollständige Implementierung dieser Klasse sehen
Sie in Listing 3.2. Im Anschluss erklären wir die einzelnen Schritte.
class Customers{public void GetCustomerDetails(RfcDestination destination, string
customerID){RfcRepository repository = destination.Repository;IRfcFunction customerList =repository.CreateFunction("BAPI_CUSTOMER_GETLIST");
customerList.Invoke(destination);IRfcTable idRange = customerList.GetTable("IdRange");idRange.SetValue("SIGN", "I");idRange.SetValue("OPTION", "EQ");idRange.SetValue("LOW", customerID);customerList.SetValue("idrange", idRange);IRfcTable addressData = customerList.GetTable("AddressData");customerList.Invoke(destination);for (int cuIndex = 0; cuIndex < addressData.RowCount; cuIndex++){addressData.CurrentIndex = cuIndex;Console.WriteLine(addressData.GetString("Customer"));Console.WriteLine(addressData.GetString("Name"));Console.WriteLine(addressData.GetString("Street"));Console.WriteLine(addressData.GetString("Country") + "-"+ addressData.GetString("Postl_Cod1") + " "+ addressData.GetString("City"));
}}
}
Listing 3.2 Vollständige Klasse SAPSystemConnect.cs
Interface für die
BAPI-Funktion
Zunächst erstellen Sie ein Interface customerList für die Funktion BAPI_
CUSTOMER_GETLIST und verknüpfen dieses mit dem Zielsystem (siehe Lis-
ting 3.3).
RfcRepository repository = destination.Repository;IRfcFunction customerList =
repository.CreateFunction("BAPI_CUSTOMER_GETLIST");customerList.Invoke(destination);
Listing 3.3 Programmteil: BAPI-Funktion anbinden
6190.book Seite 122 Montag, 28. Mai 2018 3:33 15
3.2 Remote Function Call mit C# über den SAP .NET Connector
123
3
Einschränkung
auf eine Kunden-
nummer
Nun definieren Sie einen Bereich für die Abfrage der Kundendaten. Dabei
definieren Sie die übergebene Kundennummer (customerID) als Untergrenze
sowie EQ als Eingrenzung, um nur die Daten dieses einen Kunden abzufragen
(siehe Listing 3.4).
IRfcTable idRange = customerList.GetTable("IdRange");idRange.SetValue("SIGN", "I"); // I = inklusividRange.SetValue("OPTION", "EQ"); // EG = Equal, BT = betweenidRange.SetValue("LOW", customerID);customerList.SetValue("idrange", idRange);
Listing 3.4 Programmteil: Kundennummernbereich festlegen
Ergebnis abrufenIm nächsten Schritt wird die Ergebnistabelle abgerufen. Zudem werden alle
Zeilen dieser Tabelle in der Kommandozeile ausgegeben (siehe Listing 3.5).
Typischerweise gibt es pro Kundennummer nur einen Datensatz und da-
mit auch nur eine Zeile.
IRfcTable addressData = customerList.GetTable("AddressData");customerList.Invoke(destination);for (int cuIndex = 0; cuIndex < addressData.RowCount;
cuIndex++){
addressData.CurrentIndex = cuIndex;Console.WriteLine(addressData.GetString("Customer"));Console.WriteLine(addressData.GetString("Name"));Console.WriteLine(addressData.GetString("Street"));Console.WriteLine(addressData.GetString("Country") + "-" +
addressData.GetString("Postl_Cod1") + " " +addressData.GetString("City"));
}
Listing 3.5 Programmteil: Ergebniszeile ausgeben
Damit haben Sie die Herstellung einer RFC-Verbindung zum Abruf der
Adressdaten eines Kunden aus einem SAP-System in einem C#-Programm
implementiert.
Aufruf der
Funktionen
Im Hauptprogramm rufen Sie die implementierten Funktionen nun auf
und parametrisieren diese mit entsprechend Kommandozeilen-Parame-
tern für das verwendete SAP-System (in unserem Beispiel »Dev«) sowie
eine Kundennummer (siehe Listing 3.6).
6190.book Seite 123 Montag, 28. Mai 2018 3:33 15
3 Integration über Remote Function Call und SAP .NET Connector
124
static void Main(string[] args){
SAPSystemConnect sapCfg = new SAPSystemConnect();RfcDestinationManager.RegisterDestinationConfiguration(sapCfg);RfcDestination rfcDest = null;rfcDest = RfcDestinationManager.GetDestination(args[0]);
Customers customer = new Customers();customer.GetCustomerDetails(rfcDest, args[1]);System.Environment.Exit(0);
}
Listing 3.6 Hauptprogramm: Programmfunktionen ausführen und Parameter
übergeben
Test über die
Kommandozeile
Das Programm können Sie nach dem Kompilieren über die Kommando-
zeile testen. In Abbildung 3.7 sehen Sie das Ergebnis. Wichtig ist, dass Sie
beim Aufruf der durch die Kompilierung erzeugten .exe-Datei die Parame-
ter für das Zielsystem (Dev) und eine Kundennummer übergeben.
Abbildung 3.7 Das Programm mit Abruf einer Kundenadresse testen
Dieses einfache Beispiel sollte veranschaulichen, wie ein Zugriff mittels C#
auf ein SAP-System über einen RFC erfolgen kann. Das Beispiel kann aller-
dings nur als Proof of Concept dienen und sollte so nicht im produktiven
Umfeld eingesetzt werden, da es beispielsweise keinerlei Fehlerabfrage
beinhaltet.
3.3 Remote Function Call mit Java über den SAP Java Connector
Für die Implementierung von RFCs mit der Programmiersprache Java kön-
nen Sie vergleichbar zum SAP .NET Connector für .NET-Entwicklungen den
SAP Java Connector (SAP JCo) verwenden. Damit Sie beide Konnektoren
vergleichen können, setzen wir in diesem Abschnitt das gleiche Beispiel
6190.book Seite 124 Montag, 28. Mai 2018 3:33 15
3.3 Remote Function Call mit Java über den SAP Java Connector
125
3
um, das wir im vorangegangenen Abschnitt für den SAP .NET Connector
erstellt haben.
3.3.1 Installation des SAP Java Connectors
Unterstützte
Java-Versionen
Sie können den SAP Java Connector ebenso wie den SAP .NET Connector
unter der Adresse https://service.sap.com/connectors im SAP Service Market-
place herunterladen. Die zum Zeitpunkt der Drucklegung dieses Buches aktu-
elle Version des SAP Java Connectors lautet 3.0.17. Sie benötigen Java Software
Development Kit (JDK) bzw. Java Runtime Environment (JRE) ab Version 5.0.
Der SAP Java Connector steht neben Microsoft Windows auch für andere
Plattformen zur Verfügung. So gibt es beispielsweise Versionen für Linux,
Apples macOS, Oracle Solaris, Hewlett Packard Unix (HP-UX) oder IBM AIX.
Unterstützte
SAP-Releases
SAP-seitig unterstützt der SAP Java Connector Systeme ab Release 3.1H. Er
unterstützt alle SAP-Komponenten, die über BAPIs oder RFCs angespro-
chen werden können. Mit dem SAP Java Connector können Sie ebenfalls
alle in Abschnitt 3.1, »Remote Function Call im Überblick«, vorgestellten
RFC-Typen verwenden.
InstallationNach dem Herunterladen des SAP Java Connectors aus dem SAP Service
Marketplace entpacken Sie die .zip-Datei in ein beliebiges Verzeichnis, z. B.
D:\Projekte\SAPJCo. In Abbildung 3.8 sehen Sie die enthaltenen Dateien
und Verzeichnisse.
Abbildung 3.8 Den SAP Java Connector installieren
Fügen Sie den gewählten Verzeichnis-Pfad anschließend zu Ihrer Path-
Umgebungsvariable hinzu (siehe Abbildung 3.9). Die Umgebungsvariablen
Ihres Windows-Systems finden Sie unter den Systemeigenschaften. Wäh-
len Sie hier den Button Umgebungsvariablen.
6190.book Seite 125 Montag, 28. Mai 2018 3:33 15
3 Integration über Remote Function Call und SAP .NET Connector
126
Abbildung 3.9 Umgebungsvariable setzen
Für die produktive Verwendung des SAP Java Connectors benötigen Sie die
folgenden Dateien aus der .zip-Datei:
� sapjco3.jar
� sapjco3.dll
Beide Dateien sollten im gleichen Verzeichnis abgelegt sein.
3.3.2 SAP Java Connector in ein Eclipse-Projekt einbinden
Unsere Beispielanwendung zur Demonstration des Datenzugriffs über den
SAP Java Connector entwickeln wir in Eclipse für Windows. Das in diesem
Abschnitt beschriebene Vorgehen können Sie aber natürlich auf jede
andere Entwicklungsumgebung übertragen.
Projekt anlegen Starten Sie Eclipse, und legen Sie ein neues Java-Projekt an. Wählen Sie dazu
den Menüpfad File � New � Java Project. Wählen Sie einen beliebigen Projekt-
namen, z. B. »JCo Demo«. Die anderen Einstellungen können Sie unverändert
lassen (siehe Abbildung 3.10). Im Bereich JRE können Sie wählen, welche Java-
Laufzeitumgebung Sie für das Projekt verwenden möchten. Wie im vorange-
henden Abschnitt 3.3.1, »Installation des SAP Java Connectors«, aufgeführt,
werden die JRE-Versionen ab 5.0 vom SAP Java Connector unterstützt. Nach-
dem Sie Ihre Einstellungen vorgenommen haben, klicken Sie auf Finish.
SAP Java Connector
in das Projekt
einbinden
Klicken Sie nun in der Navigationsleiste mit der rechten Maustaste auf den
eben angelegten Projektordner, und wählen Sie Build Path � Configure Build
Path im Kontextmenü. Im sich daraufhin öffnenden Fenster können Sie
nun auf der Registerkarte Libraries den SAP Java Connector Ihrem Projekt
hinzufügen. Klicken Sie dazu auf den Button Add External JARs. Im sich öff-
nenden Dialog wählen Sie die Datei sapjco3.jar aus (siehe Abbildung 3.11).
Schließen Sie dann den Dialog mit dem Button Apply and Close.
6190.book Seite 126 Montag, 28. Mai 2018 3:33 15
3.3 Remote Function Call mit Java über den SAP Java Connector
127
3
Abbildung 3.10 Neues Java-Projekt anlegen
Abbildung 3.11 SAP Java Connector zum Projekt hinzufügen
6190.book Seite 127 Montag, 28. Mai 2018 3:33 15
3 Integration über Remote Function Call und SAP .NET Connector
128
Klasse für das
Programm
hinzufügen
Fügen Sie nun eine neue Klasse zu Ihrem Projekt hinzu. Diese soll später das
eigentliche Programm enthalten. Klicken Sie dazu wieder mit der rechten
Maustaste auf den Projektordner, und wählen Sie New � Class im Kontext-
menü. Vergeben Sie unter Package einen Namen für das Paket dieses Pro-
jekts (hier: »de.sappress.demo«). Im Feld Name geben Sie einen Namen für
die Klasse ein, z. B. »Program« (siehe Abbildung 3.12). Die vorgegebenen
Einstellungen für die Superclass und die method stubs lassen Sie stehen.
Diese Methoden werden dem Projekt automatisch hinzugefügt, sodass Sie
sie nicht später manuell hinzuzufügen müssen. Klicken Sie abschließend
auf Finish.
Abbildung 3.12 Neue Klasse anlegen
Das Projekt ist nun soweit vorbereitet, um mit der Implementierung der
Anwendung zu starten. Alle Elemente des Projekts werden Ihnen im Pack-
ages Explorer angezeigt (siehe Abbildung 3.13). Im ersten Schritt implemen-
6190.book Seite 128 Montag, 28. Mai 2018 3:33 15
3.3 Remote Function Call mit Java über den SAP Java Connector
129
3
tieren wir nun die Verbindung zu einem SAP-System, um dann im zweiten
Schritt einen RFC abzusetzen und das Ergebnis in der Konsole auszugeben.
Abbildung 3.13 Vorbereitetes Projekt im Package Explorer
3.3.3 Verbindung zum SAP-System implementieren
VerbindungsklasseDie Verbindung zu einem SAP-System wird mit der Klasse JCoDestinati-
onManager hergestellt. Es gibt unterschiedliche Wege, die Verbindungsinfor-
mationen in dieser Klasse zu hinterlegen. Die einfachste Variante ist es,
eine Datei mit der Endung .jcoDestination in das Basisverzeichnis des Pro-
jekts zu legen. Diese Datei kann mit der Methode getDestination der Klasse
JCoDestinationManager geladen werden. Im Produktivumfeld ist es jedoch
nicht sinnvoll, die Verbindungsdaten (insbesondere Benutzernamen und
Kennwörter) statisch im Code abzulegen. Implementieren Sie deshalb ein-
fach das Interface DestinationDataProvider in Ihrem Projekt, um die Ver-
bindungsinformationen zu implementieren.
Weiterführende Informationen zur Client-Programmierung für den SAP Java Connector
Sollten Sie weiterführende Informationen zur Client-Programmierung
benötigen, finden Sie diese in der SAP-Dokumentation unter:
http://s-prs.de/v619021
».jcoDestination«-
Datei anlegen
In unserem Beispiel werden wir die Variante mit der .jcoDestination-Datei
implementieren, um das Beispiel nicht zu verkomplizieren. Legen Sie dazu
eine Datei zum Projekt an, indem Sie mit der rechten Maustaste auf den
Projektordner klicken und New � File wählen. Geben Sie der Datei z. B. den
Namen »SAPSYSTEM.jcoDestination« (siehe Abbildung 3.14). Klicken Sie
dann auf Finish.
6190.book Seite 129 Montag, 28. Mai 2018 3:33 15
3 Integration über Remote Function Call und SAP .NET Connector
130
Abbildung 3.14 Verbindungsinformationsdatei anlegen
Öffnen Sie nun diese Datei, und fügen Sie den Quellcode aus Listing 3.7 ein.
jco.client.client=010jco.client.sysnr=10jco.client.ashost=SAPServerjco.client.lang=dejco.client.user=Benutzerjco.client.passwd=Kennwortjco.destination.peak_limit=10jco.destination.pool_capacity=5
Listing 3.7 Inhalt der Datei »SAPSYSTEM.jcoDestination«
Beim Speichern wird das Kennwort zum Zugriff auf das SAP-System auto-
matisch nach dem Message Digest Algorith 5 (MD5) codiert, was zumindest
einen gewissen Schutz bietet. Die Eigenschaft peak_limit definiert die
maximale Anzahl der gleichzeitig verwendeten Verbindungen. Die Eigen-
schaft pool_size definiert die Poolgröße, also die gleichzeitig geöffneten
Verbindungen
Klasse zur
Herstellung der
Verbindung
Legen Sie nun eine Klasse an, in der die Funktionen zum Herstellen der
Verbindung implementiert werden. In unserem Beispiel nennen wir
diese Klasse »Connection«. Den Quellcode dieser Klasse finden Sie in Lis-
ting 3.8.
6190.book Seite 130 Montag, 28. Mai 2018 3:33 15
3.3 Remote Function Call mit Java über den SAP Java Connector
131
3
package de.sappress.demo;import com.sap.conn.jco.JCoDestination;import com.sap.conn.jco.JCoDestinationManager;import com.sap.conn.jco.JCoException;
public class Connection{
static String SAPSYSTEM = "SAPSYSTEM";public static void ConnectionUsingPool()throws JCoException{
JCoDestination destination =JCoDestinationManager.getDestination(SAPSYSTEM);destination.ping();System.out.println();System.out.println("Attributes:");System.out.println(destination.getAttributes());System.out.println();
}}
Listing 3.8 Klasse »Connection« mit der Funktion »ConnectionUsingPool«
Verbindungs-
herstellung öffnen
Im Hauptprogramm, der im vorangehenden Abschnitt angelegten Klasse
Program, können Sie nun die Verbindungsherstellung öffnen (Connection-
UsingPool(), siehe Listing 3.9). In der Konsole sollten Ihnen daraufhin alle
Eigenschaften (Attribute) der Verbindung ausgegeben werden.
package de.sappress.demo;import com.sap.conn.jco.JCoException;public class Program {
public static void main(String[] args)throws JCoException{
Connection.ConnectionUsingPool();}
}
Listing 3.9 Verbindungsherstellung im Hauptprogramm
Funktionsaufruf
des BAPI
War dieser Test erfolgreich, können Sie den vollständigen Funktionsaufruf
des BAPI, wie in Listing 3.10 gezeigt, implementieren.
6190.book Seite 131 Montag, 28. Mai 2018 3:33 15
3 Integration über Remote Function Call und SAP .NET Connector
132
package de.sappress.demo;import com.sap.conn.jco.JCoDestination;import com.sap.conn.jco.JCoDestinationManager;import com.sap.conn.jco.JCoException;import com.sap.conn.jco.JCoFunction;import com.sap.conn.jco.JCoTable;
public class Connection {static String SAPSYSTEM = "SAPSYSTEM";public static void FunctionCall(String customerID)throws JCoException{
JCoDestination destination =JCoDestinationManager.getDestination(SAPSYSTEM);JCoFunction customerList =destination.getRepository().getFunction("BAPI_CUSTOMER_GETLIST");
JCoTable idRange =customerList.getTableParameterList().getTable("IDRANGE");
idRange.appendRow();idRange.setValue("SIGN", "I");idRange.setValue("OPTION", "EQ");idRange.setValue("LOW", customerID);
customerList.execute(destination);JCoTable addressData =
customerList.getTableParameterList().getTable("ADDRESSDATA");addressData.firstRow();System.out.println(addressData.getString("CUSTOMER"));System.out.println(addressData.getString("NAME"));System.out.println(addressData.getString("STREET"));System.out.println(addressData.getString("CITY"));
}}
Listing 3.10 Die Java-Klasse »Connection« implementieren
Hauptprogramm Für das Hauptprogramm fügen Sie den Quellcode aus Listing 3.11 ein.
package de.sappress.demo;import com.sap.conn.jco.JCoException;public class Program {
public static void main(String[] args)throws JCoException {
6190.book Seite 132 Montag, 28. Mai 2018 3:33 15
3.4 Zusammenfassung
133
3
Connection.FunctionCall(args[0]);}
}
Listing 3.11 Hauptprogramm: Java-Klasse »Program«
Den Aufruf des Programms müssen Sie nun noch mit einem Parameter
ergänzen. Dazu gehen Sie zu den Eigenschaften (Properties) Ihres Java-Pro-
jekts. Im Bereich Run/Debug Settings wählen Sie die Registerkarte Argu-
ments aus und ergänzen im Textfeld Program Arguments eine (gültige)
Kundennummer.
Programm testenJetzt kann das Programm getestet werden. Abbildung 3.15 zeigt die Ausgabe
in der Konsole. Auch in diesem Beispiel haben wir zur Vereinfachung wie-
der auf das Abfangen von Fehlern verzichtet.
Abbildung 3.15 Erfolgreicher Test der Konsolenanwendung
Wenn Sie den Quellcode des gerade erstellten Java-Programms mit dem des
C#-Programms vergleichen (siehe Listing 3.4 in Abschnitt 3.2.3, »Aufruf des
BAPI implementieren«), werden Sie eine große Ähnlichkeit feststellen. Wir
können also festhalten, dass beide Konnektoren sehr ähnlich arbeiten und
sich auf einem sehr ähnlichen Niveau befinden. Je nach Umgebung – Java
oder C# – können Sie den passenden Konnektor auswählen.
3.4 Zusammenfassung
Vorteile von
SAP-Konnektoren
SAP-Konnektoren zu verwenden, um aus einer .NET- oder Java-Entwicklung
Funktionen in einem SAP-System aufzurufen (oder umgekehrt), ist die ein-
fachste und direkteste Art der Kommunikation mit einem SAP-System. Da
Sie selbst Funktionen in ABAP schreiben und diese per RFC remote erreich-
bar machen können, stehen Ihnen damit im Prinzip alle Möglichkeiten zur
Verfügung, um auch komplexe Geschäftsprozesse durch eine Nicht-SAP-
Applikation, z. B. eine Windows-Applikation, abzubilden. Die Systeme sind
anschließend eng verbunden (im Vergleich z. B. zur Anbindung per Webser-
vice, die wir in Kapitel 4, »Integration über SOAP-Webservices«, erläutern).
6190.book Seite 133 Montag, 28. Mai 2018 3:33 15
3 Integration über Remote Function Call und SAP .NET Connector
134
Nachteile Der Preis dieser Flexibilität ist, dass Sie die gesamte Kommunikation auch
selbst kontrollieren müssen. Dabei sollten Sie auch alle erdenklichen Fehler-
fälle abhandeln. Gibt es Änderungen im SAP-Programmcode, beispielsweise
nach einem Release-Wechsel, müssen Sie eventuell Ihre selbst geschrie-
benen Funktionen und gegebenenfalls auch Ihren .NET- oder Java-Code an-
passen.
Weiterführende Informationen zu den SAP-Konnektoren
Auf den folgenden SAP-Seiten finden Sie weitere Informationen zu den
beiden in diesem Kapitel beschriebenen Konnektoren und zu librfc32.dll:
� SAP .NET Connector:
http://s-prs.de/v619022
� SAP Java Connector:
http://s-prs.de/v619023
� SAP NetWeaver RFC Lib 32 / RFC SDK:
http://s-prs.de/v619024
Alternativen von
Drittanbietern
Speziell für die Anbindung einer Applikation im .NET-Umfeld gibt es mit
Theobald ERPConnect einen alternativen Konnektor, der Ihnen im Ver-
gleich zum SAP .NET Connector bereits einige Dinge abnimmt. So lässt sich
die Verbindung zu einem SAP-System etwas leichter implementieren.
Theobald ERPConnect stellen wir deswegen in Kapitel 6, »Verwendung von
Drittanbieter-Add-ons«, etwas genauer vor.
Anbindung über
einen Proxy
Neben Windows-Forms-, Konsolen- oder Webanwendungen ließe sich bei-
spielsweise in C# auch eine Art Proxy implementieren, der als Schnittstelle
zwischen dem SAP-System und einer JavaScript-Anwendung agiert und
dieser alle Daten im JSON-Format zur Verfügung stellt. Damit könnte die
eigentliche Applikation in einem JavaScript-Framework (z. B. jQuery, Sen-
cha oder AngularJS) entwickelt werden. Solche Applikationen haben den
Vorteil, web-, betriebssystem- und sogar geräteunabhängig zu laufen (z. B.
auch auf mobilen Endgeräten). Anpassungen, die durch eine Änderung
innerhalb des SAP-Systems notwendig werden, müssten dann »nur« im
Proxy vorgenommen werden. Der Proxy wäre hier eine Windows-Server-
Komponente.
6190.book Seite 134 Montag, 28. Mai 2018 3:33 15
13
1Einleitung
Wenn Sie dieses Buch in den Händen halten, stehen Sie vermutlich vor der
Aufgabe, Daten aus Ihrem SAP-System in Ihren Microsoft-Anwendungen
zur Verfügung zu stellen, SAP-Daten in unterschiedlichen Tools zu analy-
sieren oder einfach nur SAP-Systeme auf einer Microsoft-Infrastruktur zu
betreiben. Mit dieser Problemstellung sind Sie nicht allein. Man darf wohl
davon ausgehen, dass ein Großteil der SAP-Kunden auch Microsoft-Pro-
dukte, insbesondere das Microsoft-Office-Paket, aber auch die Microsoft-
Portallösung SharePoint, einsetzen. So ergibt sich ganz automatisch eine
Softwarewelt im Umfeld der SAP-Systeme, die idealerweise auch Daten aus
diesen SAP-Systemen konsumieren sollte.
Leider wurde dieses Thema von SAP lange sehr vernachlässigt. Man könnte
sogar sagen, dass SAP der Verwendungen von Daten außerhalb der SAP-
Systeme sehr kritisch gegenüberstand und viel dafür tat, das explizit nicht
zu ermöglichen. Erfreulicherweise hat hier in den vergangenen Jahren
jedoch ein Umdenken stattgefunden, sowohl seitens SAP als auch von
Microsoft. Mittlerweile gibt es verschiedene Möglichkeiten, Software aus
beiden Welten interagieren zu lassen.
Nicht zuletzt aufgrund dieser Entwicklung entstanden parallel viele verschie-
dene Ansätze der Interoperabilität mit teilweise sehr unterschiedlichem
Fokus. Zusätzlich gibt es inzwischen sehr interessante Drittanbieterlösun-
gen. Das alles macht es mittlerweile aber immer schwerer, die zur Verfügung
stehenden Lösungen zu überblicken, einzuordnen und zu bewerten. Dieses
Buch soll Ihnen dabei Hilfestellung leisten.
In unserem gut 20-jährigen Berufsleben hat uns die Verbindung der SAP-
und Microsoft-Welt immer begleitet. Wir haben viele clevere und interes-
sante Lösungen kennengelernt, aber auch selbst umgesetzt. Als sich vor ein
paar Jahren innerhalb der Deutschsprachigen SAP-Anwendergruppe e.V.
(DSAG) eine Arbeitsgruppe »SAP-Microsoft-Integration« gründete, haben
wir uns kennengelernt und einige Veranstaltungen gemeinsam gestaltet.
Auf den Arbeitsgruppentreffen, aber auch bei unseren Vorträgen auf den
DSAG-Kongressen erfuhren wir unheimlich viel Zuspruch und Interesse an
diesem Aufgabengebiet. Als wir dann gefragt wurden, ob wir ein Buch über
die SAP-Microsoft-Integration schreiben möchten, waren wir deshalb gleich
sehr motiviert. Wir hätten uns gewünscht, dass uns ein solches Buch vor
einigen Jahren selbst zur Verfügung gestanden hätte. Deshalb hoffen wir,
dass dieses Buch für Sie eine Anregung ist, sich mit dem Thema der Integra-
tion von SAP- und Microsoft-Daten zu beschäftigen.
6190.book Seite 13 Montag, 28. Mai 2018 3:33 15
Einleitung
14
Unsere Tätigkeiten im beruflichen Alltag konfrontieren uns auch heute
noch mit der Umsetzung von Interoperabilität zwischen SAP-Systemen
und dem Microsoft-Umfeld. Auch wenn wir grundsätzlich die Umsetzung
dieser Integration mit den Bordmitteln der beiden Softwarehersteller
bevorzugen, entdecken wir immer wieder smarte und clevere Lösungen
außerhalb dieser beiden Anbieter. Falls Sie selbst mit einer Drittanbieterlö-
sung gute (oder auch schlechte) Erfahrungen gemacht haben, möchten wir
gern davon erfahren. Wir würden uns daher freuen, wenn Sie uns kontak-
tieren und uns Ihre Erlebnisse mitteilen.
Aufbau dieses Buches
Ziel von Kapitel 1, »Integrationsszenarien und -technologien«, ist es, ein
gemeinsames Verständnis dafür zu schaffen, warum sich ein Datentransfer
aus SAP-Systemen lohnt, worin die Herausforderungen bestehen und wel-
che Standardlösungen dafür im Moment existieren. Wir stellen Ihnen in
diesem Kapitel auch die historische Entwicklung der heutigen Standards
dar, da so viele heutige Lösungen leichter zu verstehen sind. Außerdem
sind viele etablierte, aber teilweise nicht mehr unterstütze Lösungen
immer noch bei einigen Kunden im Einsatz.
Im ersten Kapitel geben wir darüber hinaus verschiedene Beispiele für
mögliche Integrationsszenarien. Diese Beispiele greifen wir im Lauf des
Buches immer wieder auf und skizzieren deren Umsetzung mit den unter-
schiedlichen technischen Möglichkeiten. Dabei richten wir zunächst den
Blick auf Microsoft als führendes Frontend. Bei dieser Art der Integration
stammen die Daten aus den SAP-Systemen und werden in Microsoft-
Anwendungen dargestellt oder verarbeitet. Anschließend sehen wir uns
den anderen Fall an, bei dem SAP die führende Benutzeroberfläche bereit-
stellt und die Daten aus Microsoft-Anwendungen kommen.
Kapitel 2, »Integration über SAP Gateway«, widmet sich der Umsetzung der
Integration über das Werkzeug SAP Gateway, das sich mittlerweile als Stan-
dard für die Veröffentlichung von SAP-Daten etabliert hat und auch die
Basis für zahlreiche Microsoft-Integrationsszenarien ist. In diesem Kapitel
geben wir einen kurzen Einblick über die Historie und Funktionalität von
SAP Gateway. Anschließend zeigen wir Schritt für Schritt, wie Sie die Integ-
ration realisieren können.
In Kapitel 3, »Integration über Remote Function Call und SAP .NET Connec-
tor«, setzen wir den Fokus auf den SAP .NET Connector. Dieser und der SAP
Java Connector waren unter den ersten Werkzeugen, mit denen man auf
SAP-Daten zugreifen konnte. Die beiden Konnektoren werden auch heute
6190.book Seite 14 Montag, 28. Mai 2018 3:33 15
Einleitung
15
noch verwendet und immer noch von SAP weiterentwickelt. Wir zeigen
Ihnen in diesem Kapitel anhand eines Beispiels, wie eine Integration mit-
hilfe dieser Konnektoren realisiert werden kann.
Mit SOAP-Webservices hat SAP auch den SOAP-Trend mitgemacht und
Daten über das Web zur Verfügung gestellt. Die SOAP-Webservices stellen
wir Ihnen deshalb in Kapitel 4, »Integration über SOAP-Webservices«, als
weitere Option vor. Sie erfahren, wie Sie SAP-Daten im Browser und in
Webapplikationen, aber auch in EAI-Szenarien (Enterprise Application Inte-
gration) verwenden können.
In Kapitel 5, »SAP API Business Hub«, stellen wir Ihnen den SAP API Busi-
ness Hub vor, über den SAP Standarddienste zur Verfügung stellt. Die Funk-
tionsweise dieser Dienste ist vergleichbar mit der der SOAP-Webservices.
SAP versucht, mit dem SAP API Business Hub eine Struktur in die verfügba-
ren Services zu bringen und diese in einem Katalog für Kunden und Partner
zur Verfügung zu stellen. Die Arbeit mit diesen Diensten stellen wir in die-
sem Kapitel wieder an einem Beispiel vor.
Viele der zuvor genannten Lösungen sind generisch. Mit Kapitel 6, »Ver-
wendung von Drittanbieter-Add-ons«, möchten wir Ihnen einen Überblick
geben, welche Lösungen darüber hinaus noch existieren. Die Partner- oder
Drittanbieterlösungen bauen teilweise auf den zuvor beschriebenen Pro-
dukten auf und erweitern diese um eine ganz dedizierte Integrationsmög-
lichkeit. Wir stellen Ihnen in diesem Kapitel ausgewählte Lösungen vor und
arbeiten deren Besonderheiten heraus. Die Lizenzierung spielt bei der
Gegenüberstellung der jeweiligen Vor- und Nachteile eine spezielle Rolle,
da SAP den Drittanbieterlösungen teilweise kritisch gegenübersteht.
Bis zu dieser Stelle des Buches befassen wir uns vornehmlich mit Transakti-
onsintegration. Ein anderer wichtiger Punkt ist das Reporting, bei dem es um
die Analyse von Daten geht. Dieses Thema ist Gegenstand von Kapitel 7,
»Integration im Umfeld von Business Intelligence«. Ein Schwerpunkt dieses
Kapitels ist die Integration von Daten aus SAP HANA. Mit SAP HANA stellt
SAP eine sehr leistungsstarke Datenbank zur Verfügung, deren Daten z. B.
mit Microsoft Power BI sehr einfach und ansprechend visualisiert werden
können.
In Kapitel 8, »Infrastrukturkomponenten«, sehen wir uns die Infrastruk-
turkomponenten an, die für eine erfolgreiche SAP-Microsoft-Integration
bereitstehen. Dabei analysieren wir sowohl eine mögliche On-Premise-
Architektur als auch eine cloudbasierte Lösung. Bei den cloudbasierten Lö-
sungen schauen wir uns sowohl verschiedene Angebote von Microsoft wie
Microsoft Azure als auch von SAP wie die SAP Cloud Platform an.
6190.book Seite 15 Montag, 28. Mai 2018 3:33 15
Einleitung
16
Schließlich vergleichen wir in Kapitel 9, »Zusammenfassung«, noch einmal
die im Buch vorgestellten Möglichkeiten. Sehr oft stehen Entscheider und
Umsetzer zu Beginn eines Integrationsprojekts vor der Aufgabe, sich einen
Überblick über den Markt und die Möglichkeiten zu verschaffen. Wir wollen
Ihnen in diesem Kapitel übersichtlich zeigen, welche die aktuellen Möglich-
keiten sind und wie sie aus technischer und lizenzrechtlicher Sicht sowie in
Hinblick auf den mit der Umsetzung verbundenen Projektaufwand zu be-
werten sind.
Nachstellen der Beispiele in diesem Buch
In diesem Buch finden Sie zahlreiche Beispiele für Integrationsszenarien,
die wir mit Screenshots detailliert dokumentiert haben. Dabei haben wir
versucht, keine Kombinationen aus Quell- und Zielsystem sowie Integrati-
onstechnologie doppelt zu behandeln. In einem Beispiel entwickeln wir
beispielsweise einen eigenen OData-Service über SAP Gateway als Datenlie-
ferant und für Microsoft Excel als Benutzeroberfläche. In einem anderen
Beispiel entnehmen wir die Services aus einer SAP-Fiori-App und zeigen
diese in Microsoft Word an.
Ganz bewusst haben wir alle Beispiele simpel gehalten, damit Sie diese zum
einen leicht nachstellen können und zum anderen auch ohne Nachbauen
des Codes oder Parametrisierung bereits einen guten Eindruck von den
Möglichkeiten der jeweiligen Methode erhalten.
Unsere Beispiele sollen als Ideenlieferanten dienen und Ihnen verschie-
dene Optionen aufzeigen. Dieses Buch ist nicht als Kochbuch gedacht, nach
dem Sie eigene Projekte umsetzen können. Wir wollen Ihnen mit den Bei-
spielen Anregungen für Ihre eigenen Projekte liefern und Sie darauf hin-
weisen, worauf Sie achten sollten und welche Vor- und Nachteile die
entsprechende Umsetzung mit sich bringt.
Wenn Sie die Beispiele selbst nachstellen wollen, können Sie dabei auf öf-
fentliche Demo-Systeme zurückgreifen oder ein eigenes System über die
SAP Cloud Appliance Library erstellen und in Microsoft Azure deployen.
Unter der Adresse https://azure.microsoft.com/de-de/ können Sie solche
Systeme erstellen und damit arbeiten. Jedem neuen Anwender spendiert
Microsoft einen Gutschein über 170 €, der für 30 Tage gültig ist, um diesen
Service ausgiebig zu testen. Wie Sie diesen Service in Zusammenhang mit
der SAP Cloud Appliance Library nutzen können, beschreiben wir in Ab-
schnitt 8.4.4, »Infrastructure as a Service«.
Sie können sämtliche im Buch vorgestellten Beispiele von der Website von
SAP PRESS unter http://www.sap-press.de/4603 herunterladen. Dort finden
6190.book Seite 16 Montag, 28. Mai 2018 3:33 15
Einleitung
17
Sie die Beispiele im Bereich Materialien zum Buch. Sie haben auf der Web-
site unter Lob und Tadel auch die Gelegenheit, Anregungen und Kritik an
uns loszuwerden. Wir freuen uns in jedem Fall darüber.
Informationskästen
In hervorgehobenen Informationskästen finden Sie in diesem Buch In-
halte, die wissenswert und hilfreich sind, aber etwas außerhalb der eigent-
lichen Erläuterung stehen. Damit Sie diese Informationen sofort einordnen
können, haben wir die Kästen mit entsprechenden Symbolen gekennzeich-
net:
� In Kästen, die mit diesem Symbol gekennzeichnet sind, finden Sie Infor-
mationen zu weiterführenden Themen oder Hintergrundwissen, das Sie
sich merken sollten.
� Dieses Symbol weist Sie auf Besonderheiten hin, die Sie beachten sollten.
Es warnt Sie außerdem vor häufig gemachten Fehlern oder Problemen,
die auftreten können.
� Beispiele, durch dieses Symbol kenntlich gemacht, weisen auf Szenarien
aus der Praxis hin und veranschaulichen die dargestellten Funktionen.
� Mit diesem Symbol markierte Textstellen fassen wichtige thematische
Zusammenhänge für Sie noch einmal auf einen Blick zusammen.
Weiterführende Literatur
Als weiterführende Lektüre empfehlen wir Ihnen das Buch »SAP-Schnitt-
stellenprogrammierung« von Michael Wegelin und Michael Englbrecht
(4. Auflage, SAP PRESS 2018) sowie das umfassende Kompendium »SAP
Gateway und OData« von Carsten Bönnen, Volker Drees, André Fischer,
Ludwig Heinz und Karsten Strothmann (2. Auflage, SAP PRESS 2016).
Danksagung
Ein besonderer Dank gilt Christian Ritter und Manuel Volk für ihre kriti-
schen Anmerkungen, den fachlichen Austausch und die Unterstützung bei
der Erstellung der Beispiele in C# und Java. Daneben danken wir Patrick
Bauer für die Bereitstellung von Beispielen im Umfeld von SAP Business
Warehouse und SAP BusinessObjects sowie Thomas-Lars Böhm für seine
Hilfe bei den ABAP-Beispielen. Außerdem möchten wir uns bei Patrick
Theobald und Martin Reinert bedanken, die uns bei der Recherche im
Bereich der Drittanbietersoftware unterstützt haben.
Des Weiteren möchten wir uns bei den vielen (Ex-)Kollegen bei SAP und bei
Microsoft und SUSE bedanken. Viele haben in kurzen und langen Gesprä-
6190.book Seite 17 Montag, 28. Mai 2018 3:33 15
Einleitung
18
chen wichtige Ideen und Komponenten zu diesem Buch beigesteuert:
Divya Mary, Alexander Peter, André Fischer, Robert Boban, Goran Condric,
Martin Sudbrock, Felix Köhl, Björn Woppmann, Andreas Holzapfel, Sebas-
tian Dusch, Zoltan Farkas, Daniel Neumann, Peter Schinagl, das Global-
Black-Belt-Team bei Microsoft und viele mehr.
Außerdem bedanken wir uns für die gute Betreuung, die wertvollen Hin-
weise und kritischen Rückfragen bei unserer Lektorin Janina Karrasch vom
Rheinwerk Verlag.
Ein ganz großer Dank gilt zum Schluss auch unseren Familien, insbeson-
dere unseren Ehefrauen Ortrud und Silke, ohne deren Unterstützung dieses
Projekt nicht möglich gewesen wäre.
Zu guter Letzt wünschen wir Ihnen viel Spaß bei der Lektüre dieses Buches
und viel Erfolg bei der Umsetzung Ihrer Integrationsprojekte.
Holger Bruchelt und Thomas Hucke
6190.book Seite 18 Montag, 28. Mai 2018 3:33 15
Auf einen Blick
1 Integrationsszenarien und -technologien .......................................... 19
2 Integration über SAP Gateway ............................................................... 69
3 Integration über Remote Function Call
und SAP .NET Connector ........................................................................... 113
4 Integration über SOAP-Webservices .................................................... 135
5 SAP API Business Hub ................................................................................ 165
6 Verwendung von Drittanbieter-Add-ons ........................................... 191
7 Integration im Umfeld von Business Intelligence ........................... 229
8 Infrastrukturkomponenten ..................................................................... 275
9 Zusammenfassung .................................................................................... 355
6190.book Seite 5 Montag, 28. Mai 2018 3:33 15
7
Inhalt
Einleitung .......................................................................................................................... 13
1 Integrationsszenarien und -technologien 19
1.1 Gründe für die Integration von Microsoft-Office- und
SAP-Lösungen .................................................................................................. 19
1.1.1 Self-Service-Szenarien in Microsoft SharePoint ................... 20
1.1.2 Zugriff auf SAP-Reports und Reports aus SAP Business
Warehouse ........................................................................................ 21
1.1.3 Verwendung von SAP-Daten in Microsoft-Office-
Produkten .......................................................................................... 22
1.1.4 Zugriff auf Daten in Microsoft-Systemen aus dem
SAP-System ....................................................................................... 22
1.2 Historische Entwicklung der Integrationstechnologie .................. 23
1.2.1 Duet for Microsoft Office and SAP ............................................ 23
1.2.2 Duet Enterprise for Microsoft SharePoint and
SAP Server .......................................................................................... 30
1.2.3 SAP Gateway for Microsoft .......................................................... 34
1.3 SAP-Daten in Microsoft-Anwendungen integrieren ...................... 38
1.3.1 librfc32.dll .......................................................................................... 40
1.3.2 SAP Java Connector und SAP .NET Connector ....................... 40
1.3.3 Theobald ERPConnect .................................................................... 42
1.3.4 Integration mit SOAP-Webservices .......................................... 43
1.3.5 SAP Gateway ..................................................................................... 44
1.4 Microsoft-Daten in SAP-Anwendungen integrieren ...................... 45
1.4.1 Integration in das SAP Enterprise Portal ................................ 46
1.4.2 Integration in SAP Fiori ................................................................. 48
1.4.3 Beispiel: Microsoft-Kalenderintegration in einer
SAPUI5-App ....................................................................................... 55
1.5 Zusammenfassung ........................................................................................ 67
6190.book Seite 7 Montag, 28. Mai 2018 3:33 15
Inhalt
8
2 Integration über SAP Gateway 69
2.1 SAP Gateway im Überblick ........................................................................ 69
2.2 Einführung in OData .................................................................................... 71
2.2.1 REST-Client verwenden ................................................................ 74
2.2.2 Daten lesen ....................................................................................... 78
2.2.3 Daten erstellen, ändern und löschen ...................................... 82
2.3 OData-Services mit SAP Gateway erstellen ...................................... 87
2.4 OData-Services auf Basis von Core Data Services erstellen ....... 94
2.5 Integration von SAP-Kundendaten in Excel über
SAP Gateway ................................................................................................... 103
2.6 Zusammenfassung ....................................................................................... 112
3 Integration über Remote Function Call und SAP .NET Connector 113
3.1 Remote Function Call im Überblick ....................................................... 114
3.2 Remote Function Call mit C# über den SAP .NET Connector ..... 115
3.2.1 Installation des SAP .NET Connectors ...................................... 116
3.2.2 SAP .NET Connector in ein Visual-Studio-Projekt
einbinden ......................................................................................... 117
3.2.3 Aufruf des BAPI implementieren .............................................. 121
3.3 Remote Function Call mit Java über den
SAP Java Connector ...................................................................................... 124
3.3.1 Installation des SAP Java Connectors ...................................... 125
3.3.2 SAP Java Connector in ein Eclipse-Projekt einbinden ......... 126
3.3.3 Verbindung zum SAP-System implementieren ................... 129
3.4 Zusammenfassung ....................................................................................... 133
4 Integration über SOAP-Webservices 135
4.1 Aufbau eines SOAP-Webservices ........................................................... 135
4.1.1 SOAP ................................................................................................... 136
4.1.2 XML ..................................................................................................... 138
6190.book Seite 8 Montag, 28. Mai 2018 3:33 15
Inhalt
9
4.1.3 WSDL ................................................................................................... 140
4.1.4 XSLT und XPath ................................................................................ 140
4.2 SOAP-Webservices für ABAP ..................................................................... 142
4.2.1 Funktionsbaustein vorbereiten .................................................. 142
4.2.2 Webservice einrichten ................................................................... 145
4.2.3 Webservice im SOA-Management konfigurieren ................ 148
4.2.4 Webservice ausführen und testen ............................................ 151
4.2.5 Webclient erstellen ........................................................................ 153
4.3 Webservices mit C# und Excel konsumieren ..................................... 155
4.3.1 Webservice mit C# verarbeiten .................................................. 156
4.3.2 Webservice in Excel einbinden ................................................... 160
4.4 Zusammenfassung ........................................................................................ 163
5 SAP API Business Hub 165
5.1 Die Vorgänger: BAPI Explorer und SAP Enterprise Service
Workplace ......................................................................................................... 166
5.2 Einsatz des SAP API Business Hubs ......................................................... 168
5.2.1 Schnittstellen aus dem SAP API Business Hub
verwenden ......................................................................................... 171
5.2.2 Anwendungsfälle für die Schnittstellen des
SAP API Business Hubs ................................................................. 178
5.2.3 Schnittstellen in eine Word-Applikation integrieren .......... 179
5.3 Zusammenfassung ........................................................................................ 189
6 Verwendung von Drittanbieter-Add-ons 191
6.1 Theobald ERPConnect .................................................................................. 192
6.1.1 Installation und Setup ................................................................... 193
6.1.2 Verbindung mit einem SAP-Applikationsserver
herstellen ........................................................................................... 196
6.1.3 Authentifizierung gegenüber dem SAP-System ................... 198
6.1.4 Zugriff auf Daten aus der SAP-Materialwirtschaft
mit einer .NET-Anwendung ......................................................... 202
6.1.5 ERPConnect Services für SharePoint ......................................... 212
6.1.6 Produktfamilie Xtract IS ................................................................ 213
6190.book Seite 9 Montag, 28. Mai 2018 3:33 15
Inhalt
10
6.2 Weitere Drittanbieterlösungen .............................................................. 214
6.2.1 Layer2 Cloud Connector ............................................................... 215
6.2.2 Gimmal Workplace for SAP ......................................................... 219
6.2.3 Sitrion One ........................................................................................ 220
6.2.4 M/Connect von Merentis ............................................................ 222
6.3 Lizenzierung von Drittanbieterlösungen ............................................ 226
6.4 Zusammenfassung ....................................................................................... 228
7 Integration im Umfeld von Business Intelligence 229
7.1 Integration über SAP Analysis for Microsoft Office ...................... 232
7.2 Integration von Excel und SAP HANA .................................................. 242
7.3 Integration von SharePoint und SAP BusinessObjects ................. 253
7.3.1 SAP-BusinessObjects-Berichte in SharePoint ablegen ....... 254
7.3.2 SAP-BusinessObjects-Berichte in SharePoint
einbinden .......................................................................................... 257
7.4 Anbindung der SAP Analytics Cloud an das Azure Active
Directory ............................................................................................................ 259
7.5 Integration von Azure Data Factory und SAP HANA
bzw. SAP BW .................................................................................................... 264
7.6 Integration von SAP-Daten in Power BI .............................................. 266
7.7 Zusammenfassung ....................................................................................... 272
8 Infrastrukturkomponenten 275
8.1 Betriebsmodelle für die Cloud ................................................................. 277
8.2 SAP GUI for Windows .................................................................................. 279
8.3 Windows Server ............................................................................................ 281
8.3.1 Cluster-Installation und Hochverfügbarkeit ......................... 282
8.3.2 Single Sign-on für SAP NetWeaver via Azure Active
Directory ............................................................................................ 284
6190.book Seite 10 Montag, 28. Mai 2018 3:33 15
Inhalt
11
8.4 Microsoft Azure ............................................................................................... 298
8.4.1 Cloud-Infrastruktur ....................................................................... 298
8.4.2 Sicherheit ........................................................................................... 300
8.4.3 Services .............................................................................................. 301
8.4.4 Infrastructure as a Service ............................................................ 302
8.4.5 Platform as a Service ...................................................................... 324
8.4.6 Kubernetes und SAP ....................................................................... 335
8.5 SAP Cloud Platform ....................................................................................... 337
8.5.1 Neo-Umgebung der SAP Cloud Platform ................................ 340
8.5.2 Cloud-Foundry-Umgebung der SAP Cloud Platform ........... 349
8.6 Zusammenfassung ........................................................................................ 353
9 Zusammenfassung 355
9.1 Integration ........................................................................................................ 355
9.2 Analytics ............................................................................................................. 359
9.3 Infrastruktur ..................................................................................................... 360
9.3.1 On-Premise-Betrieb ........................................................................ 361
9.3.2 Infrastructure as a Service ............................................................ 361
9.3.3 Platform as a Service ...................................................................... 362
9.3.4 Software as a Service ..................................................................... 363
Die Autoren ...................................................................................................................... 365
Index ................................................................................................................................... 367
6190.book Seite 11 Montag, 28. Mai 2018 3:33 15