Utilizzo di SAP S/4HANA Snaps per estrarre dati Operational Data Provider (ODP)

Foto di Ingo Sauerzapf
9 lettura minima
Riassumere questo con l'AI

L'Operational Data Provisioning (ODP) di SAP fornisce un'infrastruttura tecnica che è possibile utilizzare per supportare due diversi scenari applicativi. Il primo è l'analisi operativa per il processo decisionale nei processi aziendali operativi. L'altro è l'estrazione e la replica dei dati. È in uso da parecchio tempo e ha sostituito tutti gli altri metodi per l'estrazione completa dei dati e l'estrazione delta in BW/4HANA. SAP ha trasferito il framework alle versioni precedenti della propria suite ERP, come SAP ECC, CRM, SRM, SCM, per renderlo ampiamente disponibile e questo ha portato molti fornitori terzi a sfruttare le Remote Function Calls create per ODP per sfruttare il framework e le sue capacità.

Nel febbraio del 2024 SAP ha pubblicato una nota (3255746) in cui dichiara che, in futuro, non consentirà l'uso di RFC per l'estrazione di dati ODP. SAP afferma chiaramente che i moduli RFC sono destinati esclusivamente alle applicazioni interne SAP e possono essere modificati da SAP in qualsiasi momento, senza preavviso. Si riserva inoltre il diritto di mettere in atto misure tecniche che limiteranno e controlleranno l'uso non autorizzato dei moduli RFC dell'API di replica dei dati ODP. Si afferma inoltre che qualsiasi problema riscontrato o causato da applicazioni di terze parti o applicazioni dei clienti utilizzando i moduli RFC è interamente a rischio del cliente e che SAP non è responsabile della risoluzione di tali problemi, né fornirà alcun supporto.

Come soluzione, SAP afferma che il framework Operational Data Provisioning (ODP) per l'estrazione e la replica dei dati è esposto da un'API OData ufficiale e disponibile esternamente e che tutte le applicazioni dei clienti e di terze parti dovrebbero essere costruite utilizzando questa API, poiché fornisce un'interfaccia stabile (link alladocumentazione).

Questo blog ha lo scopo di mostrare come è possibile estrarre dati dal framework ODP tramite OData e il nostro Snap Pack SnapLogic S/4HANA.

Che cos'è ODP e come posso utilizzarlo?

Ho già detto che SAP ha reso l'ODP il metodo di estrazione standard per BW/4 HANA. Il framework Operational Data Provisioning (ODP) per la distribuzione dei dati fornisce una tecnologia consolidata per la fornitura e il consumo dei dati. L'ODP supporta l'estrazione e la replica dei dati per più destinazioni e supporta l'acquisizione delle modifiche alla fonte. Ciò significa che è possibile estrarre un'ampia varietà di fonti attraverso il framework. Di seguito è riportato un disegno spesso utilizzato da SAP per illustrare le funzionalità e visualizzare le varie opzioni. Tutti questi scenari ODP (spesso denominati contesti) possono essere utilizzati da SnapLogic.

Screenshot 2024-06-11 alle 14:53:09.png

ODP – Estrattori SAP (ODP_SAP):
Questo contesto espone le origini dati BW come fornitori di dati operativi. Un'origine dati BW definisce una struttura di estrazione popolata dal codice di estrazione, che implementa la logica per recuperare i dati rilevanti dal sistema ABAP. Il framework ODP, senza configurazioni aggiuntive, supporta le origini dati rilasciate dal proprietario dell'applicazione. La maggior parte di queste origini dati fa parte della SAP Business Suite.

ODP – ABAP CDS Views (ODP_CDS):
ABAP Core Data Services (CDS) potenzia ABAP SQL per consentire la definizione e l'utilizzo di modelli di dati semanticamente ricchi in modo nativo. Questo potenziamento aumenta la produttività, la fruibilità, le prestazioni e l'interoperabilità. Il concetto chiave per esprimere la semantica dei modelli ABAP CDS è costituito dalle annotazioni, che vengono associate agli elementi del modello. Applicando annotazioni con semantica analitica, è possibile annotare le viste ABAP CDS in modo che i metadati risultanti consentano la generazione di Operational Data Provider transitori.

ODP – BW (ODP_BW):
SAP BW/4HANA espone i propri dati come Operational Data Provider a fini di estrazione. Tutti gli InfoProvider SAP BW/4HANA rilevanti sono supportati come fonti.

ODP – Coda SLT (ODP_SLT):
Utilizzando l'infrastruttura ODP e la replica basata su trigger del SAP Landscape Transformation Replication Server (SLT), i dati possono essere trasferiti in tempo reale da più sistemi di origine a uno o più sistemi di destinazione. Il server di replica SLT funge da provider per l'infrastruttura ODP, rendendo disponibili le tabelle provenienti da fonti SAP come code delta.

Come posso esporre un'origine dati ODP tramite OData?

Per acquisire i delta, i dati di origine vengono scritti in una coda delta operativa tramite un processo di aggiornamento. Il processo supporta l'estrazione completa basata su pacchetti per volumi molto grandi utilizzando la coda delta operativa. Dopo l'estrazione completa iniziale, può anche acquisire ed estrarre i delta per le modifiche utilizzando la coda delta operativa. Tuttavia, l'origine dati ODP deve supportare i delta per questa funzionalità. SnapLogic può quindi recuperare i dati da questa coda delta, che aiuta anche a monitorare il processo di estrazione e replica dei dati. L'esposizione dei dati viene ottenuta utilizzando SAP Gateway Foundation e generando un servizio SAP OData con SAP Gateway Service Builder per l'origine dati ODP. È possibile accedere a questo servizio (URL) da un'applicazione client OData esterna tramite OData/HTTP.

Generazione del servizio OData nel Gateway Service Builder

Il processo è completamente privo di codice: tutto ciò che è necessario in SAP verrà generato, compreso il servizio OData nel Gateway Service Builder. È sufficiente accedere alla transazione SEGW in SAP. Iniziare creando un nuovo progetto utilizzando la prima icona nella barra dei menu contrassegnata in rosso nella schermata sottostante. Nella finestra pop-up, assegnare un nome e una descrizione al progetto, scegliere Servizio con annotazioni SAPe selezionare il pacchetto in cui si desidera memorizzare il codice generato. Se non è necessario trasferire il codice generato ad altri sistemi SAP, è possibile scegliere $TMP come pacchetto.

Screenshot 2024-06-13 alle 15:45:43.png

Una volta creato il progetto, selezionare Modello dati e scegliere Ridefinisci -> Estrazione ODP dal menu contestuale.

Screenshot 2024-06-13 alle 15:47:04.png

Una procedura guidata ti accompagnerà ora attraverso i passaggi in cui potrai selezionare tutte le possibili fonti di dati ODP. Segui la procedura guidata selezionando il pulsante Avanti fino al completamento della procedura con la generazione del modello.

Screenshot 2024-06-13 alle 15:47:58.png

Una volta generato il modello, è possibile continuare a generare i servizi OData selezionando il pulsante Genera oggetti runtime.

Screenshot 2024-06-13 alle 15:50:51.png

Scegli le impostazioni predefinite per tutte le opzioni e prendi nota del nome del servizio tecnico. Questo è il nome che avrà il tuo servizio OData una volta generato.

Screenshot 2024-06-13 alle 15:51:08.png

Attiva il servizio OData

Per attivare il servizio appena creato, vai alla transazione /IWFND/MAINT_SERVICE in SAP. Seleziona il pulsante Aggiungi servizio.

Screenshot 2024-06-13 alle 15:52:31.png

Inserisci il nome del servizio tecnico e premi Invio. Quindi seleziona il nome del servizio tecnico dall'elenco in basso e fai clic sul pulsante Aggiungi servizi selezionati.

Screenshot 2024-06-13 alle 15:52:49.png

Una volta attivato, è possibile trovare il servizio nel Catalogo dei servizi filtrando per Nome del servizio tecnico.

Screenshot 2024-06-13 alle 15:53:45.png

Come posso utilizzare il servizio OData in SnapLogic?

Dal lato SnapLogic, utilizza lo Snap SAP S/4HANA Read per leggere i dati dal servizio OData esposto. Il servizio OData utilizza un account che punta al catalogo OData versione 2 contenente tutti i servizi, come mostrato nella schermata sottostante.

Screenshot 2024-08-20 alle 13:24:49.png

Nella schermata Impostazioni di SAP S/4HANA Read Snap, cerca il servizio OData nell'oggetto API oppure seleziona il servizio dall'elenco a discesa. La creazione del servizio dall'estrattore ti offre due entità da utilizzare:

  • One with a name starting with EntityOf<objectName>, FactsOf<objectName> or AttrOf<objectName> depending on the type of extractor or view that represents the data source model.
  • One one that starts with DeltaLinksOf<objectName> that exposes information about current and past delta tokens.

Per impostazione predefinita, se invii una richiesta al primo servizio, recupererai un set di dati completo, proprio come faresti con qualsiasi altro servizio OData. Tuttavia, se aggiungi l'intestazione di richiesta speciale Prefer: odata.track-changes come mostrato nella schermata sottostante, il servizio OData si abbonerà alla coda delta operativa (ODQ) e restituirà i collegamenti __delta che ti consentono di richiedere il delta accumulato. Assicurarsi di aver rimosso la voce predefinita nel campo Output Entry Limit che rappresenta l'attributo URL top=X in OData nello Snap. Se avessi mantenuto la voce predefinita durante i miei test, il nostro sistema S/4HANA non avrebbe registrato affatto la richiesta nell'ODQ. Infine, assicurarsi di selezionare la casella di controllo Raw responseper lo Snap per aggiungere il collegamento __delta all'output per gli snap a valle.

Screenshot 2024-09-18 alle 13:56:18.png

Recupero dei dati ODP in pacchetti

Should you want the ODP data to be retrieved in packages, you can specify an additional value in the Prefer header called odata.maxpagesize=<N> where <N> is the number of packages that should be prepared for retrieval, for example, odata.maxpagesize=50. This starts a background job in SAP for paging and the data is cached in ODQ. Using the odata.maxpagesize value you can specify the quantity of packages to be retrieved from the delta queue. The end of the response contains a relative link in the attribute __next, which can be used to retrieve the next package. This link can be fed into the Has Next and Next URL fields to make the S/4HANA Read Snap page through the packages stored in ODQ by the background job.

Screenshot 2024-09-18 alle 13:48:11.png

Come posso utilizzare Deltatoken in una pipeline SnapLogic?

If subscribed successfully to ODQ the output of the S/4HANA Read snap will contain the __delta link. This link contains the query parameter !deltatoken. This URL can be used in subsequent calls to retrieve the delta update from the point in time when the token was issued to your subscription. You can either store the URL or only the token and use it in subsequent runs of the pipeline or alternatively use the DeltaLinksOf<objectName> described above to retrieve all tokens that have been issued for your subscription and then use the last token in the list to read the delta.

Screenshot 2024-09-18 alle 16:55:45.png

Comprendere le informazioni ricevute con un aggiornamento delta

Per ogni riga ricevuta da un delta, si ottengono anche due campi aggiuntivi denominatiODQ_ENTITIYCNTR eODQ_CHANGEMODE. Questi due campi dovranno essere considerati nella destinazione per capire se si tratta di record modificati o nuovi.

Screenshot 2024-09-18 alle 16:56:46.png

Monitoraggio e cessazione di un abbonamento.

Ogni servizio OData generato per ODP contiene anche due entità aggiuntive, Iscritto a FactsOf<objectName> to determine whether a delta subscription exists for the user and TerminateDeltasForFactsOf<objectName> to terminate delta extraction for the user. In our S/4HANA system the entities where not exposed through the ODP catalog but could be called without issues. The attached pipeline makes use of the SubscribedToFacts service to check if we have subscribed in a previous run to ODQ.

Foto di Ingo Sauerzapf
Architetto senior dei servizi professionali presso SnapLogic
Categoria: Tecnica