27. Juli 2015 | 3 min lesezeit

SAP R3 Integration mit Hibersap

Hibersap bietet eine einfache Möglichkeit zur Integration von SAP-Systemen in die Java Enterprise Welt. Als Aufsatz des von SAP geschaffenen Java Connectors, macht sich Hibersap die Funktionsweise moderner O/R-Mapper zu nutze, um Java-Klassen auf ABAP-Funktionsmodule zu mappen.

SAP ist der nach Umsatz größte Hersteller von Unternehmenssoftware. In den vergangenen vier Jahrzenten haben die Produkte von SAP in vielen Unternehmen Einzug gehalten und übernehmen dort geschäftskritische Funktionen wie das Enterprise-Resource-Planning (ERP) oder das Customer-Relationship-Management (CRM). Seit einigen Jahren bietet SAP mit dem SAP Java Connector (kurz SAP JCo) eine Middleware-Komponente, die die Entwicklung von SAP-fähigen Komponenten und Anwendungen in Java ermöglicht. Die Kommunikation zwischen Java und SAP erfolgt über Business Application Programming Interfaces (kurz BAPI), eine standardisierte Programmierschnittstelle für entfernte Zugriffe auf Daten und Geschäftsprozesse eines SAP-Systems.

Hibersap

Um die Nutzung des SAP JCo zu erleichtern hat die Firma akquinet das Framework Hibersap entwickelt. Nach dem Vorbild moderner O/R-Mapper stellt Hibersap Annotationen bereit, mit deren Hilfe BAPIs auf Java-Klassen gemappt werden können und eine zugehörige API, die sich um Aspekte wie Ausführung, Transaktionshandling und Sicherheit kümmert.

Für den Einsatz von Hibersap müssen die beiden Artefakte hibersap-core und hibersap-jco eingebunden werden. Zusätzlich muss der SAP JCo sowohl als Abhängigkeit (sapjco3.jar) als auch als native Libary (unter Windows sapjco3.dll, unter Linux libsapjco3.so) hinterlegt werden. Da die JCo-Dateien nicht frei verfügbar, sondern nur direkt über SAP erhältlich sind, muss das Artefakt manuell ins lokale Maven-Repository hinzugefügt werden. Zusätzlich muss beim Start der Anwendung der Pfad für die native Library über die Umgebungsvariable java.library.path bekannt gemacht werden.

Analog zur persistence.xml in JPA nutzt Hibersap die hibersap.xml für die Konfiguration der Verbindung mit dem JCo.

Zum Testen wollen wir nun auf ein einfaches BAPI zugreifen, welches eine Kundenliste bereitstellt.

FUNCTION BAPI_OPENKNOWLEDGE_TEST. 
   IMPORTING 
     VALUE(MAXREAD)  LIKE        BAPI_AUX-MAXREAD DEFAULT 0 
   EXPORTING 
     VALUE(RETURN)   LIKE        BAPIRET2 STRUCTURE BAPIRET2 
   TABLES 
     CUSTOMERLIST    STRUCTURE   BAPICUSTOMERLIST 

Das Modul hat einen Import-Parameter in der Importstruktur (MAXREAD), welcher die Anzahl der zurückgelieferte Kunden begrenzt. In der Exportstruktur, wird eine Struktur mit dem Namen CUSTOMERLIST und dem Typ BAPICUSTOMERLIST zurückgegeben, dessen Einträge aus den Feldern CUSTOMERID (numerisch) und CUSTNAME (Character) bestehen. Beim Import-Parameter MAXREAD handelt es sich um einen simplen Typen, wohingegen der RETURN-Tabellenparameter vom Typ BAPIRET2 eine gängige ABAP-Struktur darstellt.

Für den Aufruf via Hibersap muss eine Mapping-Klasse für das BAPI implementiert werden. Dabei handelt es sich um ein POJO, das mit Feldern für die Import- und Exportparameter versehen ist. Das Mapping wird mit Hilfe von Annotationen definiert.

Die BAPI Struktur BAPIRET2 wird in vielen ABAP-Funktionen verwendet, weshalb Hibersap eine Implementierung für diese Struktur bereitstellt. Die Klasse Customer hingegen gehört zum fachlichen Modell unserer Beispielanwendung und wird mit der Annotation @BapiStructure als Mapping-Klasse gekennzeichnet.

Zum Abfragen der Kundenliste wird der SessionManager erstellt und eine neue Sitzung gestartet. Über die Methode execute() wird das BAPI aufgerufen und die Mapping-Klasse mit der Kundenliste angereichert.

Hibersap bietet eine einfache Möglichkeit Java-Anwendungen mit SAP-Systemen zu verbinden. Die Anleihen an Hibernate und JPA erleichtern den Einstieg, da sich der Java-Entwickler gleich wie zu Hause fühlt. Die unhandliche Verwendung des SAP Java Connectors wird hingegen abstrahiert. Die Bibliothek steht Open Source unter https://github.com/hibersap/hibersap zur Verfügung.


Keine Kommentare

Kontakt

OPEN KNOWLEDGE GmbH

Standort Oldenburg:
Poststraße 1, 26122 Oldenburg

Standort Essen:
II. Hagen 7, 45127 Essen