Gli IDoc esistono da diversi decenni nel mondo SAP e i clienti desiderano spesso integrarli poiché costituiscono la spina dorsale del trasferimento dei dati master e transazionali tra i sistemi SAP e altre applicazioni in qualsiasi sistema basato su ABAP, che si tratti di SAP ECC, BW, SRM, SCM, CRM o del prodotto di punta di SAP, S/4HANA.
Panoramica
All'interno dei sistemi SAP, gli IDoc vengono elaborati dal framework Application Link Enabling (ALE). Chi ha familiarità con il sistema spesso usa i termini ALE e IDoc insieme o li menziona nella stessa frase. Per chi non ha familiarità con SAP, è fondamentale comprendere che ALE funziona proprio come un sistema di messaggistica. In qualità di mittente del messaggio (IDoc), si specifica il tipo di messaggio da inviare, il destinatario e la porta ALE da utilizzare. Dal lato SAP, il framework ALE decide quando elaborare il messaggio e quale funzionalità utilizzare per farlo in base alla configurazione.
Con queste nozioni di base sull'ALE, esaminiamo brevemente i singoli Snap disponibili e il loro utilizzo prima di approfondire i dettagli di ciascuno di essi. Cominciamo con lo Snap SAP IDoc Write. Sebbene la sua funzione sia piuttosto intuitiva, esso viene utilizzato per creare un IDoc nel sistema SAP; la nostra documentazione è un po' fuorviante in quanto suggerisce che gli IDoc vengono sempre elaborati in modo asincrono e, pertanto, una pipeline SnapLogic non attenderà mai il completamento dell'elaborazione in SAP prima di procedere. Più avanti in questa serie, vedremo che sono possibili entrambi gli scenari: elaborazione asincrona e sincrona.
All'inizio, IDoc Listener e IDoc Document Listener mi sembravano piuttosto confusi. Perché mai qualcuno dovrebbe volere due Snap separati per ascoltare gli IDoc inviati a una pipeline da un sistema SAP? La risposta è semplice: una volta ricevuto l'IDoc, IDoc Listener lo esporta in formato XML binario, mentre IDoc Document Listener può trasformarlo direttamente in un documento SnapLogic con la funzione aggiuntiva di specificare un tipo base IDoc, ovvero una versione specifica di un determinato messaggio IDoc, che viene letto durante la convalida e quindi utilizzato per trasmettere la struttura del messaggio agli Snap a valle.
Infine, lo Snap IDoc Read consente di leggere un IDoc già creato. Sebbene questo Snap restituisca l'IDoc completo con tutti i suoi dati, l'uso più comune di questo Snap è determinare lo stato di elaborazione dell'IDoc nel sistema SAP. Più avanti nella serie daremo una breve occhiata agli stati degli IDoc. Il framework ALE e l'applicazione che elabora l'IDoc in SAP impostano stati che possono essere utilizzati per ottenere informazioni su ciò che è accaduto sul lato SAP.
Nella prossima parte della serie esamineremo i prerequisiti per gli Snap IDoc (link alla parte successiva).
Cosa devi fare prima di poter utilizzare correttamente gli Snaps
Esaminiamo ora i prerequisiti per l'utilizzo degli IDoc Snaps SAP. Sebbene i prerequisiti non siano complicati da implementare, sono essenziali se si desidera utilizzare gli Snaps.
Prerequisiti per IDoc Write, IDoc Read Snaps
Poiché un sistema SAP non dispone di funzionalità standard per leggere un IDoc esistente dall'esterno, gli snap IDoc Read e IDoc Write richiedono la creazione di un modulo funzione personalizzato abilitato per RFC nel sistema SAP prima di poter essere utilizzati. È possibile farlo utilizzando la transazione SAP SE37.

L'interfaccia dell'RFC deve essere identica al modulo funzione `IDOC_READ_COMPLETELY` disponibile all'interno del sistema SAP. Suggeriamo di racchiudere il modulo funzione originale invece di copiarlo e abbiamo allegato un esempio a questo blog. Se non avete familiarità con la creazione di un modulo funzione abilitato per RFC, vi suggeriamo di contattare il team che gestisce SAP nella vostra organizzazione e chiedere loro di farlo per voi. La creazione del modulo funzione è semplice e richiede solo pochi minuti, soprattutto se siete in grado di fornire loro l'esempio allegato.
Prerequisiti per gli snap IDoc Listener e IDoc Document Listener
Nomi dei servizi
Gli Snap di ascolto richiedono l'aggiunta di voci al file /etc/services su Linux o al file %windir%System32driversetcservices su Windows su ciascun nodo dei Groundplex che si intende utilizzare con gli Snap IDoc. Il file mappa le porte TCP/IP ai nomi dei servizi per molti servizi standard e, per impostazione predefinita, contiene voci per molte delle porte standard per molti servizi standard come e-mail, SSH e altri. Sarà necessario aggiungere i nomi dei servizi per il sistema SAP in base ai numeri di sistema dei propri sistemi SAP. Il numero di sistema SAP è composto da due cifre e viene generalmente utilizzato per mappare le varie porte su cui SAP è in ascolto. Se il numero di sistema è 00, la porta SAP Gateway è 3300. Se è 01, la porta sarà 3301 e così via. Se si intende utilizzare Secure Network Communication (SNC), è necessario inserire anche la porta SNC, che è 48xx. La regola di denominazione è sapgwXX per la porta standard e sapgwXXs per la porta SNC.
sapgw00 3300/tcp # Standard port of SAP Gateway for System No 00
sapgw00s 4800/tcp # SNC port of SAP Gateway for System No 00
In alternativa, puoi anche contattare il team che gestisce i sistemi SAP nella tua azienda e richiedere le voci. Sono in grado di fornirtele poiché sono configurate in ogni sistema che esegue SAP e in ogni desktop basato su Windows che ha installato SAP Gui.
Elenchi di controllo degli accessi SAP RFC Gateway
Affinché i tuoi IDoc Listen Snaps possano registrarsi correttamente sul gateway SAP RFC, il gateway deve consentire l'accesso ai nodi del Groundplex che intendi utilizzare. A tal fine, è necessario assicurarsi che il gateway SAP RFC abbia delle voci nei file reginfo e secinfo del gateway. I file possono essere configurati tramite SAP Gui Transaction SMGW e le varie opzioni sono spiegate in un'ottima serie di blog su SAP SCN che tratta della sicurezza del gateway SAP RFC. Ti consigliamo di verificare con il team che gestisce i tuoi sistemi SAP quali impostazioni ACL sono in vigore o di chiedere loro di includere gli indirizzi IP dei nodi del Groundplex che intendi utilizzare.
Creazione di IDoc in SAP utilizzando lo Snap Scrittura IDoc
In un tipico sistema SAP, sono disponibili per impostazione predefinita molti IDOC standard. Alcune aziende utilizzano quelli predefiniti come ORDERS05 per gli ordini di vendita o MATMAS05 per il master materiali, mentre altre estendono quelli forniti da SAP o ne creano di propri. Questi IDoc sono in genere di grandi dimensioni e contengono molti campi raggruppati in segmenti, ed è facile sentirsi sopraffatti da essi. Per concentrarci sugli aspetti di integrazione della serie di blog, abbiamo creato un IDoc personalizzato semplice con solo dieci campi raggruppati in un unico segmento per discutere la funzionalità. L'IDoc che abbiamo creato è il seguente:
<?xml version='1.0' encoding='UTF-8'?>
<ZPERSON01>
<IDOC BEGIN="1">
<EDI_DC40 SEGMENT="1">
<TABNAM>EDI_DC40</TABNAM>
<MANDT>100</MANDT>
<DOCNUM>0000000000058011</DOCNUM>
<DOCREL>758</DOCREL>
<STATUS>30</STATUS>
<DIRECT>1</DIRECT>
<OUTMOD>2</OUTMOD>
<IDOCTYP>ZPERSON01</IDOCTYP>
<MESTYP>ZPERSONDATA</MESTYP>
<SNDPOR>SAPS4H</SNDPOR>
<SNDPRT>LS</SNDPRT>
<SNDPRN>S4HCLNT100</SNDPRN>
<RCVPOR>A000000003</RCVPOR>
<RCVPRT>LS</RCVPRT>
<RCVPRN>SNPCLNT000</RCVPRN>
<CREDAT>20240508</CREDAT>
<CRETIM>225707</CRETIM>
<SERIAL>20240508225707</SERIAL>
</EDI_DC40>
<ZPERSONDATA01 SEGMENT="1">
<FIRSTNAME>Herbert</FIRSTNAME>
<LASTNAME>Walker</LASTNAME>
<TITLE>Mr.</TITLE>
<GENDER>male</GENDER>
<STREET>1234 Somestreet</STREET>
<CITY>Boston</CITY>
<ZIP>72662</ZIP>
<COUNTRY>United States</COUNTRY>
<EMAIL>[email protected]</EMAIL>
<PHONE>555555525</PHONE>
</ZPERSONDATA01>
</IDOC>
</ZPERSON01>
Nell'IDoc, il segmento EDI_CD40 rappresenta la struttura di controllo che contiene le varie informazioni necessarie al sistema SAP per comprendere quali dati contiene l'IDoc e a quale applicazione è destinato, mentre ZPERSONDATA01 è il segmento con i campi che contengono i dati dell'IDoc.
Quando si crea un IDoc in SAP, non è necessario inviare l'intero segmento EDI_CD40 con tutti i campi; sono sufficienti solo i campi richiesti dal livello ALE per capire dove deve essere inviato l'IDoc. Nell'esempio riportato di seguito, abbiamo limitato la struttura in modo che contenga solo i campi richiesti dalla configurazione che abbiamo effettuato in SAP. Il team SAP della vostra organizzazione è responsabile della configurazione di ALE e può fornirvi i dettagli su ciò che deve essere inserito nei campi dell'IDoc che intendete inviare.
La pipeline che abbiamo creato è composta da 3 Snap, uno Snap generatore JSON che contiene i dati di esempio riportati di seguito:
{
"EDI_DC40": {
"MESTYP" : "ZPERSONDATA",
"SNDPRT" : "LS",
"SNDPRN" : "SNPCLNT000",
"SNDPOR" : "A000000003",
"RCVPRT" : "LS",
"RCVPRN" : "A4HCLNT001"
},
"ZPERSONDATA01": [
{
"FIRSTNAME": "Ingo",
"LASTNAME": "Sauerzapf",
"TITLE": "Mr.",
"GENDER": "female",
"STREET": "33rd Str.",
"CITY": "New York",
"ZIP": "98632",
"COUNTRY": "United States",
"EMAIL": "[email protected]",
"PHONE": "5405883833",
"SLEEPTIME": 40
}
]
}
Uno Snap Mapper che mappa sia il segmento di controllo che il segmento dati. Sebbene i nomi dei campi nel segmento dati siano identici tra l'output del generatore JSON e i nomi dei campi IDOC, abbiamo deliberatamente utilizzato i nomi interni SAP per il record di controllo del generatore JSON; lo Snap IDoc Write mostrerà questi campi con i nomi che i metodi setter hanno nella libreria di classi Java IDoc SAP sottostante. Abbiamo allegato a questo blog una tabella di mappatura che vi aiuterà a mappare i nomi dei setter dei metodi Java ai nomi interni SAP, ma potete trovare la mappatura nei JavaDocs della libreria SAP IDoc.

La pipeline completata appare come segue:

L'output dello Snap di scrittura IDoc SAP fornirà una serie completa di informazioni per comprendere cosa è successo nel sistema SAP. La cosa più importante è il DOCUMENT_NUMBER, ma anche lo STATUS che l'IDoc ha in SAP dopo che lo Snap è stato eseguito con successo.

Una volta eseguito con successo, è possibile visualizzare l'elaborazione dell'IDoc nella transazione WE02 o WE09 in SAP.

Abbiamo allegato la pipeline di esempio. Nella prossima parte del blog daremo un'occhiata alle varie impostazioni che è possibile configurare in IDoc Write Snap per manipolare il comportamento dello Snap e daremo un'occhiata all'esecuzione sincrona e asincrona.





