CORSO SAP R/3 - PROGRAMMAZIONE ABAP/4 - BATCH INPUT
Pagina 1 di 4 - Pagina 2 di 4 - Pagina 3 di 4 - Pagina 4 di 4
Indice
- Realizzazione di un programma batch-input;
- Custom e Standard;
- Data Dictionary;
- Cenni relative alle function.
Programmi utilizzati per il caricamento iniziale delle tabelle SAP tramite la simulazione delle attività che l’utente dovrebbe compiere per inserire manualmente i dati richiesti utilizzando le videate messe a disposizione da SAP. Esempi di batch input possono essere: trasferimento archivi clienti dal sistema informativo precedente a SAP, caricamento dei listini applicati da un fornitore e comunicati tramite supporto magnetico, …
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.
REALIZZAZIONE DI UN PROGRAMMA BATCH INPUT
La realizzazione di un programma di BATCH-INPUT richiede una fase iniziale durante la quale il programmatore deve effettuare manualmente le attività che l’utente dovrebbe fare per operare i medesimi aggiornamenti tramite le videate di SAP.
Ad esempio:
Nel caso di dover realizzare un BATCH-INPUT per l’inserimento di nuovi fornitori (e che quindi dispone di un archivio sequenziale di input con un record per fornitore); in questo caso il programmatore deve verificare quali transazioni, quali programmi, quali dynpro e quali campi sono necessari per l’inserimento manuale di un fornitore, provando lui stesso a richiamare (tramite i menu a tendina di SAP) la transazione adibita alla creazione di un nuovo fornitore e registrare passo dopo passo tutte le attività necessarie a completare la creazione. Per facilitare tale attività forniamo nella pagina seguente uno schema adatto a memorizzare tali dati coerente con il tracciato previsto per la tabella BDC (struttura BDCDATA).
Codice TRANSAZIONE |
Nome del programma |
Dynpro |
Begin |
Nome del campo |
Contenuto del campo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Simulando l’attività dell’utente, occorre verificare di volta in volta il nome della transazione corrispondente alla creazione di un fornitore tramite la scelta: Menu Sistema à Stato tramite la quale si deduce che la transazione è FK01, il programma è SAP… e la dynpro è ….
Si può così memorizzare la prima riga della tabella sopra descritta che rappresenterà un record di testata della tabella SAP BDC. Successivamente si verificano quali campi della mappa devono essere riempiti dall’Utente e dedurne il nome tramite l’help sul campo (tastoF1) e le relative informazioni tecniche, riempiendo così un secondo record di tipo dettaglio della tabella BDC e così di seguito per tutti i campi della dynpro che devono essere riempiti.
Una volta che sono stati compilati tutti i campi della mappa per l’inserimento del fornitore occorre premere l’invio che introduce nella successiva dynpro per la memorizzazione dei dati anagrafici (Ragione sociale, indirizzo, …). La pressione dell’invio è simulata tramite l’inserimento del valore /00 nel campo di sistema BDC_OKCODE e la corrispondente creazione di un record di dettaglio, l’attivazione della nuova dynpro è simulata tramite un nuovo record di testata. Successivamente occorre creare il record di dettaglio per tutti i campi della dynpro ai quali si intende assegnare un valore (Nome, Indirizzo,… ovviamente presenti sull’archivio sequenziale di input) cercando il relativo nome tramite le informazioni tecniche fornite dall’help sul campo. Al termine l’utente effettuerebbe il salvataggio del record premendo clic nell’icona apposita (cartella) oppure premendo il tasto funzionale F11; questa operazione è simulata con un record di dettaglio per il quale si imposta il valore /11nel campo BDC_OKCODE. A questo punto tutta la fase di inserimento di un singolo fornitore è stata completata e dovrà essere ripetuta per tutti i fornitori nuovi che sono presenti nell’archivio sequenziale di input. Pertanto la simulazione dell’inserimento di un fornitore, almeno fino a questo punto del processo deve dare luogo alla seguente sequenza di records nella tabella appositamente creata come immagine della tabella SAP BDC.
Codice TRANSAZIONE |
Nome del programma |
Dynpro |
Begin |
Nome del campo |
Contenuto del campo |
FK01 |
SAPMF02K |
104 |
X |
|
|
|
|
|
|
RF02K-KTOKK |
Categ. Conto da input |
|
|
|
|
BDC_OKCODE |
‘/00’ |
|
SAPMF02K |
110 |
X |
|
|
|
|
|
|
LFA1-NAME1 |
Nome fornitore da input |
Una volta identificata con estrema precisione la sequenza operativa necessaria all’inserimento di un fornitore e avendola registrata secondo lo schema indicato, il programmatore dovrà passare alla fase di realizzazione del programma il cui scopo sarà quello di creare i record relativi in tabella BDC. Normalmente si definisce una tabella interna avente struttura BDCDATA, si inseriscono in essa i records di testata e di dettaglio relativi ad un intero inserimento (cioè fino al record che simula il comando di salvataggio record), e si trasferisce in blocco il contenuto della tabella interna nella tabella BDC delle sessioni di BATCH-INPUT. Successivamente si ripulisce la tabella interna e si ripetono le medesime operazioni per tutti gli inserimenti che devono essere effettuati. Molto sinteticamente, nel caso di inserimento fornitori, il programma potrebbe avere uno schema analogo a quanto segue:

Per l’apertura della tabella BDC, lo spostamento dei dati dalla tabella interna alla tabella BDC e per la chiusura della BDC esistono delle funzioni (FUNCTION) già sviluppate da SAP che il programma dovrà richiamare secondo il formalismo previsto. In particolare si utilizzano le seguenti FUNCTION:

Uno schema analogo al precedente è valido nel caso in cui ogni record dell’archivio sequenziale in input contenga tutti i dati necessari a completare un processo di inserimento (cioè fino al salvataggio), il ciclo logico ovviamente cambia qualora risultasse necessaria la lettura di più records di input per completare la fase di aggiornamento (se ad esempio esistessero due diversi record consecutivi per uno stesso fornitore, caratterizzati da un differente tipo record e da diverso tracciato).
In fase di scrittura del programma di BATCH-INPUT si consiglia di effettuare sempre tutti i controlli possibili relativamente alle informazioni registrate nel file di input al fine di evitare interruzioni nella successiva esecuzione della sessione. Nel caso utilizzato come esempio, si potrebbe verificare che la categoria conto del fornitore sia uno dei valori compresi nella apposita tabella, che la nazione del fornitore sia prevista nella tabella nazioni,… Si consiglia inoltre di effettuare una lista dei record che sono inseriti nella tabella BDC, almeno per i primi programmi di BATCH-INPUT e fino a quando non si dispone di una adeguata dimestichezza con questo tipo di programmi.
Quando il programmatore ritiene (verificando la correttezza dei record caricati nella tabella BDC) di poter passare alla fase di esecuzione della sessione, allora deve passare alla transazione SM35 utilizzata per la gestione delle sessioni. In tale videata (raggiungibile anche tramite il percorso Sistema à Servizi à Batch input à Elaborare) occorre indicare il nome della sessione attribuita all’esecuzione del proprio programma di BATCH-INPUT e premere il tasto di invio.
Comparirà l’elenco di tutte le sessioni caricate nella tabella BDC con il nome indicato; il programmatore dovrà cancellare quelle più vecchie, lasciando solo l’ultima e richiederne l’esecuzione cliccando due volte nella corrispondente riga. Apparirà una successiva finestra che permetterà al programmatore di scegliere tra l’esecuzione in background o in foreground e tra altre opzioni. Scegliendo l’esecuzione in foreground, il sistema passerà alla simulazione delle attività associate ai records della tabella BDC caratteristici di quella sessione. Nell’esempio del caricamento fornitori illustrato nelle pagine precedenti, otterremo la simulazione della transazione FK01 con la comparsa della Dynpro 104 caratteristica del programma SAPMF02K di creazione fornitore e l’automatico riempimento del campo GRUPPO CONTI, tramite il relativo valore presente nel primo record dell’archivio sequenziale del file di input del BATCH-INPUT e successivamente trasferito nel campo FVAL della struttura BDCDATA caratteristica della tabella BDC. La pressione dell’invio o di un qualsiasi tasto funzionale (campo BDC_OKCODE) è simulata tramite il riempimento del riquadro bianco che compare nella parte superiore sinistra di tutte le videate di SAP.
L’esecuzione della sessione in foreground consiste semplicemente della successione di tutte le videate (con relativi riempimenti campi e pressione tasti funzionali vari) relative alla fase di caricamento fornitori, ripetuta per tutti i nuovi fornitori presenti in input. Se durante l’esecuzione si verifica un errore (ad esempio un gruppo conti valorizzato in maniera errata), la sessione non può procedere oltre e il programmatore deve interromperla inserendo nel riquadro dell’OKCODE uno dei valori indicati nell’help, che servono ad interrompere l’esecuzione della sessione, tenendo conto che gli aggiornamenti effettuati fino a quel momento sono ormai completati e non è possibile ritornare alla situazione precedente all’esecuzione della sessione.
Per ulteriori approfondimenti si rimanda all’uso dell’help in linea fornito da SAP
CUSTOM E STANDARD
In questa sede è sufficiente sapere che esistono dei programmi di BATCH-INPUT già sviluppati e forniti da SAP che hanno lo scopo di effettuare il caricamento iniziale dati in sede di impianto del sistema. Questi tipi di programmi sono chiamati BATCH-INPUT STANDARD per differenziarli da quelli realizzati dal programmatore per conto del cliente e che pertanto sono chiamati CUSTOM.
I BATCH-INPUT standard prevedono un input sequenziale secondo dei tracciati predefiniti in opportune strutture presenti in SAP. Utilizzando i BATCH-INPUT standard è possibile quindi effettuare dei caricamenti preoccupandosi esclusivamente di utilizzare degli archivi sequenziali di input perfettamente corrispondenti ai tracciati record previsti, lasciando al programma standard il compito di simulare l’attività dell’utente in ogni dettaglio, sapendo che in presenza di dati validi in input, anche il processo di inserimento sarà simulato correttamente. Qualora l’input provenisse da altri sistemi, senza possibilità da parte del programmatore ABAP/4 di richiederne un allineamento al tracciato standard, una soluzione valida potrebbe essere quella di sviluppare un programma che legga l’archivio di input e ne scriva uno contenente i medesimi dati secondo il tracciato previsto dal corrispondente BATCH-INPUT standard per poi utilizzarlo come input corretto del programma di BATCH-INPUT standard stesso secondo lo schema seguente.

Per ulteriori approfondimenti si rimanda all’uso dell’help in linea fornito da SAP.
DATA DICTIONARY
Il data dictionary è la definizione delle tabelle. Il codice transazione che gestisce il dizionario dati è SE11; digitando tale codice compare una videata che permette di selezionare uno degli elementi che caratterizzano il dizionario, i principali:
- TABELLE;
Con tale termine si intendono gli archivi SAP (Tables) che sono definiti tramite questa transazione in ogni loro aspetto (nomi e caratteristiche dei campi e delle chiavi) dal punto di vista di ABAP/4. Inoltre, attraverso scelte del data dictionary è possibile rendere visibile le tabelle create al Data Base di sistema (oracle, …). Un programma ABAP/4, tramite l’istruzione TABLES, può accedere ad una tabella, conoscendone il tracciato, purché sia stata preventivamente definita nel data dicionary.
- STRUTTURE;
Per strutture si intendono dei semplici tracciati che possono essere utilizzati nell’ambito di un programma, ma che normalmente non rappresentano il tracciato record di vere e proprie tabelle, ma solo dei supporti al programmatore per evitare di ripetere le stesse dichiarazioni in più programmi.
- DOMINI;
Tutti i dati presenti nelle tabelle o strutture di SAP devono avere un nome e delle caratteristiche (tipo di dato, lunghezza, numero di decimali,…); mentre il nome può essere scelto al momento della definizione della tabella, per quanto riguarda le caratteristiche bisogna fare riferimento a tipologie di caratteristiche già predefinite che si chiamano domini. Un esempio di dominio è TEXT30 che è utilizzato per rappresentare tutti i campi di tipo carattere lunghi 30 posizioni. Al momento della creazione di un dominio occorre fornirne le caratteristiche e la relativa descrizione.
- ELEMENTI DATI;
Ad un medesimo dominio è possibile associare più elementi dati, con tale indicazione si intendono tutte le tipologie di informazioni che hanno le medesime caratteristiche e che quindi possono essere riferite allo stesso dominio. Al momento della definizione di un elemento dati è possibile associare una descrizione a tale elemento (in varie lunghezze), che comparirà in alcune transazioni come la SE16, che permettono la visualizzazione di una qualsiasi tabella. Nell’esempio indicato, al dominio TEXT30 potrebbero essere associati tutti i campi che contengono il nome o il cognome che troviamo presenti nelle varie tabelle SAP. In un caso analogo conviene creare 2 elementi, chiamandoli rispettivamente NOME e COGNOME e dicendo che sono collegati al dominio TEXT30. Così facendo è possibile in tempi successivi definire dei campi adibiti a contenere il nome e il cognome in tutte le tabelle per le quali riteniamo necessario inserire tali campi. Definendo i campi di una nuova tabella occorre indicare il nome di ciascun campo e l’elemento dati cui appartiene. Non è possibile definire campi senza il relativo aggancio ad un elemento dati. Ad esempio, la creazione di una tabella adibita a memorizzare i nominativi di una agenda (chiamandola TAGE) potrebbe contenere il campo AGNOME collegandolo all’elemento dati NOME e il campo AGCOGNO collegato all’elemento COGNOME. Entrambi i campi saranno automaticamente definiti di tipo carattere e con lunghezza di 30 posizioni, così come indicato nel dominio TEXT30. Schematicamente:

- HELP DI RICERCA;
Con questo termine si intendono quei strumenti che facilitano l’utente nella ricerca di un particolare record di una tabella SAP. Normalmente uno strumento di questo tipo si presenta con il consueto simbolo della freccia che indica la possibilità di effettuare una ricerca secondo particolari criteri. Se, ad esempio, si volesse visualizzare un materiale di cui non si conosce il codice, si potrebbe entrare nella transazione di visualizzazione materiali (MM03) e vedere che accanto al campo previsto per la digitazione del codice materiale esiste il simbolo della freccia di ricerca. Facendo clic in tale posizione si attiva un help di ricerca che permette di selezionare dei materiali in base alla loro descrizione (o ad una parte di essa). La definizione di queste facilitazioni per la ricerca di dati è effettuata in questa sede e prende il nome di help di ricerca o di Matchcode.
Per ulteriori approfondimenti si rimanda all’uso dell’help in linea fornito da SAP.
CENNI RELATIVI ALLE FUNCTION
FUNCTION: funzioni già sviluppate in ABAP/4 che svolgono particolari operazioni di uso ricorrente nei programmi ABAP/4 e che il programmatore può richiamare quando lo ritiene necessario.
Le Functions sono gestite dalla transazione SE37 (visualizzazione, modifica e creazione).
Ogni FUNCTIONS può essere richiamata da un programma ABAP/4 tramite l’istruzione CALL FUNCTION. Spesso occorre fornire dei valori in input alla FUNCTION, la quale a sua volta restituisce altri valori ed eventualmente delle possibili condizioni di errore che dovrebbero essere testate dal programma chiamante. A titolo di esempio si può vedere il richiamo della FUNCTION BDC_OPEN_GROUP, utilizzata nella scrittura di programmi di BATCH-INPUT:

Dopo la parola IMPORTING occorre elencare e valorizzare tutti i parametri che sono previsti in input dalla funzione così come sono definiti nella relativa documentazione, analogamente si opera per gli eventuali parametri restituiti dalla funzione che compariranno dopo la parola EXPORTING (nel caso indicato non è stata prevista una restituzione dei parametri e quindi la parola EXPORTING non compare). Infine occorre gestire le eventuali condizioni di errore previste dalla FUNCTION dopo la parola EXCEPTIONS (verificandole nella documentazione), assegnando una valore a ogni possibile caso di errore. Il campo di sistema SY-SUBRC assumerà il valore 0, se l’esecuzione della FUNCTION termina regolarmente, in caso contrario prenderà il valore associato alla situazione di errore verificatasi. Se, ad esempio, un programma richiamasse la funzione di cui sopra impostando in maniera non corretta il parametro CLIENT (cioè con un utente non definito in SAP), allora il campo SY-SUBRC assumerebbe il valore 01. Spesso una funzione non pretende di essere richiamata esplicitando tutti i parametri e tutte le condizioni di errore descritti nella relativa documentazione, ma è possibile elencare e valorizzare solo quelli significativi caso per caso.
In molti sistemi informativi è molto comune la realizzazione di nuove funzioni oltre a quelle standard fornite da SAP.
Per ulteriori approfondimenti si rimanda all’uso dell’help in linea fornito da SAP.
