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.
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.
- Klassieke batchinvoermethode.
- 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
- op de voorgrond
- op de achtergrond
- 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
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
U zult doorgaans de volgende reeks stappen volgen om batchinvoer voor uw organisatie te ontwikkelen
- 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.
- Genereer een SAP datastructuren voor gebruik in exportprogramma's.
- Exporteer de gegevens naar een sequentieel bestand. Houd er rekening mee dat de tekenopmaak vereist is door vooraf gedefinieerd SAP batch-invoerprogramma's.
- Indien de SAP meegeleverde BDC-programma's worden niet gebruikt, codeer uw eigen batchinvoerprogramma. Kies een geschikte batchinvoermethode, afhankelijk van de situatie.
- Verwerk de gegevens en voeg deze toe aan het SAP Systeem.
- Analyseer het proceslogboek. Voor de CALL TRANSACTION-methode, waarbij geen goed logboek wordt gemaakt, gebruikt u de berichten die door uw programma zijn verzameld.
- 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
- Analyseer de transactie(s) om batchinvoergegevens te verwerken.
- Bepaal welke batchinvoermethode u wilt gebruiken.
- Gegevens uit een sequentieel bestand lezen
- Voer gegevensconversie of foutcontrole uit.
- Het opslaan van de gegevens in de batchinvoerstructuur, BDCDATA.
- 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
- Open de batchinvoersessiesessie met functiemodule BDC_OPEN_GROUP.
- Voor elke transactie in de sessie:
- Vul de BDCDATA met waarden voor alle schermen en velden die in de transactie worden verwerkt.
- Breng de transactie over naar de sessie met BDC_INSERT.
- 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.
- 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.




