Condividi tramite


Ricevere chiamate RFC in ingresso da SAP tramite BizTalk Server

In uno scenario di server RFC sono disponibili tre entità:

  • Un client SAP che invia una richiesta a SAP per richiamare un RFC. Questa operazione può essere richiamata usando l'interfaccia utente grafica SAP o effettuando una chiamata client RFC tramite l'adapter SAP.

  • Sistema SAP che contiene una definizione di funzione RFC richiamata dal client SAP. Il sistema SAP passa la richiesta al server RFC (adapter). Viene usato dall'adattatore per ottenere i metadati della chiamata RFC eseguita dal server SAP nella scheda.

  • Adattatore SAP che funge da server RFC e ospita l'RFC effettivo.

    La prima entità, il client SAP, non è descritta in questo argomento. Se si usa l'interfaccia utente grafica SAP per richiamare un RFC, vedere la documentazione sap. Se si usa l'adattatore SAP per richiamare un RFC, vedere Richiamare le RFC in SAP tramite BizTalk Server.

    In questa sezione vengono fornite istruzioni su come usare l'adattatore per ricevere una chiamata al server RFC, una volta richiamato da un client SAP. Per altre informazioni sul modo in cui l'adattatore supporta la ricezione di chiamate al server RFC tramite l'adattatore SAP, vedere Operazioni sulle RFC in SAP.

Come ricevere una chiamata RFC in ingresso dal sistema SAP?

L'esecuzione di un'operazione in un sistema SAP tramite BizTalk Server comporta attività procedurali descritte in Blocchi predefiniti per creare applicazioni SAP. Per ricevere una chiamata RFC dal sistema SAP, queste attività sono:

  1. Configurare il sistema SAP per inviare RFC a un'applicazione esterna, in questo caso l'adapter SAP.

  2. Creare un progetto BizTalk e generare lo schema per la RFC che l'adapter SAP riceverà dal sistema SAP.

  3. Creare messaggi nel progetto BizTalk per ricevere messaggi dal sistema SAP e inviare risposte.

  4. Creare un'orchestrazione per ricevere un RFC dal sistema SAP, elaborarlo e inviare la risposta al sistema SAP.

  5. Compilare e distribuire il progetto BizTalk.

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

  7. Avviare l'applicazione BizTalk.

    In questo argomento vengono fornite istruzioni per eseguire queste attività.

Attività nel sistema SAP

Prima di usare l'adattatore SAP per ricevere chiamate RFC in ingresso dal sistema SAP, assicurarsi di completare le attività seguenti nel sistema SAP.

  • Deve esistere una destinazione RFC per l'adapter SAP. L'adattatore SAP riceve le RFC dal sistema SAP tramite una destinazione RFC definita nel sistema SAP. La destinazione RFC contiene l'host gateway SAP, il servizio GATEWAY SAP e l'ID programma SAP che è necessario specificare nell'URI di connessione nel codice. Per informazioni su come configurare una destinazione RFC in SAP, vedere Creare una destinazione RFC, RFC e inviare un RFC dal sistema SAP.

  • È necessario creare un modulo di funzione che definisce la RFC nel sistema SAP. L'adattatore SAP usa la definizione RFC nel sistema SAP per recuperare i metadati relativi alla RFC (sia in fase di progettazione che in fase di esecuzione). Per altre informazioni, vedere Creazione di un RFC in un sistema SAP.

    Di seguito è riportato un esempio del codice sorgente nel sistema SAP per un RFC che aggiunge due numeri interi e ne restituisce il risultato. Il codice chiama semplicemente il RFC tramite una destinazione specificata. L'implementazione della funzione viene eseguita dal codice client dell'adapter SAP.

    FUNCTION Z_RFC_ADD.  
    *"------------------------------------------------------------------  
    *"  
    *"Local interface:  
    *"  IMPORTING  
    *"     VALUE(X) TYPE  INT4  
    *"     VALUE(Y) TYPE  INT4  
    *"     VALUE(DEST) TYPE  CHAR20 DEFAULT 'SAPADAPTER'  
    *"  EXPORTING  
    *"     VALUE(RESULT) TYPE  INT4  
    *"------------------------------------------------------------------  
    CALL FUNCTION 'Z_RFC_ADD' DESTINATION DEST  
      EXPORTING X = X  
                Y = Y  
      IMPORTING RESULT = RESULT.  
    
    ENDFUNCTION.  
    

Esempio basato su questo argomento

Un esempio RFCServer, basato su questo argomento, viene fornito anche con BizTalk Adapter Pack. Per altre informazioni, vedere Esempi per l'adapter SAP.

Generazione dello schema

In questo argomento viene illustrato come ricevere una chiamata RFC in ingresso dal sistema SAP, viene generato lo schema per Z_RFC_ADD RFC. Questo RFC è stato creato nel passaggio precedente. Questo RFC accetta due valori interi come parametri di input.

Per istruzioni su come generare lo schema per un determinato RFC, vedere Esplorare, cercare e ottenere metadati per le operazioni RFC in SAP .

Importante

Poiché si sta generando lo schema per una chiamata RFC in ingresso, assicurarsi di selezionare Servizio (operazione in ingresso) nell'elenco a discesa Seleziona tipo di contratto nel componente aggiuntivo Consume Adapter Service BizTalk Project .Because you are generate the schema for an inbound RFC call, sure you select Service Inbound operation) from the Select contract type drop-down list in the Consume Adapter Service BizTalk Project Add-in.

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 nel primo passaggio ai messaggi dalla visualizzazione Orchestrazione del progetto BizTalk.

Per questo argomento, è necessario creare due messaggi, uno per ricevere messaggi dal sistema SAP e l'altro per inviare una risposta al sistema SAP.

Seguire questa procedura per creare messaggi e collegarli allo schema:

  1. Aggiungere una nuova orchestrazione al progetto BizTalk.

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

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

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

  5. 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 RFCServer.SAPBindingSchema.Z_RFC_ADD, dove RFCServer è il nome del progetto BizTalk. SAPBindingSchema è lo schema generato per il Z_RFC_ADD RFC.
  6. Ripetere il passaggio 2 per creare un nuovo messaggio. Nel riquadro Proprietà del nuovo messaggio eseguire le operazioni seguenti.

    Usare Per
    Identificatore Tipo Risposta.
    Tipo di messaggio Nell'elenco a discesa espandere Schemi e selezionare RFCServer.SAPBindingSchema.Z_RFC_ADDResponse.

Configurazione dell'orchestrazione

È necessario creare un'orchestrazione BizTalk per usare BizTalk Server per ricevere chiamate al server RFC dal sistema SAP. Per questo esempio, si consideri uno scenario in cui un client RFC invia una richiesta al sistema SAP per aggiungere due numeri interi. Il sistema SAP accetta la richiesta, con i parametri di input e la passa al server RFC esterno ospitato dalla scheda SAP. L'adapter SAP riceve la richiesta dal sistema SAP, elabora la richiesta di aggiungere due numeri interi e genera una risposta. L'adattatore SAP passa la risposta al sistema SAP, che a sua volta viene passata al client RFC.

Per ottenere questo risultato come parte di un'orchestrazione, l'orchestrazione deve contenere:

  • Porta di ricezione bidirezionale per ricevere la richiesta del server RFC dal sistema SAP e inviare la risposta.

  • Forme Send e Receive.

  • Costruire la forma Messaggio e all'interno di tale forma Assegnazione messaggio per elaborare la richiesta del server RFC proveniente dal sistema SAP.

    Un'orchestrazione di esempio per una chiamata al server RFC è simile alla seguente.

    Orchestrazione per effettuare una chiamata al server RFC

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à
ListenToSAP Ricevere - Impostare il nome su ListenToSAP
- Impostare Attiva su True
SendResponse Send - Impostare il nome su SendResponse

Aggiunta della forma messaggio costrutto

Per elaborare la chiamata RFC in ingresso per aggiungere due valori interi, è necessario aggiungere una forma Costrutto messaggio e all'interno di tale forma Assegnazione messaggio all'orchestrazione, tra le due forme di invio. Per questo esempio, la forma Assegnazione messaggi richiama per aggiungere due numeri interi. La forma Assegnazione messaggi imposta anche l'azione per la risposta da inviare al sistema SAP.

Per la forma Costrutto messaggio impostare la proprietà Message Construct su Response.

Il codice per elaborare la richiesta RFC potrebbe far parte della stessa soluzione di Visual Studio del progetto BizTalk. Un codice di esempio per l'aggiunta di due numeri interi è simile al seguente.

namespace RFCServerResponseCreator  
{  
    public class RFCServerResponseCreator  
    {  
        private static XmlDocument messageIn;  
        private static XmlDocument messageOut;  
        public static XmlDocument CreateRequest(int a, int b, string destination)  
        {  
            messageIn = new XmlDocument();  
            messageIn.LoadXml(  "<Z_RFC_ADD xmlns=\"http://Microsoft.LobServices.Sap/2007/03/Rfc/\">" +  
                                "<DEST>" + destination + "</DEST>" +  
                                "<X>" + a + "</X>" +  
                                "<Y>" + b + "</Y>" +   
                                "</Z_RFC_ADD>"  
                             );  
            return messageIn;  
        }  
        public static XmlDocument CreateResponse(int a, int b)  
        {  
            int c = a + b;  
            messageOut = new XmlDocument();  
            messageOut.LoadXml( "<Z_RFC_ADDResponse xmlns=\"http://Microsoft.LobServices.Sap/2007/03/Rfc/\">" +  
                                "<RESULT>" + c + "</RESULT>" +   
                                "</Z_RFC_ADDResponse>"  
                              );  
            return messageOut;  
        }  
    }  
}  

Nota

Dopo aver compilato il progetto, RFCServerResponseCreator.dll verrà creato nella directory del progetto. È necessario aggiungere questa DLL alla Global Assembly Cache (GAC).

Aggiungere l'espressione seguente per richiamare questo codice dalla forma Assegnazione messaggi e impostare l'azione per la risposta inviata al sistema SAP. Per aggiungere un'espressione, fare doppio clic sulla forma Assegnazione messaggi per aprire l'Editor espressioni.

Response = RFCServerResponseCreator.RFCServerResponseCreator.CreateResponse(Request.X, Request.Y);  
Response(WCF.Action) = "http://Microsoft.LobServices.Sap/2007/03/Rfc/Z_RFC_ADD/response";  

Importante

È necessario impostare in modo esplicito l'azione sul messaggio di risposta. Se non si imposta l'azione, WCF-Custom adapter arriva al messaggio di azione aggiungendo "Risposta" all'azione di richiesta. L'azione per il messaggio di risposta diventa http://Microsoft.LobServices.Sap/2007/03/Rfc/Z_RFC_ADDResponsequindi . Tuttavia, sapBinding prevede l'azione di risposta aggiungendo "/response" all'azione di richiesta, ad esempio http://Microsoft.LobServices.Sap/2007/03/Rfc/Z_RFC_ADD/response.

Aggiunta di porte

Assicurarsi di specificare le proprietà seguenti per la porta logica. Il nome elencato nella colonna Porta è il nome della porta visualizzata nell'orchestrazione.

Porta Proprietà
RFCServerPort - Impostare l'identificatore su RFCServerPort
- Impostare il tipo su RFCServerPortType
- Impostare il modello di comunicazione su Request-Response
- Impostare la direzione di comunicazione su Receive-Send

Specificare i messaggi per le forme azione e connettersi alle porte

La tabella seguente specifica le proprietà e i relativi valori da impostare per specificare i messaggi per le forme azione e collegarli alle porte. I nomi elencati nella colonna Shape sono i nomi delle forme messaggio visualizzate nell'orchestrazione precedente.

Forma Proprietà
ListenToSAP - Impostare il messaggio su Richiesta
- Impostare l'operazione su RFCServerPort.Add.Request
SendResponse - Imposta messaggio su FuncResponse
- Impostare l'operazione su RFCServerPort.Add.Response

Dopo aver specificato queste proprietà, le forme e le porte del messaggio sono connesse e l'orchestrazione è completata.

È ora necessario compilare la soluzione BizTalk e quindi distribuirla in un BizTalk Server. Per altre informazioni, vedere Compilazione ed 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. Per configurare l'applicazione, è necessario usare la console di amministrazione di BizTalk Server. Per altre informazioni sulla configurazione di un'applicazione, vedere Come configurare un'applicazione.

La configurazione di un'applicazione prevede:

  • 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 una porta di ricezione WCF-Custom o WCF-SAP. Questa porta riceverà chiamate RFC in ingresso dal sistema SAP e invierà di nuovo la risposta al sistema SAP. Per informazioni su come creare porte, vedere Configurare manualmente un'associazione di porte fisiche all'adattatore SAP.

      Nota

      La generazione dello schema tramite il componente aggiuntivo Del progetto BizTalk del servizio adapter di utilizzo crea anche un file di associazione contenente informazioni sulle porte e le azioni da impostare per tali porte. È possibile importare questo file di associazione dalla Console di amministrazione BizTalk per creare porte di trasmissione (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.

    È anche necessario aggiungere l'assembly per il progetto RFCServerResponseCreator all'applicazione BizTalk. Questo progetto è stato creato per elaborare la chiamata RFC ricevuta dal sistema SAP. A tale scopo, procedere nel seguente modo:

  1. Nell'albero della console a sinistra della console di amministrazione di BizTalk Server, nell'applicazione BizTalk in cui sono stati importati i binding, fare clic con il pulsante destro del mouse su Risorse, scegliere Aggiungi e quindi fare clic su Assembly BizTalk.

  2. Nella finestra di dialogo Aggiungi risorse fare clic su Aggiungi e quindi passare alla cartella contenente RFCServerResponseCreator.dll. Seleziona il file e fai clic su Apri.

  3. Nella finestra di dialogo Aggiungi risorse fare clic su OK.

Avvio dell'applicazione

È necessario avviare l'applicazione BizTalk per ricevere chiamate RFC in ingresso da un sistema SAP. Per istruzioni sull'avvio di un'applicazione BizTalk, vedere Come avviare un'orchestrazione e Come avviare un'applicazione.

In questa fase, assicurarsi di:

  • La porta di ricezione WCF-Custom o WCF-SAP per ricevere chiamate RFC dal sistema SAP è in esecuzione.

  • L'orchestrazione BizTalk per l'operazione è in esecuzione.

Esecuzione dell'operazione

Dopo aver eseguito l'applicazione, è necessario inviare un RFC all'adapter SAP. A tale scopo, eseguire la transazione SE37 nel sistema SAP. È inoltre necessario specificare i parametri di input per la chiamata RFC. L'adattatore riceve la chiamata insieme ai parametri, la elabora e invia nuovamente la risposta al sistema SAP. Sarà possibile visualizzare la risposta nella stessa transazione da cui è stata inviata la RFC.

Possibili eccezioni

Per informazioni sulle eccezioni che potrebbero verificarsi durante la ricezione di una chiamata al server RFC da 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