SAP ABAP BDC: Какво е пакетна комуникация на данни?

⚡ Умно обобщение

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

  • 🔄 Основна цел: BDC автоматично подава набори от данни на екраните на транзакцията, като изпълнява всеки екран и бизнес валидация, както би направил потребител.
  • 🧾 Сесия за пакетно въвеждане: Сесията групира транзакционните повиквания с техните входни данни и се съхранява в базата данни, докато не бъде изпълнена.
  • 🛠️ Два метода: Класическият пакетен вход използва BDC_OPEN_GROUP, BDC_INSERT и BDC_CLOSE_GROUP, докато методът за транзакции с извикване използва CALL TRANSACTION USING.
  • Избор на метод: Класическият пакетен вход е синхронен с лог, а транзакциите за извикване са по-бързи, асинхронни и обработват една единствена транзакция.
  • 🗂️ Структура на BDCDATA: Полетата PROGRAM, DYNPRO, DYNBEGIN, FNAM и FVAL описват екрана, полето и стойността за всяка стъпка.
  • ⏺️ Recorder: Рекордерът за пакетен вход записва ръчна транзакция и генерира сесия или готова BDC програма, която се изпълнява по-късно в SM35.

SAP ABAP BDC Комуникация на пакетни данни

Въведение в пакетното въвеждане

Пакетното въвеждане обикновено се използва за прехвърляне на данни от различни от R/3 системи към R/3 системи или за прехвърляне на данни между R/3 системи.

Това е техника за прехвърляне на данни, която ви позволява автоматично да прехвърляте набори от данни към екрани, принадлежащи на транзакции, и по този начин към SAP система. Пакетното въвеждане се контролира от сесия за пакетно въвеждане.

Сесия за пакетно въвеждане

Групира поредица от извиквания на транзакции заедно с входни данни и потребителски действия. Сесия за пакетно въвеждане може да се използва за изпълнение на диалогова транзакция при групово въвеждане, където някои или всички екрани се обработват от сесията. Сесиите за пакетно въвеждане се съхраняват в базата данни като таблици на база данни и могат да се използват в рамките на програма като вътрешни таблици при достъп до транзакции.

Точки за отбелязване

  • BDI работи, като извършва нормално SAP транзакции точно както би направил потребителят, но изпълнява транзакцията автоматично.Всички проверки на екрана и валидиране на бизнес логиката ще се извършват, докато се използва пакетно въвеждане на данни.
  • Подходящ е за въвеждане на големи количества данни.
  • Не е необходимо ръчно взаимодействие

Методи за пакетно въвеждане

SAP предоставят два основни метода за прехвърляне на наследени данни в системата R/3.

  1. Класически метод на пакетно въвеждане.
  2. Метод на транзакция при повикване.

Класически метод на пакетно въвеждане

При този метод програма ABAP/4 чете външните данни на SAP Система и съхранява в сесия за групово въвеждане.

След като създадете сесията, можете да стартирате сесията, за да изпълните SAP сделка в него.

Този метод използва функционалните модули BDC_ OPEN, BDC_INSERT и BDC_CLOSE

Сесията за пакетно въвеждане може да се обработва по 3 начина

  1. На преден план
  2. На заден план
  3. По време на обработка, с показване на грешка

Трябва да обработвате сесии за пакетно въвеждане на преден план или да използвате дисплея за грешки, ако искате да тествате прехвърлянето на данни.

Ако искате да изпълните прехвърлянето на данни или да тествате неговата производителност, трябва да обработите сесиите във фонов режим.

Точки, които трябва да се отбележат относно класическия метод на пакетно въвеждане

  • Syncхронична обработка
  • Прехвърляне на данни за множество транзакции.
  • Synchronous актуализация на база данни.
  • За всяка сесия се генерира регистър на процеса на групово въвеждане.
  • Сесията не може да се генерира паралелно.

Метод на транзакция при повикване.

При този метод ABAP/4 програмата използва оператор CALL TRANSACTION USING, за да изпълни SAP транзакция.

Целият процес на групово въвеждане се извършва онлайн в програмата

Метод на транзакция при повикване

Точки за отбелязване:

  • По-бърза обработка на данни
  • Асинхронна обработка
  • Прехвърляне на данни за една транзакция.
  • Не се генерира регистрационен файл за обработка на пакетно въвеждане.

Класически пакетен вход срещу транзакция за повикване

Двата метода достигат до една и съща транзакция, но се различават по скорост, регистриране и обработка на грешки. Таблицата по-долу показва кога всеки от тях е правилният избор.

Критерии Класически пакетен вход Транзакция с обаждане
Техника BDC_ОТВОРЕНА_ГРУПА, BDC_ВМЪКВАНЕ, BDC_ЗАТВОРЕНА_ГРУПА ИЗПОЛЗВАНЕ НА ТРАНЗАКЦИЯ ЗА ОБАЖДАНЕ
Обработване Syncхроничен, изпълнява се по-късно от SM35 Изпълнява се онлайн, в програмата
Сделки Много транзакции в една сесия Една транзакция на обаждане
Вход Дневник на процеса се генерира автоматично за всяка сесия Няма лог, програмата събира съобщенията
Скорост По-бавен, но стабилен и с възможност за рестартиране По-бързо
Най - доброто за Големи, еднократни, наследени зареждания, които трябва да могат да бъдат одитирани Интерактивни или високоскоростни трансфери на един документ

След сравненията на методите, в следващия раздел е представена цялостната процедура, която следва един проект.

Процедури за пакетно въвеждане

Процедури за пакетно въвеждане

Обикновено ще спазвате следната последователност от стъпки, за да разработите пакетно въвеждане за вашата организация

  1. Анализ на наследените данни. Определете как данните, които трябва да бъдат прехвърлени, да бъдат картографирани в SAP Структура. Също така обърнете внимание на необходимите преобразувания на тип данни или дължина на данните.
  2. Генериране SAP структури от данни за използване в програми за експортиране.
  3. Експортирайте данните в последователен файл. Обърнете внимание, че форматът на знаците се изисква от предварително зададения SAP програми за пакетно въвеждане.
  4. Ако SAP предоставените BDC програми не се използват, кодирайте своя собствена програма за пакетно въвеждане. Изберете подходящ метод за групово въвеждане според ситуацията.
  5. Обработете данните и ги добавете към SAP Система.
  6. Анализирайте дневника на процеса. За метода CALL TRANSACTION, където не се създава правилен журнал, използвайте съобщенията, събрани от вашата програма.
  7. От резултатите от анализа на процеса коригирайте и обработете повторно грешните данни.

Писане на BDC програма

Можете да наблюдавате следния процес, за да напишете вашата BDC програма

  1. Анализирайте транзакцията(ите), за да обработите пакетно въведени данни.
  2. Решете метода на групово въвеждане, който да използвате.
  3. Четене на данни от последователен файл
  4. Извършете преобразуване на данни или проверка на грешки.
  5. Съхраняване на данните в структурата за групово въвеждане, BDCDATA.
  6. Генерирайте сесия за пакетно въвеждане за класическо пакетно въвеждане или обработете данните директно с оператор 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 да работи винаги в стандартен размер на екрана, независимо от това какъв размер на екрана поддържа потребителят.

Създаване на сесия за пакетно въвеждане

  1. Отворете сесията на сесията за пакетно въвеждане, като използвате функционален модул BDC_OPEN_GROUP.
  2. За всяка транзакция в сесията:
  3. Попълнете BDCDATA със стойности за всички екрани и полета, обработени в транзакцията.
  4. Прехвърлете транзакцията към сесията с BDC_INSERT.
  5. Затворете сесията за пакетно въвеждане с 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 транзакция, изберете или Получаване на транзакция и запазване, за да прекратите записа, или Следваща транзакция и публикуване на друга транзакция.
  • След като запазите записа, можете да създадете сесия за групово въвеждане от записа и/или да генерирате програма за групово въвеждане от записа.
  • Създадената от вас сесия за пакетно въвеждане вече може да бъде анализирана точно както всяка друга сесия за пакетно въвеждане.
  • Програмата, която се генерира от функцията на записващото устройство за пакетно въвеждане, е мощен инструмент за програмиста на интерфейса за данни. Той осигурява солидна основа, която след това може да бъде променяна според изискванията на клиента.

⚠️ Предупреждение: Записът улавя екранната последователност точно както се е случила, така че екран, който се появява само за определени данни, като например изскачащ прозорец за незавършено действие, не се записва. Винаги тествайте генерираната програма с данни, които задействат всеки опционален екран.

Въпроси и Отговори

BDC_OKCODE съдържа функционалния код, който потребителят би задействал с бутон или клавиш, например /00 за Enter или =SAVE за Запазване. Той казва на екрана какво действие да се извърши след попълване на полетата.

SM35 е мониторът за пакетно въвеждане. Той изброява сесиите, създадени от класическото пакетно въвеждане, изпълнява ги на преден план или във фонов режим и показва дневника на процеса, така че неуспешните транзакции да могат да бъдат анализирани и обработени отново.

BDC все още се използва там, където не съществува BAPI, защото използва повторно екранните валидации на транзакцията. LSMW обгръща BDC, записи и BAPI в един инструмент за миграция и... БАПИ е за предпочитане, когато е наличен стабилен API.

Да. AI асистентите в ABAP инструментите за разработка правят запис или списък на екрана и изготвят BDCDATA популацията, блока CALL TRANSACTION и обработката на съобщенията. Разработчикът картографира изходния файл и тества зареждането.

Инструментите с изкуствен интелект профилират стария файл, маркират липсващи задължителни полета и несъответствия във форматите преди зареждането и обобщават лога за пакетно въвеждане след това, така че грешните записи да могат да бъдат коригирани и преработени по-бързо.

Обобщете тази публикация с: