21

Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore
Page 2: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 3: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 4: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 5: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 6: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 7: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 8: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 9: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 10: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 11: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 12: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 13: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 14: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 15: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 16: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 17: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 18: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 19: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 20: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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

Page 21: Integration von SAP und Microsoft – Der praktische Leitfaden · Studio .NET für die Microsoft-Plattform entwickelten Applikation zu reali- sieren, stellen die beiden Konnektore

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