Condividi tramite


Ricevere IDOCs da SAP usando BizTalk Server

La ricezione di un IDOC prevede che l'adattatore SAP funzioni come server RFC per ricevere una chiamata RFC speciale da SAP. L'adapter SAP può ricevere IDOC che funge da server RFC o da un server tRFC. Per altre informazioni sulla ricezione di un IDOC con l'adattatore come server tRFC, vedere Ricevere IDOCS da SAP in un contesto transazionale usando BizTalk Server.

L'adattatore SAP presenta due operazioni diverse per ricevere IDOCs:

  • L'operazione di ricezione consente alla scheda di ricevere IDOCs con uno schema fortemente tipizzato.

  • L'operazione ReceiveIdoc consente alla scheda di ricevere IDOCs con uno schema con tipi deboli. Questa operazione riceve IDOCs come stringa in un messaggio XML nel <tag idocData> .

    Sul lato adattatore è possibile specificare un valore per la proprietà di associazione ReceiveIDocFormat per specificare il formato di IDOC ricevuto dall'adattatore.

  • Typed specifica che l'adapter riceverà IDOCs con schema fortemente tipizzato. In questo modo viene restituito un IDOC XML.

  • Stringa specifica che l'adapter riceverà IDOCs con schema con tipi deboli. In questo modo viene restituito un messaggio XML con il <tag idocData> .

  • Rfc specifica che l'adapter riceverà IDOCs in qualsiasi formato.

    Per la ricezione di IDOCs, l'adapter SAP supporta anche un set di proprietà del contesto di messaggio che i client dell'adattatore possono usare nelle orchestrazioni. Per l'elenco delle proprietà, vedere Proprietà del contesto del messaggio per la ricezione di IDOCs.

    Per altre informazioni sul modo in cui la scheda SAP supporta la ricezione di IDOC da un sistema SAP, vedere Operazioni su IDOCs in SAP. Per altre informazioni sulla struttura dei messaggi SOAP per la ricezione di un IDOC, vedere Schemi di messaggi per operazioni IDOC.

Scenari BizTalk per la ricezione di IDOC da un sistema SAP

La tabella seguente fornisce scenari BizTalk chiave per la ricezione di IDOC da un sistema SAP:

Input da adapter da SAP Elaborazione BizTalk Output
IDOC (tramite l'interfaccia tRFC) Tempo di progettazione dei metadati

1. Impostare la proprietà di associazione GenerateFlatFileCompatibleIdocSchema su True.
2. Generare lo schema per l'operazione di ricezione per un IDOC specifico usando il componente aggiuntivo Del servizio adapter.
3. Impostare la proprietà di associazione ReceiveIdocFormat su Typed.

Tempo di progettazione orchestrazione

1. Ricevere L'IDOC XML.
2. Usare l'assembler file flat per convertire XML IDOC in file flat.
Flat-file IDOC
IDOC (tramite l'interfaccia tRFC) Tempo di progettazione dei metadati

1. Impostare la proprietà di associazione GenerateFlatFileCompatibleIdocSchema su True.
2. Generare lo schema per l'operazione di ricezione per un IDOC specifico usando il componente aggiuntivo Del servizio adapter.
3. Impostare la proprietà di associazione ReceiveIdocFormat su Typed.

Progettazione orchestrazione

- Ricevere l'IDOC XML.
XML IDOC
IDOC (tramite l'interfaccia tRFC) Tempo di progettazione dei metadati

1. Impostare la proprietà di associazione GenerateFlatFileCompatibleIdocSchema su True.
2. Generare lo schema per l'operazione di ricezione per un IDOC specifico usando il componente aggiuntivo Del servizio adapter.
3. Impostare la proprietà di associazione ReceiveIdocFormat su String.

Tempo di progettazione orchestrazione

1. Ricevere un messaggio XML con IDOC flat nel <tag idocData> .
2. Usare il supporto XPath dell'adapter WCF nella configurazione della porta di ricezione per estrarre il file flat IDoc dal messaggio XML. Ad esempio:
/*[local-name()='ReceiveIdoc']/*[local-name()='idocData']
3. Usare il disassembler file flat per convertire IDOC flat in IDOC XML.

Importante Questo approccio può essere usato per ricevere IDOC usando la nuova scheda SAP basata su WCF e applicarle direttamente in un progetto BizTalk esistente scritto per ricevere IDOC dall'adapter SAP BizTalk esistente. Si tratta anche dell'approccio consigliato per ricevere IDOC con numero di versione minore del numero di versione (SYSREL).
XML IDOC
IDOC (tramite l'interfaccia tRFC) Tempo di progettazione dei metadati

1. Generare lo schema per l'operazione ReceiveIdoc dal nodo IDOC usando il componente aggiuntivo Del servizio adapter.
2. Impostare la proprietà di associazione ReceiveIdocFormat su String.

Tempo di progettazione orchestrazione

- Ricevere un messaggio XML con IDOC rappresentato come stringa nel <tag idocData> .
File flat IDOC nel messaggio XML

Come ricevere un IDOC da un sistema SAP?

L'esecuzione di un'operazione in un sistema SAP usando BizTalk Server comporta attività procedurali descritte in Blocchi predefiniti per creare applicazioni SAP. Per ricevere un IDOC da un sistema SAP, queste attività sono:

  1. Creare un progetto BizTalk e generare lo schema per IDOC che si vuole richiamare nel sistema SAP. Durante la generazione dello schema, assicurarsi di impostare le proprietà di associazione necessarie, come indicato nella tabella precedente. Per istruzioni su come impostare le proprietà di associazione, vedere Configurare le proprietà di associazione per la scheda SAP.

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

  3. Creare un'orchestrazione per ricevere un IDOC da un sistema 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à.

Esempi basati su questo argomento

Gli esempi, ReceiveIDOC e ReceiveIDOC_SYSREL, in base a questo argomento vengono forniti anche con bizTalk Adapter Pack. Per altre informazioni, vedere Esempi per la scheda SAP.

Generazione dello schema

È necessario generare lo schema per l'operazione di ricezionedell'ORDERS03. V3.620IDOC nel nodo /IDOC/ORDERS/ORDERS03 . Vedere Sfoglia, cercare e ottenere metadati per operazioni IDOC in SAP per istruzioni su come generare lo schema per un particolare IDOC. Durante la generazione dello schema, è possibile impostare anche le proprietà seguenti:

  • GenerateFlatFileCompatibleIDoc -Genera <tag appinfo> in modo che il parser di file flat-file BizTalk possa essere usato negli scenari BizTalk per supportare IDOC flat-file.

  • FlatFileSegmentIndicator: indica se i tag appinfo> dello schema <IDOC devono contenere nomi di definizione segmento o nomi dei tipi di segmento. Ciò è applicabile quando un oggetto usato desidera inviare/ricevere un IDOC flat-file da/a SAP. Se la proprietà di associazione GenerateFlatFileCompatibleIDoc è impostata su false, la proprietà di associazione FlatFileSegmentIndicator viene ignorata.

Importante

Poiché si genera lo schema per una chiamata IDOC in ingresso, assicurarsi di selezionare Servizio (operazione in ingresso) nell'elenco a discesa Seleziona tipo di contratto nel componente aggiuntivo Del progetto BizTalk del servizio adapter.

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 visualizzazione Orchestrazione del progetto BizTalk.

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

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, quindi scegliere Nuovo messaggio.

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

  5. Nel riquadro Proprietà per Message_1 eseguire le operazioni seguenti:

    Usare Per
    Identificatore Digitare Richiesta.
    Tipo di messaggio Nell'elenco a discesa espandere Schemi e selezionare ReceiveIDOC.SAPBindingSchema2, dove ReceiveIDOC è il nome del progetto BizTalk. SAPBindingSchema2 è lo schema generato per l'operazione di ricezione.
  6. Ripetere il passaggio 2 per creare un nuovo messaggio. Nel riquadro Proprietà per il nuovo messaggio eseguire le operazioni seguenti:

    Usare Per
    Identificatore Risposta al tipo.
    Tipo di messaggio Nell'elenco a discesa espandere Schemi e selezionare ReceiveIDOC.SAPBindingSchema3.

Configurazione dell'orchestrazione

È necessario creare un'orchestrazione BizTalk per usare BizTalk Server per la ricezione di IDOC dal sistema SAP. In uno scenario tipico, l'adapter SAP riceve una chiamata IDOC dal sistema SAP, elabora la richiesta e passa la risposta al sistema SAP. Per ottenere questo risultato come parte di un'orchestrazione, l'orchestrazione deve contenere:

  • Una porta di ricezione bidirezionale per ricevere IDOC dal sistema SAP e inviare la risposta.

  • Inviare e ricevere forme.

  • Costruire la forma Messaggio e all'interno della forma Assegnazione messaggi per generare una risposta da inviare al sistema SAP.

    Nota

    Se l'orchestrazione include una porta di ricezione bidirezionale (richiesta-risposta) per ricevere IDOCs dal sistema SAP, l'orchestrazione deve inviare una risposta al sistema SAP. In caso contrario, il sistema SAP non invia il successivo IDOC. Tuttavia, se una porta di ricezione unidirezionale, l'orchestrazione non deve inviare una risposta al sistema SAP.

  • Porta di invio unidirezionale per inviare i IDOC ricevuti dal sistema SAP a una cartella.

    Un'orchestrazione di esempio per la ricezione di un IDOC da un sistema SAP ha un aspetto simile al seguente:

    Orchestrazione per ricevere IDOCs

Aggiunta di forme di messaggio

Assicurarsi di specificare le proprietà seguenti per ognuna delle forme del messaggio. I nomi elencati nella colonna Shape sono i nomi delle forme del messaggio visualizzate nell'orchestrazione precedente.

Forma Tipo di forma Proprietà
ListenToSAP Ricevere - Impostare il nome su ListenToSAP

- Impostare Attiva su True
SaveIDOC Send - Impostare nome su SaveIDOC
SendResponse Send - Impostare nome su SendResponse

Aggiunta della forma del messaggio di costrutto

All'interno dell'orchestrazione è necessario generare una risposta e inviarla al sistema SAP. A tale scopo, è necessario aggiungere una forma Costrutto messaggio e all'interno di tale forma di assegnazione di messaggi all'orchestrazione. La forma Assegnazione messaggi richiama il codice che genera un messaggio di risposta inviato al sistema SAP. La forma Assegnazione messaggi imposta anche l'azione per l'invio della risposta al sistema SAP.

Importante

Se l'orchestrazione include una porta di ricezione bidirezionale (richiesta-risposta) per ricevere IDOCs dal sistema SAP, l'orchestrazione deve inviare una risposta al sistema SAP. In caso contrario, il sistema SAP non invia il successivo IDOC. Tuttavia, se una porta di ricezione unidirezionale, l'orchestrazione non deve inviare una risposta al sistema SAP.

Per la forma del messaggio di costruzione, impostare la proprietà Message Constructed su Response.

Il codice per generare la risposta potrebbe far parte della stessa soluzione di Visual Studio del progetto BizTalk. Un codice di esempio per la generazione di un messaggio di risposta è simile al seguente.

namespace IdocReceiveResponseMessageCreator  
{  
    public class IdocReceiveResponseMessageCreator  
    {  
        private static XmlDocument Message;  
        private static string XmlFileLocation;  
        private static string ResponseDoc;  

        public static XmlDocument XMLMessageCreator()  
        {  
            XmlFileLocation = "C:\\test\\in";  
            try  
            {  
                ResponseDoc = (Directory.GetFiles(XmlFileLocation, "*.xml", SearchOption.TopDirectoryOnly))[0];  
            }  
            catch (Exception ex)  
            {  
                Console.WriteLine("Trying to get XML from: " + XmlFileLocation);  
                Console.WriteLine("EXCEPTION: " + ex.ToString());  
                throw ex;  
            }  
            //Create Message From XML  
            Message = new XmlDocument();  
            Message.PreserveWhitespace = true;  
            Message.Load(ResponseDoc);  
            return Message;  
        }   
    }  
}  

Nota

Dopo aver compilato il progetto, IdocReceiveResponseMessageCreator.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 per 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 di espressioni.

Response = IdocReceiveResponseMessageCreator.IdocReceiveResponseMessageCreator.XMLMessageCreator();  
Response(WCF.Action)= "http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS03//620/Receive/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 richiesta. Quindi, l'azione per il messaggio di risposta diventa http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS03//620/ReceiveResponse. Tuttavia, sapBinding prevede l'azione di risposta aggiungendo "/response" all'azione della richiesta, ad esempio http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS03//620/Receive/response.

Aggiunta di porte

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

Porta Proprietà
ReceiveIDOCPort - Impostare identificatore su ReceiveIDOCPort

- Impostare tipo su ReceiveIDOCPortType

- Impostare il modello di comunicazione su Request-Response

- Impostare la direzione di comunicazione su Receive-Send
GetIDOCPort - Impostare identificatore su GetIDOCPort

- Impostare tipo su GetIDOCPortType

- Impostare il modello di comunicazionesu unidirezionale

- Impostare la direzione di comunicazione su Invia

Importante

Se l'orchestrazione include una porta di ricezione bidirezionale (richiesta-risposta) per ricevere IDOCs dal sistema SAP, l'orchestrazione deve inviare una risposta al sistema SAP. In caso contrario, il sistema SAP non invia il successivo IDOC.

Aggiunta di un assembler file flat

È necessario aggiungere un assembler per convertire il messaggio IDOC in ingresso in un file flat.

Per aggiungere un assembler file flat
  1. Fare clic con il pulsante destro del mouse sul progetto BizTalk, scegliere Aggiungi e selezionare Nuovo elemento.

  2. Nella finestra di dialogo eseguire le operazioni seguenti:

    Usare Per
    Categorie File della pipeline
    Modelli Visual Studio installati Pipeline di trasmissione
    Nome SendIDOC
  3. Verrà aperta la Designer pipeline. Dalla casella degli strumenti Componenti della pipeline BizTalk trascinare il componente della pipeline dell'assembler file flat nella fase Assembly della pipeline di invio.

  4. Dalla visualizzazione Proprietà componente pipeline specificare un valore per la proprietà Schema documento . Nell'elenco a discesa assicurarsi di selezionare lo schema corrispondente all'operazione di ricezione IDOC.

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à
ListenToSAP - Impostare messaggio su richiesta

- Impostare l'operazione su ReceiveIDOCPort.ReceiveIDOC.Request
SaveIDOC - Impostare messaggio su richiesta

- Impostare l'operazione su GetIDOCPort.ReceiveIDOC.Request
SendResponse - Impostare messaggio su risposta

- Impostare l'operazione su ReceiveIDOCPort.ReceiveIDOC.Response

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 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 posizioni di invio e porta di trasmissione fisica. Questa posizione conterrà i IDOC provenienti dal sistema SAP.

      Importante

      Per la pipeline XMLTransmit, assicurarsi di selezionare SendIDOC. Questa pipeline è stata creata come parte del progetto BizTalk.

    • Definire una porta di ricezione WCF-Custom o WCF-SAP. Questa porta riceverà un IDOC in ingresso dal sistema SAP e lo passerà all'orchestrazione. Questa porta invia anche la risposta al sistema SAP. Per informazioni su come creare porte, vedere Configurare manualmente un'associazione di porte fisiche alla scheda SAP.

      Importante

      Assicurarsi che la proprietà di associazione ReceiveIDocFormat sia impostata su Typed.

      Importante

      Se la proprietà di associazione EnableBizTalkCompatibilityMode è impostata su true, assicurarsi di aggiungere la DLL dello schema delle proprietà BizTalk per l'adapter SAP come risorsa nell'applicazione BizTalk, ovvero l'applicazione in cui viene distribuito il progetto. Per istruzioni sull'aggiunta di risorse, vedere Risolvere i problemi operativi con l'adapter 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 BizTalk 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.

    È anche necessario aggiungere l'assembly per il progetto IdocReceiveResponseMessageCreator all'applicazione BizTalk. È stato creato questo progetto per generare la risposta da inviare al sistema SAP. A tale scopo, procedere nel seguente modo:

  1. Nell'albero della console a sinistra della console della console di amministrazione 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 passare alla cartella contenente IdocReceiveResponseMessageCreator.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 un IDOC dal 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 invio FILE per salvare l'IDOC in ingresso in un percorso di file è in esecuzione

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

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

Esecuzione dell'operazione

Dopo aver eseguito l'applicazione, è necessario passare al sistema SAP e inviare un IDOC all'adattatore. L'adattatore riceve l'IDOC e lo salva in un percorso di file specificato come parte dell'orchestrazione.

Possibili eccezioni

Per informazioni sulle eccezioni che potrebbero verificarsi durante la ricezione di un IDOC da 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, le porte di ricezione e così via per la stessa orchestrazione. Per altre informazioni sui file di associazione, vedere Riutilizzare le associazioni di adattatori SAP.

Vedere anche

Sviluppare applicazioni BizTalk