Richiamare tRFC in SAP usando BizTalk Server
Le chiamate di funzioni remote transazionali (tRFCs) garantiscono un'esecuzione unica e una sola volta di un RFC in un sistema SAP. È possibile richiamare una delle schede RFC rilevate dall'adattatore SAP come TRFC. Richiamare un TRFC è simile a richiamare un RFC (vedere Richiamare le RFC in SAP usando BizTalk Server) con le differenze seguenti:
L'adattatore SAP espone tRFCs in un nodo diverso (TRFC) rispetto alle RFC (RFC).
Le operazioni tRFC includono un parametro GUID mappato all'ID transazione SAP per tRFC dall'adapter SAP.
Dopo aver richiamato un TRFC, è necessario richiamare l'operazione RfcConfirmTransID per confermare (commit) il tRFC nel sistema SAP. Questa operazione viene eseguita direttamente sotto il nodo TRFC nel componente aggiuntivo Consume Adapter Service .This operation is surfaced directly under the TRFC node in Consume Adapter Service Add-in.
Per altre informazioni sul modo in cui l'adattatore SAP supporta la chiamata di un TRFC, vedere Operazioni sui TRFC in SAP. Per altre informazioni sulla struttura dei messaggi SOAP per richiamare un TRFC, vedere Message Schemas for tRFC Operations.For more information about the structure of SOAP messages for invoking a tRFC operations, see Message Schemas for tRFC Operations.
Come richiamare un TRFC in un sistema SAP usando BizTalk Server?
L'esecuzione di un'operazione in un sistema SAP tramite BizTalk Server comporta attività procedurali descritte in Blocchi predefiniti per creare applicazioni SAP. Per richiamare un TRFC in un sistema SAP, queste attività sono:
Creare un progetto BizTalk e generare lo schema per tRFC che si vuole richiamare nel sistema SAP. È inoltre necessario generare lo schema per l'operazione RfcConfirmTransID per eseguire il commit del TID nel sistema SAP.
Creare messaggi nel progetto BizTalk per l'invio e la ricezione di messaggi dal sistema SAP.
Creare un'orchestrazione per richiamare un TRFC nel sistema SAP e quindi eseguire il commit del TID creato nel sistema SAP in risposta alla chiamata tRFC dall'adapter SAP.
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
Viene fornito anche un esempio tRFCClient basato su questo argomento con bizTalk Adapter Pack. Per altre informazioni, vedere Esempi con l'adapter SAP.
Generazione dello schema
In questo argomento, per illustrare come richiamare un TRFC usando l'adattatore SAP, verrà generato lo schema per:
BAPI_SALESORDER_CREATEFROMDAT2 tRFC.
Operazione RfcConfirmTransID. È necessario usare questa operazione per eseguire il commit del TID creato nel sistema SAP. Dopo che il sistema SAP riceve questa chiamata, elimina il TID dal sistema.
Per altre informazioni su come generare lo schema , vedere Esplorare, cercare e ottenere metadati per le operazioni tRFC in SAP .
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 il quale è definito dallo schema corrispondente. È necessario collegare lo schema generato ai messaggi dalla visualizzazione Orchestrazione del progetto BizTalk.
Per questo argomento, è necessario creare quattro messaggi, ovvero un set di messaggi di richiesta-risposta per richiamare il tRFC e un altro set di messaggi di richiesta-risposta per richiamare l'operazione RfcConfirmTransID.
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 scegliere Finestra Proprietà.
Nel riquadro Proprietà per Message_1 eseguire le operazioni seguenti.
Usare Per Identificatore Digitare Request.Type Request. Tipo di messaggio Nell'elenco a discesa espandere Schemi e selezionare il tipo di messaggio. Ad esempio, selezionare tRFC_Client.SAPBindingSchema1.BAPI_SALESORDER_CREATEFROMDAT2, dove tRFC_Client è il nome del progetto BizTalk. SAPBindingSchema1 è lo schema generato per BAPI_SALESORDER_CREATEFROMDAT2. Ripetere il passaggio precedente per creare altri tre messaggi. Nel riquadro Proprietà per i nuovi messaggi eseguire le operazioni seguenti.
Impostare l'identificatore su Impostare Tipo di messaggio su Risposta tRFC_Client.SAPBindingSchema1.BAPI_SALESORDER_CREATEFROMDAT2Response TIDRequest tRFC_Client.SAPBindingSchema3.RfcConfirmTransID TIDResponse tRFC_Client.SAPBindingSchema3.RfcConfirmTransIDResponse
Configurazione dell'orchestrazione
È necessario creare un'orchestrazione BizTalk per usare BizTalk Server per richiamare tRFCs in un sistema SAP. In questa orchestrazione si rimuoverà un messaggio di richiesta in una posizione di ricezione definita. L'orchestrazione utilizza questo messaggio e lo passa al sistema SAP. La risposta viene ricevuta da SAP e viene salvata in un'altra posizione. Il messaggio di risposta contiene un GUID. L'orchestrazione include una forma Construct Message per estrarre il GUID dalla risposta e costruire un messaggio conforme allo schema dell'operazione RfcConfirmTransID . Il messaggio per richiamare l'operazione RfcConfirmTransID viene inviato al sistema SAP con il GUID come parametro _ Un'orchestrazione tipica per richiamare tRFCs in un sistema SAP, seguita da un'operazione RfcConfirmTransID conterrà:
Inviare e ricevere forme per inviare messaggi al sistema SAP e ricevere risposte.
Forma Costrutto messaggio e all'interno di una forma Assegnazione messaggio per costruire un messaggio per l'operazione RfcConfirmTransID .
Porta di ricezione unidirezionale per ricevere messaggi di richiesta da inviare al sistema SAP per richiamare il TRFC.
Porta di trasmissione bidirezionale per inviare messaggi per richiamare il TRFC e ricevere la risposta.
Porta di trasmissione bidirezionale per inviare messaggi per richiamare l'operazione RfcConfirmTransID e ricevere la risposta.
Due porte di trasmissione unidirezionale per inviare le risposte dal sistema SAP a una cartella.
Un'orchestrazione di esempio è simile alla seguente:
Aggiunta di forme messaggio
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à |
---|---|---|
ReceiveXml | Ricevere | - Impostare il nome su ReceiveXml - 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 |
SendTIDMsg | Send | - Impostare nome su SendTIDMsg |
ReceiveTIDRsp | Ricevere | - Impostare nome su ReceiveTIDRsp - Impostare Attiva su False |
SendTIDRsp | Send | - Impostare il nome su SendTIDRsp |
Aggiunta della forma del messaggio costrutto
La risposta dal sistema SAP per la chiamata tRFC contiene un GUID. Per eseguire il commit della chiamata tRFC, è necessario passare lo stesso GUID all'operazione RfcConfirmTransID. A tale scopo, è necessario includere una forma Costrutto messaggio e all'interno della forma Assegnazione messaggi, nell'orchestrazione. In questo caso, lo scopo della forma Costrutto messaggio è:
Per estrarre il GUID dalla risposta ricevuta dal sistema SAP per la chiamata tRFC.
Per costruire un messaggio conforme allo schema del messaggio per l'operazione RfcConfirmTransID.
Per la forma Costrutto messaggio, è necessario impostare la proprietà MessageCostruita su TIDRequest.
È necessario aggiungere l'estratto di codice seguente alla forma Assegnazione messaggi:
XmlDoc = new System.Xml.XmlDocument();
XmlDoc.LoadXml("<RfcConfirmTransID xmlns='http://Microsoft.LobServices.Sap/2007/03/RfcApi/'><TransactionalRfcOperationIdentifier /></RfcConfirmTransID>");
TIDRequest = XmlDoc;
TIDRequest.TransactionalRfcOperationIdentifier = xpath(Response,"string(/*[local-name()='BAPI_SALESORDER_CREATEFROMDAT2Response']/*[local-name()='TransactionalRfcOperationIdentifier']/text())");
Per usare l'estratto del codice precedente, è necessario disporre di:
Creare una variabile , XmlDoc, nel progetto BizTalk e impostarne il tipo su System.Xml. Xmldocument. Per altre informazioni sulla creazione di variabili, vedere Uso di variabili nelle orchestrazioni.
Promosso la proprietà TransactionalRfcOperationIdentifier nello schema per l'operazione RfcConfirmTransID. Per altre informazioni sulla promozione di una proprietà, vedere Promozione delle proprietà.
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.
Porta | Proprietà |
---|---|
FileIn | - Impostare identificatore su FileIn - Impostare tipo su FileInPortType - Impostare il modello di comunicazionesu unidirezionale - Impostare la direzione di comunicazione su Ricezione |
tRFC_Port | - Impostare identificatore su tRFC_Port - Impostare tipo su tRFC_PortType - Impostare il modello di comunicazione su Request-Response - Impostare la direzione di comunicazione su Send-Receive |
SavetRFCResponse | - Impostare identificatore su SavetRFCResponse - Impostare tipo su SavetRFCResponsePortType - Impostare il modello di comunicazionesu unidirezionale - Impostare la direzione di comunicazione su Invia |
TID_Port | - Impostare identificatore su TID_Port - Impostare tipo su TIDPortType - Impostare il modello di comunicazione su Request-Response - Impostare la direzione di comunicazione su Send-Receive |
SaveTIDResponse | - Impostare identificatore su SaveTIDResponse - Impostare tipo su SaveTIDResponsePortType - Impostare il modello di comunicazionesu unidirezionale - Impostare la direzione di comunicazione su Invia |
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à |
---|---|
ReceiveXml | - Impostare messaggio su richiesta - Impostare l'operazione su FileIn.tRFC.Request |
SendToLOB | - Impostare messaggio su richiesta - Impostare l'operazione su tRFC_Port.tRFC.Request |
ReceiveResponse | - Impostare messaggio su risposta - Impostare l'operazione su tRFC_Port.tRFC.Response |
SendResponse | - Impostare messaggio su risposta - Impostare l'operazione su SavetRFCResponse.tRFC.Request |
SendTIDMsg | - Impostare messaggio su TIDRequest - Impostare l'operazione su TID_Port.TID.Request |
ReceiveTIDRsp | - Impostare messaggio su TIDResponse - Impostare l'operazione su TID_Port.TID.Response |
SendTIDRsp | - Impostare messaggio su TIDResponse - Impostare l'operazione su SaveTIDResponse.TID.Request |
Dopo aver specificato queste proprietà, le forme e le porte del messaggio sono connesse e la orchestrazione è stata completata.
È 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 per inviarlo 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 porte di trasmissione fisiche WCF-Custom o WCF-SAP (una per il messaggio di richiesta tRFC e il messaggio RfcConfirmTransID) per inviare messaggi al sistema SAP. È anche necessario specificare l'azione nella porta di invio. Per informazioni su come creare porte, vedere Configurare manualmente un'associazione di porte fisiche alla scheda SAP.
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.
Avvio dell'applicazione
È necessario avviare l'applicazione BizTalk per richiamare tRFCs in un sistema SAP. Per istruzioni sull'avvio di un'applicazione BizTalk, vedere Come avviare un'orchestrazione o 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 trasmissione FILE per ricevere i messaggi di risposta dall'orchestrazione è in esecuzione.
Le porte di trasmissione WCF-Custom o WCF-SAP per inviare messaggi al sistema SAP sono 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. Per informazioni sullo schema per il messaggio di richiesta per richiamare un TRFC in un sistema SAP, vedere Message Schemas for tRFC Operations to know about the schema for the request message for invoking a tRFC Operations to know about the schema for the request message forrichiamare a tRFC in an SAP system. Ad esempio, il messaggio di richiesta per richiamare BAPI_SALEASORDER_CREATEFROMDAT2 come tRFC è:
<BAPI_SALESORDER_CREATEFROMDAT2 xmlns="http://Microsoft.LobServices.Sap/2007/03/Trfc/">
<ORDER_HEADER_IN>
<DOC_TYPE xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">TA</DOC_TYPE>
<SALES_ORG xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">1000</SALES_ORG>
<DISTR_CHAN xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">10</DISTR_CHAN>
<DIVISION xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">00</DIVISION>
<SALES_OFF xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">1000</SALES_OFF>
<REQ_DATE_H xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">2006-09-01T23:50:00</REQ_DATE_H>
<PURCH_DATE xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">2006-08-25T23:50:00</PURCH_DATE>
<PURCH_NO_C xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">Cust PO</PURCH_NO_C>
<CURRENCY xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">EUR</CURRENCY>
</ORDER_HEADER_IN>
<ORDER_ITEMS_IN>
<BAPISDITM xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<MATERIAL>P-109</MATERIAL>
<PLANT>1000</PLANT>
<TARGET_QU>ST</TARGET_QU>
</BAPISDITM>
</ORDER_ITEMS_IN>
<ORDER_PARTNERS>
<BAPIPARNR xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<PARTN_ROLE>AG</PARTN_ROLE>
<PARTN_NUMB>0000001390</PARTN_NUMB>
</BAPIPARNR>
</ORDER_PARTNERS>
<RETURN/>
<TransactionalRfcOperationIdentifier>def689b1-b514-4627-a861-d6d7f51c84e3</TransactionalRfcOperationIdentifier>
</BAPI_SALESORDER_CREATEFROMDAT2>
L'orchestrazione usa il messaggio, lo passa al sistema SAP e riceve una risposta dal sistema SAP. Il messaggio di risposta viene salvato nell'altro percorso del file specificato come parte dell'orchestrazione. La risposta del sistema SAP contiene un GUID. L'orchestrazione genera quindi un altro messaggio di richiesta dalla risposta e lo passa al sistema SAP per eseguire RfcConfirmTransID. Dopo che la risposta viene ricevuta dal sistema SAP per l'operazione RfcConfirmTransID, viene copiata nel percorso del file. Per riepilogare, dopo l'esecuzione dell'operazione:
Un messaggio di risposta da SAP per richiamare tRFC viene copiato nel percorso del file. Contiene lo stesso GUID inviato al sistema SAP. Il messaggio di risposta che richiama BAPI_SALESORDER_CREATEFROMDAT2 come tRFC è:
<?xml version="1.0" encoding="utf-8"?> <BAPI_SALESORDER_CREATEFROMDAT2Response xmlns="http://Microsoft.LobServices.Sap/2007/03/Trfc/"> <TransactionalRfcOperationIdentifier>def689b1-b514-4627-a861-d6d7f51c84e3</TransactionalRfcOperationIdentifier> </BAPI_SALESORDER_CREATEFROMDAT2Response>
Un messaggio di risposta per RfcConfirmTransID viene copiato nella stessa posizione. Si tratta di una risposta vuota. Il messaggio di risposta per RfcConfirmTransID è:
<?xml version="1.0" encoding="utf-8"?> <RfcConfirmTransIDResponse xmlns="http://Microsoft.LobServices.Sap/2007/03/RfcApi/"></RfcConfirmTransIDResponse>
Nota
È possibile usare il metodo pubblico ConvertGuidToTid() esposto dall'assembly dell'adapter SAP per recuperare il TID nel sistema SAP mappato al GUID. Per altre informazioni, vedere Operazioni speciali.
Possibili eccezioni
Per informazioni sulle eccezioni che potrebbero verificarsi durante la chiamata di un TRFC in un sistema SAP tramite 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 trasmissione, le porte di ricezione e così via per la stessa orchestrazione. Per altre informazioni sui file di associazione, vedere Riutilizzare le associazioni degli adattatori SAP.