Un’azienda che intende acquistare SAP, ovviamente possiede già un suo sistema informativo funzionante, che dovrà col tempo essere sostituito da SAP e che, al momento dell’arrivo di SAP dovrà essere utilizzato come fonte di informazioni. Infatti tutti gli archivi fondamentali del vecchio sistema (piano dei conti, materiale, clienti, fornitori, prime note, …) non possono essere ricaricati a mano da parte dell’utenza, ma devono essere riempiti tramite dei programmi che effettuano il travaso dal vecchio al nuovo sistema.
Infatti la massa di informazioni presenti nel vecchio sistema è spesso talmente consistente che un eventuale lavoro di reinserimento dati manuale in SAP richiederebbe mesi di attività assolutamente improponibile. In una situazione di questo genere, risulta indispensabile sviluppare dei programmi che effettuano il travaso dati dal vecchio sistema al sistema SAP in maniera automatica. Normalmente un programma di caricamento dati di questo tipo, opera direttamente l’inserimento di nuovi record negli archivi del sistema informativo tramite istruzioni di scrittura su file (INSERT, WRITE, …).
Ad esempio, per caricare le tabelle SAP adibite a contenere i dati dei fornitori (LFA1, LFB1, LFC1, LFBK, …) dall’archivio sequenziale contenente i fornitori presenti nel vecchio sistema si dovrà sviluppare un programma che legga l’archivio esterno e che effettui record per record l’inserimento nelle tabelle SAP dei nuovi fornitori, assicurando la correttezza dei dati e l’allineamento logico tra le varie tabelle previste dal data base logico dei fornitori. Questo modo di procedere pur essendo possibile utilizzando le istruzioni INSERT, è assolutamente da evitare in SAP. Infatti le tabelle SAP sono tante e talmente collegate tra di loro, che si rischierebbe di effettuare degli aggiornamenti disomogenei tra le varie tabelle. L’unico modo per essere certi di inserire in maniera corretta e correlata tutti i dati richiesti, sarebbe quello di utilizzare le mappe di inserimento dati che SAP prevede per l’utente adibito a tale funzione e digitare uno per uno tutte le informazioni necessarie al sistema. Nel caso appena descritto, sarebbe necessario collegarsi alla transazione adibita alla creazione di un nuovo fornitore e digitare i dati di tutti i nuovi fornitori da inserire, con enorme impegno di tempo e di risorse umane. Per ovviare a questa situazione SAP ha inventato una metodologia di programmazione che simula l’attività di inserimento dati manuale dell’utente effettuando automaticamente tutti i controlli previsti dal programma di inserimento ed operando di conseguenza gli aggiornamenti assicurando la congruenza di tutti i collegamenti tra tabelle previsti da SAP; programmi di questo tipo sono chiamati BATCH INPUT.
La conoscenza di BATCH INPUT è fondamentale per un programmatore ABAP/4 non solo durante la fase di caricamento dati iniziale ma anche per tutto il periodo in cui SAP convive con altri sistemi informativi nell’ambito dell’azienda. Normalmente in un’azienda l’installazione di SAP procede per aree aziendali (contabilità, gestione materiali, produzione, gestione personale, …), pertanto la fase in cui solo alcune aree sono gestite da SAP può durare anche alcuni anni. Solitamente i sistemi informativi di differenti aree aziendali colloquiano tra di loro (ad esempio l’area vendite comunica con l’area contabilità, …) tramite scambio di informazioni memorizzate in appositi archivi. Anche in questo caso i programmi di BATCH-INPUT svolgono un ruolo essenziale per assicurare il collegamento tra i due sistemi. Per questo motivo i programmi di BATCH-INPUT sono spesso chiamati anche programmi di INTERFACCIA DATI.
Lo scopo del BATCH-INPUT non è l’aggiornamento immediato delle tabelle, ma la creazione di un archivio che contiene la traccia di tutte le operazioni che simulato l’attività di un utente che volesse effettuare manualmente gli stessi aggiornamenti richiesti al sistema dal programma di BATCH-INPUT. L’archivio contenente questa “traccia” è rappresentato dalla tabella SAP BDC in cui confluiscono tutte le richieste di aggiornamento di archivi SAP effettuate tramite programmi BATCH-INPUT. La tabella BDC ha un tracciato standard rappresentato dalla struttura BDCDATA che prevede i seguenti campi:
- PROGRAM che deve contenere il nome del programma simulato dal BATCH-INPUT, cioè il nome del programma che l’utente finale eseguirebbe se volesse effettuare manualmente gli aggiornamenti voluti dal BATCH-INPUT;
- DYNPRO che deve contenere il nome della videata (detta anche mappa o dynpro) che è simulata dal BATCH-INPUT;
- DYNBEGIN che deve contenere il valore ‘X’;
- FNAME che deve contenere il nome del campo della mappa che l’utente dovrebbe riempire se volesse effettuare manualmente gli aggiornamenti;
- FVAL deve contenere il valore da attribuire al campo della mappa il cui nome è contenuto in FNAME;
Il BATCH-INPUT deve creare dei record nella tabella BDC secondo una particolare sequenza riassumibile nei seguenti punti:
- Un record di testata valorizzato solo nei campi PROGRAM, DYNPRO e DYNBRGIN per ogni mappa che si intende simulare.
- Un record di dettaglio valorizzato solo nei campi FNAME e FVAL per ciascun campo della mappa del quale si intende simulare il riempimento con un valore. Anche la pressione dell’invio o di un tasto funzionale è simulata tramite un record di questo tipo impostando FNAME al valore ‘BDC_OKCODE’ che rappresenta il nome del campo adibito appositamente da SAP.
Pertanto la tabella BDC conterrà normalmente un record di testata seguito da vari record di dettaglio, il tutto ripetuto per ogni mappa/programma del quale occorre simulare l’esecuzione.
Al termine dell’esecuzione del programma non si ottiene l’aggiornamento degli archivi SAP, ma solo la creazione di records nella tabella BDC. Tutti i gruppi di records che sono ad aggiungersi alla tabella BDC in conseguenza dell’esecuzione di un programma di BATCH-INPUT sono caratterizzati da una medesima “etichetta” denominata SESSIONE, il cui nome è stabilito dal programmatore per identificare i propri record di aggiornamento rispetto a tutti gli altri presenti nella tabella BDC. In tempi successivi il programmatore può (tramite opportune transazioni SAP) richiamare le funzionalità previste per i BATCH-INPUT che permettono l’esecuzione della sessione.
Con il termine “esecuzione della sessione” si intende l’attivazione della fase di aggiornamento delle tabelle SAP, che fino a quel momento erano rimaste inalterate. Pertanto deve essere ben chiaro che l’esecuzione del programma di BATCH-INPUT determina solo la creazione di una nuova sessione nella tabella BDC, mentre l’esecuzione della sessione provoca l’aggiornamento delle tabelle SAP come simulazione di una attività tipica dell’utente finale, secondo lo schema indicato nella figura seguente:

La fase di esecuzione di una sessione può essere eseguita secondo varie modalità:
- In modalità foreground che impegna il terminale che richiede tale attività, presentando in sequenza tutte le dynpro, e rappresentando passo dopo passo l’intera attività di introduzione dati che il BATCH-INPUT sta simulando. Questa modalità è preferita durante la fase di test di un programma, per poterne verificare l’operatività con il massimo dettaglio e per poter eventualmente interrompere l’elaborazione in caso di eventuali anomalie;
- In modalità background, cioè tramite una esecuzione completa della sessione che operi senza impegnare il terminale che ha richiesto tale attività. In questo caso l’elaborazione procede autonomamente senza possibilità di interruzione da parte del programmatore che potrà solo limitarsi a controllarne i risultati al termine. La modalità background è preferibile per grandi volumi di dati che altrimenti impegnerebbero il terminale per tempi troppo lunghi e quando il programma di BATCH-INPUT è ormai testato in modo tale da garantire un esecuzione senza alcuna anomalia;
- E’ inoltre possibile schedulare un tempo (espresso in data e orario) per l’esecuzione di una sessione. Quando l’orologio interno al sistema rileverà il raggiungimento del tempo stabilito, allora e solo allora, attiverà automaticamente l’esecuzione della sessione senza alcun intervento da parte del programmatore. Questa modalità è spesso utilizzata per elaborazioni molto lunghe che sono attivate durante le ore notturne, quando il sistema risulta sottoutilizzato.
Uno dei punti più delicati riguardanti le esecuzioni delle sessioni di BATCH-INPUT consiste nel fatto che non è possibile ripristinare gli archivi SAP alla situazione precedente l’esecuzione della sessione. Normalmente prima di un aggiornamento archivi è prudente effettuare un salvataggio; in caso di eventuali anomalie di esecuzione in fase di aggiornamento è sufficiente ripristinare i vecchi archivi salvati, operare le opportune modifiche ai programmi che hanno dato luogo alle anomalie e rieseguire la fase di aggiornamento. Questo non è possibile in SAP perché il sistema non ammette il salvataggio parziale (solo delle tabelle che si intendono aggiornare con l’esecuzione della sessione), ma prevede unicamente il salvataggio dell’intero sistema in blocco, con enorme dispendio di tempo. Pertanto il programmatore deve operare con estrema cautela in fase di BATCH-INPUT.
Ad esempio:
Se fosse eseguita una sessione che prevede l’inserimento di 100 nuovi fornitori estratti da un apposito archivio sequenziale e se la sessione si interrompesse per una qualsiasi anomalia dopo aver inserito 27 fornitori, sarebbe un errore correggere il programma di BATCH-INPUT, rieseguirlo e successivamente rieseguire la sessione, perché verrebbero ripresi e inseriti tutti i 100 fornitori, operando quindi un doppio caricamento per i primi 27 che erano già stati inseriti nella precedente esecuzione. Una soluzione possibile è l’eliminazione dei primi 27 fornitori dall’archivio sequenziale di input, oppure la modifica al programma di BATCH-INPUT in modo che escluda i records relativi ai primi 27 fornitori. Il programmatore è quindi obbligato ad effettuare interventi estemporanei e differenti caso per caso.
Per ulteriori approfondimenti si rimanda all’uso dell’help in linea fornito da SAP. |