Tutorial: SAP ABAP RFC-Verbindungen mit dem Java Connector 3.0.7: Ein Java-Client

Nachdem wir nun in Teil 1 dieses Tutorials die Grundlagen geklärt und die Entwicklungsumgebungen entsprechend eingerichtet und vorbereitet haben, wenden wir uns nun der eigentlichen Programmierung des Client-seitigen Java-Programms zu.

Welche Möglichkeiten bietet der JavaConnector?

Es ist möglich direkt Variablen an Funktionsbausteine zu übergeben, diese auszuführen und Werte zu empfangen. Auch komplette Tabellen lassen sich über die Schnittstellen übergeben. Verbindungen werden im Gegensatz zu den ersten beiden Versionen des JavaConnectors direkt etabliert ohne aufwendiges Erstellen einer eigenen Verbindung. Im Prinzip braucht man für das gesamte Programm nur ein einfaches: „exampleapp.execute(name)“.

Zunächst muss der Client als solches umschrieben werden und selbstverständlich der Funktionsbaustein der letztlich manipuliert bzw. aufgerufen wird. Dies erreichen wir mit dem Erstellen der Methode javaConnectClient() welche eine JCoException wirft, falls keine Verbindung etabliert wurde oder andere Fehler auftreten.
In dieser Methode wird ebenso die Destination (letztlich die RFC-Verbindung im SAP-Zielsystem) angelegt und deklariert. Auch der Funktionsbaustein wird auf diese Weise mit JCoFunction publiziert und dem JavaConnector bzw. Ihrem Programm bekannt gemacht. Die Zuweisung der Funktion kann ausschließlich über destination.getRepository().getFunction(„ZTEST_EXAMPLEAPP“) erfolgen.
Abschließend wird via try-catch-Block noch innerhalb der Methode ein function.execute(destination); ausgeführt und die entsprechende ABAP-Exception gefangen. Die Destination-File dazu haben wir in Teil 1 dieses Tutorials erstellt. Im Großen und Ganzen sieht das Coding der Methode dann so aus:

Um nun beispielsweise Changing-Parameter zu übergeben kann man mit folgendem Befehl arbeiten:
Function.getChangingParameterList().getString(changingparameter);.

Ab “getString“ ist im Prinzip dann alles möglich. Also bspw. das Setzen von ABAP-Objekten, der Austausch von Variablen, das Aktivieren kompletter Inhalte etc. Voraussetzung ist natürlich das die Destination richtig gesetzt ist und der Funktionsbaustein auch etwas ausführt.

Allgemein gesprochen funktioniert ein Remote Function Call nur dann wenn folgende Bedingungen erfüllt sind:

  • Korrekt gesetzte Verbindungsparameter sowohl in der Transaktion SM59 und der Destination-File des Java-Programms
  • Der Funktionsbaustein syntaktisch und logisch korrekt ist.
  • Der Funktionsbaustein keinen weiteren Aufruf von RFC-Verbindungen beinhaltet.

Um eine ausführbare Datei auf Ihrer Frontend-Workstation aus ABAP heraus zu starten genügt es eine RFC-Destination mit Typ „T“ in der Transaktion SM59 anzulegen und einen Funktionsbaustein mit folgendem Beispielcode zu erstellen:


Die zusätzliche Exception bei diesem Befehl fängt den Timeout ab der bei einem solch externem Aufruf eines Programmes entsteht weil bspw. eine Batch-Datei nicht in der Lage ist einen Response zu senden und dem SAP-System somit nicht die korrekte Funktionalität gewährleisten kann.

Im nächsten Teil des Tutorials werde ich einen Java-seitigen RFC-Server erstellen.


Getagged mit: , , , ,

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

*