Funktionsbaustein-/Methodendefinitionen (X4 SAP JCo 3)
Auf dieser Seite erfahren Sie, wie Sie im SAP-Listener zu RFC/BAPis jeweils einen verarbeitenden X4-Prozess zuordnen können.
In einem spezifischen XML-Dokument (z. B. <X4>/X4DB/0/jco_method_def.xml
) können Sie für jeden Funktionsbaustein (Methode), der vom SAP-Host angesprochen wird, über den JCo 3 Server einen entsprechenden X4-Prozess zur Weiterverarbeitung zuordnen.
XML-Struktur für die SAP-Listener-Konfiguration
Die SAP-Listener-Konfigurationsdatei <X4><X4>/X4DB/0/saplistener.xml
referenziert für jede JCo 3 Server-Instanz jeweils ein XML-Dokument mit Funktionsbaustein-/Methodendefinitionen. Darin können Sie innerhalb des Wurzel-Elements <definitions>
beliebig viele Elemente <method>
nach folgendem Muster anlegen:
<method>
<name>Funktionsbaustein-/Methodenname</name>
<wait_for_result>Boolescher Wert</wait_for_result>
<class>de.softproject.integration.sapjcoserver.requesthandlers.
WorkflowStarter</class>
<properties>
<property name="workflowname">Pfad zum X4-Prozess</property>
<property name="userID">Benutzerordner in X4DB</property>
<property name="raw">Boolescher Wert</property>
</properties>
</method>
Für jede Funktionsbaustein-/Methodendefinition gilt:
Element
<name>
enthält den Namen des durch SAP aufgerufenen Funktionsbaustein (Methode); Der Platzhalter*
steht für alle anderen Funktionsbausteine , für die kein expliziter Funktionsbaustein definiert wurde. Zudem lassen sich hier Transaktions-Handler definieren (siehe unten).In Element
<wait_for_result>
können Sie konfigurieren, ob SAP auf die Antwort warten soll (false
), oder ob der Funktionsbaustein-/Methodenaufruf asynchron erfolgt (true
).Element
<class>
gibt die verwendete Klasse an, die zur Verarbeitung des Funktionsbausteins (bzw. der Methode) hinterlegt ist (normalerweise ist diesde.softproject.integration.sapjcoserver.requesthandlers.WorkflowStarter
zum Starten von X4-Prozessen); in den Kindelementen von<class>
geben Sie die zugehörigen Eigenschaften in jeweils einem Element<property>
an.
Für die X4-Prozess-Starterklasse werden folgende Eigenschaften angegeben:
workflowname
: Pfad zum X4-Prozess, der die Verarbeitung des Funktionsbaustein-/Methodenaufrufs übernimmtuserID
: Repository-Benutzerordner, in dem der X4-Prozess liegtraw
: IDoc im Raw-Format verarbeiten (true
) oder (false
)
Kompatibilitätshinweis
In älteren Funktionsbaustein-/Methodendefinitionen finden sich ggf. zusätzliche Angaben in einem Element <type>
und in einem Element <property name="languageID">
. Diese besitzen keine Funktion und können daher weggelassen werden.
Hinweis:
Beachten Sie bei der Migration auf JCo 3, dass unter JCo 2 das Attribut name
innerhalb des Elementes <property>
groß geschrieben wurde. Unter JCo 3 wird dieses klein geschrieben.
Transaktions-Handler für IDocs und BAPI-Aufrufe
In X4 SAP JCo 3 wurde das Transaktions-Handling in die Methodendefinition integriert. Zur Verarbeitung von eingehenden IDocs und BAPI-Aufrufen können Sie wie folgt einen Commit-Handler und einen Rollback-Handler definieren und jeweils einen X4-Prozess zuordnen, indem Sie in jeweils einer der Methodendefinition innerhalb von Element <name>
folgende Werte hinterlegen:
IDOC+COMMIT
: IDoc-Transaktion abschließen (Commit)IDOC+ROLLBACK
: IDoc-Transaktion abbrechen und zurücksetzen (Rollback)BAPI+COMMIT
: BAPI-Transaktion abschließen (Commit)BAPI+ROLLBACK
: BAPI-Transaktion abbrechen und zurücksetzen (Rollback)
Globaler Handler
Falls kein spezifischer Handler zutrifft, können Sie einen globalen Handler definieren, indem Sie in der Methodendefinition in Element <name>
als Wert einen Stern (*
) eintragen.
Beispiel
Im folgenden Beispiel wird für den Funktionsbaustein (Methode) ORDERS05
der X4-Prozess save_idoc.wrf
aufgerufen und es werden Daten im IDoc Raw-Format für die nachgeordnete Verarbeitung bereitgestellt. Zudem wird ein BAPI-Commit-Handler sowie ein globaler Handler ohne zugeordneten X4-Prozess definiert.
<method>
<name>ORDERS05</name>
<wait_for_result>false</wait_for_result>
<class>de.softproject.integration.sapjcoserver.requesthandlers.
WorkflowStarter</class>
<properties>
<property Name="workflowname">Project/Folder/ProcessIDoc.wrf</property>
<property Name="userID">1</property>
<property Name="raw">true</property>
</properties>
</method>
<method>
<name>BAPI+COMMIT</name>
<type>0</type>
<wait_for_result>false</wait_for_result>
<class>de.softproject.integration.sapjco3server.requesthandlers.
WorkflowStarter</class>
<properties>
<property name="workflowname">Project/Folder/BAPI_Commit.wrf</property>
<property name="userID">1</property>
</properties>
</method>
<method>
<name>*</name>
<type>1</type>
<wait_for_result>false</wait_for_result>
<class>de.softproject.integration.sapjco3server.requesthandlers.
WorkflowStarter</class>
<properties>
</properties>
</method>