Freigeben über


Ausführen von BAPI-Transaktionen in SAP mit BizTalk Server

Mit dem SAP-Adapter können Adapterclients Transaktionen auf einem SAP-System mithilfe von BizTalk Server ausführen. Bevor Sie eine Orchestrierung für eine Transaktion erstellen, müssen Sie zunächst ein grundlegendes Szenario verstehen, in dem Transaktionen ausgeführt werden. In einem typischen Transaktionsszenario wird eine Anforderungsnachricht mit mehreren Vorgängen (z. B. aufrufen einer BAPI) an das SAP-System gesendet. Dies wird als "Vorgangsmeldung" bezeichnet. Die Orchestrierung muss jede Vorgangsnachricht aus der Anforderungsnachricht extrahieren und die einzelnen Vorgangsmeldungen an das SAP-System senden. Die Orchestrierung sendet sie nacheinander unter Verwendung derselben Verbindung. Die Orchestrierung extrahiert die einzelnen Nachrichten aus der "Vorgangsmeldung", indem eine XML-Transformation über eine BizTalk-Zuordnung verwendet wird.

Nachdem die Vorgänge ausgeführt wurden, muss die Orchestrierung die Transaktion committen oder abbrechen, indem Nachrichten für BAPI_TRANSACTION_COMMIT bzw. BAPI_TRANSACTION_ROLLBACK gesendet werden. Diese werden als "Transaktionsnachrichten" bezeichnet.

Wie aktiviert der Adapter Transaktionen über BizTalk Server?

Um Transaktionen auf einem SAP-System mithilfe des BizTalk Server zu aktivieren, muss der SAP-Adapter folgendes ausführen:

  • Stellt die Nachrichtenkontexteigenschaften OPEN, REUSE, CLOSE und ABORT bereit.

  • Verwendet BAPI_TRANSACTION_COMMIT und BAPI_TRANSACTION_ROLLBACK, um die Vorgänge zu committen oder abzubrechen. Diese werden vom SAP-System verfügbar gemacht.

    In der folgenden Tabelle sind einige Richtlinien zur Verwendung der Eigenschaften mit BAPI_TRANSACTION_COMMIT oder BAPI_TRANSACTION_ROLLBACK aufgeführt:

Meldung OPEN WIEDERVERWENDEN CLOSE ABORT
Erste Nachricht (Vorgangsmeldung) Ja Nein No No
Nachfolgende Meldungen (Vorgangsmeldungen) Nein Ja Nein No
BAPI_TRANSACTION_COMMIT (Transaktionsmeldung) No Nein Ja Nein
BAPI_TRANSACTION_ROLLBACK (Transaktionsmeldung) No Nein Ja Yes

In der Tabelle gibt ein "Ja" die Nachrichtenkontexteigenschaft an, die für eine Nachricht verwendet werden soll. Entsprechend bezeichnet ein "Nein" die Nachrichtenkontexteigenschaft, die nicht mit einer Nachricht verwendet werden soll.

So fassen Sie die Tabelle zusammen:

  • Die erste Nachricht muss immer eine Vorgangsmeldung sein und darf nur die OPEN-Eigenschaft verwenden.

  • Die nachfolgenden Vorgangsmeldungen müssen die REUSE-Eigenschaft verwenden.

  • Die Transaktionsnachricht, die BAPI_TRANSACTION_COMMIT zum Committen der Transaktion entspricht, muss die CLOSE-Eigenschaft verwenden.

  • Die Transaktionsnachricht, die BAPI_TRANSACTION_ROLLBACK zum Abbrechen der Transaktion entspricht, kann entweder die Close- oder ABORT-Eigenschaft verwenden. Wenn Sie ABORT verwenden, muss sich die Nachricht idealerweise im Orchestrierungsausnahmeblock befinden.

  • Wenn mehrere Sendeports in einer Orchestrierung vorhanden sind, trennt der Adapter automatisch die Transaktion für nachrichten, die von jedem Port empfangen werden. Das heißt, eine Transaktion kann sich nicht über Ports erstrecken.

  • Nachrichtenwiebeleholungsversuche werden für Nachrichten in einer SAP-Transaktion nicht unterstützt. Daher sollten Benutzer den Wiederholungsversuch der Nachricht auf Null festlegen.

  • Der Adapter erzeugt möglicherweise unerwünschte Ergebnisse für die Kombinationen, die in der vorherigen Tabelle als "Nein" gekennzeichnet sind. Sie sollten Kombinationen verwenden, die mit "Ja" gekennzeichnet sind.

  • Nachrichten, die an den Adapter gesendet werden und keine Nachrichtenkontexteigenschaft aufweisen, werden normal ausgeführt, ohne an den aktuellen Transaktionskontext gebunden zu sein.

  • BAPI_TRANSACTION_COMMIT oder BAPI_TRANSACTION_ROLLBACK sollte idealerweise die letzte Nachricht im aktuellen Transaktionskontext in der Orchestrierung sein.

Die folgenden Abschnitte enthalten Anweisungen zum Ausführen von Transaktionen in SAP mithilfe des SAP-Adapters.

Wie führt man eine Transaktion auf einem SAP-System aus?

Das Ausführen eines Vorgangs auf einem SAP-System mithilfe des SAP-Adapters mit BizTalk Server umfasst prozedurale Aufgaben, die unter Bausteine zum Erstellen von SAP-Anwendungen beschrieben sind. Um Transaktionen auf einem SAP-System auszuführen, sind diese Aufgaben:

  1. Erstellen Sie ein BizTalk-Projekt, und generieren Sie ein Schema für den RFC, für den Sie die Transaktion ausführen möchten. Darüber hinaus müssen Sie ein Schema für BAPI_TRANSACTION_COMMIT und BAPI_TRANSACTION_ROLLBACK RFCs generieren.

  2. Erstellen Sie Nachrichten im BizTalk-Projekt zum Senden und Empfangen von Nachrichten aus dem SAP-System.

  3. Erstellen Sie eine Orchestrierung, die einzelne "Vorgangsmeldungen" aus der Anforderungsnachricht extrahiert und an das SAP-System sendet. Basierend auf der Anforderungsnachricht entscheidet die Orchestrierung auch, ob ein Commit oder ein Rollback für die Transaktion ausgeführt werden soll.

  4. Erstellen sie das BizTalk-Projekt, und stellen Sie es bereit.

  5. Konfigurieren Sie die BizTalk-Anwendung, indem Sie physische Sende- und Empfangsports erstellen.

  6. Starten Sie die BizTalk-Anwendung.

    Dieses Thema enthält Anweisungen zum Ausführen dieser Aufgaben.

Beispiel basierend auf diesem Thema

Das Beispiel SAPTransaction, das auf diesem Thema basiert, wird mit dem BizTalk-Adapterpaket bereitgestellt. Weitere Informationen finden Sie unter Beispiele für den SAP-Adapter.

Generieren eines Schemas

Um zu veranschaulichen, wie Transaktionen auf einem SAP-System ausgeführt werden, benötigen Sie die folgenden Schemas:

  • Damit die "Vorgangsmeldung" Vorgänge auf einem SAP-System ausführt. Die an den Adapter gesendete Anforderungsnachricht muss diesem Schema entsprechen. Dies kann ein beliebiges benutzerspezifisches Schema sein, das eine beliebige Anzahl von Vorgangsknoten enthält. In diesem Thema wird das Schema MultipleOrders.xsd verwendet. Das Schema wird auch als Teil des Transaktionsbeispiels bereitgestellt, das mit den BizTalk Adapter Pack-Beispielen ausgeliefert wird. Weitere Informationen finden Sie unter Schemabeispiele.

  • Zum Ausführen der Vorgänge auf einem SAP-System, z. B. aufrufen eines RFC. Die Anforderungsnachricht zum Ausführen eines Vorgangs muss diesem Schema entsprechen. Dieses Schema muss mithilfe des BizTalk-Projekt-Add-Ins Consume Adapter Service generiert werden. In diesem Thema wird die BAPI_SALESORDER_CREATEFROMDAT2 RFC aufgerufen. Informationen zum Generieren eines Schemas für RFC finden Sie unter Durchsuchen, Suchen und Abrufen von Metadaten für RFC-Vorgänge in SAP.

  • Zum Abbrechen oder Committen einer Transaktion. Die Anforderung zum Committen oder Abbrechen einer Transaktion muss diesem Schema entsprechen. Der SAP-Adapter verwendet die BAPI_TRANSACTION_COMMIT und BAPI_TRANSACTION_ROLLBACK RFC, um die Vorgänge bzw. ein Rollback auszuführen. Sie müssen das Schema für diese RFCs mithilfe des Add-Ins Adapterdienst nutzen generieren.

Hinweis

Sie müssen sicherstellen, dass dem BizTalk-Projekt alle erforderlichen Schemas hinzugefügt werden.

Wichtig

Sie müssen ihrem BizTalk-Projekt einen Verweis auf das BizTalk-Eigenschaftenschema für den SAP-Adapter hinzufügen. Die Schemadatei Microsoft.Adapters.SAP.BiztalkPropertySchema.dllwird vom BizTalk Adapter Pack-Setup installiert, in der Regel unter <Installationslaufwerk>:\Programme\Microsoft BizTalk Adapter Pack\bin.

Definieren von Nachrichten und Nachrichtentypen

Das Schema, das Sie zuvor generiert haben, beschreibt die "Typen", die für die Nachrichten in der Orchestrierung erforderlich sind. Eine Nachricht ist in der Regel eine Variable, deren Typ durch das entsprechende Schema definiert wird. Sie müssen das schema, das Sie im ersten Schritt generiert haben, mit den Nachrichten aus dem Fenster Orchestrierungsansicht des BizTalk-Projekts verknüpfen.

Vor dem Erstellen von Nachrichten müssen Sie die Anzahl der "Vorgangsknoten" bestimmen, über die die Anforderungsnachricht (vom Typ MultipleOrders.xsd) verfügt. In diesem Beispiel wird davon ausgegangen, dass die Anforderungsnachricht über zwei Vorgangsmeldungen zum Aufrufen des BAPI_SALESORDER_CREATEFROMDAT2 RFC verfügt. Daher müssen Sie einen Anforderung-Antwort-Nachrichtensatz erstellen, der dem für diesen RFC generierten Schema zugeordnet ist.

Sie müssen die folgenden Meldungen im BizTalk-Projekt erstellen.

  • Eine Nachricht, SendtoAdapter, für die Anforderungsnachricht, die an die Orchestrierung gesendet wird. Diese Nachricht muss dem Schema für die Eingabenachricht MultipleOrders.xsd zugeordnet werden.

  • Eine Nachricht, BAPIMessage, für den ersten Vorgang, der an das SAP-System gesendet wurde. Sie müssen auch eine Antwortmeldung (BAPIResponse) für die Antwort des ersten Vorgangs erstellen. Die Anforderungs- und Antwortnachrichten müssen dem schema zugeordnet werden, das für den BAPI_SALESORDER_CREATEFROMDAT2 RFC generiert wurde.

  • Eine Nachricht, BAPICommitMessage, für den Commitvorgang. Sie müssen auch eine Antwortnachricht (BAPICommitResponse) für die entsprechende Antwortnachricht erstellen. Die Anforderungs- und Antwortnachrichten müssen dem Schema von BAPI_TRANSACTION_COMMIT RFC zugeordnet werden.

  • Eine Nachricht, BAPIRollbackMessage, für den Rollbackvorgang. Sie müssen auch eine Antwortnachricht (BAPIRollbackResponse) für die entsprechende Antwortnachricht erstellen. Die Anforderungs- und Antwortnachrichten müssen dem Schema von BAPI_TRANSACTION_ROLLBACK RFC zugeordnet werden.

    Führen Sie die folgenden Schritte aus, um Nachrichten zu erstellen und sie mit dem Schema zu verknüpfen.

  1. Öffnen Sie die Orchestrierungsansicht des BizTalk-Projekts, falls es noch nicht geöffnet ist. Klicken Sie auf Ansicht, zeigen Sie auf Andere Fenster, und klicken Sie auf Orchestrierungsansicht.

  2. Klicken Sie in der Orchestrierungsansicht mit der rechten Maustaste auf Nachrichten, und klicken Sie dann auf Neue Nachricht.

  3. Klicken Sie mit der rechten Maustaste auf die neu erstellte Nachricht, und wählen Sie dann Eigenschaftenfenster aus.

  4. Führen Sie im Bereich Eigenschaften für Message_1 die folgenden Schritte aus.

    Option Aufgabe
    Bezeichner Geben Sie SendToAdapter ein.
    Nachrichtentyp Erweitern Sie in der Dropdownliste Schemas, und wählen Sie SAPTransaction.MultipleOrders aus, wobei SAPTransaction der Name Ihres BizTalk-Projekts ist. MultipleOrders ist das Schema für die Anforderungsnachricht.
  5. Wiederholen Sie den vorherigen Schritt, um sechs weitere Nachrichten zu erstellen. Führen Sie im Bereich Eigenschaften für die neuen Nachrichten die folgenden Schritte aus.

    Festlegen des Bezeichners auf Festlegen des Nachrichtentyps auf
    BAPIMessage SAPTransaction.SAPBindingSchema.BAPI_SALESORDER_CREATEFROMDAT2
    BAPIResponse SAPTransaction.SAPBindingSchema.BAPI_SALESORDER_CREATEFROMDAT2Response
    BAPICommitMessage SAPTransaction.SAPBindingSchema.BAPI_TRANSACTION_COMMIT
    BAPICommitResponse SAPTransaction.SAPBindingSchema.BAPI_TRANSACTION_COMMITResponse
    BAPIRollbackMessage SAPTransaction.SAPBindingSchema.BAPI_TRANSACTION_ROLLBACK
    BAPIRollbackResponse SAPTransaction.SAPBindingSchema.BAPI_TRANSACTION_ROLLBACKResponse

Einrichten der Orchestrierung

Sie müssen eine BizTalk-Orchestrierung erstellen, um BizTalk Server für die Ausführung von Transaktionen in einem SAP-System zu verwenden. In dieser Orchestrierung löschen Sie eine Anforderungsnachricht an einem definierten Empfangsspeicherort. Der SAP-Adapter nutzt die Nachricht und übergibt sie an das SAP-System. Die Antwort aus dem SAP-System wird an einem anderen Speicherort gespeichert.

Beim Erstellen einer Orchestrierung sollten Sie folgendes beachten:

  • Ordnen Sie das Schema der Anforderungsnachricht dem des BAPI_SALESORDER_CREATEFROMDAT2 RFC zu.

  • Ordnen Sie das Schema der Anforderungsnachricht dem des BAPI_TRANSACTION_COMMIT und BAPI_TRANSACTION_ROLLBACK RFC zu.

    Sie können die Schemas mithilfe einer XML-Transformation über eine BizTalk-Zuordnung zuordnen. Um dies zu erreichen, fügen Sie Transformations-Shapes in die Orchestrierung ein.

    Schließlich muss die Orchestrierung basierend darauf, ob die Anforderungsnachricht Informationen enthält, um die Transaktion zu commiten oder abzubrechen, für die entsprechende Nachricht entscheiden, die an das SAP-System gesendet werden soll. Um dies zu erreichen, fügen Sie eine Decide-Form in die Orchestrierung ein.

    Weitere Informationen zu den verschiedenen Formen, die in der Orchestrierung enthalten sind, finden Sie unter Orchestrierung Designer Benutzeroberfläche in der Referenz zum API-Namespace für Benutzeroberflächen und Entwickler.

    Eine Beispielorchestrierung für eine SAP-Transaktion ähnelt der folgenden:

    Orchestrierungen zum Ausführen von Transaktionen in SAP

Hinzufügen von Nachrichten-Shapes

Stellen Sie sicher, dass Sie die folgenden Eigenschaften für die einzelnen Nachrichtenformen angeben. Die in der Spalte Shape aufgeführten Namen sind die Namen der Nachrichtenformen, die in der vorherigen Orchestrierung angezeigt werden.

Form Formtyp Eigenschaften
ReceiveInputXML Empfangen Name aufReceiveInputXML festlegen

– Legen Sie Aktivieren auf True fest.
SendToLOB Send Name aufSendToLOB festlegen
ReceiveResponse Empfangen Name aufReceiveResponse festlegen

– Legen Sie Aktivieren auf False fest.
SendResponse Send Name aufSendResponse festlegen

Da die Anforderungsnachricht zwei Einfügenachrichten enthält, müssen Sie einen weiteren Satz von Sende- und Empfangsformen erstellen, um Nachrichten an SAP zu senden und eine Antwort zu empfangen. Da die Einfügenachrichten jedoch möglicherweise committet oder zurückgesetzt werden können, muss der zweite Satz von Shapes in einem Entscheidungsblock erstellt werden. Sie müssen eine Gruppe von Shapes für commit und einen weiteren Satz von Shapes für das Rollback erstellen.

Hinweis

Sie können einen Entscheidungsblock hinzufügen, indem Sie das Shape Entscheiden aus der BizTalk Orchestrations-Toolbox ziehen und ablegen.

Nachrichten-Shapes für Commit

In der folgenden Tabelle sind die Shapes für den "Commitpfad" der Orchestrierung aufgeführt. Hier müssen Sie keine Empfangsnachricht für eine Anforderungsnachricht erstellen. Die Anforderungsnachricht wird von der vorherigen Nachrichtenform übergeben.

Form Formtyp Eigenschaften
SendBAPICommit Send Name aufSendBAPICommit festlegen
ReceiveCommitResponse Empfangen Name aufReceiveCommitResponse festlegen

– Legen Sie Aktivieren auf False fest.
SendResponse2 Send Name aufSendResponse2 festlegen

Nachrichten-Shapes für Abbruch

In der folgenden Tabelle sind die Shapes für den "Rollbackpfad" der Orchestrierung aufgeführt.

Form Formtyp Eigenschaften
SendBAPIRollback Send Name aufSendBAPIRollback festlegen
ReceiveRollbackResponse Empfangen Name aufReceiveRollbackResponse festlegen

– Legen Sie Aktivieren auf False fest.
SendResponse3 Send Name aufSendResponse3 festlegen

Festlegen des Regelausdrucks

Sie haben die Nachrichtenformen für die Commit- und Abbruchvorgänge in einen Entscheidungsblock eingefügt, indem Sie ein Decide-Shape hinzufügen. Um die Bedingung anzugeben, für die die Orchestrierung eine Entscheidung treffen soll, müssen Sie einen Ausdruck für die Regelform angeben, auf deren Grundlage die Transaktion entweder committet oder zurückgesetzt wird. Beispielsweise müssen Sie den folgenden Ausdruck für die Regelform angeben:

SendToAdapter.isCommit == true

Dabei ist SendToAdapter die Nachricht, die Sie für das Schema der Anforderungsnachricht erstellt haben. Wenn das isCommit Tag also in der Anforderungsnachricht auf True festgelegt ist, übernimmt die Orchestrierung die Route "commit". Andernfalls nimmt die Orchestrierung die Rollbackroute an.

Damit Sie diese Bedingung im Ausdrucks-Editor angeben können, müssen Sie die isCommit Eigenschaft im Nachrichtenschema für die Anforderungsnachricht, die an den Adapter gesendet wurde, höhergestuft haben. Für dieses Thema lautet das zu verwendende Eingabeschema MultipleOrders.xsd. Sie müssen die isCommit Eigenschaft in diesem Schema heraufstufen. Weitere Informationen zum Höherstufen einer Eigenschaft finden Sie unter Höherstufen von Eigenschaften.

Hinzufügen von Erstellen von Nachrichten-Shapes

Wie bereits erläutert, enthält die anforderungsnachricht, die an den Adapter gesendet wird, zwei Einfügungsnachrichten und dann eine Commit- oder Abbruchnachricht. Sie müssen ein Shape "Nachricht erstellen" und darin ein Transformations-Shape hinzufügen, um einzelne Vorgangsmeldungen zu extrahieren, die an das SAP-System gesendet werden sollen. Sie müssen auch eine Nachrichtenzuweisungsform hinzufügen, um die Nachrichtenkontexteigenschaften für die Aktivierung von Transaktionen festzulegen.

Die erste Konstrukt-Nachrichtenform

Angenommen, die erste Form "Nachricht erstellen" heißt "ReceiveXML". Geben Sie für dieses Shape die Eigenschaft Messages Constructed als "BAPIMessage" an. Doppelklicken Sie auf das Shape transformieren, um das Dialogfeld Transformationskonfiguration zu öffnen. Gehen Sie im Dialogfeld wie folgt vor:

  • Wählen Sie aus, um eine neue Karte zu erstellen.

  • Wählen Sie im linken Bereich Quelle und in der Dropdownliste Variablenname die Option SendToAdapter aus.

  • Wählen Sie im linken Bereich Ziel und in der Dropdownliste Variablenname die Option BAPIMessage aus.

  • Klicken Sie auf OK , um die Zuordnung zu starten. Ordnen Sie das Schema der Anforderungsnachricht dem Schema des BAPI_SALESORDER_CREATEFROMDAT2 zu. Sie können das Funktoid Index verwenden, um eine Zuordnung zwischen der Quelle und den Zielschemas zu erstellen. Mit einem Index-Funktoid können Sie Informationen für einen bestimmten Datensatz in einer Reihe von Datensätzen auswählen.

    Die folgende Abbildung zeigt die Schemas, die mithilfe eines Index-Funktoids zugeordnet werden.

    Schemas, die mithilfe eines Index-Funktoids zugeordnet werden

    Weitere Informationen zur Verwendung des Dialogfelds Transformationskonfiguration finden Sie im Dialogfeld Konfiguration transformieren in der Referenz zu UI-Anleitung und API-Namespace für Entwickler.

    Weitere Informationen zur Verwendung des Funktoids Index finden Sie unter Funktoid Index.

    Nachdem Sie die Schemas zugeordnet haben, können Sie die Zuordnung mithilfe der Eigenschaftenseite der Kartendatei testen. Weitere Informationen finden Sie im Dialogfeld Eigenschaftenseite der< Zuordnungsdatei>, Registerkarte Karte testen in der Referenz zu Benutzeroberflächenleitlinien und API-Namespace für Entwickler.

    Geben Sie im Shape Nachrichtenzuweisung die Nachrichtenkontexteigenschaft an, um die Transaktion zu starten. Die Nachrichtenkontexteigenschaft für die erste Nachricht kann beispielsweise wie folgt aussehen:

    BAPIMessage(Microsoft.Adapters.SAP.BiztalkPropertySchema.ConnectionState) = "OPEN";

Das Nachrichten-Shape "Commitkonstrukt"

Angenommen, das Shape "Nachricht erstellen" für den Commitvorgang heißt "CommitMessage". Geben Sie für dieses Shape die Eigenschaft Messages Constructed als "BAPICommitMessage" an. Doppelklicken Sie auf das Shape transformieren, um das Dialogfeld Transformationskonfiguration zu öffnen. Gehen Sie im Dialogfeld wie folgt vor:

  • Wählen Sie aus, um eine neue Karte zu erstellen.

  • Wählen Sie im linken Bereich Quelle und in der Dropdownliste Variablenname die Option SendToAdapter aus.

  • Wählen Sie im linken Bereich Ziel und in der Dropdownliste Variablenname die Option BAPICommitMessage aus.

  • Klicken Sie auf OK, um die Zuordnung zu starten. Ordnen Sie das Schema der Anforderungsnachricht dem Schema von BAPI_TRANSACTION_COMMIT zu. Sie müssen kein Index-Funktoid für diese Zuordnung einschließen, da der knoten BAPI_TRANSACTION_COMMIT keine Datensatzhierarchie enthält.

    Geben Sie im Shape Nachrichtenzuweisung die Nachrichtenkontexteigenschaft an, um die Transaktion zu committen. Die Nachrichtenkontexteigenschaft für die erste Nachricht kann beispielsweise wie folgt aussehen:

    BAPICommitMessage(Microsoft.Adapters.SAP.BiztalkPropertySchema.ConnectionState) = "CLOSE";

Die Form des Rollbackkonstrukts

Angenommen, das Shape "Nachricht erstellen" für den Rollbackvorgang heißt "RollbackMessage". Geben Sie für dieses Shape die Eigenschaft Messages Constructed als "BAPIRollbackMessage" an. Doppelklicken Sie auf das Shape transformieren, um das Dialogfeld Transformationskonfiguration zu öffnen. Gehen Sie im Dialogfeld wie folgt vor:

  • Wählen Sie aus, um eine neue Karte zu erstellen.

  • Wählen Sie im linken Bereich Quelle und in der Dropdownliste Variablenname die Option SendToAdapter aus.

  • Wählen Sie im linken Bereich Ziel und in der Dropdownliste Variablenname die Option BAPIRollbackMessage aus.

  • Klicken Sie auf OK, um die Zuordnung zu starten. Ordnen Sie das Schema der Anforderungsnachricht dem Schema von BAPI_TRANSACTION_ROLLBACK zu. Sie müssen kein Index-Funktoid für diese Zuordnung einschließen, da der knoten BAPI_TRANSACTION_ROLLBACK keine Datensatzhierarchie enthält.

    Geben Sie im Shape Nachrichtenzuweisung die Nachrichtenkontexteigenschaft an, um ein Rollback für die Transaktion auszuführen. Die Nachrichtenkontexteigenschaft für die erste Nachricht kann beispielsweise wie folgt aussehen:

    BAPIRollbackMessage(Microsoft.Adapters.SAP.BiztalkPropertySchema.ConnectionState) = "ABORT";

Wichtig

In typischen Szenarien muss die Nachricht, die BAPI_TRANSACTION_ROLLBACK mit der ABORT-Kontexteigenschaft entspricht, in einem Ausnahmeblock verwendet werden.

Hinzufügen von Ports

Stellen Sie sicher, dass Sie die folgenden Eigenschaften für jeden der logischen Ports angeben. Die in der Spalte Port aufgeführten Namen sind die Namen der Ports, die in der Orchestrierung angezeigt werden.

Für diese Orchestrierung werden drei Ports erstellt. Der erste Port wählt die Anforderungsnachricht aus einem angegebenen Ordner aus. Der zweite Port sendet die Nachrichten an das SAP-System und empfängt eine Antwort. Der dritte Port speichert die Antwort in einem anderen Ordner. Deshalb gilt Folgendes:

  • Der erste Port empfängt nur Nachrichten für ein einzelnes Schema, d. h. MultipleOrders.xsd.

  • Der zweite Port sendet und empfängt Nachrichten für das Schema von BAPI_SALESORDER_CREATEFROMDAT2 RFC. Außerdem wird derselbe Port zum Commit oder Rollback der Transaktion verwendet. Daher empfängt dieser Port auch Meldungen von Schemas für BAPI_TRANSACTION_COMMIT und BAPI_TRANSACTION_ROLLBACK RFCs. Um dies zu aktivieren, werden an diesem Port drei verschiedene Vorgänge erstellt, die jeweils einem bestimmten Nachrichtenschema entsprechen.

  • Ähnlich wie der zweite Port empfängt dieser Port auch Nachrichten mit drei verschiedenen Schemas. Daher ist es notwendig, drei verschiedene Vorgänge an diesem Port zu erstellen.

Port Eigenschaften
FileIn – Festlegen des Bezeichners auf FileIn

– Festlegen von Type auf FileInType

- Festlegen des Kommunikationsmusters auf unidirektionales Muster

- Festlegen der Kommunikationsrichtung auf Empfangen
LOBPort – Festlegen des Bezeichners auf LOBPort

– Legen Sie Type auf LOBPortType fest.

- Festlegen des Kommunikationsmusters auf Anforderungsantwort

- Festlegen der Kommunikationsrichtung auf Senden/Empfangen

– Erstellen Sie einen Vorgang BAPIMessage.

– Erstellen Sie einen Vorgang CommitMessage. Dieser Vorgang wird verwendet, um eine Commitnachricht zu senden.

– Erstellen Sie einen Vorgang RollbackMessage. Dieser Vorgang wird verwendet, um eine Rollbacknachricht zu senden.
SaveResponse – Legen Sie Bezeichner auf SaveResponse fest.

– Legen Sie Type auf SaveResponseType fest.

- Festlegen des Kommunikationsmusters auf unidirektionales Muster

– Legen Sie die Kommunikationsrichtung auf Senden fest.

– Erstellen Sie einen Vorgang BAPIMessage.

– Erstellen Sie einen Vorgang CommitMessage. Dieser Vorgang wird verwendet, um Antworten für die Commitnachricht zu speichern.

– Erstellen Sie einen Vorgang RollbackMessage. Dieser Vorgang wird verwendet, um Antworten für die Rollbacknachricht zu speichern.

Angeben von Nachrichten für Aktionsformen und Herstellen einer Verbindung mit Ports

In der folgenden Tabelle werden die Eigenschaften und deren Werte angegeben, die festgelegt werden sollen, um Nachrichten für Aktions-Shapes anzugeben und sie mit den Ports zu verknüpfen. Die in der Spalte Shape aufgeführten Namen sind die Namen der Nachrichtenformen, die in der vorherigen Orchestrierung angezeigt werden.

Form Eigenschaften
ReceiveInputXML – Festlegen der Nachricht auf SendToAdapter

– Festlegen von Vorgang auf FileIn.Transaction.Request
SendToLOB – Festlegen der Nachricht auf BAPIMessage

– Festlegen des Vorgangs auf LOBPort.BAPIMessage.Request
ReceiveResponse - Festlegen der Nachricht auf BAPIResponse

– Festlegen von Operation auf LOBPort.BAPIMessage.Response
SendResponse - Festlegen der Nachricht auf BAPIResponse

– Legen Sie Den Vorgang auf SaveResponse.BAPIMessage.Request fest.
SendBAPICommit – Festlegen der Nachricht auf BAPICommitMessage

– Festlegen von Operation auf LOBPort.CommitMessage.Request
ReceiveCommitResponse - Festlegen der Nachricht auf BAPICommitResponse

– Festlegen von Vorgang auf LOBPort.CommitMessage.Response
SendResponse2 - Festlegen der Nachricht auf BAPICommitResponse

– Festlegen von Vorgang auf SaveResponse.CommitMessage.Request
SendBAPIRollback - Festlegen der Nachricht auf BAPIRollbackMessage

– Festlegen des Vorgangs auf LOBPort.RollbackMessage.Request
ReceiveRollbackResponse - Festlegen der Nachricht auf BAPIRollbackResponse

– Festlegen von Operation auf LOBPort.RollbackMessage.Response
SendResponse3 - Festlegen der Nachricht auf BAPIRollbackResponse

– Festlegen von Operation auf SaveResponse.RollbackMessage.Request

Nachdem Sie diese Eigenschaften angegeben haben, sind die Nachrichtenformen und -ports verbunden, und Die Orchestrierung ist abgeschlossen.

Behandeln von Ausnahmen

In komplexen Orchestrierungen wie der zum Ausführen von BAPI-Transaktionen ist es wichtig, dass Sie den Status der Orchestrierung nachverfolgen und fehler melden, sobald sie auftreten, damit Sie die Probleme beheben können, sobald sie auftreten. Die BizTalk-Orchestrierung bietet Tools zum Behandeln von Fehlern, zum Beibehalten des Status einer Orchestrierung und zum Beheben von Problemen, wie sie durch Transaktionen, Kompensationen und Ausnahmebehandlung auftreten.

Als Framework für Transaktionen und Ausnahmebehandlung stellt Orchestrierung Designer das Shape Bereich bereit. Ein Bereich kann einen Transaktionstyp, eine Kompensierung und eine beliebige Anzahl von Ausnahmehandlern aufweisen. Ein Bereich enthält mindestens einen Block. Es verfügt über einen Textkörper und kann optional eine beliebige Anzahl von Ausnahmebehandlungsblöcken an ihn angefügt haben. Bei BAPI-Transaktionen kann die gesamte Orchestrierung (siehe vorherige Abbildung) in einen Bereich einbezogen werden.

Zum Abfangen der Ausnahme müssen Sie der Orchestrierung einen Catch Exception-Block hinzufügen. Catch Exception-Blöcke werden am Ende eines Bereichs-Shapes in Orchestrierung Designer angefügt. Bei BAPI-Transaktionen müssen Sie die "ABORT"-Routine dem Block "Catch Exception " hinzufügen. Das heißt, Sie müssen der "ABORT"-Routine Folgendes hinzufügen:

  • Eine Form zum Erstellen einer Nachricht, die aus einer Transformation (zum Extrahieren der Anforderungsnachricht aus der Eingabenachricht) und einer Nachrichtenzuweisungsform (zum Festlegen der Kontexteigenschaft) besteht

  • Senden und Empfangen von Shapes.

    Das sap-Transaktionsbeispiel für BizTalk Server (SAPTransaction), das im Lieferumfang des BizTalk-Adapterpakets enthalten ist, veranschaulicht auch die Ausnahmebehandlung. Weitere Informationen zum Beispiel finden Sie unter Beispiele für den SAP-Adapter.

    Weitere Informationen zum Behandeln von Ausnahmen im Allgemeinen mithilfe von BizTalk Server finden Sie unter Verwenden von Transaktionen und Behandeln von Ausnahmen.

Hinzufügen des BizTalk-Eigenschaftenschemas zu BizTalk

In Ihrem BizTalk-Projekt haben Sie einen Assemblyverweis auf das BizTalk-Eigenschaftenschema für den SAP-Adapter hinzugefügt. Sie müssen dieselbe Assembly wie eine Ressource in der BizTalk-Anwendung hinzufügen, d. h. die Anwendung, in der das BizTalk-Projekt bereitgestellt wird. Die Schemadatei Microsoft.Adapters.SAP.BiztalkPropertySchema.dllwird vom BizTalk Adapter Pack-Setup normalerweise unter <Installationslaufwerk>:\Programme\Microsoft BizTalk Adapter Pack\bin installiert. Ohne diese Ressource können Sie Ihr Projekt nicht bereitstellen.

So fügen Sie eine Assembly als Ressource in BizTalk hinzu

  1. Starten Sie die BizTalk Server-Verwaltungskonsole.

  2. Erweitern Sie in der Konsolenstruktur die BizTalk-Gruppe, dann Anwendungen und dann die Anwendung, der Sie eine BizTalk-Assembly hinzufügen möchten.

  3. Klicken Sie mit der rechten Maustaste auf Ressourcen, zeigen Sie auf Hinzufügen , und klicken Sie dann auf BizTalk-Assemblys.

  4. Klicken Sie im Dialogfeld Ressource hinzufügen auf Hinzufügen, navigieren Sie zu dem Ordner mit der BizTalk-Assemblydatei, wählen Sie die BizTalk-Assemblydatei aus, und klicken Sie dann auf Öffnen.

  5. Geben Sie unter Optionen die Optionen zum Installieren der BizTalk-Assembly im GAC an, und klicken Sie dann auf OK.

    Sie müssen nun die BizTalk-Lösung erstellen und dann in einer BizTalk Server bereitstellen. Weitere Informationen finden Sie unter Erstellen und Ausführen von Orchestrierungen.

Konfigurieren der BizTalk-Anwendung

Nachdem Sie das BizTalk-Projekt bereitgestellt haben, wird die zuvor erstellte Orchestrierung im Bereich Orchestrierung in der BizTalk Server-Verwaltungskonsole aufgeführt. Sie müssen die BizTalk Server-Verwaltungskonsole verwenden, um die Anwendung zu konfigurieren. Weitere Informationen zum Konfigurieren einer Anwendung finden Sie unter Konfigurieren einer Anwendung.

Das Konfigurieren einer Anwendung umfasst Folgendes:

  • Auswählen eines Hosts für die Anwendung.

  • Zuordnen der Ports, die Sie in Ihrer Orchestrierung erstellt haben, zu physischen Ports in der BizTalk Server-Verwaltungskonsole. Für diese Orchestrierung müssen Sie Folgendes ausführen:

    • Definieren Sie einen Speicherort auf der Festplatte und einen entsprechenden Dateiport, an dem Sie eine Anforderungsnachricht ablegen. Die BizTalk-Orchestrierung nutzt die Anforderungsnachricht und sendet sie an das SAP-System.

    • Definieren Sie einen Speicherort auf der Festplatte und einen entsprechenden Dateiport, an dem die BizTalk-Orchestrierung die Antwortnachricht mit der Antwort aus dem SAP-System abgibt.

    • Definieren Sie einen physischen WCF-Custom- oder WCF-SAP-Sendeport, um Nachrichten an das SAP-System zu senden. Informationen zum Erstellen von Ports finden Sie unter Manuelles Konfigurieren einer physischen Portbindung an den SAP-Adapter. Da der Sendeport Nachrichten sendet und empfängt, die mehreren Schemas entsprechen und zwei Vorgänge ausführt, müssen Sie eine dynamische Aktion für beide Vorgänge festlegen. Weitere Informationen zu Aktionen finden Sie unter Konfigurieren der SOAP-Aktion für das SAP-System. Achten Sie beim Erstellen eines WCF-Custom- oder WCF-SAP-Sendeports zum Ausführen von Transaktionen auf die folgenden wichtigen Überlegungen.

      Legen Sie Folgendes fest: Zu diesem Wert
      Aktion Der Sendeport sendet und empfängt Nachrichten für mehrere Vorgänge. Daher muss die Aktion für den Sendeport für jeden Vorgang festgelegt werden.

      <BtsActionMapping> <Operation Name="BAPIMessage" Action="http://Microsoft.LobServices.Sap/2007/03/Rfc/BAPI_SALESORDER_CREATEFROMDAT2" /> <Operation Name="CommitMessage" Action="http://Microsoft.LobServices.Sap/2007/03/Rfc/BAPI_TRANSACTION_COMMIT" /> <Operation Name="RollbackMessage" Action="http://Microsoft.LobServices.Sap/2007/03/Rfc/BAPI_TRANSACTION_ROLLBACK" /> </BtsActionMapping>
      EnableBizTalkCompatibilityMode Legen Sie diese Bindungseigenschaft auf True fest.
      EnableConnectionPooling Legen Sie diese Bindungseigenschaft auf False fest, bevor Sie Transaktionen ausführen. In Szenarien, in denen der zwischen dem Adapter und BizTalk eingerichtete Kanal unerwartet beendet wird, wird die entsprechende Verbindung dem Verbindungspool hinzugefügt. Wenn ein anderer Kanal geöffnet wird und der neue Kanal dasselbe Verbindungsobjekt auswählt, werden auch die Transaktionen ohne Commit für das alte Verbindungsobjekt committet, wenn die Transaktionen über den neuen Kanal committet werden. Um dies zu vermeiden, muss das Verbindungspooling bei der Ausführung von Transaktionen deaktiviert werden.

      Hinweis

      Beim Generieren des Schemas mithilfe des BizTalk-Projekt-Add-Ins "Consume Adapter Service" wird auch eine Bindungsdatei erstellt, die Informationen zu den Ports und den aktionen enthält, die für diese Ports festgelegt werden sollen. Sie können diese Bindungsdatei aus der BizTalk Server-Verwaltungskonsole importieren, um Sendeports (für ausgehende Anrufe) oder Empfangsports (für eingehende Anrufe) zu erstellen. Weitere Informationen finden Sie unter Konfigurieren einer physischen Portbindung mithilfe einer Portbindungsdatei für SAP.

      Wichtig

      Sie können einen Sicherungstransport auf einem WCF-Custom- oder WCF-SAP-Sendeport konfigurieren, mit dem Sie Nachrichten an ein anderes SAP-System senden können, wenn der primäre Transport nicht funktioniert. Für die Ausführung von Transaktionen auf einem SAP-System unterstützt der WCF-basierte SAP-Adapter jedoch nicht die Angabe eines Sicherungstransports, der auf einen anderen SAP-Server verweist.

Starten der Anwendung

Sie müssen die BizTalk-Anwendung starten, um Transaktionen in einem SAP-System auszuführen. Anweisungen zum Starten einer BizTalk-Anwendung finden Sie unter Starten einer Orchestrierung, Starten einer Anwendung.

Stellen Sie in dieser Phase Folgendes sicher:

  • Der FILE-Empfangsport zum Empfangen von Anforderungsmeldungen für die Orchestrierung wird ausgeführt.

  • Der FILE-Sendeport zum Empfangen der Antwortnachrichten von der Orchestrierung wird ausgeführt.

  • Der WCF-Custom- oder WCF-SAP-Sendeport zum Senden von Nachrichten an das SAP-System wird ausgeführt.

  • Die BizTalk-Orchestrierung für den Vorgang wird ausgeführt.

Ausführen des Vorgangs

Nachdem Sie die Anwendung ausgeführt haben, müssen Sie eine Anforderungsmeldung für die Orchestrierung an einem vordefinierten Speicherort ablegen. Die Anforderungsnachricht muss einem bestimmten Schema entsprechen, für instance, dem MultipleOrders.xsd-Schema. Beispielsweise lautet eine Anforderungsnachricht zum Erstellen von Verkaufsaufträgen in einem SAP-System und zum anschließenden Commit für den Vorgang:

<ns0:Orders xmlns:ns0="http://BAPISend.MultipleOrders">  
  <Order>  
      <ORDER_HEADER_IN>  
        <DOC_TYPE>TA</DOC_TYPE>  
        <SALES_ORG>1000</SALES_ORG>  
        <DISTR_CHAN>10</DISTR_CHAN>  
        <DIVISION>00</DIVISION>  
        <SALES_OFF>1000</SALES_OFF>  
        <REQ_DATE_H>20060901</REQ_DATE_H>  
        <PURCH_DATE>20060901</PURCH_DATE>  
        <PURCH_NO_C>Cust A</PURCH_NO_C>  
        <CURRENCY>EUR</CURRENCY>  
      </ORDER_HEADER_IN>  
      <ORDER_ITEMS_IN>  
          <MATERIAL>P-109</MATERIAL>  
          <PLANT>1000</PLANT>  
          <TARGET_QU>ST</TARGET_QU>  
      </ORDER_ITEMS_IN>  
      <ORDER_PARTNERS>  
          <PARTN_ROLE>AG</PARTN_ROLE>  
          <PARTN_NUMB>0000000257</PARTN_NUMB>  
      </ORDER_PARTNERS>  
    <RETURN></RETURN>  
  </Order>  
  <isCommit>true</isCommit>  
  <BAPI_TRANSACTION_COMMIT>  
  </BAPI_TRANSACTION_COMMIT>  
</ns0:Orders>  

Die Orchestrierung nutzt die Nachricht und sendet sie an das SAP-System. Die Antwort des SAP-Systems wird an einem anderen Dateispeicherort gespeichert, der als Teil der Orchestrierung definiert ist. Für die obige Anforderungsnachricht erhalten Sie zwei Antwortnachrichten – eine für den Aufruf des BAPI_SALESORDER_CREATEFROMDAT2 RFC und die andere für den Commitvorgang mit BAPI_TRANSACTION_COMMIT.

Die Antwort für BAPI_SALESORDER_CREATEFROMDAT2 lautet:

<?xml version="1.0" encoding="utf-8" ?>   
<BAPI_SALESORDER_CREATEFROMDAT2Response xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">  
  <SALESDOCUMENT />   
  <ORDER_ITEMS_IN>  
    <BAPISDITM xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
      <ITM_NUMBER>0</ITM_NUMBER>   
      <HG_LV_ITEM>0</HG_LV_ITEM>   
      <PO_ITM_NO />   
      ......  
    </BAPISDITM>  
  </ORDER_ITEMS_IN>  
  <ORDER_PARTNERS>  
    <BAPIPARNR xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
      <PARTN_ROLE>AG</PARTN_ROLE>   
      <PARTN_NUMB>0000000257</PARTN_NUMB>   
      <ITM_NUMBER>0</ITM_NUMBER>   
      ......   
    </BAPIPARNR>  
  </ORDER_PARTNERS>  
</BAPI_SALESORDER_CREATEFROMDAT2Response>  

Die Antwort für BAPI_TRANSACTION_COMMIT lautet:

<?xml version="1.0" encoding="utf-8" ?>   
<BAPI_TRANSACTION_COMMITResponse xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">  
  <RETURN>  
    <TYPE xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <ID xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <NUMBER xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">0</NUMBER>   
    <MESSAGE xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <LOG_NO xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <LOG_MSG_NO xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">0</LOG_MSG_NO>   
    <MESSAGE_V1 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <MESSAGE_V2 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <MESSAGE_V3 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <MESSAGE_V4 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <PARAMETER xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <ROW xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">0</ROW>   
    <FIELD xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <SYSTEM xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
  </RETURN>  
</BAPI_TRANSACTION_COMMITResponse>  

Hinweis

Wenn die Anforderungsnachricht den BAPI_TRANSACTION_ROLLBACK RFC aufgerufen hat, gilt die zweite Antwort für BAPI_TRANSACTION_ROLLBACK.

Mögliche Ausnahmen

Informationen zu den Ausnahmen, die beim Ausführen von Transaktionen auf einem SAP-System mithilfe von BizTalk Server auftreten können, finden Sie unter Ausnahmen und Fehlerbehandlung mit dem SAP-Adapter.

Bewährte Methoden

Nachdem Sie das BizTalk-Projekt bereitgestellt und konfiguriert haben, können Sie Konfigurationseinstellungen in eine XML-Datei exportieren, die als Bindungsdatei bezeichnet wird. Nachdem Sie eine Bindungsdatei generiert haben, können Sie die Konfigurationseinstellungen aus der Datei importieren, sodass Sie die Sende- und Empfangsports für dieselbe Orchestrierung nicht erstellen müssen. Weitere Informationen zu Bindungsdateien finden Sie unter Wiederverwenden von SAP-Adapterbindungen.

Weitere Informationen

Entwickeln von BizTalk-Anwendungen