SAP Anbindung

Imixs-Office-Workflow verfügt durch seine offene Java basierte Architektur über verschiedene Möglichkeiten Workflows auch in eine SAP Umgebung einzubinden. Neben der Möglichkeit Daten über verschiedene Dateiaustauschformate an SAP zu übertragen oder von SAP in Imixs-Office-Workflow zu importieren, können über sogenannte Connectoren technische ausgefeilte Lösungen realisiert werden.

Der SAP Java Connector

Eine flexible Lösung, um eine SAP-Anbindung in Imixs-Office-Workflow zu realisieren, um beispielsweise Dokumente oder Buchhaltungsdaten an SAP zu übertragen, besteht in der Verwendung des SAP-Java-Connector (SAP JCo). Die Umsetzung dieser Art der Schnittstelle ist sehr mächtig und über die BPMN Modellierung eng mit der Prozesslogik von Imixs-Office-Workflow verzahnt.

Der SAP-Java-Connector (SAP JCo)

Für eine Anbindung an SAP wird zunächst der SAP JCo heruntergeladen und in Imixs-Office-Workflow installiert, um eine Verbindung zur SAP-Systemlandschaft herstellen zu können. Die Integration erfolgt über das Extension Konzept von Imixs-Office-Workflow. Der SAP JCo ist eine Java-Bibliothek, die von SAP zur Verfügung gestellt wird und die es ermöglicht, auf SAP-Funktionen und Daten zuzugreifen.

Die Verbindung zur SAP-Systemlandschaft

Nach der Integration von SAP JCo in Imixs-Office-Workflow kann bereits eine Verbindung zur SAP-Systemlandschaft hergestellt werden. Dazu werden die Verbindungsparameter wie z.B. die IP-Adresse des SAP-Systems, der Mandant, das Benutzerkonto und das Passwort wahlweise über die Umgebungsvariablen oder die Imixs Modellierungsschnittstelle konfiguriert.

Flexible SAP Funktionsaufrufe

Durch die Imixs Microkernel Architektur kann der Aufruf von SAP-Funktionen wahlweise über Plugins oder Adapter realisiert werden. In beiden Fällen erfolgt die Steuerung sowie die Formatierung der Daten über das Imixs BPMN Modell. Unsere Workflow Experten unterstützen Sie dabei, die korrekten Funktionen und Parameter zu verwenden, um so die gewünschten Aktionen auf der SAP-Seite auszuführen.

Fehlerbehandlung und Logging

Für eine robuste und fehlertolerante Integration in entsprechende Geschäftsprozesse sollte eine SAP Schnittstelle so gestaltet werden, dass diese eine sinnvolle Fehlerbehandlung und Logging-Mechanismen implementiert. Dadurch können bei eventuellen Probleme mit der Übertragung von Daten entsprechende Aktionen im Prozessablauf modelliert werden. Beispielweise kann Imixs-Office-Workflow automatisch Systemadministratoren per E-Mail-Schnittstelle rechtzeitig informieren, um Probleme zu identifizieren und zu beheben.

Die Integration von SAP in Imixs-Office-Workflow führen wir in einem strukturierten Consulting und Entwicklungsprozess durch, welcher sicherstellt, dass die SAP-Anbindung in Imixs-Office-Workflow sicher und effektiv ist. Dabei ist es nicht nur wichtig bewährte Methoden in der Software-Entwicklung anzuwenden, sondern auch die konkreten Prozessanforderungen sowie die Besonderheiten der SAP-Systemlandschaft zu berücksichtigen.

Beispiel: Auslesen von Mandantendaten

Das nachstehende Beispiel zeigt, wie Mandantendaten von SAP nach Imixs-Office-Workflow übertragen werden können. Die Integration erfolgt hierbei über eine Imixs-Adapter Schnittstelle welche den SAP JCo verwendet. Auf diese Weise lässt sich eine Verbindung zur SAP-Systemlandschaft herstellen, um über SAP-Funktionen in einer flexiblen Weise Daten von der SAP-Seite zu erhalten und diese in den Prozess-Workflow zu integrieren:

import com.sap.conn.jco.*;

public class SAPJCoAdapter implements org.imixs.workflow.SignalAdapter {

    // inject services...
    @EJB
    ModelService modelService;
    @EJB
    WorkflowService workflowService;
    ...

    // configuration
    @Inject
    @ConfigProperty(name = "imixs.sap.jco.host")
    Optional<String> hostProperty;

    @Inject
    @ConfigProperty(name = "imixs.sap.jco.sysnr", defaultValue = "00")
    Optional<String> sysnr;

    @Inject
    @ConfigProperty(name = "imixs.sap.jco.client", defaultValue = "100")
    Optional<String> clientProperty;

    @Inject
    @ConfigProperty(name = "imixs.sap.jco.user")
    Optional<String> user;

    @Inject
    @ConfigProperty(name = "imixs.sap.jco.pw")
    Optional<String> secret;

    // Connect and read data
    @Override
    public ItemCollection execute(ItemCollection workitem, ItemCollection event) throws AdapterException {

      // Connect  SAP...
      JCoDestination destination;
      try {
         JCoDestinationManager.registerDestinationConfiguration(new CallDestinationConfiguration());
         destination = JCoDestinationManager.getDestination("mySAPSystem");
      } catch (JCoException e) {
         e.printStackTrace();
         return;
      }

      // Call SAP-Funktion 
      try {
         JCoFunction function = destination.getRepository().getFunction("BAPI_COMPANYCODE_GETDETAIL");
         if (function == null) {
            throw new RuntimeException("Function BAPI_COMPANYCODE_GETDETAIL not found in SAP.");
         }

         function.getImportParameterList().setValue("COMPANYCODEID", "1000");
         function.execute(destination);
         JCoStructure result = function.getExportParameterList().getStructure("COMPANYCODE_DETAIL");

         // Adapt the new Data to Workitem....
         workitem.setItemValue("Company.Name" , result.getString("COMPANY_NAME"));
         workitem.setItemValue("Company.city" ,result.getString("CITY"));

      } catch (JCoException e) {
         e.printStackTrace();
      }

      // Continue Workflow Process
      return workitem;

   }

   static class CallDestinationConfiguration implements DestinationConfiguration {
      public Properties getDestinationProperties(String destinationName) {
         Properties props = new Properties();
         props.setProperty(DestinationDataProvider.JCO_ASHOST, hostProperty);
         props.setProperty(DestinationDataProvider.JCO_SYSNR, sysnr);
         props.setProperty(DestinationDataProvider.JCO_CLIENT,client);
         props.setProperty(DestinationDataProvider.JCO_USER, user);
         props.setProperty(DestinationDataProvider.JCO_PASSWD, secret);
         props.setProperty(DestinationDataProvider.JCO_LANG, "en");
         return props;
      }

      public boolean supportsEvents() {
         return false;
      }

      public void setDestinationDataEventListener(DestinationDataEventListener eventListener) {
      }

      public void unregisterDestinationConfiguration(String destinationName) {
      }
   }
}

Die Imixs Service Subscripiton

Mit einer Service Subscription unterstützen wir Sie bei der Umsetzung und Optimierung Ihrer SAP Prozesse und zeigen Ihnen einen schnellen Weg hin zu einem professionellen Geschäftsprozessmanagement.

Treten Sie mit uns in Kontakt.