Condividi tramite


Schemi di messaggio per operazioni IDOC

I documenti intermedi (IDOCS) sono documenti edI standardizzati supportati da SAP per comunicare in modo asincrono con sistemi SAP e non SAP. IDOCS viene usato per inviare e ricevere documenti aziendali come ordini di vendita da o verso il sistema SAP o il programma esterno di un partner commerciale.

Anche se il sistema SAP supporta diversi tipi di porta per inviare e ricevere IDOCS (ad esempio, una porta di file o una porta CPIC), l'adapter Microsoft BizTalk per mySAP Business Suite supporta l'invio e la ricezione di IDOCS tramite una porta tRFC.

  • Per un IDOC in uscita, l'adattatore SAP funge da client tRFC e richiama un RFC per inviare l'IDOC a SAP.

  • Per un IDOC in ingresso, l'adattatore SAP funge da server tRFC e accetta una chiamata client tRFC da SAP per ricevere l'IDOC.

    L'adattatore SAP presenta quattro operazioni nel nodo IDOC che è possibile usare per inviare e ricevere IDOCS con un sistema SAP.

  • SendIdoc. Invia un IDOC all'adattatore come dati stringa. Questa operazione viene eseguita direttamente sotto il nodo radice IDOC. La stessa operazione viene usata per tutti i IDOC.

  • Invia. Invia un IDOC all'adattatore come dati fortemente tipizzato. Questa operazione viene rilevata in un nodo specifico di ogni IDOC.

  • ReceiveIdoc. Riceve un IDOC dall'adattatore come dati stringa. Questa operazione viene eseguita direttamente sotto il nodo radice IDOC. La stessa operazione viene usata per tutti i IDOC.

  • Ricevere. Riceve un IDOC dall'adattatore come dati fortemente tipizzato. Questa operazione viene rilevata in un nodo specifico di ogni IDOC.

Nota

Queste quattro operazioni offrono diversi modi per lo scambio di IDOC tra il programma e l'adattatore SAP. L'adattatore usa sempre un RFC (come illustrato nella sezione successiva) per inviare o ricevere IDOC con il sistema SAP.

Oltre a usare una delle quattro operazioni IDOC, è anche possibile inviare o ricevere un IDOC usando uno dei RFC usati internamente dall'adattatore SAP per scambiare i IDOC con il sistema SAP. Per una panoramica del modo in cui l'adattatore SAP supporta i IDOC, vedere Operazioni sui IDOC in SAP.

Questo argomento contiene informazioni sugli schemi dei messaggi e sulle azioni dei messaggi usate per le operazioni IDOC.

RFC usati dall'adapter SAP per l'invio e la ricezione di IDOC

L'adattatore SAP usa internamente le chiamate di funzione remote seguenti per scambiare IDOCS con il sistema SAP. Sul lato in uscita (adapter per il sistema SAP), l'adattatore funge da client tRFC per richiamare la RFC. Sul lato in ingresso (da SAP a adapter), SAP richiama l'RFC nella scheda, che funge da server tRFC.

RFC Descrizione
IDOC_INBOUND_ASYNCHRONOUS Questo modulo di funzione viene usato dalla versione 4.0 e successive. Elabora IDOCS nei tipi di record validi per le versioni 4.x. Ciò garantisce che i nomi dei segmenti IDOC più lunghi siano supportati.

I parametri per questo RFC includono:

- idoc_control_rec_40 (la struttura SAP è EDI_DC40)

- idoc_data_rec_40 (la struttura SAP è EDI_DD40)

Il record di controllo IDOC è costituito dai campi seguenti:

- Mestyp. Tipo di messaggio logico. Trasmette il significato aziendale del messaggio. Questo campo è obbligatorio.

- Idoctyp. Struttura di base dell'IDOC. Questo campo identifica il set di layout che usa questo messaggio. Questo campo è obbligatorio.

- Cimtyp. Struttura dell'estensione del cliente. Se viene estesa una struttura di base SAP, il cliente deve assegnare un nome alla struttura dell'estensione. Si tratta di un campo obbligatorio se un cliente ha apportato un miglioramento; in caso contrario, iniziali.

- Campi partner. Si tratta di parametri del partner lato invio e ricezione, ad esempio il tipo di partner, il numero di partner, la funzione partner.

Il record di dati IDOC è costituito dai campi seguenti:

- Campi di intestazione. Campi di intestazione di segmento, ad esempio nome tabella, numero di segmento, tipo di segmento. Questi sono campi obbligatori.

- Sdata. Campo carattere a 1000 byte per i dati usati dall'IDOC . Si tratta di un campo obbligatorio.
INBOUND_IDOC_PROCESS Questo modulo di funzione viene usato per le versioni fino alla 4.0. Elabora IDOCS nei tipi di record validi per le versioni 3.x. È anche possibile usare questo modulo di funzione nella versione 4.x.

I parametri per questo RFC includono:

- idoc_control (la struttura SAP è EDI_DC)

- idoc_data (la struttura SAP è EDI_DD)

Operazioni per l'invio di IDOC

L'adapter SAP espone le operazioni Send e SendIdoc per consentire ai client di inviare IDOC a un sistema SAP. Per l'operazione di invio, l'IDOC è rappresentato come dati fortemente tipizzato; per l'operazione SendIdoc, l'IDOC viene rappresentato come dati stringa. Queste operazioni determinano come vengono rappresentati i dati IDOC tra l'adattatore e l'applicazione. L'adattatore invia sempre IDOC a SAP usando il IDOC_INBOUND_ASYNCHRONOUS o il IDOC_INBOUND_PROCESS (t)RFC. Per inviare un IDOC al sistema SAP, è possibile usare l'operazione Send o SendIdoc oppure richiamare direttamente la RFC appropriata.

Strutture di messaggi per operazioni client IDOC

La tabella seguente illustra le strutture dei messaggi per le operazioni Send e SendIdoc.

Operazione Struttura XML Descrizione
Send <Send xmlns="[MSG_VERSION]/Idoc/[VERSION]/[IDOCTYP]/ [CIMTYP]/[RELNO]/Send"> <idocData> <[EDI_DC40/EDI_DC] xmlns="/Types/Idoc/ [VERSION]/[IDOCTYP]/[CIMTYP]/[RELNO]"> <EDIDC_FIELD1>value1</ EDIDC_FIELD1> <EDIDC_FIELD2>value2</ EDIDC_FIELD2> … </EDI_DC40> <[SEGMENT_DEFN]_1> <[DATAHEADERCOLUMN_[SEGHDR_FLD1]> header_value_1 </[DATAHEADERCOLUMN_[SEGHDR_FLD1]> <[DATAHEADERCOLUMN_[SEGHDR_FLD2]> header_value_2 </[DATAHEADERCOLUMN_[SEGHDR_FLD2]> … <SEG_FIELD1>value1</SEG_FIELD1> <SEG_FIELD2>value2</SEG_FIELD2> … </[SEGMENT_DEFN]_1> <[SEGMENT_DEFN]_2> <[DATAHEADERCOLUMN_[SEGHDR_FLD1]> header_value_1 </[DATAHEADERCOLUMN_[SEGHDR_FLD1]> <[DATAHEADERCOLUMN_[SEGHDR_FLD2]> header_value_2 </[DATAHEADERCOLUMN_[SEGHDR_FLD2]> … <SEG_FIELD1>value1</SEG_FIELD1> <SEG_FIELD2>value2</SEG_FIELD2> … </[SEGMENT_DEFN]_2> … </[EDI_DC40/EDI_DC]> </idocData> <guid>guid</guid> </Send> Invia un IDOC fortemente tipizzato a SAP

- Lo schema IDOC è fortemente tipizzato.

- Espone i campi dei record di controllo.

- Espone i campi dei record di dati, incluse intestazioni di segmento e campi di segmento.

L'adapter SAP associa un GUID all'ID transazione SAP (TID) usato per inviare l'IDOC. È possibile scegliere se specificare un GUID nel messaggio di richiesta. Se un GUID non è incluso nel messaggio di richiesta, l'adapter SAP ne genera uno. Il GUID viene restituito nel messaggio di risposta.
Invia risposta <SendResponse xmlns="[MSG_VERSION]/Idoc/[VERSION]/ [IDOCTYP]/[CIMTYP]/[RELNO]/Send"> <guid>guid</guid> </SendResponse> Indica che l'IDOC è stato inviato al sistema SAP.

Se la proprietà di associazione AutoConfirmSentIdocs è true, l'adapter SAP conferma automaticamente la transazione nel sistema SAP ed è possibile ignorare il GUID restituito nella risposta. Se la proprietà di associazione AutoConfirmSentIdocs è false, è necessario richiamare l'operazione RfcConfirmTransID con il GUID restituito dall'adattatore SAP per completare la transazione nel sistema SAP.

È possibile richiamare il metodo SapAdapterUtilities.ConvertGuidToTid per ottenere il TID associato all'unità logica di lavoro (LUW).
SendIdoc <SendIdoc xmlns="[MSG_VERSION]/Idoc"> <idocData>docDataString</idocData> <guid>guid</guid> </SendIdoc> Invia un IDOC debolmente tipizzato a SAP.

- Lo schema IDOC è tipizzato in modo debole.

- Espone l'IDOC come un singolo campo stringa costituito dal record di controllo e dal record di dati.

L'adattatore SAP associa un GUID al TID SAP usato per inviare l'IDOC. È possibile scegliere se specificare un GUID nel messaggio di richiesta. Se un GUID non è incluso nel messaggio di richiesta, l'adapter SAP genererà uno. Il GUID viene restituito nel messaggio di risposta
Risposta SendIdoc <SendIdocResponse xmlns="[MSG_VERSION]/Idoc"> <guid>guid</guid> </SendIdocResponse> Indica che l'IDOC è stato inviato al sistema SAP.

Se la proprietà di associazione AutoConfirmSentIdocs è true, l'adapter SAP conferma automaticamente la transazione nel sistema SAP e è possibile ignorare il GUID restituito nella risposta. Se la proprietà di associazione AutoConfirmSentIdocs è false, è necessario richiamare l'operazione RfcConfirmTransID con il GUID restituito dall'adapter SAP per completare la transazione nel sistema SAP.

È possibile richiamare il metodo SapAdapterUtilities.ConvertGuidToTid per ottenere il TID associato all'LUW.

[MSG_VERSION] = Stringa di versione del messaggio; ad esempio , http://Microsoft.LobServices.Sap/2007/03.

[VERSION] = Versione di IDOC (2 o 3).

[IDOCTYP] = Tipo IDOC; ad esempio, ORDERS05.

[CIMTYP] = Cimtype dell'IDOC personalizzato.

[RELNO] = Numero di versione; ad esempio, 620.

[EDI_DC40/EDI_DC] = EDI_DC40 per la versione 3 IDOCs e EDI_DC per IDOCs versione 2.

[EDIDC_FIELD] = Campo che costituisce la struttura del record di controllo EDI_DC40/EDI_DC.

[SEGMENT_DEFN] = Nome definizione segmento (nome tipo di segmento NOT); ad esempio, E2EDK01005. Si noti che il nodo di definizione del segmento può essere visualizzato anche in un nodo del gruppo di segmenti, in base alla struttura dell'IDOC.

[DATAHEADERCOLUMN_(SEGHDR_FLD)] = Ogni segmento ha un'intestazione di segmento costituita da un set standard di campi di intestazione seguiti dai dati del segmento. I dati del segmento sono costituiti da tutti i campi e i dati del segmento. Questo nodo rappresenta i campi di intestazione del segmento; ad esempio, DATAHEADERCOLUMN_SEGNAM.

[SEG_FIELD] = Nome campo segmento che costituisce una definizione di segmento particolare [SEGMENT_DEFN].

[guid] = parametro GUID.

Azioni del messaggio per operazioni client IDOC

Nella tabella seguente vengono illustrate le azioni del messaggio per le operazioni Send e SendIdoc.

Operazione Azione Esempio
Send [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Send http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Send
Invia risposta [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Send/response http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Send/response
SendIdoc [MESSAGE_VERSION]/Idoc/SendIdoc http://Microsoft.LobServices.Sap/2007/03/Idoc/SendIdoc
Risposta SendIdoc [MESSAGE_VERSION]/Idoc/SendIdoc/response http://Microsoft.LobServices.Sap/2007/03/Idoc/SendIdoc/response

[MESSAGE_VERSION] = Stringa di versione del messaggio; ad esempio , http://Microsoft.LobServices.Sap/2007/03.

[VERSION] = Versione di IDOC (2 o 3).

[IDOCTYP] = Tipo IDOC; ad esempio, ORDERS05.

[CIMTYP] = Cimtype dell'IDOC personalizzato.

[RELNO] = Numero di versione; ad esempio, 620.

Operazioni per la ricezione di IDOCs

L'adattatore SAP espone le operazioni Receive and ReceiveIdoc per le applicazioni per ricevere IDOCs da un sistema SAP. Per l'operazione di ricezione, l'IDOC viene rappresentato come dati fortemente tipizzato; per l'operazione ReceiveIdoc, l'IDOC viene rappresentato come dati stringa.

Queste operazioni determinano il modo in cui i dati IDOC vengono generati dall'adattatore all'applicazione. L'adapter riceve sempre IDOCs dal sistema SAP come IDOC_INBOUND_ASYNCHRONOUS o IDOC_INBOUND_PROCESS tRFC. È possibile usare l'operazione Ricezione o ReceiveIdoc oppure è possibile ricevere dati IDOC in formato RFC. Impostare la proprietà di associazione ReceiveIdocFormat per specificare il formato in cui l'adattatore genera i dati IDOC nell'applicazione. Per altre informazioni sulle proprietà di associazione dell'adattatore SAP, vedere Informazioni sull'adapter BizTalk per le proprietà di associazione di mySAP Business Suite.

Strutture di messaggi per operazioni di ricezione IDOC

Nella tabella seguente vengono illustrate le strutture dei messaggi per le operazioni Receive e ReceiveIdoc.

Operazione Struttura XML Descrizione
Ricevere <Receive xmlns="[MSG_VERSION]/Idoc/[VERSION]/[IDOCTYP]/ [CIMTYP]/[RELNO]/Receive"> <idocData> <[EDI_DC40/EDI_DC] xmlns="/Types/Idoc/ [VERSION]/[IDOCTYP]/[CIMTYP]/[RELNO]"> <EDIDC_FIELD1>value1</ EDIDC_FIELD1> <EDIDC_FIELD2>value2</ EDIDC_FIELD2> … </EDI_DC40> <[SEGMENT_DEFN]_1> <[DATAHEADERCOLUMN_[SEGHDR_FLD1]> header_value_1 </[DATAHEADERCOLUMN_[SEGHDR_FLD1]> <[DATAHEADERCOLUMN_[SEGHDR_FLD2]> header_value_2 </[DATAHEADERCOLUMN_[SEGHDR_FLD2]> … <SEG_FIELD1>value1</SEG_FIELD1> <SEG_FIELD2>value2</SEG_FIELD2> … </[SEGMENT_DEFN]_1> <[SEGMENT_DEFN]_2> <[DATAHEADERCOLUMN_[SEGHDR_FLD1]> header_value_1 </[DATAHEADERCOLUMN_[SEGHDR_FLD1]> <[DATAHEADERCOLUMN_[SEGHDR_FLD2]> header_value_2 </[DATAHEADERCOLUMN_[SEGHDR_FLD2]> … <SEG_FIELD1>value1</SEG_FIELD1> <SEG_FIELD2>value2</SEG_FIELD2> … </[SEGMENT_DEFN]_2> … </[EDI_DC40/EDI_DC]> </idocData> </Receive> Riceve un IDOC fortemente tipizzato da SAP

- Lo schema IDOC è fortemente tipizzato.

- Espone i campi dei record di controllo.

- Espone i campi dei record di dati, incluse le intestazioni di segmento e i campi segmento.
Risposta di ricezione <ReceiveResponse xmlns="[MSG_VERSION]/Idoc/[VERSION]/[IDOCTYP]/ [CIMTYP]/[RELNO]/Receive"> </ReceiveResponse> Indica che l'IDOC è stato ricevuto dal sistema SAP.
ReceiveIdoc <ReceiveIdoc xmlns="[MSG_VERSION]/Idoc"> <idocData>docDataString</idocData> </ReceiveIdoc> Riceve un IDOC con tipi deboli da SAP.

- Lo schema IDOC è tipizzato in modo debole.

- Espone l'IDOC come singolo campo stringa costituito dal record di controllo e dal record di dati.
Risposta di ReceiveIdoc <ReceiveIdocResponse xmlns="[MSG_VERSION]/Idoc"> </ReceiveIdocResponse> Indica che l'IDOC è stato ricevuto dal sistema SAP.

[MSG_VERSION] = Stringa di versione del messaggio; ad esempio , http://Microsoft.LobServices.Sap/2007/03.

[VERSION] = Versione di IDOC (2 o 3).

[IDOCTYP] = Tipo IDOC; ad esempio, ORDERS05.

[CIMTYP] = Cimtype dell'IDOC personalizzato.

[RELNO] = Numero di versione; ad esempio, 620.

[EDI_DC40/EDI_DC] = EDI_DC40 per la versione 3 IDOCs e EDI_DC per IDOCs versione 2.

[EDIDC_FIELD] = Campo che costituisce la struttura del record di controllo EDI_DC40/EDI_DC.

[SEGMENT_DEFN] = Nome definizione segmento (nome tipo di segmento NOT); ad esempio, E2EDK01005. Il nodo di definizione del segmento può essere visualizzato anche in un nodo del gruppo di segmenti, in base alla struttura dell'IDOC.

[DATAHEADERCOLUMN_(SEGHDR_FLD)] = Ogni segmento ha un'intestazione di segmento costituita da un set standard di campi di intestazione seguiti dai dati del segmento. I dati del segmento sono costituiti da tutti i campi e i dati del segmento. Questo nodo rappresenta i campi di intestazione del segmento; ad esempio, DATAHEADERCOLUMN_SEGNAM.

[SEG_FIELD] = Nome campo segmento che costituisce una definizione di segmento particolare [SEGMENT_DEFN].

Ricezione di un IDOC in formato RFC

È anche possibile ricevere IDocs in formato RFC. Le schede di interfaccia di rete usate per ricevere IDOC da SAP sono:

  • IDOC_INBOUND_ASYNCHRONOUS per i IDOC versione 3.

  • INBOUND_IDOC_PROCESS per IDOCs versione 2.

    Il codice seguente mostra la struttura di un IDOC ricevuto come operazione di IDOC_INBOUND_ASYNCHRONOUS.

<IDOC_INBOUND_ASYNCHRONOUS xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">  
  <IDOC_CONTROL_REC_40>  
    <EDI_DC40 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
      <EDIDC_FIELD1>field1</EDIDC_FIELD1>  
      <EDIDC_FIELD2>field2</EDIDC_FIELD2>  
      …  
    </EDI_DC40>  
  <IDOC_DATA_REC_40>  
    <EDI_DD40 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
      <[SEG_HEADER_FIELD1]>value1</[SEG_HEADER_FIELD1]>  
      <[SEG_HEADER_FIELD2]>value2</[SEG_HEADER_FIELD2]>  
      …  
      <SDATA>segment value</SDATA>  
    </EDI_DD40>  
    …  
  </IDOC_DATA_REC_40>  
</IDOC_INBOUND_ASYNCHRONOUS>  

[EDIDC_FIELD] = Campo che costituisce la struttura del record di controllo EDI_DC40/EDI_DC

[SEG_HEADER_FIELD] = Ogni segmento ha un'intestazione di segmento costituita da un set standard di campi di intestazione seguiti dai dati del segmento. I dati del segmento sono costituiti da tutti i campi e i dati del segmento. Questo nodo rappresenta i campi di intestazione del segmento; ad esempio SEGNAM, MANDT e DOCNUM.

Per altre informazioni sul formato delle operazioni tRFC, vedere Schemi di messaggi per le operazioni tRFC.

Azioni del messaggio per le operazioni di ricezione IDOC

Nella tabella seguente vengono illustrate le azioni del messaggio per le operazioni Receive e ReceiveIdoc.

Operazione Azione Esempio
Ricevere [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Ricezione http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Receive
Risposta di ricezione [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Receive/response http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Receive/response
ReceiveIdoc [MESSAGE_VERSION]/Idoc/ReceiveIdoc http://Microsoft.LobServices.Sap/2007/03/Idoc/ReceiveIdoc
Risposta di ReceiveIdoc [MESSAGE_VERSION]/Idoc/ReceiveIdoc/response http://Microsoft.LobServices.Sap/2007/03/Idoc/ReceiveIdoc/response