SAP ABAP BDC: Che cos'è la comunicazione dati batch?
⚡ Riepilogo intelligente
SAP ABAP BDC (Batch Data Communication) trasferisce i dati legacy in R/3 gestendo automaticamente le transazioni standard. Questa pagina illustra le sessioni di input batch, i metodi di transazione classici e di chiamata, la struttura BDCDATA, il flusso di lavoro BDC_OPEN_GROUP e il registratore di input batch.

Introduzione all'input batch
L'input batch viene generalmente utilizzato per trasferire dati da sistemi non R/3 a sistemi R/3 o per trasferire dati tra sistemi R/3.
Si tratta di una tecnica di trasferimento dati che consente di trasferire automaticamente i set di dati alle schermate appartenenti alle transazioni, e quindi ad un SAP sistema. L'input batch è controllato da una sessione di input batch.
Sessione di input batch
Raggruppa una serie di chiamate di transazione insieme a dati di input e azioni dell'utente. Una sessione batch input può essere utilizzata per eseguire una transazione di dialogo in batch input, in cui alcuni o tutti gli schermi vengono elaborati dalla sessione. Le sessioni di batch input vengono archiviate nel database come tabelle di database e possono essere utilizzate all'interno di un programma come tabelle interne quando si accede alle transazioni.
Punti da notare
- BDI funziona eseguendo normali SAP transazioni proprio come farebbe un utente, ma esegue la transazione automaticamente.Tutte le convalide dello schermo e la convalida della logica aziendale verranno eseguite durante l'utilizzo di Batch Data Input.
- È adatto per inserire grandi quantità di dati.
- Non è richiesta alcuna interazione manuale
Metodi di batch input
SAP forniscono due metodi di base per trasferire i dati legacy nel sistema R/3.
- Metodo Batch Input classico.
- Metodo di transazione della chiamata.
Metodo Batch Input classico
In questo metodo un programma ABAP/4 legge i dati esterni sul SAP Sistema e archivi in una sessione di batch input.
Dopo aver creato la sessione, è possibile eseguire la sessione per eseguire il file SAP transazione in esso.
Questo metodo utilizza i moduli funzionali BDC_ OPEN, BDC_INSERT e BDC_CLOSE
La sessione Batch Input può essere elaborata in 3 modi
- in primo piano
- sullo sfondo
- Durante l'elaborazione, con visualizzazione dell'errore
È necessario elaborare le sessioni batch input in primo piano o utilizzare la visualizzazione degli errori se si desidera testare il trasferimento dei dati.
Se desideri eseguire il trasferimento dei dati o testarne le prestazioni, dovresti elaborare le sessioni in background.
Punti da notare sul metodo Batch Input classico
- Syncelaborazione cronica
- Trasferisci dati per più transazioni.
- Syncaggiornamento cronico del database.
- Per ogni sessione viene generato un registro del processo di input batch.
- La sessione non può essere generata in parallelo.
Metodo di transazione della chiamata.
In questo metodo ABAP/4 il programma utilizza l'istruzione CALL TRANSACTION USING per eseguire un'istruzione SAP transazione.
L'intero processo di input batch avviene online nel programma
Punti da notare:
- Elaborazione più rapida dei dati
- Elaborazione asincrona
- Trasferisci i dati per una singola transazione.
- Non viene generato alcun registro di elaborazione batch input.
Input batch classico vs transazione di chiamata
I due metodi raggiungono lo stesso risultato nella transazione, ma differiscono per velocità, registrazione dei dati e gestione degli errori. La tabella seguente mostra quando ciascuno dei due è la scelta più appropriata.
| Criteri | Input batch classico | Transazione di chiamata |
|---|---|---|
| Tecnica | BDC_OPEN_GROUP, BDC_INSERT, BDC_CLOSE_GROUP | TRANSAZIONE DI CHIAMATA UTILIZZANDO |
| Lavorazione | Synccronologico, eseguito più tardi da SM35 | Funziona online, nel programma |
| Le transazioni | Molte transazioni in una sola sessione | Una singola transazione per chiamata |
| Log | Per ogni sessione viene generato automaticamente un registro di processo. | Nessun registro, il programma raccoglie i messaggi |
| Velocità | Più lento, ma robusto e riavviabile | Faster |
| migliori per | Carichi legacy di grandi dimensioni, una tantum, che devono essere verificabili. | Trasferimenti interattivi o ad alta velocità di un documento |
Dopo aver confrontato i metodi, la sezione successiva illustra la procedura generale seguita da un progetto.
Procedure di input batch
In genere, per sviluppare Batch Input per la tua organizzazione, osserverai la seguente sequenza di passaggi
- Analisi dei dati legacy. Determinare come mappare i dati da trasferire nel file SAP Struttura. Prendere nota anche delle conversioni necessarie del tipo di dati o della lunghezza dei dati.
- Generare SAP strutture dati da utilizzare nei programmi di esportazione.
- Esportare i dati in un file sequenziale. Tieni presente che il formato dei caratteri è richiesto da quello predefinito SAP programmi di input batch.
- Se l' SAP i programmi BDC forniti non vengono utilizzati, codificare il proprio programma di input batch. Scegliere un metodo di input batch appropriato in base alla situazione.
- Elabora i dati e aggiungili al file SAP Sistema.
- Analizzare il registro del processo. Per il metodo CALL TRANSACTION, in cui non viene creato un registro adeguato, utilizzare i messaggi raccolti dal programma.
- Sulla base dei risultati dell'analisi del processo, correggere e rielaborare i dati errati.
Scrittura del programma BDC
È possibile osservare il seguente processo per scrivere il programma BDC
- Analizzare le transazioni per elaborare i dati di input batch.
- Decidere il metodo di input batch da utilizzare.
- Leggere i dati da un file sequenziale
- Eseguire la conversione dei dati o il controllo degli errori.
- Memorizzazione dei dati nella struttura di input batch, BDCDATA.
- Genera una sessione di batch input per il batch input classico oppure elabora i dati direttamente con l'istruzione CALL TRANSACTION USING.
Struttura dei dati di input batch
Dichiarazione della struttura dei dati di input batch
DATA : BEGIN OF < bdc table> OCCURS <occurs parameters>. INCLUDE STRUCTURE BDCDATA. DATA:END OF <bdc table>.
| nome campo | Tipo | Lunghezza | Descrizione |
|---|---|---|---|
| PROGRAMMA | CHAR | 8 | Piscina di moduli |
| DINPRO | NUM | 4 | Numero Dynpro |
| DYNBEGIN | CHAR | 1 | Avvio di una dinamica |
| FNAM | CHAR | 35 | nome campo |
| FVAL | CHAR | 80 | Valore del campo |
L'ordine dei campi all'interno dei dati per una determinata schermata non ha alcun significato
Punti da notare
- Durante il popolamento dei dati BDC, assicurarsi di tenere in considerazione le impostazioni utente. Ciò è particolarmente importante per la compilazione di campi che contengono numeri (come quantità, importo). Sono le impostazioni utente a decidere quale sia il gruppoping Carattere per i numeri. Ad esempio: il numero cinquantamila può essere scritto come 50,000.00 o 50.000,00 a seconda delle impostazioni dell'utente.
- Condensa il campo FVAL per i campi importo e quantità in modo che siano allineati a sinistra.
- Tieni presente che tutti i campi che stai compilando tramite BDC devono essere trattati come campi di tipo carattere durante la compilazione della tabella Dati BDC.
- In alcune schermate, quando si popolano valori in un controllo tabella utilizzando BDC, è necessario annotare il numero di righe presenti su una dimensione predefinita dello schermo e codice per altrettante righe. Se devi compilare più righe, devi codificare la funzionalità "Pagina giù" come faresti quando inserisci manualmente il controllo della tabella.
- Il numero di righe che apparirebbero nello scenario precedente varierà in base alle dimensioni dello schermo utilizzato dall'utente. Quindi codifica sempre per le dimensioni dello schermo standard e fai in modo che il tuo BDC funzioni sempre con le dimensioni dello schermo standard, indipendentemente da come l'utente mantiene le dimensioni dello schermo.
Creazione di una sessione di input batch
- Aprire la sessione della sessione batch input utilizzando il modulo funzionale BDC_OPEN_GROUP.
- Per ogni transazione nella sessione:
- Compila BDCDATA con i valori per tutte le schermate e i campi elaborati nella transazione.
- Trasferisci la transazione alla sessione con BDC_INSERT.
- Chiudere la sessione di batch input con BDC_CLOSE_GROUP
Esempio: BDC che utilizza una transazione Call
Il programma seguente mostra il metodo di chiamata della transazione dall'inizio alla fine. Costruisce la tabella BDCDATA per due schermate di una transazione e la esegue in modalità N (senza visualizzazione) con una tabella degli errori in modo che i malfunzionamenti possano essere segnalati.
REPORT z_bdc_call_transaction. DATA: lt_bdcdata TYPE STANDARD TABLE OF bdcdata, ls_bdcdata TYPE bdcdata, lt_messages TYPE STANDARD TABLE OF bdcmsgcoll. * Helper that appends one BDCDATA line FORM bdc_field USING p_fnam p_fval. CLEAR ls_bdcdata. ls_bdcdata-fnam = p_fnam. ls_bdcdata-fval = p_fval. APPEND ls_bdcdata TO lt_bdcdata. ENDFORM. * Screen 1: start the dynpro, then fill the fields CLEAR ls_bdcdata. ls_bdcdata-program = 'SAPMV45A'. ls_bdcdata-dynpro = '0101'. ls_bdcdata-dynbegin = 'X'. APPEND ls_bdcdata TO lt_bdcdata. PERFORM bdc_field USING 'VBAK-AUART' 'OR'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. * Run the transaction: mode N = no display, update S = synchronous CALL TRANSACTION 'VA01' USING lt_bdcdata MODE 'N' UPDATE 'S' MESSAGES INTO lt_messages. IF sy-subrc <> 0. * Read lt_messages to report the errors that occurred ENDIF.
Suggerimento: Il parametro MODE controlla la visualizzazione: A mostra tutte le schermate, E si arresta solo in caso di errore e N funziona in modalità silenziosa. Utilizzare E durante i test e N per l'ambiente di produzione.
Registratore di input batch
Il registratore di input batch (Sistema > Servizi > Input batch > Registratore) registra le transazioni immesse manualmente e crea una sessione di input batch che può essere eseguita in seguito utilizzando SM35.
- Avviare il registratore batch input selezionando il pulsante Registrazione dalla schermata iniziale batch input.
- Il nome della registrazione è un nome definito dall'utente e può corrispondere al nome della sessione batch input che può essere creata dalla registrazione.
- Entrare in un SAP transazione e iniziare a registrare la transazione.
- Dopo aver completato la pubblicazione di a SAP transazione, puoi scegliere Ottieni transazione e salva per terminare la registrazione o Transazione successiva e registrare un'altra transazione.
- Una volta salvata la registrazione è possibile creare una sessione batch input dalla registrazione e/o generare un programma batch input dalla registrazione.
- La sessione batch input creata ora può essere analizzata come qualsiasi altra sessione batch input.
- Il programma generato dalla funzione del registratore batch input è un potente strumento per il programmatore dell'interfaccia dati. Fornisce una base solida che può poi essere modificata in base alle esigenze del cliente.
⚠️ Attenzione: Una registrazione cattura la sequenza delle schermate esattamente come si è verificata, quindi una schermata che appare solo in presenza di determinati dati, come ad esempio un popup di incompletezza, non viene registrata. Testa sempre il programma generato con dati che attivano tutte le schermate opzionali.



