SAP ABAP BDC: Wat is batchdatacommunicatie?

โšก Slimme samenvatting

SAP ABAP BDC (Batch Data Communication) zet bestaande gegevens over naar R/3 door automatisch standaardtransacties uit te voeren. Deze pagina beschrijft batchinvoersessies, de klassieke en call transaction-methoden, de BDCDATA-structuur, de BDC_OPEN_GROUP-workflow en de batchinvoerrecorder.

  • ๐Ÿ”„ Kerndoel: BDC voert automatisch datasets in de schermen van een transactie in en voert elke scherm- en bedrijfsvalidatie uit zoals een gebruiker dat zou doen.
  • ๐Ÿงพ Batch-invoersessie: Een sessie groepeert transactieaanroepen met hun invoergegevens en wordt in de database opgeslagen totdat deze wordt uitgevoerd.
  • ๏ธ Twee methoden: Bij klassieke batchinvoer worden BDC_OPEN_GROUP, BDC_INSERT en BDC_CLOSE_GROUP gebruikt, terwijl de call transaction-methode CALL TRANSACTION USING gebruikt.
  • โ€‹ Methodekeuze: Klassieke batchverwerking is synchroon met een logboek, terwijl transactieverwerking sneller, asynchroon is en รฉรฉn enkele transactie afhandelt.
  • ๐Ÿ—‚๏ธ BDCDATA-structuur: De velden PROGRAM, DYNPRO, DYNBEGIN, FNAM en FVAL beschrijven het scherm, het veld en de waarde voor elke stap.
  • ๏ธ recorder: De batchinvoerrecorder registreert een handmatige transactie en genereert een sessie of een kant-en-klaar BDC-programma dat later in SM35 wordt uitgevoerd.

SAP ABAP BDC Batch Data Communication

Inleiding tot batchinvoer

Batchinvoer wordt doorgaans gebruikt om gegevens over te dragen van niet-R/3-systemen naar R/3-systemen of om gegevens over te dragen tussen R/3-systemen.

Het is een techniek voor gegevensoverdracht waarmee u gegevenssets automatisch kunt overbrengen naar schermen die bij transacties horen, en dus naar een SAP systeem. Batchinvoer wordt bestuurd door een batchinvoersessie.

Batch-invoersessie

Groepeert een reeks transactieoproepen samen met invoergegevens en gebruikersacties. Een batchinvoersessie kan worden gebruikt om een โ€‹โ€‹dialoogtransactie uit te voeren in batchinvoer, waarbij sommige of alle schermen door de sessie worden verwerkt. Batchinvoersessies worden in de database opgeslagen als databasetabellen en kunnen binnen een programma worden gebruikt als interne tabellen bij het openen van transacties.

Punten om op te merken

  • BDI werkt door normaal uit te voeren SAP transacties uitvoeren zoals een gebruiker dat zou doen, maar de transactie automatisch uitvoeren.Alle schermvalidaties en bedrijfslogica-validatie worden uitgevoerd met behulp van batchgegevensinvoer.
  • Het is geschikt voor het invoeren van grote hoeveelheden gegevens.
  • Er is geen handmatige interactie vereist

Methoden voor batchinvoer

SAP bieden twee basismethoden voor het overbrengen van oudere gegevens naar het R/3-systeem.

  1. Klassieke batchinvoermethode.
  2. Transactiemethode oproepen.

Klassieke batchinvoermethode

Bij deze methode leest een ABAP/4-programma de externe gegevens naar de SAP Systeem en winkels in een batchinvoersessie.

Nadat u de sessie hebt gemaakt, kunt u de sessie uitvoeren om de SAP transactie daarin.

Deze methode maakt gebruik van de functiemodules BDC_OPEN, BDC_INSERT en BDC_CLOSE

Batchinvoersessie kan op 3 manieren worden verwerkt

  1. op de voorgrond
  2. op de achtergrond
  3. Tijdens de verwerking, met foutweergave

Als u de gegevensoverdracht wilt testen, moet u batch-invoersessies op de voorgrond verwerken of de foutweergave gebruiken.

Als u de gegevensoverdracht wilt uitvoeren of de prestaties ervan wilt testen, moet u de sessies op de achtergrond verwerken.

Aandachtspunten bij de klassieke batchinvoermethode

  • Syncroneuze verwerking
  • Gegevens overdragen voor meerdere transacties.
  • Syncroneuze database-update.
  • Voor elke sessie wordt een proceslogboek voor batchinvoer gegenereerd.
  • Sessie kan niet parallel worden gegenereerd.

Transactiemethode oproepen.

Bij deze methode: ABAP/4 programma gebruikt de instructie CALL TRANSACTION USING om een SAP transactie.

Het gehele batch-invoerproces vindt online plaats in het programma

Transactiemethode bellen

Aandachtspunten:

  • Snellere verwerking van gegevens
  • Asynchrone verwerking
  • Gegevens overbrengen voor รฉรฉn enkele transactie.
  • Er wordt geen verwerkingslogboek voor batchinvoer gegenereerd.

Klassieke batchinvoer versus oproeptransactie

De twee methoden bereiken dezelfde transactie, maar verschillen in snelheid, logboekregistratie en foutafhandeling. De onderstaande tabel laat zien wanneer welke methode de juiste keuze is.

criteria Klassieke batchinvoer Bel Transactie
Techniek BDC_OPEN_GROUP, BDC_INSERT, BDC_CLOSE_GROUP OPROEPTRANSACTIE GEBRUIKEN
verwerkingsoplossingen Syncchronous, later vertrekken vanaf SM35 Draait online, in het programma.
Transacties Meerdere transacties in รฉรฉn sessie Eรฉn transactie per gesprek.
Log Er wordt automatisch een proceslogboek per sessie gegenereerd. Geen logboek, het programma verzamelt de berichten.
Snelheid Langzamer, maar robuust en herstartbaar. Sneller
Best voor Grote, eenmalige, verouderde gegevensstromen die traceerbaar moeten zijn. Interactieve of snelle overdracht van รฉรฉn document

Na de vergelijking van de methoden beschrijft het volgende onderdeel de algemene procedure die een project volgt.

Batchinvoerprocedures

Batchinvoerprocedures

U zult doorgaans de volgende reeks stappen volgen om batchinvoer voor uw organisatie te ontwikkelen

  1. Analyse van de oude gegevens. Bepaal hoe de gegevens die moeten worden overgedragen, moeten worden toegewezen aan de SAP Structuur. Houd ook rekening met de noodzakelijke datatype- of datalengteconversies.
  2. Genereer een SAP datastructuren voor gebruik in exportprogramma's.
  3. Exporteer de gegevens naar een sequentieel bestand. Houd er rekening mee dat de tekenopmaak vereist is door vooraf gedefinieerd SAP batch-invoerprogramma's.
  4. Indien de SAP meegeleverde BDC-programma's worden niet gebruikt, codeer uw eigen batchinvoerprogramma. Kies een geschikte batchinvoermethode, afhankelijk van de situatie.
  5. Verwerk de gegevens en voeg deze toe aan het SAP Systeem.
  6. Analyseer het proceslogboek. Voor de CALL TRANSACTION-methode, waarbij geen goed logboek wordt gemaakt, gebruikt u de berichten die door uw programma zijn verzameld.
  7. Corrigeer en verwerk de foutieve gegevens opnieuw op basis van de resultaten van de procesanalyse.

BDC-programma schrijven

U kunt het volgende proces volgen om uw BDC-programma te schrijven

  1. Analyseer de transactie(s) om batchinvoergegevens te verwerken.
  2. Bepaal welke batchinvoermethode u wilt gebruiken.
  3. Gegevens uit een sequentieel bestand lezen
  4. Voer gegevensconversie of foutcontrole uit.
  5. Het opslaan van de gegevens in de batchinvoerstructuur, BDCDATA.
  6. Genereer een batchinvoersessie voor klassieke batchinvoer, of verwerk de gegevens rechtstreeks met de CALL TRANSACTION USING-instructie.

Batch-invoergegevensstructuur

Declaratie van batchinvoergegevensstructuur

DATA : BEGIN OF < bdc table>

OCCURS <occurs parameters>.

INCLUDE STRUCTURE BDCDATA.

DATA:END OF <bdc table>.
Veldnaam Type Lengte Beschrijving
PROGRAMMA CHAR 8 Modulepool
DYNPRO NUMC 4 Dynpro-nummer
DYNBEGIN CHAR 1 Een dynpro starten
FNAM CHAR 35 Veldnaam
FVAL CHAR 80 Veldwaarde

De volgorde van de velden binnen de gegevens voor een bepaald scherm is niet van belang

Punten om op te letten

  • Houd bij het invullen van de BDC-gegevens rekening met de gebruikersinstellingen. Dit is vooral belangrijk bij het invullen van velden met getallen (zoals hoeveelheid, bedrag). De gebruikersinstellingen bepalen namelijk wat de groep is.ping Teken voor getallen. Bijvoorbeeld: het getal vijftigduizend kan worden geschreven als 50,000.00 of 50.000,00, afhankelijk van de gebruikersinstelling.
  • Verklein het FVAL-veld voor bedrag- en hoeveelheidsvelden, zodat ze uitgelijnd blijven.
  • Houd er rekening mee dat alle velden die u via BDC invult, moeten worden behandeld als velden voor het tekentype bij het invullen van de BDC-gegevenstabel.
  • Wanneer u in sommige schermen waarden in een tabelbesturingselement invult met behulp van BDC, moet u noteren hoeveel rijen aanwezig zijn op een standaardgrootte van het scherm en coderen voor evenveel rijen. Als u meer rijen moet vullen, moet u coderen voor de โ€œPage downโ€-functionaliteit, net zoals u zou doen wanneer u het tabelbesturingselement handmatig invult.
  • Het aantal regels dat in het bovenstaande scenario zou verschijnen, zal verschillen op basis van de schermgrootte die de gebruiker gebruikt. Codeer dus altijd voor standaard schermgrootte en zorg ervoor dat uw BDC altijd in standaard schermgrootte werkt, ongeacht hoe de gebruiker zijn schermgrootte aanhoudt.

Batchinvoersessie maken

  1. Open de batchinvoersessiesessie met functiemodule BDC_OPEN_GROUP.
  2. Voor elke transactie in de sessie:
  3. Vul de BDCDATA met waarden voor alle schermen en velden die in de transactie worden verwerkt.
  4. Breng de transactie over naar de sessie met BDC_INSERT.
  5. Sluit de batchinvoersessie met BDC_CLOSE_GROUP

Voorbeeld: BDC met behulp van een transactieoproep

Het onderstaande programma laat de volledige werking van de call transaction-methode zien. Het bouwt de BDCDATA-tabel op voor twee schermen van een transactie en voert deze uit in modus N (geen weergave) met een foutentabel, zodat fouten kunnen worden gerapporteerd.

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: De parameter MODE bepaalt de weergave: A toont alle schermen, E stopt alleen bij een fout en N draait stil. Gebruik E tijdens het testen en N voor de productieomgeving.

Batchinvoerrecorder

Met de batchinvoerrecorder (Systeem > Services > Batchinvoer > Recorder) worden handmatig ingevoerde transacties geregistreerd en wordt een batchinvoersessie gemaakt die later met SM35 kan worden uitgevoerd.

Batchinvoerrecorder

  • Start de batchinvoerrecorder door de opnameknop te selecteren in het beginscherm van de batchinvoer.
  • De opnamenaam is een door de gebruiker gedefinieerde naam en kan overeenkomen met de naam van de batchinvoersessie die op basis van de opname kan worden gemaakt.
  • Voer een SAP transactie en begin met het boeken van de transactie.
  • Nadat u klaar bent met het plaatsen van een SAP transactie, kiest u voor Transactie ophalen en opslaan om de opname te beรซindigen, of voor Volgende transactie en een nieuwe transactie te boeken.
  • Nadat u de opname heeft opgeslagen, kunt u van de opname een batchinvoersessie maken en/of een batchinvoerprogramma van de opname genereren.
  • De batchinvoersessie die u hebt aangemaakt, kan nu net als elke andere batchinvoersessie worden geanalyseerd.
  • Het programma dat wordt gegenereerd door de functie van de batchinvoerrecorder is een krachtig hulpmiddel voor de data-interfaceprogrammeur. Het biedt een solide basis die vervolgens kan worden aangepast aan de wensen van de klant.

โš ๏ธ Waarschuwing: Een opname legt de schermsequentie exact vast zoals deze zich voordeed. Schermen die alleen bij bepaalde gegevens verschijnen, zoals een pop-upvenster voor onvolledige gegevens, worden daarom niet opgenomen. Test het gegenereerde programma altijd met gegevens die alle optionele schermen activeren.

Veelgestelde vragen

BDC_OKCODE bevat de functiecode die een gebruiker activeert met een knop of toets, zoals /00 voor Enter of =SAVE voor Opslaan. Deze code geeft het scherm aan welke actie moet worden uitgevoerd nadat de velden zijn ingevuld.

SM35 is de batchinvoermonitor. Deze toont de sessies die zijn aangemaakt door klassieke batchinvoer, voert ze uit op de voorgrond of achtergrond en toont het proceslogboek, zodat mislukte transacties kunnen worden geanalyseerd en opnieuw verwerkt.

BDC wordt nog steeds gebruikt waar geen BAPI bestaat, omdat het de schermvalidaties van een transactie hergebruikt. LSMW bundelt BDC, opnames en BAPI's in รฉรฉn migratietool, en een BAPI heeft de voorkeur wanneer een stabiele API beschikbaar is.

Ja. AI-assistenten in ABAP-ontwikkeltools nemen een opname of een schermlijst en stellen de BDCDATA-vulling, het CALL TRANSACTION-blok en de berichtafhandeling op. De ontwikkelaar koppelt het bronbestand en test het laden.

AI-tools analyseren het oude bestand, signaleren ontbrekende verplichte velden en formaatverschillen vรณรณr het laden, en vatten het batchinvoerlogboek achteraf samen, zodat de foutieve records sneller kunnen worden gecorrigeerd en opnieuw verwerkt.

Vat dit bericht samen met: