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.
Сеанс пакетного ввода может быть обработан тремя способами.
- На переднем плане
- на заднем фоне
- Во время обработки, с отображением ошибки
Если вы хотите протестировать передачу данных, вам следует обрабатывать сеансы пакетного ввода на переднем плане или использовать отображение ошибок.
Если вы хотите выполнить передачу данных или проверить ее производительность, вам следует обрабатывать сеансы в фоновом режиме.
На что следует обратить внимание при использовании классического метода пакетного ввода
- Syncхроническая обработка
- Передача данных для нескольких транзакций.
- Syncсинхронное обновление базы данных.
- Журнал процесса пакетного ввода создается для каждого сеанса.
- Сеанс не может быть создан параллельно.
Вызов метода транзакции.
В этом методе ABAP/4 программа использует оператор CALL TRANSACTION USING для запуска SAP сделка.
Весь процесс пакетного ввода происходит онлайн в программе.
Указывает на Примечание:
- Более быстрая обработка данных
- Асинхронная обработка
- Передача данных для одной транзакции.
- Журнал обработки пакетного ввода не создается.
Классический пакетный ввод против транзакций вызовов
Оба метода позволяют выполнить одну и ту же транзакцию, но различаются по скорости, протоколированию и обработке ошибок. В таблице ниже показано, когда каждый из них является оптимальным выбором.
| Критерии | Классический пакетный ввод | Транзакция вызова |
|---|---|---|
| Техника | BDC_OPEN_GROUP, BDC_INSERT, BDC_CLOSE_GROUP | ВЫЗОВ ТРАНЗАКЦИИ С ИСПОЛЬЗОВАНИЕМ |
| Переработка | 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>.
| имя поля | Тип | Длина | Описание |
|---|---|---|---|
| ПРОГРАММА | CHAR | 8 | Пул модулей |
| ДИНПРО | НУМК | 4 | Номер Динпро |
| ДИНБЕГИН | CHAR | 1 | Запуск динпро |
| ФНАМ | CHAR | 35 | имя поля |
| ФВАЛ | 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 транзакцию и начать публикацию транзакции.
- После того, как вы завершили публикацию SAP транзакции, вы либо выбираете «Получить транзакцию» и «Сохранить», чтобы завершить запись, либо «Следующая транзакция» и опубликовать другую транзакцию.
- После сохранения записи вы можете создать сеанс пакетного ввода из записи и/или создать программу пакетного ввода из записи.
- Созданный вами сеанс пакетного ввода теперь можно анализировать так же, как и любой другой сеанс пакетного ввода.
- Программа, созданная с помощью функции записи пакетного ввода, является мощным инструментом для программиста интерфейса данных. Он обеспечивает прочную основу, которую затем можно изменить в соответствии с требованиями заказчика.
⚠️ Предупреждение: Запись точно фиксирует последовательность событий на экране, поэтому экран, появляющийся только при отображении определенных данных, например, всплывающее окно с сообщением о незавершенном выполнении, не записывается. Всегда тестируйте сгенерированную программу с данными, которые запускают каждый необязательный экран.




