Operazioni su IDOC in SAP
Le IDOC sono documenti edi simili a EDI standardizzati supportati da SAP per la comunicazione asincrona con sistemi SAP e non SAP. I IDOCs vengono usati per l'invio e la ricezione di documenti "business", ad esempio ordini di vendita, ad esempio, da o dal sistema SAP di un partner commerciale o da un programma esterno.
Anche se il sistema SAP supporta diversi tipi di porta per inviare e ricevere IDOCs (ad esempio la porta file, la porta CPIC), l'adapter SAP supporta l'invio e la ricezione di IDOC tramite la porta tRFC.
Operazioni per inviare un IDOC
Tutte le chiamate IDOC a SAP vengono considerate internamente come chiamate tRFC in cui l'adapter funge da client tRFC e chiama un RFC in SAP per inviare un IDOC. Analogamente a qualsiasi altra chiamata client tRFC, il client dell'adapter passa facoltativamente un GUID all'adattatore, che a sua volta lo associa all'ID transazione (TID) usato per la chiamata nel sistema SAP. Se il client dell'adattatore non passa un GUID, l'adapter genera un GUID personalizzato. Il GUID viene restituito al client dell'adapter nel messaggio di risposta. Il client della scheda può usare questo GUID per confermare il TID nel sistema SAP. L'effettivo SAP TID usato dall'adapter per la chiamata tRFC può essere ottenuto richiamando un metodo statico speciale nell'associazione SAP , ConvertGuidToTid. L'effettivo TID può essere utile per la risoluzione dei problemi nel sistema SAP.
Al termine della chiamata per inviare l'IDOC, il TID deve essere confermato nel sistema SAP. Ciò consente al sistema SAP di eliminare il TID dal database. Il client della scheda può confermare il TID nel sistema SAP.
In modo esplicito, richiamando l'operazione RfcConfirmTransID nella scheda. Questa operazione accetta un GUID (restituito nel messaggio di risposta precedente) e causa la conferma dell'adattatore associato nel sistema SAP.
Impostando in modo implicito la proprietà di associazione AutoConfirmSentIdocs . Se questa proprietà di associazione è true, l'adapter esegue automaticamente il commit del TID dopo l'invio dell'IDOC al sistema SAP. Per altre informazioni , vedere Leggere l'adapter BizTalk per le proprietà di associazione di mySAP Business Suite .
L'adattatore SAP usa le schede rfc seguenti per inviare un IDOC:
INBOUND_IDOC_PROCESS. Questo modulo di funzione viene usato per le versioni SAP prima della versione 4.0.
IDOC_INBOUND_ASYNCHRONOUS. Questo modulo di funzione viene usato per SAP release 4.0 e versioni successive.
Invio di IDOC con dati segmento tra più righe
I IDOC sono costituiti da segmenti. Ogni voce di segmento in un file flat IDOC contiene le informazioni sull'intestazione del segmento (contenente il campo DOCNUM) e i dati del segmento. In alcuni IDOC i dati del segmento possono essere suddivisi tra più righe. Ad esempio:
Segment header (DOCNUM is one of the fields here) | Segment data
Segment header (DOCNUM is one of the fields here) | Segment data
Segment data wrapped from the previous line
Segment header (DOCNUM is one of the fields here) | Segment data
L'adapter SAP basato su WCF supporta l'invio di tali IDOC al sistema SAP. Per supportare l'invio di tali IDOC, l'adapter SAP determina se ogni segmento dati è una continuazione della precedente o se si tratta di un nuovo segmento di dati. L'adapter SAP decide questa operazione analizzando ogni intestazione di segmento e cercando il campo DOCNUM. Se i dati del segmento sono suddivisi tra due righe, la seconda riga non ha un'intestazione di segmento e, di conseguenza, l'adapter SAP non trova il campo DOCNUM. Di conseguenza, l'adattatore SAP può determinare che è una continuazione dei dati del segmento precedente.
Ad esempio, nella rappresentazione di un IDOC illustrato sopra, l'adattatore SAP non trova alcun campo DOCNUM in "Segment data wrapped from the previous line
" ed è in grado di decidere che la riga è una continuazione dei dati del segmento precedente. Considerando le dimensioni dei file flat IDOC negli ambienti di produzione, l'esecuzione di tali controlli per ogni segmento dati può comportare un aumento del tempo di elaborazione.
Nota
L'adattatore usa il campo DOCNUM anziché un feed della riga di ritorno a capo (CRLF) per identificare ed estrarre ogni record di segmento dai dati IDOC. Se i campi DOCNUM nel controllo e nei record di dati non sono validi o parzialmente vuoti, l'adattatore non riesce a analizzare l'IDOC. Di conseguenza, l'IDOC non viene inviato al sistema SAP.
Operazioni per inviare un IDOC
Le operazioni seguenti sono supportate per l'invio di IDOCs a un sistema SAP:
Invia. Usare questa operazione per inviare un IDOC al sistema SAP usando uno schema fortemente tipizzato. Lo schema per questa operazione espone i campi dei record di controllo e i campi dei record dati, incluse le intestazioni di segmento e i campi segmento. L'operazione Send è specifica di una combinazione IDocType + CimType + ReleaseNumber + Version.
Questa operazione viene eseguita per ogni IDOC ed è disponibile in un nodo IDOC specifico nel plug-in Add Adapter Service Reference o Consume Adapter Service Add-in.
Nota
Per poter eseguire correttamente un'operazione di invio , è necessario disporre dell'autorizzazione pertinente nel sistema SAP. Per altre informazioni.
SendIdoc. Usare questa operazione per inviare un IDOC al sistema SAP usando uno schema con tipi deboli. Lo schema per questa operazione espone IDOCs come singolo campo stringa costituito dal record di controllo e dal record di dati. L'operazione SendIdoc accetta una stringa IDOC e un GUID come parametro.
Si tratta di una singola operazione eseguita per tutti i IDOC esposti dal sistema SAP ed è disponibile nel nodo IDOC radice nel plug-in Add Adapter Service Reference o Consume Adapter Service Add-in.
Per altre informazioni:
Inviare un IDOC a un sistema SAP usando BizTalk Server, vedere Inviare IDOCs a SAP usando BizTalk Server.
Inviare un IDOC a un sistema SAP usando il modello di servizio WCF, vedere Inviare IDOCs a SAP usando il modello di servizio WCF.
Strutture di messaggi e azione SOAP per l'invio di un IDOC, vedere Schemi di messaggio per operazioni IDOC.
Operazioni per ricevere un IDOC
Per ricevere un IDOC, l'adapter SAP può comportarsi come server tRFC o come server RFC:
Per il comportamento della scheda come server tRFC, la proprietà di associazione TidDatabaseConnectionString deve essere impostata sul stringa di connessione per il database TID nel computer. Per uno scenario di server tRFC, l'adapter accetta una chiamata client tRFC dal sistema SAP per ricevere l'IDOC.
Per il comportamento della scheda come server RFC, tidDatabaseConnectionString deve essere null (impostazione predefinita). Per uno scenario del server RFC, l'adattatore accetta una chiamata client RFC dal sistema SAP per ricevere l'IDOC.
Le schede di rete seguenti vengono usate per inviare e ricevere IDOC; durante l'invio di IDOC, l'adapter usa queste schede di rete, mentre durante la ricezione di IDOCS, il sistema SAP li usa.
INBOUND_IDOC_PROCESS. Questo modulo di funzione viene usato per le versioni SAP prima della versione 4.0.
IDOC_INBOUND_ASYNCHRONOUS. Questo modulo di funzione viene usato per SAP release 4.0 e versioni successive.
Le operazioni seguenti sono supportate per la ricezione di IDOCs da un sistema SAP:
Ricezione. Usare questa operazione per ricevere un IDOC dal sistema SAP usando uno schema fortemente tipizzato. Lo schema per questa operazione espone campi dei record di controllo e campi record dati, incluse intestazioni di segmento e campi segmento.
Questa operazione viene eseguita per ogni IDOC ed è disponibile in un nodo IDOC specifico nel plug-in Add Adapter Service Reference o Consume Adapter Service Add-in.
Nota
Per poter eseguire correttamente un'operazione di ricezione , è necessario disporre dell'autorizzazione pertinente nel sistema SAP. Per altre informazioni.
Nota
Usando l'operazione di ricezione , è anche possibile ricevere più IDOC.
ReceiveIdoc. Usare questa operazione per ricevere un IDOC dal sistema SAP usando uno schema con tipi deboli. Lo schema per questa operazione espone IDOCs come singolo campo stringa costituito dal record di controllo e dal record di dati. Questa operazione riceve IDOCs come stringa in un messaggio XML nel <tag idocData> .
Si tratta di una singola operazione eseguita per tutti i IDOC esposti dal sistema SAP ed è disponibile nel nodo IDOC radice nel plug-in Add Adapter Service Reference o Consume Adapter Service Add-in.
Quando si ricevono IDOCs, l'adapter SAP supporta formati di messaggio diversi, che possono essere specificati come valore per la proprietà di associazione, ReceiveIDocFormat esposto dall'adapter SAP.
Se impostato su "Typed", lo schema XML viene fortemente tipizzato per l'IDOC specifico ricevuto. Lo schema per questo messaggio può essere visualizzato dalle operazioni di ricezione. Si noti che lo schema è diverso per IDOCs diversi. In questo modo viene restituito un IDOC XML.
Se impostato su "String", i dati IDOC in ingresso vengono restituiti come valore String. Lo schema per questo messaggio può essere visualizzato dall'operazione ReceiveIdoc. In questo modo viene restituito un messaggio XML con il <tag idocData> .
Se impostato su "Rfc", lo schema del messaggio corrisponde allo schema RFC (o tRFC) per le operazioni RFC IDOC_INBOUND_ASYNCHRONOUS o INBOUND_IDOC_PROCESS, a seconda della versione IDOC in ingresso. Se si specifica questa proprietà di associazione, è consigliabile usare il IDOC_INBOUND_ASYNCHRONOUS o INBOUND_IDOC_PROCESS RFC per ricevere l'IDOC. Nelle prime due opzioni, l'adapter usa internamente questo RFC. In questa opzione si usa in modo esplicito questo RFC per ricevere un IDOC.
L'operazione usata per ricevere un IDOC deve corrispondere al formato dei dati IDOC generati dall'adattatore. La tabella seguente fornisce un riepilogo delle diverse combinazioni in cui è possibile ricevere un IDOC da SAP.
Per ricevere un IDOC tramite | Impostare la proprietà di associazione ReceiveIDOCFormat su |
---|---|
Operazione di ricezione | Tipizzato |
Operazione reciveIdoc | string |
IDOC_INBOUND_ASYNCHRONOUS RFC | Rfc |
INBOUND_IDOC_PROCESS RFC | Rfc |
Un'altra proprietà di associazione PadReceivedIdocsWithSpaces riquadri IDOC ricevuti con spazi vuoti per i campi facoltativi quando si prevede il formato di ricezione è "String". Ciò consente la compatibilità con il formato di dati IDOC ricevuto usando la versione precedente dell'adattatore.
Per altre informazioni sulle proprietà di associazione, vedere Informazioni sull'adapter BizTalk per le proprietà di associazione di mySAP Business Suite.
Per altre informazioni:
Ricezione di un IDOC da un sistema SAP tramite BizTalk Server, vedere Ricevere IDOC da SAP usando BizTalk Server.
Ricezione di un IDOC da un sistema SAP in un contesto transazionale usando BizTalk Server, vedere Ricevere IDOC da SAP in un contesto transazionale usando BizTalk Server.
Le strutture dei messaggi e l'azione SOAP per la ricezione di un IDOC, vedere Schemi di messaggio per operazioni IDOC.
Autorizzazione SAP per l'uso di operazioni di invio o ricezione
Quando si usano le operazioni Send o Receive per inviare o ricevere IDOC usando uno schema fortemente tipizzato, l'adattatore SAP richiama internamente l'IDOCTYPE_READ_COMPLETE RFC per recuperare i metadati per il IDOC. Per richiamare questo RFC è necessaria l'autorizzazione seguente in SAP:
Authorisation object S_IDOCDEFT, Fields:
EDI_TCD, value 'WE30'
ACTVT, value - 03 (display)
EDI_DOC, value *
EDI_CIM, value *
È possibile usare la transazione SU01 in SAP per aggiungere un oggetto di autorizzazione. Per altre informazioni sulla transazione, contattare l'amministratore SAP o fare riferimento alla documentazione sap.