Condividi tramite


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:

  1. 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.

  2. Creare messaggi nel progetto BizTalk per l'invio e la ricezione di messaggi dal sistema SAP.

  3. 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.

  4. Compilare e distribuire il progetto BizTalk.

  5. Configurare l'applicazione BizTalk creando porte di invio e ricezione fisiche.

  6. 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:

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.

  1. Aprire la visualizzazione orchestrazione del progetto BizTalk, se non è già aperto. Fare clic su Visualizza, scegliere Altre finestre e fare clic su Visualizzazione orchestrazione.

  2. Nella visualizzazione orchestrazione fare clic con il pulsante destro del mouse su Messaggi e quindi scegliere Nuovo messaggio.

  3. Fare clic con il pulsante destro del mouse sul messaggio appena creato e scegliere Finestra Proprietà.

  4. 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.
  5. 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:

    Orchestrazione per effettuare una chiamata client tRFC

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.

Vedere anche

Sviluppare applicazioni BizTalk