Estrattore in delta su due date con Function Module | GUIDA STEP BY STEP

Condividi questo articolo con chiunque pensi possa trovarlo utile
Tempo stimato per la lettura: 5 minuti

 

Oggi voglio condividere con te una delle guide a cui sono più affezionato.

E’ stata una delle prime guide che ho scritto, e l’ho fatta per me i primissimi mesi di lavoro come consulente di Business Intelligence. 

In questa guida step by step vedremo come creare un estrattore in delta su due date con un function module

Essendo questa una guida step by step ho deciso di non dare nulla per scontato.

Non prendere male questa mia frase, è proprio quello che avrei voluto io quando mi sono trovato nella situazione di dover creare per me questo documento.

 

Ricordo che ero davvero agli inizi della mia carriera come consulente di SAP BW e dire che ne sapevo davvero poco è un eufemismo.

La creazione di un estrattore basato su un function module è una delle attività che più spaventa molti dei consulenti SAP BW più junior (ma non solo) e questo perchè richiede avere una buona dimestichezza con il codice ABAP (se anche tu hai paura di scrivere codice, non abbatterti e consulta le mie guide sul codice ABAP). Ed ecco perchè ho deciso di condividere questa guida che spero possa fungere sia da schema di tutte le attività da compiere che da bozza di codice.

Perchè creare un estrattore in Function Module

Nell’articolo Ampliamento estrattori e codice ABAP | Guida step by step SAP BW abbiamo visto come poter inserire nuove informazioni su un estrattore standard.

Oggi andiamo un pò oltre e con questa guida step by step scopriremo come creare da zero un estrattore in delta su due date con un function module.

Creare un estrattore significa voler estrarre dei dati da tabelle che non sono presenti in estrattori standard (ad esempio quando le tabelle stesse sono custom) oppure se si deve applicare una logica particolarmente complessa in fase estrattiva.

Tipi di estrattori custom

Per poter creare un estrattore custom ci sono 3 possibilità:

Creare un estrattore basato su una tabella
Si tratta della tipologia più semplice in quanto si deve solamente indicare la tabella da estrarre ed eventualmente i campi superflui.  Solitamente viene utilizzato per estrazioni in full della tabella ma è possibile definire un delta utilizzando uno dei campi della tabella (una data)
Estrattore basato su una view
Molto simile alla situazione precedente, con la differenza che in questo caso si possono mettere in join diverse tabelle e non si ha il limite di utilizzare una soloa tabella.
Estrattore basato su un function module
Si tratta del massimo grado di libertà quando si crea un nuovo estrattore in quanto saremo noi a decidere a codice tutto quello che l’estrattore dovrà fare. Molto utile nel caso di logiche molto complesse oppure se si vuole che l’estrattore abbia una logica delta definita su parametri differenti rispetto ad una semplice data

In questa guida, leggermente avanzata, ci focalizzeremo sulla terza possibilità e vedremo tutti i passi necessari per riuscire a creare in autonomia il nostro estrattore su Function Module.

Perchè usare due date per il delta

Poter assicurare il caricamento in delta di un estrattore può essere molto importante, se non fondamentale, per molti flussi dati.

Per flussi dati che presuppongono una grande quantità di record

Solitamente per creare un meccanismo di delta si utilizzano delle date. Ma nella maggior parte dei casi in una tabella non esiste un’unica data da prendere in considerazione ma la combinazione di due date:

    1. data creazione
    2. data modifica.

Questo accade perchè nel momento in cui viene inserito un nuovo record in tabella si valorizza la data creazione  mentre la data modifica rimane vuota. Quando poi viene modificato il medesimo record si va a valorizzare la data di modifica con il giorno in cui è stata eseguita tale modifica.

Poichè un delta per essere efficace deve estrarre sia i nuovi dati che quelli che hanno subito una modifica abbiamo bisogno di creare una nuova data che sarà:

Data Delta = data di creazione SE la data di modifica è vuota. ALTRIMENTI Data Delta = data di modifica SE è piena

Per eseguire questa logica abbiamo bisogno del Function module.

Guida Step by Step:Estrattore in delta su due date con Function Module

 

Eccoci finalmente arrivati alla guida step by step su come creare un estrattore in delta su due date con Function Module.

Se vuoi averla sempre con te, scaricala direttamente da qui:

Creare struttura estrattiva

Per prima cosa vai in se11 e metti un nome in Tipo Dati (ovviamente un tipo dati che inizia con Z e che non esiste).

Poi fai crea e inizia a mettere i campi e  i tipo  campi che mi servono nella struttura

In questo caso ho preso quello fatto copiando i campi dalla tabella erdk .

IMPORTANTE:

entrare in campi divisa/quantità

E associare ai campi divisa la tabella e il campo di riferimento

Creare il gruppo funzioni

Questo passaggio non è obbligatorio e dipende da quanto sia “vergine” il sistema su cui state lavorando. Se esiste almeno un estrattore basato su FM puoi saltare per intero questo paragrafo perchè qualcuno lo ha già fatto per te.

Transazione SE80  e vai su gruppo funzioni e selezioni RSAX e lo devi copiare

E chiamarlo con ZRSAX. Una volta copiato si aprirà questo:

Selezionare SOLO quello evidenziato.

A questo punto posso creare il Function  Module.

Function Module

 

Parto copiando il function module che ho in ZRSAX sotto la voce function module cambiandogli ovviamente il nome chiamandolo con il nome  che gli voglio dare io.

IMPORTANTE

 

Ricordarsi di mettere in E_T_DATA la struttura estrattiva che abbiamo creato al passo 1.

Poi si va al testo sorgente e si implementa la logica per quello che deve fare l’estrattore:

Sotto riporto il codice dell’estrattore che sto facendo giusto per capire quali parti cambiare e quali lasciare com’è.

Dichiarazioni nella TOP

A questo punto bisogna dichiarare le varie tabella nella TOP del gruppo funzioni ossia nella parte in cui le dichiarazioni sono valide per tutti i function module ched appartengono a quel gruppo funzioni:

cliccare due volte sul nome programma ( quello cerchiato). A questo punto si apre una schermata tipo ABAP in cui bisogna far doppio click su:

Ossia sul TOP e qui si aprirà  un programma ABAP in cui fare la definizione (è tipo le global definition delle start e end routine)

Codice del FM

 

Scarica qui la guida integrale gratuitamente

 

Se hai letto fin qui può voler dire solo due cose. Ti serviva urgentemente creare il tuo estrattore con function module, oppure ti è piaciuta la guida.

In entrambi i casi ti ringrazio e se vuoi avere questa guida sempre con te puoi scaricarla gratuitamente da qui:

 

 

 

Condividi questo articolo con chiunque pensi possa trovarlo utile

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *