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.

  • 🔄 Kerneformål: BDC indlæser automatisk datasæt i skærmbillederne for en transaktion og kører alle skærmbilleder og forretningsvalidering, som en bruger ville gøre.
  • 🧾 Batch-inputsession: En session grupperer transaktionskald med deres inputdata og gemmes i databasen, indtil den udføres.
  • 🛠️ To metoder: Klassisk batch-input bruger BDC_OPEN_GROUP, BDC_INSERT og BDC_CLOSE_GROUP, mens kaldtransaktionsmetoden bruger CALL TRANSACTION USING.
  • ⚖️ Metodevalg: Klassisk batch-input er synkront med en log, og kaldtransaktioner er hurtigere, asynkrone og håndterer en enkelt transaktion.
  • 🗂️ BDCDATA-struktur: Felterne PROGRAM, DYNPRO, DYNBEGIN, FNAM og FVAL beskriver skærmbilledet, feltet og værdien for hvert trin.
  • ⏺️ Optager: Batch-inputoptageren registrerer en manuel transaktion og genererer en session eller et færdigt BDC-program, der kører senere i SM35.

SAP ABAP BDC batchdatakommunikation

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.

  1. Klassisk batch-inputmetode.
  2. 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

  1. i forgrunden
  2. I baggrunden
  3. 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

Opkaldstransaktionsmetode

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

Batch-inputprocedurer

Du vil typisk observere følgende rækkefølge af trin for at udvikle Batch Input til din organisation

  1. 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.
  2. Generer SAP datastrukturer til brug i eksportprogrammer.
  3. Eksporter dataene til en sekventiel fil. Bemærk, at tegnformat er påkrævet af foruddefineret SAP batch input programmer.
  4. Hvis SAP medfølgende BDC-programmer bruges ikke, kode dit eget batch-input-program. Vælg en passende batchinputmetode i henhold til situationen.
  5. Bearbejd dataene og føj dem til SAP Systemkrav.
  6. Analyser procesloggen. Til CALL TRANSACTION-metoden, hvor der ikke oprettes en ordentlig log, skal du bruge de meddelelser, der indsamles af dit program.
  7. 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

  1. Analyser transaktionen/transaktionerne for at behandle batch-inputdata.
  2. Beslut dig for, hvilken batchinputmetode du vil bruge.
  3. Læs data fra en sekventiel fil
  4. Udfør datakonvertering eller fejlkontrol.
  5. Lagring af data i batch-inputstrukturen, BDCDATA.
  6. 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

  1. Åbn sessionen med batch-input ved hjælp af funktionsmodulet BDC_OPEN_GROUP.
  2. For hver transaktion i sessionen:
  3. Udfyld BDCDATA'en med værdier for alle skærmbilleder og felter, der behandles i transaktionen.
  4. Overfør transaktionen til sessionen med BDC_INSERT.
  5. 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.

Batch Input Recorder

  • 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.

Ofte Stillede Spørgsmål

BDC_OKCODE indeholder den funktionskode, som en bruger ville udløse med en knap eller en tast, f.eks. /00 for Enter eller =GEM for Gem. Den fortæller skærmen, hvilken handling der skal udføres, når felterne er udfyldt.

SM35 er batch-input-monitoren. Den viser de sessioner, der er oprettet ved klassisk batch-input, kører dem i forgrunden eller baggrunden og viser procesloggen, så mislykkede transaktioner kan analyseres og genbehandles.

BDC bruges stadig, hvor der ikke findes en BAPI, fordi den genbruger skærmvalideringerne af en transaktion. LSMW pakker BDC, optagelser og BAPI'er ind i ét migreringsværktøj, og en BAPI foretrækkes, når en stabil API er tilgængelig.

Ja. AI-assistenter i ABAP-udviklingsværktøjer tager en optagelse eller en skærmliste og udarbejder et kladde af BDCDATA-populationen, CALL TRANSACTION-blokken og meddelelseshåndteringen. Udvikleren kortlægger kildefilen og tester indlæsningen.

AI-værktøjer profilerer den ældre fil, markerer manglende obligatoriske felter og formatuoverensstemmelser før indlæsning og opsummerer batch-inputloggen bagefter, så de fejlagtige poster kan rettes og genbehandles hurtigere.

Opsummer dette indlæg med: