Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der SAP-Adapter ermöglicht Adapterclients das Ausführen von Transaktionen auf einem SAP-System mithilfe von BizTalk Server. 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 "Vorgangsnachricht" bezeichnet. Die Orchestrierung muss jede Vorgangsnachricht aus der Anforderungsnachricht extrahieren und die einzelnen Vorgangsmeldungen an das SAP-System senden. Die Orchestrierung sendet sie nacheinander über denselben Kommunikationskanal. Die Orchestrierung extrahiert die einzelnen Nachrichten aus der "Vorgangsnachricht" durch eine XML-Transformation mithilfe einer BizTalk-Karte.
Nachdem die Vorgänge ausgeführt wurden, muss die Orchestrierung die Transaktion bestätigen oder zurücksetzen, indem sie Nachrichten für BAPI_TRANSACTION_COMMIT bzw. BAPI_TRANSACTION_ROLLBACK sendet. Diese werden als "Transaktionsnachrichten" bezeichnet.
Wie aktiviert der Adapter Transaktionen über BizTalk Server?
So aktivieren Sie Transaktionen auf einem SAP-System mit bizTalk Server, dem SAP-Adapter:
Stellt nachrichtenkontexteigenschaften OPEN, REUSE, CLOSE und ABORT bereit.
Verwendet BAPI_TRANSACTION_COMMIT und BAPI_TRANSACTION_ROLLBACK, um die Vorgänge zu übernehmen oder abzubrechen. Diese werden vom SAP-System verfügbar gemacht.
In der folgenden Tabelle sind einige Richtlinien für die Verwendung der Eigenschaften mit BAPI_TRANSACTION_COMMIT oder BAPI_TRANSACTION_ROLLBACK aufgeführt:
Nachricht | OFFEN | WIEDERVERWENDUNG | Schließen | ABBRECHEN |
---|---|---|---|---|
Erste Nachricht (Vorgangsnachricht) | Ja | Nein | Nein | Nein |
Nachrichten in Folge (Betriebsmeldungen) | Nein | Ja | Nein | Nein |
BAPI_TRANSACTION_COMMIT (Transaktionsnachricht) | Nein | Nein | Ja | Nein |
BAPI_TRANSACTION_ROLLBACK (Transaktionsnachricht) | Nein | Nein | Ja | Ja |
In der Tabelle gibt ein "Ja" die Nachrichtenkontexteigenschaft an, die für eine Nachricht verwendet werden soll. Ebenso 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 zur Bestätigung der Transaktion verwendet, muss die CLOSE-Eigenschaft verwenden.
Die Transaktionsnachricht, die für den BAPI_TRANSACTION_ROLLBACK zum Abbrechen der Transaktion verwendet wird, kann entweder die CLOSE- oder ABORT-Eigenschaft nutzen. Bei Verwendung von ABORT muss sich die Nachricht idealerweise im Orchestrierungs-Ausnahmeblock befinden.
Wichtige Überlegungen im Zusammenhang mit Transaktionen mit BizTalk Server
Wenn mehrere Sendeports in einer Orchestrierung vorhanden sind, trennt der Adapter die Transaktion automatisch für Nachrichten, die von jedem Port empfangen werden. Das heißt, eine Transaktion kann sich nicht über Ports erstrecken.
Wiederholungsversuche für Nachrichten in einer SAP-Transaktion werden nicht unterstützt. Daher sollten Benutzer den Wiederholungsversuch der Nachricht auf Null festlegen.
Der Adapter kann unerwünschte Ergebnisse für die Kombinationen erzeugen, die in der vorherigen Tabelle als "Nein" gekennzeichnet sind. Sie sollten Kombinationen verwenden, die als "Ja" gekennzeichnet sind.
Nachrichten, die an den Adapter gesendet werden, die nicht über eine Nachrichtenkontexteigenschaft verfügen, werden normal ausgeführt, ohne an den aktuellen Transaktionskontext gebunden zu sein.
BAPI_TRANSACTION_COMMIT oder BAPI_TRANSACTION_ROLLBACK sollte idealerweise im aktuellen Orchestrierungskontext die letzte Nachricht einer Transaktion sein.
In den folgenden Abschnitten finden Sie Anweisungen zum Ausführen von Transaktionen in SAP mithilfe des SAP-Adapters.
Wie kann ich eine Transaktion auf einem SAP-System durchführen?
Das Ausführen eines Vorgangs auf einem SAP-System mithilfe des SAP-Adapters mit BizTalk Server umfasst verfahrene Aufgaben, die in Bausteinen zum Erstellen von SAP-Anwendungen beschrieben werden. Um Transaktionen auf einem SAP-System auszuführen, sind die folgenden Aufgaben:
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.
Erstellen Sie Nachrichten im BizTalk-Projekt zum Senden und Empfangen von Nachrichten aus dem SAP-System.
Erstellen Sie eine Orchestrierung, die einzelne "Vorgangsmeldungen" aus der Anforderungsnachricht extrahiert und an das SAP-System sendet. Basierend auf der Anforderungsnachricht entscheidet die Orchestrierung, ob die Transaktion durchgeführt oder zurückgesetzt werden soll.
Erstellen und Bereitstellen des BizTalk-Projekts.
Konfigurieren Sie die BizTalk-Anwendung, indem Sie physische Sende- und Empfangsports erstellen.
Starten Sie die BizTalk-Anwendung.
Dieses Thema enthält Anweisungen zum Ausführen dieser Aufgaben.
Beispiel basierend auf diesem Thema
Ein Beispiel, SAPTransaction, basierend auf diesem Thema, wird mit dem BizTalk Adapter Pack bereitgestellt. Weitere Informationen finden Sie unter Beispiele für den SAP-Adapter.
Generieren des Schemas
Um zu veranschaulichen, wie Transaktionen in einem SAP-System ausgeführt werden, benötigen Sie die folgenden Schemas:
Für die "Vorgangsmeldung" zum Ausführen von Vorgängen in einem SAP-System. Die an den Adapter gesendete Anforderungsnachricht muss diesem Schema entsprechen. Dabei kann es sich um ein beliebiges benutzerspezifisches Schema handeln, 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 in einem SAP-System, z. B. zum Aufrufen eines RFC. Die Anforderungsmeldung zum Ausführen eines Vorgangs muss diesem Schema entsprechen. Dieses Schema muss mithilfe des Add-Ins "Verbrauchsadapterdienst BizTalk Project" generiert werden. In diesem Thema wird die BAPI_SALESORDER_CREATEFROMDAT2 RFC aufgerufen. Informationen zum Generieren von Schemas für RFC finden Sie unter Durchsuchen, Suchen und Abrufen von Metadaten für RFC-Vorgänge in SAP.
Zum Abbrechen oder Durchführen einer Transaktion. Die Anforderung, eine Transaktion zu übernehmen oder abzubrechen, muss diesem Schema entsprechen. Der SAP-Adapter verwendet die RFC-Aufrufe BAPI_TRANSACTION_COMMIT und BAPI_TRANSACTION_ROLLBACK, um die Vorgänge jeweils zu bestätigen oder zurückzusetzen. Sie müssen mit dem Add-In „Adapterdienst nutzen“ ein Schema für diese RFCs generieren.
Hinweis
Sie müssen sicherstellen, dass alle erforderlichen Schemas dem BizTalk-Projekt hinzugefügt werden.
Von Bedeutung
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 Setup des BizTalk Adapter Pack installiert, normalerweise unter <Installationslaufwerk>:\Programme\Microsoft BizTalk Adapter Pack\bin.
Definieren von Nachrichten und Nachrichtentypen
Das Schema, das Sie früher generiert haben, beschreibt die für die Nachrichten in der Orchestrierung erforderlichen "Typen". Eine Nachricht ist in der Regel eine Variable, deren Typ durch das entsprechende Schema definiert wird. Sie müssen das im ersten Schritt generierte Schema mit den Nachrichten aus dem Fenster "Orchestrierungsansicht" des BizTalk-Projekts verknüpfen.
Bevor Sie Nachrichten erstellen, müssen Sie die Anzahl der "Vorgangsknoten" bestimmen, die die Anforderungsnachricht (vom Typ MultipleOrders.xsd) aufweist. Gehen Sie in diesem Beispiel davon aus, dass die Anforderungsnachricht zwei Vorgangsmeldungen enthält, um die BAPI_SALESORDER_CREATEFROMDAT2 RFC aufzurufen. Daher müssen Sie einen Anforderungsantwort-Nachrichtensatz erstellen, der dem für diesen RFC generierten Schema zugeordnet ist.
Sie müssen die folgenden Nachrichten 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 Eingabemeldung MultipleOrders.xsd zugeordnet werden.
Eine Nachricht, BAPIMessage, für den ersten Vorgang, der an das SAP-System gesendet wird. Sie müssen auch eine Antwortnachricht( BAPIResponse) für die Antwort des ersten Vorgangs erstellen. Die Anforderungs- und Antwortnachrichten müssen dem für die BAPI_SALESORDER_CREATEFROMDAT2 RFC generierten Schema zugeordnet werden.
Eine Nachricht, BAPICommitMessage, für den Commit-Vorgang. 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 mit dem Schema zu verknüpfen.
So erstellen Sie Nachrichten und Verknüpfungen zum Schema
Öffnen Sie die Orchestrierungsansicht des BizTalk-Projekts, wenn es noch nicht geöffnet ist. Klicken Sie auf "Ansicht", zeigen Sie auf "Andere Fenster", und klicken Sie auf "Orchestrierungsansicht".
Klicken Sie in der Orchestrierungsansicht mit der rechten Maustaste auf "Nachrichten", und klicken Sie dann auf "Neue Nachricht".
Klicken Sie mit der rechten Maustaste auf die neu erstellte Nachricht, und wählen Sie dann "Eigenschaftenfenster" aus.
Gehen Sie im Eigenschaftenbereich für Message_1 wie folgt vor.
Verwenden Sie diese Aktion Kennung Type SendToAdapter. 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. Wiederholen Sie den vorherigen Schritt, um sechs weitere Nachrichten zu erstellen. Gehen Sie im Eigenschaftenbereich für die neuen Nachrichten wie folgt vor.
Den Bezeichner festlegen auf Festlegen des Nachrichtentyps auf BAPI-Nachricht 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 zum Ausführen von Transaktionen in einem SAP-System zu verwenden. In dieser Orchestrierung legen Sie eine Anforderungsnachricht an einem definierten Empfangsort ab. Der SAP-Adapter verarbeitet die Nachricht und übergibt sie an das SAP-System. Die Antwort des SAP-Systems wird an einem anderen Ort gespeichert.
Eine weitere Überlegung beim Erstellen einer Orchestrierung ist:
Mappen Sie das Schema der Anforderungsnachricht auf das der BAPI_SALESORDER_CREATEFROMDAT2 RFC.
Ordnen Sie das Schema der Anforderungsnachricht der 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 Transformationsformen in die Orchestrierung ein.
Schließlich muss die Orchestrierung basierend auf der Frage, ob die Anforderungsnachricht Informationen zum Commit oder zum Abbrechen der Transaktion enthält, die Entscheidung über die entsprechende Nachricht treffen, die an das SAP-System gesendet werden soll. Um dies zu erreichen, fügen Sie ein "Entscheiden"-Element in die Orchestrierung ein.
Weitere Informationen zu den verschiedenen Formen, die in der Orchestrierung enthalten sind, finden Sie im Orchestrierungsdesigner UI im Leitfaden für Benutzeroberflächen und der Entwickler-API-Namespace-Referenz.
Eine Beispiel-Orchestrierung für eine SAP-Transaktion ähnelt der folgenden.
Hinzufügen von Nachrichtenformen
Stellen Sie sicher, dass Sie die folgenden Eigenschaften für die einzelnen Nachrichten-Shapes angeben. Die in der Spalte "Form" aufgeführten Namen sind die Namen der Nachrichten-Shapes, die in der vorherigen Orchestrierung angezeigt werden.
Gestalt | Shape-Typ | Eigenschaften |
---|---|---|
ReceiveInputXML | Empfangen | - Name auf ReceiveInputXML setzen - Setze Aktivieren auf True |
SendToLOB | Senden | - Name aufSendToLOB festlegen |
AntwortEmpfangen | Empfangen | - Name auf den Wert ReceiveResponse setzen - Setze Aktivieren auf Falsch |
SendResponse | Senden | - Name auf SendResponse setzen |
Da die Anforderungsnachricht zwei Einfügenachrichten enthält, müssen Sie einen weiteren Satz von Sende- und Empfangs-Shapes erstellen, um Nachrichten an SAP zu senden und eine Antwort zu empfangen. Da Einfügenachrichten jedoch möglicherweise festgeschrieben oder rückgängig gemacht werden, muss der zweite Satz von Shapes innerhalb eines Entscheidungsblocks erstellt werden. Sie müssen einen Satz von Formen für "Commit" und einen anderen Satz von Formen für "Rollback" erstellen.
Hinweis
Sie können einen Entscheidungsblock hinzufügen, indem Sie das Shape "Entscheiden" aus der BizTalk Orchestrations-Toolbox ziehen und ablegen.
Nachrichtenformen für Commit
In der folgenden Tabelle sind die Formen für den "Commit-Pfad" der Orchestrierung aufgeführt. Hier müssen Sie keine Empfangsnachricht für eine Anforderungsnachricht erstellen. Die Anforderungsnachricht wird aus der vorherigen Nachrichtenstruktur weitergereicht.
Gestalt | Shape-Typ | Eigenschaften |
---|---|---|
SendBAPICommit | Senden | - Setze Name auf SendBAPICommit |
ReceiveCommitResponse | Empfangen | - Name auf ReceiveCommitResponse setzen - Setze Aktivieren auf Falsch |
SendResponse2 | Senden | - Name auf SendResponse2 festlegen |
Nachrichtenformen für Abbruch
In der folgenden Tabelle sind die Shapes für den "Rollback-Pfad" der Orchestrierung aufgeführt.
Gestalt | Shape-Typ | Eigenschaften |
---|---|---|
SendBAPIRollback | Senden | - Setze Name auf SendBAPIRollback |
ErhaltRollbackAntwort | Empfangen | - Name auf ReceiveRollbackResponse festlegen - Setze Aktivieren auf Falsch |
SendResponse3 | Senden | - Name auf SendResponse3 setzen |
Festlegen des Regelausdrucks
Sie haben die Nachrichtenformen für die Commit- und Abbruch-Operationen einem Entscheidungsblock hinzugefügt, indem Sie eine Entscheidungsform dazugefügt haben. Um die Bedingung anzugeben, anhand der die Orchestrierung eine Entscheidung treffen soll, müssen Sie einen Ausdruck im Regel-Element angeben, anhand dessen die Transaktion entweder festgeschrieben oder rückgängig gemacht wird. Beispielsweise müssen Sie den folgenden Ausdruck für das Regel-Shape angeben:
SendToAdapter.isCommit == true
Dabei ist SendToAdapter die Nachricht, die Sie für das Schema der Anforderungsnachricht erstellt haben. Also, wenn das isCommit
Tag in der Anforderungsnachricht auf True festgelegt ist, übernimmt die Orchestrierung die "commit"-Route. Andernfalls übernimmt die Orchestrierung die "Rollback"-Route.
Damit Sie diese Bedingung im Ausdrucks-Editor angeben können, müssen Sie die isCommit
Eigenschaft im Nachrichtenschema für die an den Adapter gesendete Anforderungsnachricht heraufgestuft haben. Für dieses Thema ist das zu verwendende Eingabeschema MultipleOrders.xsd. Sie müssen die isCommit
Eigenschaft in diesem Schema höher stufen. Weitere Informationen zum Bewerben einer Immobilie finden Sie unter "Immobilienförderung".
Hinzufügen von Nachrichten-Konstruktformen
Wie bereits erwähnt, enthält die an den Adapter gesendete Anforderungsnachricht zwei Einfügenachrichten und dann eine Commit- oder Abbruchnachricht. Sie müssen ein Shape "Nachricht konstruieren" hinzufügen 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.
Das erste Nachrichten-Shape erstellen
Angenommen, das erste Shape "Nachricht konstruieren" heißt "ReceiveXML". Geben Sie für dieses Shape die Eigenschaft "Messages Constructed" als "BAPIMessage" an. Doppelklicken Sie auf die Transformationsform, um das Dialogfeld "Transformationskonfiguration" zu öffnen. Im Dialogfeld:
Wählen Sie die Option zum Erstellen einer neuen Karte aus.
Wählen Sie im linken Bereich Quelle und in der Dropdownliste VariablennameSendToAdapter aus.
Wählen Sie im linken Bereich "Ziel" und in der Dropdownliste "Variablenname" die Option "BAPIMessage" aus.
Klicken Sie auf "OK ", um den Mapper zu starten. Ordnen Sie das Schema der Anforderungsnachricht dem Schema der BAPI_SALESORDER_CREATEFROMDAT2 zu. Sie können das Index-Functoid verwenden, um eine Zuordnung zwischen der Quelle und den Zielschemata 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 mit einem Functoid des Typs 'Index' abgebildet wurden.
zugeordnet sind
Weitere Informationen zur Verwendung des Dialogfelds "Transformationskonfiguration " finden Sie im Dialogfeld "Transformationskonfiguration" in der Benutzeroberflächenanleitung und in der API-Namespacereferenz für Entwickler.
Weitere Informationen zur Verwendung des Index-Functoids finden Sie unter Index Functoid.
Nachdem Sie die Schemas zugeordnet haben, können Sie die Zuordnung mithilfe der Eigenschaftenseite der Kartendatei testen. Weitere Informationen finden Sie im <Dialogfeld "Eigenschaftenseite zuordnen> ", Registerkarte "Karte testen " in der Benutzeroberflächenanleitung und in der API-Namespacereferenz für Entwickler.
Geben Sie im Shape "Nachrichtenzuweisung" die Nachrichtenkontexteigenschaft an, um die Transaktion zu starten. Beispielsweise könnte die Nachrichtenkontexteigenschaft für die erste Nachricht folgendes sein:
BAPIMessage(Microsoft.Adapters.SAP.BiztalkPropertySchema.ConnectionState) = "OPEN";
Die Struktur der Commit-Konstrukt-Nachricht
Angenommen, das Shape "Nachricht erstellen" für den Commit-Vorgang heißt "CommitMessage". Geben Sie für dieses Shape die Eigenschaft "Messages Constructed" als "BAPICommitMessage" an. Doppelklicken Sie auf die Transformationsform, um das Dialogfeld "Transformationskonfiguration" zu öffnen. Im Dialogfeld:
Wählen Sie die Option zum Erstellen einer neuen Karte aus.
Wählen Sie im linken Bereich Quelle und in der Dropdownliste VariablennameSendToAdapter aus.
Wählen Sie im linken Bereich "Ziel" und in der Dropdownliste "Variablenname" die Option "BAPICommitMessage" aus.
Klicken Sie auf "OK", um den Mapper zu starten. Ordnen Sie das Schema der Anforderungsnachricht dem Schema von BAPI_TRANSACTION_COMMIT zu. Sie müssen keinen Index-Functoid für diese Zuordnung verwenden, da der Knoten BAPI_TRANSACTION_COMMIT keine Datensatzhierarchie enthält.
Geben Sie im Shape "Nachrichtenzuweisung" die Nachrichtenkontexteigenschaft an, um die Transaktion zu übernehmen. Beispielsweise könnte die Nachrichtenkontexteigenschaft für die erste Nachricht folgendes sein:
BAPICommitMessage(Microsoft.Adapters.SAP.BiztalkPropertySchema.ConnectionState) = "CLOSE";
Das Rollbackkonstrukt-Nachrichtenform
Angenommen, das Shape "Nachricht konstruieren" für den Rollbackvorgang heißt "RollbackMessage". Geben Sie für dieses Shape die Eigenschaft "Messages Constructed" als "BAPIRollbackMessage" an. Doppelklicken Sie auf die Transformationsform, um das Dialogfeld "Transformationskonfiguration" zu öffnen. Im Dialogfeld:
Wählen Sie die Option zum Erstellen einer neuen Karte aus.
Wählen Sie im linken Bereich Quelle und in der Dropdownliste VariablennameSendToAdapter aus.
Wählen Sie im linken Bereich "Ziel" und in der Dropdownliste "Variablenname" die Option "BAPIRollbackMessage" aus.
Klicken Sie auf "OK", um den Mapper zu starten. Ordnen Sie das Schema der Anforderungsnachricht dem Schema der BAPI_TRANSACTION_ROLLBACK zu. Sie müssen keinen Index-Functoid für diese Zuordnung einschließen, da der BAPI_TRANSACTION_ROLLBACK Knoten keine Datensatzhierarchie enthält.
Geben Sie im Shape "Nachrichtenzuweisung" die Nachrichtenkontexteigenschaft an, um die Transaktion zurückzusetzen. Beispielsweise könnte die Nachrichtenkontexteigenschaft für die erste Nachricht folgendes sein:
BAPIRollbackMessage(Microsoft.Adapters.SAP.BiztalkPropertySchema.ConnectionState) = "ABORT";
Von Bedeutung
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 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:
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 verwendet, um die Transaktion zu übernehmen oder zurück zu setzen. Daher empfängt dieser Port auch Nachrichten zu den Schemas für die RFCs BAPI_TRANSACTION_COMMIT und BAPI_TRANSACTION_ROLLBACK. Um dies zu aktivieren, werden drei verschiedene Vorgänge für diesen Port 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 für diesen Port zu erstellen.
Hafen | Eigenschaften |
---|---|
FileIn | - Bezeichner auf FileIn festlegen - 'Type' auf 'FileInType' festlegen - Kommunikationsmuster auf Einweg festlegen - Setze Kommunikationsrichtung auf Empfangen |
LOBPort | - Bezeichner auf LOBPort setzen - 'Type' auf 'LOBPortType' festlegen - Kommunikationsmuster auf Anfrage-Antwort festlegen - Kommunikationsrichtung auf "Senden-Empfangen" festlegen - Erstellen Sie einen Vorgang BAPIMessage. – Erstellen eines Vorgangs CommitMessage. Dieser Vorgang wird verwendet, um commit-Nachricht zu senden. – Erstellen eines Vorgangs "RollbackMessage". Dieser Vorgang wird genutzt, um Rollback-Nachrichten zu senden. |
SaveResponse | - Bezeichner auf SaveResponse festlegen - Typ aufSaveResponseType festlegen - Kommunikationsmuster auf Einweg festlegen - Kommunikationsrichtung auf "Senden" festlegen. - Erstellen Sie einen Vorgang BAPIMessage. – Erstellen eines Vorgangs CommitMessage. Dieser Vorgang wird verwendet, um Antworten für die Commitnachricht zu speichern. – Erstellen eines Vorgangs "RollbackMessage". Dieser Vorgang wird verwendet, um Antworten für die Rollbacknachricht zu speichern. |
Angeben von Nachrichten für Aktions-Shapes und Verbinden mit Ports
In der folgenden Tabelle werden die Eigenschaften und deren Werte angegeben, um Nachrichten für Aktions-Shapes anzugeben und sie mit den Ports zu verknüpfen. Die in der Spalte "Form " aufgeführten Namen sind die Namen der Nachrichten-Shapes, die in der vorherigen Orchestrierung angezeigt werden.
Gestalt | Eigenschaften |
---|---|
ReceiveInputXML | - Nachricht auf SendToAdapter festlegen - Vorgang auf FileIn.Transaction.Request festlegen |
SendToLOB | - Nachricht auf BAPIMessage setzen - Vorgang auf LOBPort.BAPIMessage.Request festlegen |
AntwortEmpfangen | - Nachricht auf BAPIResponse festlegen - Vorgang auf LOBPort.BAPIMessage.Response festlegen |
SendResponse | - Nachricht auf BAPIResponse festlegen - Vorgang auf SaveResponse.BAPIMessage.Request festlegen |
SendBAPICommit | - Nachricht auf BAPICommitMessage festlegen - Vorgang auf LOBPort.CommitMessage.Request festlegen |
ReceiveCommitResponse | - Nachricht auf BAPICommitResponse festlegen - Vorgang auf LOBPort.CommitMessage.Response festlegen |
SendResponse2 | - Nachricht auf BAPICommitResponse festlegen - Vorgang auf SaveResponse.CommitMessage.Request festlegen |
SendBAPIRollback | - Die Nachricht aufBAPIRollbackMessage festlegen - Vorgang auf LOBPort.RollbackMessage.Request festlegen |
ErhaltRollbackAntwort | - Nachricht auf BAPIRollbackResponse festlegen - Vorgang auf LOBPort.RollbackMessage.Response festlegen |
SendResponse3 | - Nachricht auf BAPIRollbackResponse festlegen - Vorgang auf SaveResponse.RollbackMessage.Request festlegen |
Nachdem Sie diese Eigenschaften angegeben haben, sind die Nachrichtenformen und Ports verbunden, und die Orchestrierung ist abgeschlossen.
Behandeln von Ausnahmen
Bei komplexen Orchestrierungen wie der für die Durchführung von BAPI-Transaktionen ist es wichtig, dass Sie den Status der Orchestrierung nachverfolgen, Fehler melden, wie sie auftreten, damit Sie die Probleme beheben können, während sie auftreten. BizTalk-Orchestrierung bietet Tools zur Fehlerbehandlung, zur Verwaltung des Zustands einer Orchestrierung und zur Behebung von Problemen, sobald sie durch Transaktionen, Kompensation und Ausnahmebehandlung auftreten.
Als Framework für Transaktionen und Ausnahmebehandlung stellt Orchestration Designer das Scope-Shape bereit. Ein Bereich kann einen Transaktionstyp, eine Entschädigung und eine beliebige Anzahl von Ausnahmehandlern aufweisen. Ein Bereich enthält einen oder mehrere Blöcke. Es verfügt über einen Körper und kann optional eine beliebige Anzahl von Ausnahmebehandlungsblöcken angefügt werden. Bei BAPI-Transaktionen kann die gesamte Orchestrierung (siehe vorherige Abbildung) in einen Geltungsbereich einbezogen werden.
Um die Ausnahme abzufangen, müssen Sie der Orchestrierung einen Catch Exception-Block hinzufügen. Catch Exception-Blöcke sind am Ende einer Scope-Form im Orchestration Designer angebracht. Im Fall von BAPI-Transaktionen müssen Sie die "ABORT"-Routine zum Catch Exception-Block hinzufügen, d. a. Sie müssen der "ABORT"-Routine Folgendes hinzufügen:
Ein Shape "Nachricht konstruieren" bestehend aus einer Transformation (zum Extrahieren der Anforderungsnachricht aus der Eingabenachricht) und einem Shape für die Nachrichtenzuweisung (zum Festlegen der Kontexteigenschaft)
Senden und Empfangen von Formen.
Das SAP-Transaktionsbeispiel für BizTalk Server (SAPTransaction), das mit BizTalk Adapter Pack ausgeliefert wurde, veranschaulicht auch die Ausnahmebehandlung. Weitere Informationen zum Muster 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 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 von der BizTalk Adapter Pack-Einrichtung in der Regel 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
Starten Sie die BizTalk Server-Verwaltungskonsole.
Erweitern Sie in der Konsolenstruktur die BizTalk-Gruppe, erweitern Sie Anwendungen und dann die Anwendung, der Sie eine BizTalk-Assembly hinzufügen möchten.
Klicken Sie mit der rechten Maustaste auf "Ressourcen", zeigen Sie auf "Hinzufügen" , und klicken Sie dann auf "BizTalk-Assemblys".
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".
Geben Sie unter "Optionen" die Optionen für die Installation der BizTalk-Assembly im GAC an, und klicken Sie dann auf "OK".
Sie müssen nun die BizTalk-Lösung erstellen und dann auf einem BizTalk Server bereitstellen. Weitere Informationen finden Sie unter Building and Running Orchestrations.
Konfigurieren der BizTalk-Anwendung
Nachdem Sie das BizTalk-Projekt bereitgestellt haben, wird die zuvor erstellte Orchestrierung im Bereich "Orchestrierungen " 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:
Definieren Sie einen Speicherort auf der Festplatte und einen entsprechenden Dateiport, an dem Sie eine Anforderungsnachricht ablegen. Die BizTalk-Orchestrierung wird die Anforderungsnachricht verarbeiten und sie an das SAP-System senden.
Definieren Sie einen Speicherort auf der Festplatte und einen entsprechenden Dateiport, an dem die BizTalk-Orchestrierung die Antwortnachricht absendet, die die Antwort vom SAP-System enthält.
Definieren Sie einen physischen WCF-Custom oder WCF-SAP Port senden, 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ühren, 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. Stellen Sie sicher, dass Sie beim Erstellen eines WCF-Custom oder WCF-SAP Sendeports die folgenden wichtigen Überlegungen einhalten, um Transaktionen auszuführen.
Legen Sie Folgendes fest: Zu diesem Wert Maßnahme Der Sendeport sendet und empfängt Nachrichten für mehrere Vorgänge. Die Aktion für den Sendeport muss also 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>
BizTalk-Kompatibilitätsmodus aktivieren Legen Sie diese Bindungseigenschaft auf True fest. VerbindungspoolingAktivieren Legen Sie diese Bindungseigenschaft auf False fest, bevor Sie Transaktionen ausführen. In Szenarien, in denen der Kanal zwischen dem Adapter und BizTalk unerwartet beendet wird, wird die entsprechende Verbindung zum Verbindungspool hinzugefügt. Wenn ein anderer Kanal geöffnet wird und der neue Kanal dasselbe Verbindungsobjekt auswählt, werden die unbestätigten Transaktionen des alten Verbindungsobjekts ebenfalls bestätigt, wenn die Transaktionen über den neuen Kanal bestätigt werden. Um dies zu vermeiden, muss das Connection-Pooling deaktiviert werden, während Transaktionen ausgeführt werden. Hinweis
Durch das Generieren des Schemas mithilfe des Add-Ins "Verbrauchsadapterdienst BizTalk Project" 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 zu SAP.
Von Bedeutung
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 Durchführung von Transaktionen auf einem SAP-System unterstützt der WCF-basierte SAP-Adapter jedoch keine Angabe eines Sicherungstransports, der auf einen anderen SAP-Server verweist.
Starten der Anwendung
Sie müssen die BizTalk-Anwendung starten, die Transaktionen mit einem SAP-System durchführt. Anweisungen zum Starten einer BizTalk-Anwendung finden Sie unter How to Start an Orchestration, How to Start an application.
Stellen Sie in dieser Phase folgendes sicher:
Der FILE-Empfangsanschluss zum Erhalten von Anforderungsmeldungen für die Orchestrierung ist in Betrieb.
Der FILE-Sendeport zum Empfangen der Antwortnachrichten von der Orchestrierung wird ausgeführt.
Der WCF-Custom- oder WCF-SAP-Sendeport, um Nachrichten an das SAP-System zu übermitteln, 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, z. B. multipleOrders.xsd-Schema. Eine Anforderungsnachricht zum Erstellen von Verkaufsaufträgen in einem SAP-System und dann zum Abschließen des Vorgangs lautet:
<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 verarbeitet die Nachricht und sendet sie dann an das SAP-System. Die Antwort des SAP-Systems wird an einem anderen Speicherort gespeichert, der als Teil der Orchestrierung definiert ist. Für die oben genannte Anforderungsnachricht erhalten Sie zwei Antwortnachrichten– eine zum Aufrufen des BAPI_SALESORDER_CREATEFROMDAT2 RFC und des anderen für den Commit-Vorgang mithilfe von 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, damit Sie die Sendeports und Empfangsports nicht für die gleiche Orchestrierung erstellen müssen. Weitere Informationen zu Bindungsdateien finden Sie unter Wiederverwenden von SAP-Adapterbindungen.