SAP ABAP BDC: Hvad er batchdatakommunikation?
⚡ Smart opsummering
SAP ABAP BDC (Batch Data Communication) overfører ældre data til R/3 ved automatisk at køre standardtransaktioner. Denne side forklarer batch-inputsessioner, de klassiske og kaldende transaktionsmetoder, BDCDATA-strukturen, BDC_OPEN_GROUP-arbejdsgangen og batch-inputoptageren.

Introduktion til batch-input
Batch-input bruges typisk til at overføre data fra ikke-R/3-systemer til R/3-systemer eller til at overføre data mellem R/3-systemer.
Det er en dataoverførselsteknik, der giver dig mulighed for at overføre datasæt automatisk til skærmbilleder, der hører til transaktioner, og dermed til en SAP system. Batch input styres af en batch input session.
Batch input session
Grupperer en række transaktionskald sammen med inputdata og brugerhandlinger. En batch input session kan bruges til at udføre en dialog transaktion i batch input, hvor nogle eller alle skærmbillederne behandles af sessionen. Batch-inputsessioner gemmes i databasen som databasetabeller og kan bruges i et program som interne tabeller ved adgang til transaktioner.
Punkter at bemærke
- BDI virker ved at udføre alm SAP transaktioner ligesom en bruger ville, men den udfører transaktionen automatisk.Alle skærmvalideringer og forretningslogikvalidering vil blive udført, mens du bruger Batch Data Input.
- Den er velegnet til at indtaste store mængder data.
- Der kræves ingen manuel interaktion
Metoder til batch-input
SAP giver to grundlæggende metoder til overførsel af ældre data til R/3-systemet.
- Klassisk batch-inputmetode.
- Opkaldstransaktionsmetode.
Klassisk batch-inputmetode
I denne metode læser et ABAP/4-program de eksterne data til SAP System og gemmer i en batch-inputsession.
Efter at have oprettet sessionen, kan du køre sessionen for at udføre SAP transaktion i den.
Denne metode bruger funktionsmodulerne BDC_ OPEN, BDC_INSERT og BDC_CLOSE
Batch Input Session kan behandles på 3 måder
- i forgrunden
- I baggrunden
- Under behandling, med fejlvisning
Du bør behandle batch-inputsessioner i forgrunden eller bruge fejldisplayet, hvis du vil teste dataoverførslen.
Hvis du vil udføre dataoverførslen eller teste dens ydeevne, bør du behandle sessionerne i baggrunden.
Bemærkninger om klassisk batch-input-metode
- Synchøflig behandling
- Overfør data for flere transaktioner.
- Syncærlig databaseopdatering.
- En batch-input proceslog genereres for hver session.
- Session kan ikke genereres parallelt.
Opkaldstransaktionsmetode.
I denne metode ABAP/4-programmet bruger CALL TRANSACTION USING-sætning til at køre en SAP transaktion.
Hele batchinputprocessen foregår online i programmet
Punkter at bemærke:
- Hurtigere behandling af data
- Asynkron behandling
- Overfør data for en enkelt transaktion.
- Ingen batch-input-behandlingslog genereres.
Klassisk batchinput vs. opkaldstransaktion
De to metoder når den samme transaktion, men adskiller sig i hastighed, logføring og fejlhåndtering. Tabellen nedenfor viser, hvornår hver enkelt er det rigtige valg.
| Kriterier | Klassisk batchinput | Opkaldstransaktion |
|---|---|---|
| Teknik | BDC_OPEN_GROUP, BDC_INSERT, BDC_CLOSE_GROUP | OPKALDSTRANSAKTION VED HJÆLP |
| Behandles | Synckronisk, kør senere fra SM35 | Kører online, i programmet |
| Transaktioner | Mange transaktioner i én session | En enkelt transaktion pr. opkald |
| Log | Der genereres automatisk en proceslog pr. session | Ingen log, programmet indsamler beskederne |
| Speed | Langsommere, men robust og genstartbar | Hurtigere |
| Bedste for | Store, engangs, ældre indlæsninger, der skal kunne revideres | Interaktive eller hurtige overførsler af ét dokument |
Med de sammenlignede metoder beskriver næste afsnit den overordnede procedure, som et projekt følger.
Batch-inputprocedurer
Du vil typisk observere følgende rækkefølge af trin for at udvikle Batch Input til din organisation
- Analyse af de gamle data. Bestem, hvordan de data, der skal overføres, skal kortlægges i SAP Struktur. Vær også opmærksom på nødvendige datatype- eller datalængdekonverteringer.
- Generer SAP datastrukturer til brug i eksportprogrammer.
- Eksporter dataene til en sekventiel fil. Bemærk, at tegnformat er påkrævet af foruddefineret SAP batch input programmer.
- Hvis SAP medfølgende BDC-programmer bruges ikke, kode dit eget batch-input-program. Vælg en passende batchinputmetode i henhold til situationen.
- Bearbejd dataene og føj dem til SAP Systemkrav.
- Analyser procesloggen. Til CALL TRANSACTION-metoden, hvor der ikke oprettes en ordentlig log, skal du bruge de meddelelser, der indsamles af dit program.
- Ud fra resultaterne af procesanalysen skal du rette og genbehandle de fejlagtige data.
Skrive BDC program
Du kan observere følgende proces for at skrive dit BDC-program
- Analyser transaktionen/transaktionerne for at behandle batch-inputdata.
- Beslut dig for, hvilken batchinputmetode du vil bruge.
- Læs data fra en sekventiel fil
- Udfør datakonvertering eller fejlkontrol.
- Lagring af data i batch-inputstrukturen, BDCDATA.
- Generer en batch-input-session til klassisk batch-input, eller bearbejd dataene direkte med CALL TRANSACTION USING-sætning.
Batch-inputdatastruktur
Erklæring af batch input datastruktur
DATA : BEGIN OF < bdc table> OCCURS <occurs parameters>. INCLUDE STRUCTURE BDCDATA. DATA:END OF <bdc table>.
| Feltnavn | Type | Længde | Beskrivelse |
|---|---|---|---|
| PROGRAM | CHAR | 8 | Modulpulje |
| DYNPRO | NUMC | 4 | Dynpro nummer |
| DYNBEGIN | CHAR | 1 | Starter en dynpro |
| FNAM | CHAR | 35 | Feltnavn |
| FVAL | CHAR | 80 | Feltværdi |
Rækkefølgen af felter i dataene for en bestemt skærm er ikke af nogen betydning
Peger på note
- Når du udfylder BDC-dataene, skal du sørge for at tage hensyn til brugerindstillingerne. Dette er især relevant for udfyldning af felter, der involverer tal (som antal, beløb). Det er brugerindstillingerne, der bestemmer, hvad gruppen skal være.ping tegn for tal F.eks.: Et tal halvtreds tusinde kan skrives som 50,000.00 eller 50.000,00 baseret på brugerindstillingen.
- Kondenser FVAL-feltet for mængde- og mængdefelter, så de er venstrejusterede.
- Bemærk, at alle de felter, som du udfylder gennem BDC, skal behandles som tegntypefelter, mens du udfylder BDC-datatabellen.
- På nogle skærmbilleder, når du udfylder værdier i en tabelkontrol ved hjælp af BDC, skal du notere, hvor mange rækker der er til stede på en standardstørrelse på skærmen og kode for lige så mange rækker. Hvis du skal udfylde flere rækker, skal du kode for "Page down"-funktionalitet, som du ville gøre, når du udfylder tabelkontrollen manuelt.
- Antallet af linjer, der vises i ovenstående scenarie, vil variere baseret på den skærmstørrelse, som brugeren bruger. Så kod altid for standard skærmstørrelse og få din BDC til altid at fungere i standard skærmstørrelse, uanset hvad brugeren beholder sin skærmstørrelse som.
Oprettelse af batch-inputsession
- Åbn sessionen med batch-input ved hjælp af funktionsmodulet BDC_OPEN_GROUP.
- For hver transaktion i sessionen:
- Udfyld BDCDATA'en med værdier for alle skærmbilleder og felter, der behandles i transaktionen.
- Overfør transaktionen til sessionen med BDC_INSERT.
- Luk batchinputsessionen med BDC_CLOSE_GROUP
Eksempel: BDC ved hjælp af opkaldstransaktion
Programmet nedenfor viser transaktionsmetoden "call transaction" fra start til slut. Det bygger BDCDATA-tabellen for to skærmbilleder af en transaktion og kører den i tilstand N (ingen visning) med en fejltabel, så fejl kan rapporteres.
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.
💡 Tip: MODE-parameteren styrer displayet: A viser alle skærmbilleder, E stopper kun ved en fejl, og N kører lydløst. Brug E under test og N til produktionsbelastningen.
Batch Input Recorder
Batch input recorder (System > Services > Batch input > Recorder) registrerer transaktioner, der indtastes manuelt, og opretter en batch input session, som kan udføres senere ved hjælp af SM35.
- Start batch-input-optageren ved at vælge Recording-trykknappen fra batch-input-startskærmen.
- Optagelsesnavnet er et brugerdefineret navn og kan matche navnet på batchinputsessionen, som kan oprettes ud fra optagelsen.
- Indtast en SAP transaktion og begynde at bogføre transaktionen.
- Når du har afsluttet udsendelsen af en SAP transaktion vælger du enten Hent Transaktion og Gem for at afslutte registreringen eller Næste Transaktion og bogføre endnu en transaktion.
- Når du har gemt optagelsen, kan du oprette en batch-input-session fra optagelsen og/eller generere et batch-input-program fra optagelsen.
- Den batchinputsession, du oprettede, kan nu analyseres ligesom enhver anden batchinputsession.
- Programmet, der genereres af batch-input-optagerens funktion, er et kraftfuldt værktøj til datainterface-programmøren. Det giver en solid base, som derefter kan ændres efter kundens behov.
⚠️ Advarsel: En optagelse optager skærmsekvensen præcis som den skete, så en skærm, der kun vises for bestemte data, f.eks. en pop-up om ufuldstændighed, optages ikke. Test altid det genererede program med data, der udløser alle valgfrie skærmbilleder.



