SAP ABAP BDC: Какво е пакетна комуникация на данни?
⚡ Умно обобщение
SAP ABAP BDC (Комуникация на пакетни данни) прехвърля стари данни в R/3, като автоматично управлява стандартните транзакции. Тази страница обяснява сесиите за пакетно въвеждане, класическите методи за транзакции и методите за транзакции с извикване, структурата BDCDATA, работния процес BDC_OPEN_GROUP и записващото устройство за пакетно въвеждане.

Въведение в пакетното въвеждане
Пакетното въвеждане обикновено се използва за прехвърляне на данни от различни от R/3 системи към R/3 системи или за прехвърляне на данни между R/3 системи.
Това е техника за прехвърляне на данни, която ви позволява автоматично да прехвърляте набори от данни към екрани, принадлежащи на транзакции, и по този начин към SAP система. Пакетното въвеждане се контролира от сесия за пакетно въвеждане.
Сесия за пакетно въвеждане
Групира поредица от извиквания на транзакции заедно с входни данни и потребителски действия. Сесия за пакетно въвеждане може да се използва за изпълнение на диалогова транзакция при групово въвеждане, където някои или всички екрани се обработват от сесията. Сесиите за пакетно въвеждане се съхраняват в базата данни като таблици на база данни и могат да се използват в рамките на програма като вътрешни таблици при достъп до транзакции.
Точки за отбелязване
- BDI работи, като извършва нормално SAP транзакции точно както би направил потребителят, но изпълнява транзакцията автоматично.Всички проверки на екрана и валидиране на бизнес логиката ще се извършват, докато се използва пакетно въвеждане на данни.
- Подходящ е за въвеждане на големи количества данни.
- Не е необходимо ръчно взаимодействие
Методи за пакетно въвеждане
SAP предоставят два основни метода за прехвърляне на наследени данни в системата R/3.
- Класически метод на пакетно въвеждане.
- Метод на транзакция при повикване.
Класически метод на пакетно въвеждане
При този метод програма ABAP/4 чете външните данни на SAP Система и съхранява в сесия за групово въвеждане.
След като създадете сесията, можете да стартирате сесията, за да изпълните SAP сделка в него.
Този метод използва функционалните модули BDC_ OPEN, BDC_INSERT и BDC_CLOSE
Сесията за пакетно въвеждане може да се обработва по 3 начина
- На преден план
- На заден план
- По време на обработка, с показване на грешка
Трябва да обработвате сесии за пакетно въвеждане на преден план или да използвате дисплея за грешки, ако искате да тествате прехвърлянето на данни.
Ако искате да изпълните прехвърлянето на данни или да тествате неговата производителност, трябва да обработите сесиите във фонов режим.
Точки, които трябва да се отбележат относно класическия метод на пакетно въвеждане
- Syncхронична обработка
- Прехвърляне на данни за множество транзакции.
- Synchronous актуализация на база данни.
- За всяка сесия се генерира регистър на процеса на групово въвеждане.
- Сесията не може да се генерира паралелно.
Метод на транзакция при повикване.
При този метод ABAP/4 програмата използва оператор CALL TRANSACTION USING, за да изпълни SAP транзакция.
Целият процес на групово въвеждане се извършва онлайн в програмата
Точки за отбелязване:
- По-бърза обработка на данни
- Асинхронна обработка
- Прехвърляне на данни за една транзакция.
- Не се генерира регистрационен файл за обработка на пакетно въвеждане.
Класически пакетен вход срещу транзакция за повикване
Двата метода достигат до една и съща транзакция, но се различават по скорост, регистриране и обработка на грешки. Таблицата по-долу показва кога всеки от тях е правилният избор.
| Критерии | Класически пакетен вход | Транзакция с обаждане |
|---|---|---|
| Техника | BDC_ОТВОРЕНА_ГРУПА, BDC_ВМЪКВАНЕ, BDC_ЗАТВОРЕНА_ГРУПА | ИЗПОЛЗВАНЕ НА ТРАНЗАКЦИЯ ЗА ОБАЖДАНЕ |
| Обработване | Syncхроничен, изпълнява се по-късно от SM35 | Изпълнява се онлайн, в програмата |
| Сделки | Много транзакции в една сесия | Една транзакция на обаждане |
| Вход | Дневник на процеса се генерира автоматично за всяка сесия | Няма лог, програмата събира съобщенията |
| Скорост | По-бавен, но стабилен и с възможност за рестартиране | По-бързо |
| Най - доброто за | Големи, еднократни, наследени зареждания, които трябва да могат да бъдат одитирани | Интерактивни или високоскоростни трансфери на един документ |
След сравненията на методите, в следващия раздел е представена цялостната процедура, която следва един проект.
Процедури за пакетно въвеждане
Обикновено ще спазвате следната последователност от стъпки, за да разработите пакетно въвеждане за вашата организация
- Анализ на наследените данни. Определете как данните, които трябва да бъдат прехвърлени, да бъдат картографирани в SAP Структура. Също така обърнете внимание на необходимите преобразувания на тип данни или дължина на данните.
- Генериране SAP структури от данни за използване в програми за експортиране.
- Експортирайте данните в последователен файл. Обърнете внимание, че форматът на знаците се изисква от предварително зададения SAP програми за пакетно въвеждане.
- Ако SAP предоставените BDC програми не се използват, кодирайте своя собствена програма за пакетно въвеждане. Изберете подходящ метод за групово въвеждане според ситуацията.
- Обработете данните и ги добавете към SAP Система.
- Анализирайте дневника на процеса. За метода CALL TRANSACTION, където не се създава правилен журнал, използвайте съобщенията, събрани от вашата програма.
- От резултатите от анализа на процеса коригирайте и обработете повторно грешните данни.
Писане на BDC програма
Можете да наблюдавате следния процес, за да напишете вашата BDC програма
- Анализирайте транзакцията(ите), за да обработите пакетно въведени данни.
- Решете метода на групово въвеждане, който да използвате.
- Четене на данни от последователен файл
- Извършете преобразуване на данни или проверка на грешки.
- Съхраняване на данните в структурата за групово въвеждане, BDCDATA.
- Генерирайте сесия за пакетно въвеждане за класическо пакетно въвеждане или обработете данните директно с оператор CALL TRANSACTION USING.
Структура на пакетните входни данни
Декларация на структурата на пакетните входни данни
DATA : BEGIN OF < bdc table> OCCURS <occurs parameters>. INCLUDE STRUCTURE BDCDATA. DATA:END OF <bdc table>.
| Име на полето | Тип | Дължина | Descriptйон |
|---|---|---|---|
| ПРОГРАМА | CHAR | 8 | Модулен басейн |
| DYNPRO | NUMC | 4 | Dynpro номер |
| DYNBEGIN | CHAR | 1 | Стартиране на dynpro |
| FNAM | CHAR | 35 | Име на полето |
| FVAL | CHAR | 80 | Стойност на полето |
Редът на полетата в данните за даден екран не е от никакво значение
Посочва забележка
- Докато попълвате данните за BDC, уверете се, че вземате предвид потребителските настройки. Това е особено важно за попълване на полета, които включват числа (като количество, сума). Потребителските настройки определят каква е групата.ping символ за числа Например: Число петдесет хиляди може да се запише като 50 000,00 или 50 000,00 в зависимост от потребителската настройка.
- Съкратете полето FVAL за полетата за сума и количество, така че да са подравнени вляво.
- Обърнете внимание, че всички полета, които попълвате чрез BDC, трябва да се третират като полета от символен тип, докато попълвате таблицата с BDC данни.
- В някои екрани, когато попълвате стойности в контрола на таблица с помощта на BDC, трябва да отбележите колко на брой редове присъстват в размер по подразбиране на екрана и да кодирате толкова редове. Ако трябва да попълните повече редове, тогава трябва да кодирате функционалността „Page down“, както бихте направили, когато попълвате контролата на таблицата ръчно.
- Броят на редовете, които ще се появят в горния сценарий, ще се различава в зависимост от размера на екрана, който потребителят използва. Затова винаги кодирайте за стандартен размер на екрана и накарайте вашия BDC да работи винаги в стандартен размер на екрана, независимо от това какъв размер на екрана поддържа потребителят.
Създаване на сесия за пакетно въвеждане
- Отворете сесията на сесията за пакетно въвеждане, като използвате функционален модул BDC_OPEN_GROUP.
- За всяка транзакция в сесията:
- Попълнете BDCDATA със стойности за всички екрани и полета, обработени в транзакцията.
- Прехвърлете транзакцията към сесията с BDC_INSERT.
- Затворете сесията за пакетно въвеждане с BDC_CLOSE_GROUP
Пример: BDC, използващ транзакция на повикване
Програмата по-долу показва метода за извикване на транзакции от край до край. Тя изгражда таблицата BDCDATA за два екрана на транзакция и я изпълнява в режим N (без показване) с таблица с грешки, така че да могат да се докладват неуспехи.
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.
💡 Съвет: Параметърът MODE контролира дисплея: A показва всички екрани, E спира само при грешка, а N работи безшумно. Използвайте E по време на тестване, а N за производствено натоварване.
Записващо устройство за пакетно въвеждане
Записващо устройство за пакетно въвеждане (Система > Услуги > Пакетно въвеждане > Записващо устройство) записва транзакции, които са въведени ръчно, и създава сесия за пакетно въвеждане, която може да бъде изпълнена по-късно с помощта на SM35.
- Стартирайте записващото устройство за партидно въвеждане, като изберете бутона Записване от началния екран за партидно въвеждане.
- Името на записа е дефинирано от потребителя име и може да съответства на името на сесията за пакетно въвеждане, което може да бъде създадено от записа.
- Въведете SAP транзакция и започнете да публикувате транзакцията.
- След като завършите публикуването на a SAP транзакция, изберете или Получаване на транзакция и запазване, за да прекратите записа, или Следваща транзакция и публикуване на друга транзакция.
- След като запазите записа, можете да създадете сесия за групово въвеждане от записа и/или да генерирате програма за групово въвеждане от записа.
- Създадената от вас сесия за пакетно въвеждане вече може да бъде анализирана точно както всяка друга сесия за пакетно въвеждане.
- Програмата, която се генерира от функцията на записващото устройство за пакетно въвеждане, е мощен инструмент за програмиста на интерфейса за данни. Той осигурява солидна основа, която след това може да бъде променяна според изискванията на клиента.
⚠️ Предупреждение: Записът улавя екранната последователност точно както се е случила, така че екран, който се появява само за определени данни, като например изскачащ прозорец за незавършено действие, не се записва. Винаги тествайте генерираната програма с данни, които задействат всеки опционален екран.



