Dezentraler SAP Rechnungsfreigabeprozess in SharePoint – Teil 2
Nov 11, 2010 | by admin | 0 Comments

Für die Integration zwischen SharePoint und SAP stehen zahlreiche Schnittstellen für verschiedene Anwendungsfälle zur Verfügung. Dabei wird grob unterschieden, ob Daten aus dem SAP (ERP)- Backend oder aus einer SAP Portal- Applikation integriert werden sollen. Auch die Richtung, in die die Informationen übertragen werden, spielt eine Rolle.

In dem früheren Blog Artikel bin ich schon mal auf die Motivation zur SAP SharePoint Integration eingegangen. Obwohl viele ähnliche Anwendungsfälle denkbar sind, besteht bei dieser Art immer die Forderung, SAP Datensätze mit den zugehörigen Dokumenten aus dem Archiv nach SharePoint zu transferieren und dort einen externen (SharePoint-) Workflow zu starten. Wie man eine solche Lösung umsetzen könnte will ich in diesem Blog beschreiben.

Das Vorgehen zeichnet sich dadurch aus, dass die Kommunikation SOA basiert stattfindet. Die Kommunikation erfolgt ausschließlich zwischen einem Web Services Provider und einem Web Service Consumer. Die gesamte Logik, die beschreibt wie die Informationen in SharePoint gespeichert werden, wird innerhalb des ASP.NET Web Services beschrieben.

Übertragung der Daten zwischen SAP und SharePoint

Im ersten Schritt muss auf dem IIS, auf dem die SharePoint Webapplikation gehosted wird, ein Web Service Provider eingerichtet werden (Visual Studio 2010). In dem Web Service wird eine so genannte WSDL (Web Service Definition Language) Datei generiert, die den Web Service beschreibt. Die WSDL Datei (XML Datei) besteht im Wesentlichen aus einer Beschreibung, in welcher Form die Daten erwartet werden (Attributname und Datentyp) und der externen http-Adresse, unter der der Dienst erreichbar ist. Nachdem der Web Service Provider inklusive der WSDL Datei erstellt wurde, kann im ABAP-Editor der Web Service Proxy erstellt werden. Dazu wird beim Erstellen des Proxy die WSDL Datei angegeben mit der der WS Proxy erzeugt wird. Damit stehen auf beiden Seiten entsprechende Methoden zur Verfügung, die zur Datenübertragung verwendet werden können. In einer Methode innerhalb des SAP Workflows wird der Web Service Proxy verwendet, um die Daten an den Web Service Provider zu schicken. Die eigentliche Kommunikation erfolgt damit auf Basis des SOAP Protokolls, in der sowohl die Datensätze als auch die Dokumente (binär) enthalten sind.

Bereitstellung der Daten in SAP

Der externe Prüfungsworkflow muss durch den SAP Anwender initiiert werden. Es muss also ein entsprechender Button in der SAP Maske zur Verfügung gestellt werden, mit dem der SAP Workflow aufrufbar ist. Die Bereitstellung wird innerhalb einer Methode definiert, die von einer Aufgabe innerhalb des SAP Workflows aufgerufen wird. Da innerhalb von SAP häufig Views-Strukturen verwendet werden, müssen die Tabellen, in denen die Buchungssätze hinterlegt sind, individuell zusammengestellt werden. Die benötigten Dokumente werden anhand der Archive Link Tabelle ermittelt. Innerhalb der ABAP Methode müssen zuerst die benötigten Daten aus dem Buchungssatz abgefragt werden, um sie in der SOAP Nachricht in XML Form zu verpacken. Dies geschieht mit Standard SAP Funktionsbausteinen. Zur Abfrage der benötigten Dokumente vom Content Server existieren ebenfalls vorgefertigte Funktionen die lediglich die Archive Link ID des Dokuments benötigen. Da die Buchungssätze bereits abgefragt wurden, ist die ID bekannt.

Speicherung der Daten in SharePoint

Der Methode des Web Service Providers wird der Inhalt der SOAP Nachricht übergeben und kann damit verwendet werden. Bei der Speicherung der Daten sind natürlich zahlreiche Möglichkeiten vorhanden. In diesem Beispiel nehme ich eine einfache Liste in der die einzelnen Informationen aus dem SAP Datensatz gespeichert werden und die Dokumente als Attachement angehängt werden. Die dafür benötigte Liste muss bereits vorhanden sein. Beim Arbeiten mit den Listenelementen kann die SharePoint Server API verwendet werden. D.h. beim Aufbau der SharePoint Strukturen kann das SharePoint Object Model verwendet werden. Die Weiterverarbeitung bzw. das Freigeben/Ablehnen kann dann als einfacher Workflow implementiert werden.