SAP ABAP BDC: Ce este comunicarea de date în loturi?

⚡ Rezumat inteligent

SAP ABAP BDC (Batch Data Communication) transferă date vechi în R/3 prin gestionarea automată a tranzacțiilor standard. Această pagină explică sesiunile de introducere în loturi, metodele clasice și cele de tranzacție prin apel, structura BDCDATA, fluxul de lucru BDC_OPEN_GROUP și înregistratorul de introducere în loturi.

  • 🔄 Scop principal: BDC introduce automat seturi de date în ecranele unei tranzacții, executând fiecare ecran și validare a afacerii așa cum ar face-o un utilizator.
  • 🧾 Sesiune de introducere în lot: O sesiune grupează apelurile de tranzacții cu datele lor de intrare și este stocată în baza de date până la executare.
  • 🛠️ Două metode: Introducerea clasică în batch folosește BDC_OPEN_GROUP, BDC_INSERT și BDC_CLOSE_GROUP, în timp ce metoda tranzacției de apel folosește CALL TRANSACTION USING.
  • 🇧🇷 Alegerea metodei: Intrarea clasică în batch este sincronă cu un jurnal, iar tranzacția de apel este mai rapidă, asincronă și gestionează o singură tranzacție.
  • 🗂️ Structura BDCDATA: Câmpurile PROGRAM, DYNPRO, DYNBEGIN, FNAM și FVAL descriu ecranul, câmpul și valoarea pentru fiecare pas.
  • ⏺️ Recorder: Înregistratorul de intrări în lot capturează o tranzacție manuală și generează o sesiune sau un program BDC gata preparat care rulează ulterior în SM35.

SAP Comunicare de date în loturi ABAP BDC

Introducere în introducerea în lot

Intrarea în lot este utilizată de obicei pentru a transfera date de la sisteme non-R/3 la sisteme R/3 sau pentru a transfera date între sistemele R/3.

Este o tehnică de transfer de date care vă permite să transferați automat seturi de date către ecrane aparținând tranzacțiilor și, astfel, către un SAP sistem. Intrarea în lot este controlată de o sesiune de introducere în lot.

Sesiune de introducere în lot

Grupează o serie de apeluri de tranzacție împreună cu datele de intrare și acțiunile utilizatorului. O sesiune de intrare în lot poate fi utilizată pentru a executa o tranzacție de dialog în introducerea în lot, în care unele sau toate ecranele sunt procesate de sesiune. Sesiunile de introducere în loturi sunt stocate în baza de date ca tabele de bază de date și pot fi utilizate în cadrul unui program ca tabele interne la accesarea tranzacțiilor.

Puncte de reținut

  • BDI funcționează prin efectuarea normală SAP tranzacțiile la fel ca un utilizator, dar execută tranzacția automat.Toate validările de ecran și validarea logicii de afaceri se vor face în timp ce se utilizează Intrarea datelor în lot.
  • Este potrivit pentru introducerea unor cantități mari de date.
  • Nu este necesară nicio interacțiune manuală

Metode de introducere a loturilor

SAP oferă două metode de bază pentru transferul datelor moștenite în sistemul R/3.

  1. Metoda clasică de introducere în lot.
  2. Apelați metoda tranzacției.

Metoda clasică de introducere în lot

În această metodă, un program ABAP/4 citește datele externe către SAP Sistem și stochează într-o sesiune de introducere în lot.

După crearea sesiunii, puteți rula sesiunea pentru a executa SAP tranzacție în ea.

Această metodă folosește modulele funcționale BDC_OPEN, BDC_INSERT și BDC_CLOSE

Sesiunea de intrare în lot poate fi procesată în 3 moduri

  1. În prim-plan
  2. In fundal
  3. În timpul procesării, cu afișare a erorilor

Ar trebui să procesați sesiunile de introducere în lot în prim-plan sau folosind afișarea erorilor dacă doriți să testați transferul de date.

Dacă doriți să executați transferul de date sau să testați performanța acestuia, ar trebui să procesați sesiunile în fundal.

Puncte de remarcat despre metoda clasică de introducere în lot

  • Syncprelucrare cinstită
  • Transferați date pentru mai multe tranzacții.
  • Syncactualizare a bazei de date.
  • Pentru fiecare sesiune este generat un jurnal al procesului de introducere în lot.
  • Sesiunea nu poate fi generată în paralel.

Apelați metoda tranzacției.

În această metodă ABAPProgramul /4 folosește instrucțiunea CALL TRANSACTION USING pentru a rula un SAP tranzacţie.

Întregul proces de introducere a loturilor are loc online în program

Apelați metoda tranzacției

Puncte de reținut:

  • Procesare mai rapidă a datelor
  • Procesare asincronă
  • Transferați date pentru o singură tranzacție.
  • Nu este generat niciun jurnal de procesare a intrărilor în lot.

Intrare clasică în lot vs. tranzacție de apel

Cele două metode ajung la aceeași tranzacție, dar diferă în ceea ce privește viteza, înregistrarea în jurnal și gestionarea erorilor. Tabelul de mai jos arată când fiecare dintre ele este alegerea potrivită.

Criterii Introducerea clasică în loturi Tranzacție de apel
Metoda de măsurare BDC_OPEN_GROUP, BDC_INSERT, BDC_CLOSE_GROUP TRANZACȚIE DE APEL UTILIZÂND
Prelucrare Synccronică, rulează mai târziu de la SM35 Rulează online, în program
Tranzacții Mai multe tranzacții într-o singură sesiune O singură tranzacție per apel
Log Un jurnal de procese per sesiune este generat automat Fără jurnal, programul colectează mesajele
Viteză Mai lent, dar robust și repornibil Mai rapid
Cel mai bun pentru Încărcări moștenite mari, unice, care trebuie să fie auditabile Transferuri interactive sau de mare viteză ale unui document

Odată cu compararea metodelor, următoarea secțiune prezintă procedura generală pe care o urmează un proiect.

Proceduri de introducere a loturilor

Proceduri de introducere a loturilor

În mod obișnuit, veți respecta următoarea secvență de pași pentru a dezvolta Intrarea în lot pentru organizația dvs

  1. Analiza datelor moștenite. Determinați modul în care datele care urmează să fie transferate vor fi mapate în SAP Structura. Luați în considerare, de asemenea, conversiile necesare tipului de date sau lungimii datelor.
  2. Genera SAP structuri de date pentru utilizare în programe de export.
  3. Exportați datele într-un fișier secvenţial. Rețineți că formatul de caractere este cerut de predefinit SAP programe de introducere în lot.
  4. În cazul în care SAP programele BDC furnizate nu sunt utilizate, codificați propriul program de introducere în lot. Alegeți o metodă adecvată de introducere a lotului în funcție de situație.
  5. Procesați datele și adăugați-le la SAP Sistem și.
  6. Analizați jurnalul procesului. Pentru metoda CALL TRANSACTION, în care nu este creat un jurnal adecvat, utilizați mesajele colectate de programul dumneavoastră.
  7. Din rezultatele analizei procesului, corectați și reprocesați datele eronate.

Scrierea programului BDC

Puteți observa următorul proces pentru a vă scrie programul BDC

  1. Analizați tranzacția (tranzacțiile) pentru a procesa datele de intrare în lot.
  2. Decideți metoda de introducere a lotului de utilizat.
  3. Citiți date dintr-un fișier secvenţial
  4. Efectuați conversia datelor sau verificarea erorilor.
  5. Stocarea datelor în structura de intrare în lot, BDCDATA.
  6. Generați o sesiune de introducere în lot pentru introducerea în lot clasică sau procesați datele direct cu instrucțiunea CALL TRANSACTION USING.

Structura datelor de intrare în lot

Declarație privind structura datelor de intrare în lot

DATA : BEGIN OF < bdc table>

OCCURS <occurs parameters>.

INCLUDE STRUCTURE BDCDATA.

DATA:END OF <bdc table>.
Numele domeniului Tip Lungime Descriere
PROGRAMUL REZERVOR 8 Pool de module
DYNPRO NUMC 4 Numărul Dynpro
DYNBEGIN REZERVOR 1 Pornirea unui dynpro
FNAM REZERVOR 35 Numele domeniului
FVAL REZERVOR 80 Valoarea câmpului

Ordinea câmpurilor din datele pentru un anumit ecran nu are nicio semnificație

Puncte de remarcat

  • La completarea datelor BDC, asigurați-vă că luați în considerare setările utilizatorului. Acest lucru este relevant în special pentru completarea câmpurilor care implică numere (cum ar fi cantitate, sumă). Setările utilizatorului sunt cele care decid ce grup este...ping caracter pentru numere De exemplu: Un număr cincizeci de mii poate fi scris ca 50,000.00 sau 50.000,00 în funcție de setările utilizatorului.
  • Condensați câmpul FVAL pentru câmpurile de cantitate și cantitate, astfel încât acestea să fie aliniate la stânga.
  • Rețineți că toate câmpurile pe care le completați prin BDC ar trebui tratate ca câmpuri de tip caracter în timp ce populați tabelul de date BDC.
  • În unele ecrane, când populați valori într-un control de tabel folosind BDC, trebuie să observați câte rânduri sunt prezente pe o dimensiune implicită a ecranului și codificați pentru cât mai multe rânduri. Dacă trebuie să populați mai multe rânduri, atunci trebuie să codificați pentru funcționalitatea „În jos”, așa cum ați proceda atunci când completați manual controlul tabelului.
  • Numărul de linii care ar apărea în scenariul de mai sus va diferi în funcție de dimensiunea ecranului pe care o folosește utilizatorul. Deci, codificați întotdeauna pentru dimensiunea ecranului standard și faceți ca BDC să funcționeze întotdeauna la dimensiunea ecranului standard, indiferent de dimensiunea ecranului pe care utilizatorul își păstrează.

Crearea sesiunii de introducere a lotului

  1. Deschideți sesiunea de sesiune de introducere în lot folosind modulul funcțional BDC_OPEN_GROUP.
  2. Pentru fiecare tranzacție din sesiune:
  3. Completați BDCDATA cu valori pentru toate ecranele și câmpurile procesate în tranzacție.
  4. Transferați tranzacția în sesiune cu BDC_INSERT.
  5. Închideți sesiunea de introducere în lot cu BDC_CLOSE_GROUP

Exemplu: BDC folosind tranzacții de apel

Programul de mai jos prezintă metoda tranzacției de apel de la un capăt la altul. Acesta construiește tabelul BDCDATA pentru două ecrane ale unei tranzacții și îl rulează în modul N (fără afișare) cu un tabel de erori, astfel încât erorile să poată fi raportate.

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.

💡 Sfat: Parametrul MODE controlează afișajul: A afișează toate ecranele, E se oprește doar la o eroare, iar N rulează silențios. Folosiți E în timpul testării și N pentru sarcina de producție.

Înregistrator de intrare în loturi

Înregistratorul de intrare în lot (Sistem > Servicii > Intrare în lot > Înregistrare) înregistrează tranzacțiile care sunt introduse manual și creează o sesiune de introducere a lotului care poate fi executată ulterior folosind SM35.

Înregistrator de intrare în loturi

  • Începeți înregistratorul de introducere a lotului selectând butonul Înregistrare din ecranul inițial de introducere a lotului.
  • Numele înregistrării este un nume definit de utilizator și se poate potrivi cu numele sesiunii de introducere a lotului care poate fi creat din înregistrare.
  • Introduceţi un SAP tranzacție și începe să postezi tranzacția.
  • După ce ați finalizat postarea a SAP tranzacție fie alegeți Obține tranzacție și salvați pentru a încheia înregistrarea, fie Tranzacția următoare și publicați o altă tranzacție.
  • Odată ce ați salvat înregistrarea, puteți crea o sesiune de introducere lot din înregistrare și/sau genera un program de introducere lot din înregistrare.
  • Sesiunea de introducere în lot pe care ați creat-o poate fi acum analizată la fel ca orice altă sesiune de introducere în lot.
  • Programul care este generat de funcția înregistratorului de intrare în loturi este un instrument puternic pentru programatorul de interfețe de date. Oferă o bază solidă care poate fi apoi modificată în funcție de cerințele clientului.

⚠️ Atenție: O înregistrare surprinde secvența ecranului exact așa cum s-a întâmplat, astfel încât un ecran care apare doar pentru anumite date, cum ar fi o fereastră pop-up incompletă, nu este înregistrat. Testați întotdeauna programul generat cu date care declanșează fiecare ecran opțional.

Întrebări frecvente

BDC_OKCODE conține codul funcției pe care un utilizator l-ar declanșa cu un buton sau o tastă, cum ar fi /00 pentru Enter sau =SAVE pentru Save. Acesta indică ecranului ce acțiune trebuie efectuată după completarea câmpurilor.

SM35 este monitorul de introducere în loturi. Acesta listează sesiunile create prin introducerea în loturi clasică, le rulează în prim-plan sau fundal și afișează jurnalul de procese, astfel încât tranzacțiile eșuate să poată fi analizate și reprocesate.

BDC este încă utilizat acolo unde nu există BAPI, deoarece reutilizează validările de ecran ale unei tranzacții. LSMW încapsulează BDC, înregistrările și BAPI-urile într-un singur instrument de migrare și... BAPI este preferat atunci când este disponibilă o API stabilă.

Da. Asistenții inteligenți artificiali din instrumentele de dezvoltare ABAP preiau o înregistrare sau o listă de ecrane și schițează popularea BDCDATA, blocul CALL TRANSACTION și gestionarea mesajelor. Dezvoltatorul mapează fișierul sursă și testează încărcarea.

Instrumentele de inteligență artificială profilează fișierul vechi, semnalează câmpurile obligatorii lipsă și neconcordanțele de format înainte de încărcare și rezumă ulterior jurnalul de introducere a datelor în lot, astfel încât înregistrările eronate să poată fi corectate și reprocesate mai rapid.

Rezumați această postare cu: