Eseguire transazioni BAPI in SAP usando BizTalk Server
La scheda SAP consente ai client dell'adapter di eseguire transazioni in un sistema SAP usando BizTalk Server. Prima di creare un'orchestrazione per una transazione, è prima necessario comprendere uno scenario di base in cui verranno eseguite le transazioni. In uno scenario di transazione tipico, viene inviato un messaggio di richiesta con più operazioni, ad esempio richiamando un BAPI, al sistema SAP. Questa operazione verrà definita "messaggio di operazione". L'orchestrazione deve estrarre ogni messaggio di operazione dal messaggio di richiesta e inviare i singoli messaggi di operazione al sistema SAP. L'orchestrazione li invia una dopo l'altra usando la stessa connessione. L'orchestrazione estrae i singoli messaggi dal "messaggio di operazione" usando una trasformazione XML tramite una mappa BizTalk.
Dopo aver eseguito le operazioni, l'orchestrazione deve eseguire rispettivamente il commit o l'interruzione della transazione inviando messaggi per BAPI_TRANSACTION_COMMIT o BAPI_TRANSACTION_ROLLBACK. Questi verranno definiti "messaggi di transazione".
In che modo l'adapter abilita le transazioni tramite BizTalk Server?
Per abilitare le transazioni in un sistema SAP usando la BizTalk Server, l'adapter SAP:
Fornisce le proprietà del contesto del messaggio OPEN,RIUS, CLOSE e ABORT.
Usa BAPI_TRANSACTION_COMMIT e BAPI_TRANSACTION_ROLLBACK per eseguire il commit o l'interruzione delle operazioni. Queste sono esposte dal sistema SAP.
Nella tabella seguente sono elencate alcune linee guida sull'uso delle proprietà con BAPI_TRANSACTION_COMMIT o BAPI_TRANSACTION_ROLLBACK:
Messaggio | OPEN | RIUTILIZZARE | CLOSE | ABORT |
---|---|---|---|---|
Primo messaggio (messaggio di operazione) | Sì | No | No | No |
Messaggi successivi (messaggi di operazione) | No | Sì | No | No |
BAPI_TRANSACTION_COMMIT (messaggio di transazione) | No | No | Sì | No |
BAPI_TRANSACTION_ROLLBACK (messaggio di transazione) | No | No | Sì | Sì |
Nella tabella un valore "Sì" indica la proprietà del contesto del messaggio da usare per un messaggio. Analogamente, una proprietà "No" indica la proprietà del contesto del messaggio da usare con un messaggio.
Per riepilogare la tabella:
Il primo messaggio deve sempre essere un messaggio di operazione e deve usare solo la proprietà OPEN.
I messaggi di operazione successivi devono usare la proprietàRIUS.
Il messaggio di transazione corrispondente a BAPI_TRANSACTION_COMMIT per il commit della transazione deve usare la proprietà CLOSE.
Il messaggio di transazione corrispondente a BAPI_TRANSACTION_ROLLBACK per interrompere la transazione può usare le proprietà CLOSE o ABORT. Se si usa ABORT, idealmente il messaggio deve trovarsi nel blocco di eccezioni di orchestrazione.
Considerazioni chiave correlate alle transazioni tramite BizTalk Server
Se sono presenti più porte di invio in un'orchestrazione, l'adapter separa automaticamente la transazione per i messaggi ricevuti da ogni porta. Vale a dire, una transazione non può essere estesa tra le porte.
I tentativi di ripetizione dei messaggi non sono supportati per i messaggi in una transazione SAP. Pertanto, gli utenti devono impostare il tentativo di ripetizione dei tentativi di messaggio su zero.
L'adattatore potrebbe produrre risultati indesiderati per le combinazioni contrassegnate come "No" nella tabella precedente. È consigliabile usare combinazioni contrassegnate come "Sì".
I messaggi inviati all'adapter che non dispongono di una proprietà del contesto di messaggio verranno eseguiti normalmente senza essere associati al contesto di transazione corrente.
BAPI_TRANSACTION_COMMIT o BAPI_TRANSACTION_ROLLBACK deve essere idealmente l'ultimo messaggio nel contesto della transazione corrente nell'orchestrazione.
Le sezioni seguenti forniscono istruzioni su come eseguire transazioni in SAP usando l'adapter SAP.
Come eseguire una transazione in un sistema SAP?
L'esecuzione di un'operazione in un sistema SAP usando l'adattatore SAP con BizTalk Server comporta attività procedurali descritte in Blocchi predefiniti per creare applicazioni SAP. Per eseguire transazioni in un sistema SAP, queste attività sono:
Creare un progetto BizTalk e generare lo schema per RFC in cui si vuole eseguire la transazione. È inoltre necessario generare lo schema per BAPI_TRANSACTION_COMMIT e BAPI_TRANSACTION_ROLLBACK rfC.
Creare messaggi nel progetto BizTalk per l'invio e la ricezione di messaggi dal sistema SAP.
Creare un'orchestrazione che estrae singoli messaggi di operazione dal messaggio di richiesta e lo invia al sistema SAP. In base al messaggio di richiesta, l'orchestrazione decide anche se eseguire il commit o il rollback della transazione.
Compilare e distribuire il progetto BizTalk.
Configurare l'applicazione BizTalk creando porte di invio e ricezione fisiche.
Avviare l'applicazione BizTalk.
In questo argomento vengono fornite istruzioni per eseguire queste attività.
Esempio basato su questo argomento
Un esempio, SAPTransaction, basato su questo argomento viene fornito con bizTalk Adapter Pack. Per altre informazioni, vedere Esempi per la scheda SAP.
Generazione dello schema
Per illustrare come eseguire transazioni in un sistema SAP, sono necessari gli schemi seguenti:
Per consentire l'esecuzione di operazioni su un sistema SAP. Il messaggio di richiesta inviato all'adapter deve essere conforme a questo schema. Questo può essere qualsiasi schema specifico dell'utente contenente qualsiasi numero di nodi dell'operazione. In questo argomento viene usato lo schema MultipleOrders.xsd. Lo schema viene fornito anche come parte dell'esempio di transazione fornito con gli esempi di BizTalk Adapter Pack. Per altre informazioni, vedere Esempi di schemi.
Per eseguire le operazioni in un sistema SAP, ad esempio richiamando un RFC. Il messaggio di richiesta per eseguire un'operazione deve essere conforme a questo schema. Questo schema deve essere generato usando il componente aggiuntivo Del progetto BizTalk del servizio adapter. In questo argomento viene richiamato il BAPI_SALESORDER_CREATEFROMDAT2 RFC. Per informazioni sulla generazione dello schema per RFC, vedere Sfoglia, cercare e ottenere metadati per le operazioni RFC in SAP.
Per l'interruzione o il commit di una transazione. La richiesta di eseguire il commit o l'interruzione di una transazione deve essere conforme a questo schema. L'adattatore SAP usa rispettivamente il BAPI_TRANSACTION_COMMIT e BAPI_TRANSACTION_ROLLBACK RFC per eseguire il commit e il rollback delle operazioni. È necessario generare lo schema per queste schede di rete usando il componente aggiuntivo Utilizzo servizio adapter.
Nota
È necessario assicurarsi che tutti gli schemi necessari vengano aggiunti al progetto BizTalk.
Importante
È necessario aggiungere un riferimento allo schema delle proprietà BizTalk per la scheda SAP al progetto BizTalk. Il file di schema, Microsoft.Adapters.SAP.BiztalkPropertySchema.dll, viene installato dalla configurazione bizTalk Adapter Pack, in genere nell'unità <>di installazione:\Programmi\Microsoft BizTalk Adapter Pack\bin.
Definizione di messaggi e tipi di messaggio
Lo schema generato in precedenza descrive i "tipi" necessari per i messaggi nell'orchestrazione. Un messaggio è in genere una variabile, il tipo per cui è definito dallo schema corrispondente. È necessario collegare lo schema generato nel primo passaggio ai messaggi dalla finestra Visualizzazione orchestrazione del progetto BizTalk.
Prima di creare messaggi, è necessario determinare il numero di nodi "operation" del messaggio di richiesta (di tipo MultipleOrders.xsd). Per questo esempio, si supponga che il messaggio di richiesta contenga due messaggi di operazione per richiamare il BAPI_SALESORDER_CREATEFROMDAT2 RFC. Pertanto, è necessario creare un set di messaggi di richiesta-risposta mappato allo schema generato per questo RFC.
È necessario creare i messaggi seguenti nel progetto BizTalk.
Messaggio SendtoAdapter per il messaggio di richiesta che verrà inviato all'orchestrazione. Questo messaggio deve essere mappato allo schema per il messaggio di input MultipleOrders.xsd.
Messaggio BAPIMessage per la prima operazione inviata al sistema SAP. È inoltre necessario creare un messaggio di risposta, BAPIResponse, per la risposta della prima operazione. È necessario eseguire il mapping dei messaggi di richiesta e risposta allo schema generato per il BAPI_SALESORDER_CREATEFROMDAT2 RFC.
Messaggio BAPICommitMessage per l'operazione di commit. È inoltre necessario creare un messaggio di risposta, BAPICommitResponse, per il messaggio di risposta corrispondente. È necessario eseguire il mapping dei messaggi di richiesta e risposta allo schema di BAPI_TRANSACTION_COMMIT RFC.
Messaggio BAPIRollbackMessage per l'operazione di rollback. È inoltre necessario creare un messaggio di risposta, BAPIRollbackResponse, per il messaggio di risposta corrispondente. È necessario eseguire il mapping dei messaggi di richiesta e risposta allo schema di BAPI_TRANSACTION_ROLLBACK RFC.
Seguire questa procedura per creare messaggi e collegarli allo schema.
Per creare messaggi e collegarsi allo schema
Aprire la visualizzazione orchestrazione del progetto BizTalk, se non è già aperto. Fare clic su Visualizza, scegliere Altre finestre e fare clic su Visualizzazione orchestrazione.
Nella visualizzazione orchestrazione fare clic con il pulsante destro del mouse su Messaggi e quindi scegliere Nuovo messaggio.
Fare clic con il pulsante destro del mouse sul messaggio appena creato e quindi scegliere Finestra Proprietà.
Nel riquadro Proprietà per Message_1 eseguire le operazioni seguenti.
Usare Per Identificatore Digitare SendToAdapter. Tipo di messaggio Nell'elenco a discesa espandere Schemi e selezionare SAPTransaction.MultipleOrders, dove SAPTransaction è il nome del progetto BizTalk. MultipleOrders è lo schema per il messaggio di richiesta. Ripetere il passaggio precedente per creare altri sei messaggi. Nel riquadro Proprietà per i nuovi messaggi eseguire le operazioni seguenti.
Impostare l'identificatore su Impostare Tipo di messaggio su 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
Configurazione dell'orchestrazione
È necessario creare un'orchestrazione BizTalk per usare BizTalk Server per eseguire transazioni in un sistema SAP. In questa orchestrazione si rilascia un messaggio di richiesta in una posizione di ricezione definita. L'adapter SAP utilizza il messaggio e lo passa al sistema SAP. La risposta dal sistema SAP viene salvata in un'altra posizione.
Un'altra considerazione da tenere in considerazione quando si crea un'orchestrazione è necessario:
Eseguire il mapping dello schema del messaggio di richiesta a quello del BAPI_SALESORDER_CREATEFROMDAT2 RFC.
Eseguire il mapping dello schema del messaggio di richiesta a quello del BAPI_TRANSACTION_COMMIT e BAPI_TRANSACTION_ROLLBACK RFC.
È possibile eseguire il mapping degli schemi usando una trasformazione XML tramite una mappa BizTalk. A tale scopo, includere trasforma le forme nell'orchestrazione.
Infine, in base al fatto che il messaggio di richiesta disponga di informazioni per eseguire il commit o l'interruzione della transazione, l'orchestrazione deve decidere il messaggio appropriato da inviare al sistema SAP. A tale scopo, includere una forma Decide nell'orchestrazione.
Per altre informazioni sulle diverse forme incluse nell'orchestrazione, vedere Orchestration Designer UI (Orchestration Designer UI) nelle linee guida dell'interfaccia utente e nelle informazioni di riferimento sullo spazio dei nomi delle API per sviluppatori.
Un'orchestrazione di esempio per una transazione SAP è simile alla seguente.
Aggiunta di forme messaggio
Assicurarsi di specificare le proprietà seguenti per ognuna delle forme del messaggio. I nomi elencati nella colonna Shape sono i nomi delle forme messaggio visualizzate nell'orchestrazione precedente.
Forma | Tipo di forma | Proprietà |
---|---|---|
ReceiveInputXML | Ricevere | - Impostare Il nome su ReceiveInputXML - Impostare Attiva su True |
SendToLOB | Send | - Impostare il nome su SendToLOB |
ReceiveResponse | Ricevere | - Impostare il nome su ReceiveResponse - Impostare Attiva su False |
SendResponse | Send | - Impostare il nome su SendResponse |
Poiché il messaggio di richiesta include due messaggi di inserimento, è necessario creare un altro set di forme di invio e ricezione per inviare messaggi a SAP e ricevere una risposta. Tuttavia, poiché è possibile eseguire il commit o il rollback dei messaggi di inserimento, è necessario creare il secondo set di forme all'interno di un blocco decisionale. È necessario creare un set di forme per il commit e un altro set di forme per il rollback.
Nota
È possibile aggiungere un blocco decisionale trascinando e rilasciando la forma Decide dalla casella degli strumenti Orchestrazioni BizTalk.
Forme messaggio per commit
Nella tabella seguente sono elencate le forme per il "percorso di commit" dell'orchestrazione. In questo caso non è necessario creare un messaggio di ricezione per un messaggio di richiesta. Il messaggio di richiesta verrà passato dalla forma del messaggio precedente.
Forma | Tipo di forma | Proprietà |
---|---|---|
SendBAPICommit | Send | - Impostare il nome su SendBAPICommit |
ReceiveCommitResponse | Ricevere | - Impostare il nome su ReceiveCommitResponse - Impostare Attiva su False |
SendResponse2 | Send | - Impostare nome su SendResponse2 |
Forme di messaggio per l'interruzione
Nella tabella seguente sono elencate le forme per il "percorso di rollback" dell'orchestrazione.
Forma | Tipo di forma | Proprietà |
---|---|---|
SendBAPIRollback | Send | - Impostare nome su SendBAPIRollback |
ReceiveRollbackResponse | Ricevere | - Impostare nome su ReceiveRollbackResponse - Impostare Attiva su False |
SendResponse3 | Send | - Impostare nome su SendResponse3 |
Impostazione dell'espressione regola
Sono state incluse le forme del messaggio per le operazioni di commit e interruzione all'interno di un blocco decisionale aggiungendo una forma Decide. Per specificare la condizione in cui l'orchestrazione eseguirà una decisione, è necessario specificare un'espressione sulla forma Regola in base alla quale verrà eseguito il commit o il rollback della transazione. Ad esempio, è necessario specificare l'espressione seguente per la forma Regola:
SendToAdapter.isCommit == true
Dove, SendToAdapter è il messaggio creato per lo schema del messaggio di richiesta. Quindi, nel messaggio di richiesta, se il tag è impostato su True, l'orchestrazione isCommit
accetta la route "commit". In caso contrario, l'orchestrazione accetta la route di rollback.
Per poter specificare questa condizione nell'editor di espressioni, è necessario aver promosso la isCommit
proprietà nello schema del messaggio per il messaggio di richiesta inviato all'adapter. Per questo argomento, lo schema di input da usare è MultipleOrders.xsd. È necessario promuovere la isCommit
proprietà in questo schema. Per altre informazioni sulla promozione di una proprietà, vedere Promozione delle proprietà.
Aggiunta di forme di messaggio di costrutto
Come illustrato in precedenza, il messaggio di richiesta inviato all'adattatore contiene due messaggi di inserimento e quindi un messaggio di commit o di interruzione. È necessario aggiungere una forma Costrutto messaggio e all'interno di una forma Transform per estrarre singoli messaggi di operazione da inviare al sistema SAP. È inoltre necessario aggiungere una forma Assegnazione messaggi per impostare le proprietà del contesto del messaggio per abilitare le transazioni.
Prima forma di costruzione del messaggio
Si supponga che la prima forma Costrutto messaggio sia denominata "ReceiveXML". Per questa forma, specificare la proprietà MessagesCostruita come "BAPIMessage". Fare doppio clic sulla forma Trasforma per aprire la finestra di dialogo Configurazione trasformazione . Nella finestra di dialogo visualizzata:
Scegliere di creare una nuova mappa.
Nel riquadro sinistro selezionare Origine e nell'elenco a discesa Nome variabile selezionare SendToAdapter.
Nel riquadro sinistro selezionare Destinazione e nell'elenco a discesa Nome variabile selezionare BAPIMessage.
Fare clic su OK per avviare il mapper. Eseguire il mapping dello schema del messaggio di richiesta allo schema della BAPI_SALESORDER_CREATEFROMDAT2. È possibile usare il functoid Index per creare una mappa tra l'origine e gli schemi di destinazione. Un functoid Index consente di selezionare le informazioni per un record specifico in una serie di record.
La figura seguente mostra gli schemi mappati usando un functoid Index .
Per altre informazioni sull'uso della finestra di dialogo Configurazione trasformazione , vedere la finestra di dialogo Trasforma configurazionenell'interfaccia utente guidata e informazioni di riferimento sullo spazio dei nomi delle API per sviluppatori.
Per altre informazioni sull'uso del functoid Index, vedere Functoid Index.
Dopo aver mappato gli schemi, è possibile testare il mapping usando la pagina delle proprietà del file di mappa. Per altre informazioni, vedere la finestra di dialogo Pagina proprietà file> mappa, scheda Mappa test nella guida per l'interfaccia<utente e informazioni di riferimento sullo spazio dei nomi delle API per sviluppatori.
Nella forma Assegnazione messaggi specificare la proprietà del contesto del messaggio per avviare la transazione. Ad esempio, la proprietà del contesto del messaggio per il primo messaggio potrebbe essere:
BAPIMessage(Microsoft.Adapters.SAP.BiztalkPropertySchema.ConnectionState) = "OPEN";
Forma del messaggio di costrutto commit
Si supponga che la forma Costrutti messaggio per l'operazione di commit sia denominata "CommitMessage". Per questa forma, specificare la proprietà Messages Constructed come "BAPICommitMessage". Fare doppio clic sulla forma Trasforma per aprire la finestra di dialogo Configurazione trasformazione . Nella finestra di dialogo visualizzata:
Scegliere di creare una nuova mappa.
Nel riquadro sinistro selezionare Origine e nell'elenco a discesa Nome variabile selezionare SendToAdapter.
Nel riquadro sinistro selezionare Destinazione e nell'elenco a discesa Nome variabile selezionare BAPICommitMessage.
Fare clic su OK per avviare il mapper. Eseguire il mapping dello schema del messaggio di richiesta allo schema di BAPI_TRANSACTION_COMMIT. Non è necessario includere un functoid index per questo mapping perché il nodo BAPI_TRANSACTION_COMMIT non contiene una gerarchia di record.
Nella forma Assegnazione messaggi specificare la proprietà del contesto del messaggio per eseguire il commit della transazione. Ad esempio, la proprietà del contesto del messaggio per il primo messaggio potrebbe essere:
BAPICommitMessage(Microsoft.Adapters.SAP.BiztalkPropertySchema.ConnectionState) = "CLOSE";
Forma del messaggio di costrutto rollback
Si supponga che la forma Costrutti messaggio per l'operazione di rollback sia denominata "RollbackMessage". Per questa forma, specificare la proprietà MessagesCostruita come "BAPIRollbackMessage". Fare doppio clic sulla forma Trasforma per aprire la finestra di dialogo Configurazione trasformazione . Nella finestra di dialogo visualizzata:
Scegliere di creare una nuova mappa.
Nel riquadro sinistro selezionare Origine e nell'elenco a discesa Nome variabile selezionare SendToAdapter.
Nel riquadro sinistro selezionare Destinazione e nell'elenco a discesa Nome variabile selezionare BAPIRollbackMessage.
Fare clic su OK per avviare il mapper. Eseguire il mapping dello schema del messaggio di richiesta allo schema di BAPI_TRANSACTION_ROLLBACK. Non è necessario includere un functoid index per questo mapping perché il nodo BAPI_TRANSACTION_ROLLBACK non contiene una gerarchia di record.
Nella forma Assegnazione messaggi specificare la proprietà del contesto del messaggio per eseguire il rollback della transazione. Ad esempio, la proprietà del contesto del messaggio per il primo messaggio potrebbe essere:
BAPIRollbackMessage(Microsoft.Adapters.SAP.BiztalkPropertySchema.ConnectionState) = "ABORT";
Importante
In scenari tipici, il messaggio corrispondente a BAPI_TRANSACTION_ROLLBACK con la proprietà di contesto ABORT deve essere usato in un blocco di eccezioni.
Aggiunta di porte
Assicurarsi di specificare le proprietà seguenti per ognuna delle porte logiche. I nomi elencati nella colonna Porta sono i nomi delle porte visualizzate nell'orchestrazione.
Per questa orchestrazione vengono create tre porte. La prima porta seleziona il messaggio di richiesta da una cartella specificata. La seconda porta invia i messaggi al sistema SAP e riceve una risposta. La terza porta salva la risposta a un'altra cartella. Di conseguenza:
La prima porta riceve solo messaggi per uno schema singolo, ovvero MultipleOrders.xsd.
La seconda porta invia e riceve messaggi per lo schema di BAPI_SALESORDER_CREATEFROMDAT2 RFC. Inoltre, la stessa porta verrà usata per eseguire il commit o il rollback della transazione. Questa porta riceve quindi anche messaggi di schemi per BAPI_TRANSACTION_COMMIT e BAPI_TRANSACTION_ROLLBACK rfC. Per abilitare questa operazione, vengono create tre diverse operazioni su questa porta, ognuna corrispondente a uno schema di messaggio specifico.
Analogamente alla seconda porta, questa porta riceverà anche messaggi con tre schemi diversi. È quindi necessario creare tre diverse operazioni su questa porta.
Porta | Proprietà |
---|---|
FileIn | - Impostare identificatore su FileIn - Impostare tipo su FileInType - Impostare il modello di comunicazionesu unidirezionale - Impostare la direzione di comunicazione su Ricezione |
LOBPort | - Impostare identificatore su LOBPort - Impostare tipo su LOBPortType - Impostare il modello di comunicazione su Request-Response - Impostare la direzione di comunicazione su Send-Receive - Creare un'operazione BAPIMessage. - Creare un'operazione CommitMessage. Questa operazione verrà usata per inviare un messaggio di commit. - Creare un'operazione RollbackMessage. Questa operazione verrà usata per inviare il messaggio di rollback. |
SaveResponse | - Impostare identificatore su SaveResponse - Impostare tipo su SaveResponseType - Impostare il modello di comunicazionesu unidirezionale - Impostare la direzione di comunicazione su Invia. - Creare un'operazione BAPIMessage. - Creare un'operazione CommitMessage. Questa operazione verrà usata per salvare le risposte per il messaggio di commit. - Creare un'operazione RollbackMessage. Questa operazione verrà usata per salvare le risposte per il messaggio di rollback. |
Specificare i messaggi per le forme di azione e connettersi alle porte
La tabella seguente specifica le proprietà e i relativi valori da impostare per specificare i messaggi per le forme di azione e collegarli alle porte. I nomi elencati nella colonna Shape sono i nomi delle forme del messaggio visualizzate nell'orchestrazione precedente.
Forma | Proprietà |
---|---|
ReceiveInputXML | - Impostare messaggio su SendToAdapter - Impostare l'operazione su FileIn.Transaction.Request |
SendToLOB | - Impostare messaggio su BAPIMessage - Impostare l'operazione su LOBPort.BAPIMessage.Request |
ReceiveResponse | - Impostare il messaggio su BAPIResponse - Impostare l'operazione su LOBPort.BAPIMessage.Response |
SendResponse | - Impostare il messaggio su BAPIResponse - Impostare l'operazione su SaveResponse.BAPIMessage.Request |
SendBAPICommit | - Impostare messaggio su BAPICommitMessage - Impostare l'operazione su LOBPort.CommitMessage.Request |
ReceiveCommitResponse | - Impostare il messaggio su BAPICommitResponse - Impostare l'operazione su LOBPort.CommitMessage.Response |
SendResponse2 | - Impostare il messaggio su BAPICommitResponse - Impostare l'operazione su SaveResponse.CommitMessage.Request |
SendBAPIRollback | - Impostare messaggio su BAPIRollbackMessage - Impostare l'operazione su LOBPort.RollbackMessage.Request |
ReceiveRollbackResponse | - Impostare il messaggio su BAPIRollbackResponse - Impostare l'operazione su LOBPort.RollbackMessage.Response |
SendResponse3 | - Impostare il messaggio su BAPIRollbackResponse - Impostare l'operazione su SaveResponse.RollbackMessage.Request |
Dopo aver specificato queste proprietà, le forme e le porte del messaggio sono connesse e la orchestrazione è stata completata.
Gestione delle eccezioni
In orchestrazioni complesse come quella per l'esecuzione di transazioni BAPI, è importante tenere traccia dello stato dell'orchestrazione, segnalare gli errori durante la loro esecuzione, in modo che sia possibile risolvere i problemi quando si verificano. L'orchestrazione BizTalk fornisce strumenti per gestire gli errori, per mantenere lo stato di un'orchestrazione e per risolvere i problemi durante la gestione delle transazioni, della compensazione e delle eccezioni.
Come framework per le transazioni e la gestione delle eccezioni, l'orchestrazione Designer fornisce la forma Ambito. Un ambito può avere un tipo di transazione, una compensazione e un numero qualsiasi di gestori delle eccezioni. Un ambito può contenere uno o più blocchi. Ha un corpo e può facoltativamente avere un numero qualsiasi di blocchi di gestione delle eccezioni accodati a esso. Nel caso delle transazioni BAPI, l'intera orchestrazione (vedere la figura precedente) può essere inclusa in un ambito.
Per rilevare l'eccezione, è necessario aggiungere un blocco di eccezioni Catch all'orchestrazione. I blocchi di eccezione Catch vengono collegati alla fine di una forma Ambito nella Designer orchestrazione. Nel caso delle transazioni BAPI, è necessario aggiungere la routine "ABORT" al blocco Catch Exception , ovvero è necessario aggiungere quanto segue alla routine "ABORT":
Forma Costrutto messaggio costituita da una trasformazione (per estrarre il messaggio di richiesta dal messaggio di input) e una forma Assegnazione messaggi (per impostare la proprietà context)
Inviare e ricevere forme.
L'esempio di transazione SAP per BizTalk Server (SAPTransaction) fornito con BizTalk Adapter Pack dimostra anche la gestione delle eccezioni. Per altre informazioni sull'esempio, vedere Esempi per l'adapter SAP.
Per altre informazioni su come gestire le eccezioni, in generale, usando BizTalk Server, vedere Uso di transazioni e gestione delle eccezioni.
Aggiungere lo schema delle proprietà BizTalk a BizTalk
Nel progetto BizTalk è stato aggiunto un riferimento all'assembly allo schema delle proprietà BizTalk per l'adapter SAP. È necessario aggiungere lo stesso assembly di una risorsa nell'applicazione BizTalk, ovvero l'applicazione in cui verrà distribuito il progetto BizTalk. Il file dello schema, Microsoft.Adapters.SAP.BiztalkPropertySchema.dll, viene installato dalla configurazione bizTalk Adapter Pack in genere nell'unità <>di installazione:\Programmi\Microsoft BizTalk Adapter Pack\bin. Senza questa risorsa non sarà possibile distribuire il progetto.
Per aggiungere un assembly come risorsa in BizTalk
Avviare la console di amministrazione di BizTalk Server.
Nell'albero della console espandere Gruppo BizTalk, espandere Applicazioni e quindi l'applicazione a cui si vuole aggiungere un assembly BizTalk.
Fare clic con il pulsante destro del mouse su Risorse, scegliere Aggiungi e quindi fare clic su Assembly BizTalk.
Nella finestra di dialogo Aggiungi risorsa fare clic su Aggiungi, passare alla cartella contenente il file di assembly BizTalk, selezionare il file di assembly BizTalk e quindi fare clic su Apri.
In Opzioni specificare le opzioni per l'installazione dell'assembly BizTalk nella gaC e quindi fare clic su OK.
È ora necessario compilare la soluzione BizTalk e quindi distribuirla in un BizTalk Server. Per altre informazioni, vedere Creazione e esecuzione di orchestrazioni.
Configurazione dell'applicazione BizTalk
Dopo aver distribuito il progetto BizTalk, l'orchestrazione creata in precedenza è elencata nel riquadro Orchestrazioni nella console di amministrazione di BizTalk Server. È necessario usare la console di amministrazione BizTalk Server per configurare l'applicazione. Per altre informazioni sulla configurazione di un'applicazione, vedere Come configurare un'applicazione.
La configurazione di un'applicazione comporta:
Selezione di un host per l'applicazione.
Mapping delle porte create nell'orchestrazione alle porte fisiche nella console di amministrazione di BizTalk Server. Per questa orchestrazione è necessario:
Definire un percorso sul disco rigido e una porta file corrispondente in cui verrà visualizzato un messaggio di richiesta. L'orchestrazione BizTalk utilizzerà il messaggio di richiesta e lo invierà al sistema SAP.
Definire un percorso sul disco rigido e una porta file corrispondente in cui l'orchestrazione BizTalk rilascia il messaggio di risposta contenente la risposta dal sistema SAP.
Definire una porta di trasmissione fisica WCF-Custom o WCF-SAP per inviare messaggi al sistema SAP. Per informazioni su come creare porte, vedere Configurare manualmente un'associazione di porte fisiche alla scheda SAP. Poiché la porta di invio invia e riceve messaggi conformi a più schemi ed esegue due operazioni, è necessario impostare un'azione dinamica per entrambe le operazioni. Per altre informazioni sulle azioni, vedere Configurare l'azione SOAP per il sistema SAP. Assicurarsi di rispettare le considerazioni chiave seguenti durante la creazione di una porta di trasmissione WCF-Custom o WCF-SAP per eseguire transazioni.
Impostare quanto segue A questo valore Azione La porta di invio invia e riceve messaggi per più di un'operazione. Quindi, l'azione sulla porta di invio deve essere impostata per ogni operazione.
<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 Impostare questa proprietà di associazione su True. EnableConnectionPooling Impostare questa proprietà di associazione su False prima di eseguire tutte le transazioni. Negli scenari in cui il canale configurato tra l'adapter e BizTalk viene terminato in modo imprevisto, la connessione corrispondente viene aggiunta al pool di connessioni. Quando viene aperto un altro canale e il nuovo canale seleziona lo stesso oggetto di connessione, le transazioni non inviate nell'oggetto di connessione precedente verranno eseguite anche quando le transazioni vengono eseguite tramite il commit sul nuovo canale. Per evitare questo problema, il pool di connessioni deve essere disabilitato durante l'esecuzione delle transazioni. Nota
La generazione dello schema usando il componente aggiuntivo Del progetto BizTalk del servizio adapter crea anche un file di associazione contenente informazioni sulle porte e sulle azioni da impostare per tali porte. È possibile importare questo file di associazione dalla console di amministrazione di BizTalk Server per creare porte di invio (per le chiamate in uscita) o le porte di ricezione (per le chiamate in ingresso). Per altre informazioni, vedere Configurare un'associazione di porte fisiche usando un file di associazione di porte a SAP.
Importante
È possibile configurare un trasporto di backup in una porta di trasmissione WCF-Custom o WCF-SAP che consente di inviare messaggi a un altro sistema SAP se il trasporto primario non riesce a funzionare. Tuttavia, per eseguire transazioni in un sistema SAP, l'adapter SAP basato su WCF non supporta la specifica di un trasporto di backup che punta a un altro server SAP.
Avvio dell'applicazione
È necessario avviare l'applicazione BizTalk che esegue transazioni di un sistema SAP. Per istruzioni sull'avvio di un'applicazione BizTalk, vedere Come avviare un'orchestrazione, Come avviare un'applicazione.
In questa fase assicurarsi di:
La porta di ricezione FILE per ricevere messaggi di richiesta per l'orchestrazione è in esecuzione.
La porta di invio FILE per ricevere i messaggi di risposta dall'orchestrazione è in esecuzione.
La porta di trasmissione WCF-Custom o WCF-SAP per inviare messaggi al sistema SAP è in esecuzione.
L'orchestrazione BizTalk per l'operazione è in esecuzione.
Esecuzione dell'operazione
Dopo aver eseguito l'applicazione, è necessario eliminare un messaggio di richiesta per l'orchestrazione in una posizione predefinita. Il messaggio di richiesta deve essere conforme a uno schema specifico, ad esempio multipleOrders.xsd schema. Ad esempio, un messaggio di richiesta per creare ordini di vendita in un sistema SAP e quindi eseguire il commit dell'operazione è:
<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>
L'orchestrazione usa il messaggio e lo invia al sistema SAP. La risposta del sistema SAP viene salvata in un altro percorso di file definito come parte dell'orchestrazione. Per il messaggio di richiesta precedente, si ottengono due messaggi di risposta, uno per richiamare il BAPI_SALESORDER_CREATEFROMDAT2 RFC e l'altro per l'operazione di commit usando BAPI_TRANSACTION_COMMIT.
La risposta per BAPI_SALESORDER_CREATEFROMDAT2 è:
<?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>
La risposta per BAPI_TRANSACTION_COMMIT è:
<?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>
Nota
Se il messaggio di richiesta ha richiamato il BAPI_TRANSACTION_ROLLBACK RFC, la seconda risposta sarà per BAPI_TRANSACTION_ROLLBACK.
Possibili eccezioni
Per informazioni sulle eccezioni che potrebbero verificarsi durante l'esecuzione di transazioni in un sistema SAP usando BizTalk Server, vedere Eccezioni e gestione degli errori con l'adapter SAP.
Procedure consigliate
Dopo aver distribuito e configurato il progetto BizTalk, è possibile esportare le impostazioni di configurazione in un file XML denominato file binding. Dopo aver generato un file di associazioni, è possibile importare le impostazioni di configurazione dal file in modo che non sia necessario creare le porte di invio e le porte di ricezione, per la stessa orchestrazione. Per altre informazioni sui file di associazione, vedere Riutilizzare le associazioni di adattatori SAP.