что такое пакетный ввод sap
BDC – пакетный ввод
BDC – это технология для записи и воспроизведения транзакций. Не всегда известна логика работы транзакции, а провести при помощи нее данные необходимо или нам нужен ввод каких-либо повторяющихся данных.
Транзакция в которой осуществляется запись сеанса пакетного ввода является SHDB или SM35.
Создадим сеанс пакетного ввода зайдем в транзакцию SM35.
Примечание: Запись транзакции будет происходить до первого COMMIT WORK
Попадаем в указанную транзакцию и выполняем необходимый ввод. После чего нажимаем кнопку сохранить.
После сохранения открывается следующий экран. Уже видно, как заполняются поля. Данные последовательности мы можем менять по своему усмотрению, разобраться довольно просто.
Сам сеанс нельзя переносить между системами, но его можно записывать в любой из них. Если есть необходимость использовать его в своей разработке или доработке Можно сгенерировать программу или функциональный модуль.
Вводим параметры также как и при создании обычной программы.
На выходе получаем готовую программу.
Существуют два режима работы.
1. Создать сеанс – создает сеанс пакетного ввода в SM35
2. Call Transaction – запуск транзакции разу. При этом можно ввести режим выполнения и обновления.
Режимы выполнения:
N – запуск в фоновом режиме
A – запуск в диалоговом режиме
E – экраны не отображаются, кроме возникновения ошибок
Режимы обновления
A – COMMIT WORK
S – COMMIT WORK AND WAIT
L – IN UPDATE TASK
Однако, в таком виде программа будет не пригодна для использования. Т.к. файл данных по умолчанию система ищет на сервере. Надо переделывать на чтение файла локального каталога. Программа довольно простая, думаю, особых комментариев не требует. Очень легко корректируются под свои нужды.
Что такое пакетный ввод sap
Автоматическая запись
Автоматическая запись транзакций особенно полезна. Соответствующие структуры сеанса пакетного ввода и программа пакетного ввода могут генерироваться автоматически из записанных транзакций. Автоматическая запись начинается с помощью ►Transaction recorder. После запуска программа записи транзакции выполняет транзакции, которые позже будут перенесены с помощью процедуры пакетного ввода. Сеансы можно генерировать из записей и корректировать их необходимым образом. Затем на следующем шаге можно сгенерировать и при необходимости подкорректировать соответствующую программу АВАР. Такой подход сокращает ручную работу по программированию, которая требовалась ранее.
Когда экранные поля присвоенных транзакций сеанса пакетного ввода были заполнены, сеанс пакетного ввода помещается в очередь пакетного ввода. Сеанс может обрабатываться из очереди: транзакции, которые он содержит, выполняются в фоновом режиме, и данные обрабатываются. База данных использует таблицу APQD для хранения сеанса; таблица одновременно реализует очередь пакетного ввода.
Для выполнения сеанса пакетного ввода имеется два метода:
► Запуск вручную с помощью ►Batch Input; выполнение в диалоге ил в фоновом режиме.
► Автоматический запуск с помощью программы АВАР RSDBCSUB
Для системного администратора мониторинг процессов пакетного ввода является одной из важнейших задач. Во время процедуры пакетного ввода большие объемы данных импортируются в базу данных SAP R/3 в относительно короткое время. Соответственно, системный администратор должен уделять повышенное внимание требуемой в базе данных памяти, увеличенному числу операций записи и возникающему росту объема данных, содержащихся в журналах базы данных. Если планируется перенос данных с помощью пакетного ввода, системный администратор должен быть включен в процесс планирования.
Во время разработки программы пакетной обработки необходимо отметить длину транзакции. Поскольку программы пакетной обработки выполняется в фоновом режиме, на экране не происходит никаких изменений, поэтому с точки зрения базы данных не происходит фиксации изменений (commit). Следовательно, необходимо контролировать длину транзакции с помощью явной фиксации изменений в программе. Доступ к анализу потоков выполнения пакетного ввода и запуск выполнения выполняются с помощью ►Batch Input (см. рис. 13.16). Для анализа есть различные представления. Технические вопросы программы и проблемы содержимого можно разрешить при тесном сотрудничестве между системным администратором, отделами пользователей и разработчиками.
Иногда успешно завершенные сеансы должны удаляться из базы данных, чтобы освободить пространство. Для этого можно использовать отчет RSBDCREO для фоновой обработки. Этот отчет должен выполняться ежедневно как часть стандартных заданий Basis (см. главу 9).
Рис. 13.15. Основной поток данных в процедуре пакетного ввода
Рис. 13.16. Доступ к анализу пакетного ввода
При прямом вводе данные в файле переноса данных подвергаются всем проверкам, которые будут происходить при диалоговом вводе; однако он затем переноситься прямо в систему SAP R/3.
Строго говоря, метод прямого ввода является усовершенствованной процедурой пакетного ввода. Пакетный ввод сначала пересылает данные в сеанс, который присваивает их соответствующим полям экрана; этот шаг не происходит при прямом вводе. Вместо этого метод прямого ввода использует модули функций, доступные в системе для пересылки данных. Разработчик должен затем вызывать соответствующие модули функций. При применении метода пакетного ввода проверка согласованности данных обусловлена использованием экранной технологии; в процедуре прямого ввода эти проверки согласованности выполняются соответствующими модулями функций.
Программы прямого ввода могут запускаться просто для целей тестирования. В этом случае никакой журнал не создается, а повторное выполнение в случае ошибки выполнить невозможно. Соответственно для производственных целей пересылка данных с помощью прямого ввода должна контролироваться в фоновом режиме с помощью ►Direct input administration.
Процедура прямого ввода быстрее; однако, в отличие от процедуры пакетного ввода, она не может перезапускаться автоматически и является менее удобной для пользователей при возникновении ошибок.
Метод быстрого ввода использует другую технику вместо начального переноса данных в сеанс. Переносимые данные сначала записываются во внутреннюю таблицу. Оттуда они обрабатываются с помощью специальной транзакции с помощью оператора АВАР CALL TRANSACTION. Поэтому структура внутренней таблицы должна следовать структуре данных, необходимых для транзакции. При использовании быстрого метода ввода разработчик отвечает за запись в журнал потока выполнения. Поскольку быстрый ввод требует меньше записей в журнале, чем пакетный, то этот ввод быстрее пакетного, но обычно медленнее, чем прямой ввод.
Для переноса данных можно использовать также BAPI. Данные обрабатываются с помощью модели ALE, вызывая BAPI в получающем приложении. Для работы этого метода данные источника должны быть представлены в формате IDoc.
Этот процесс выполняет такие же проверки, что и во время диалогового ввода.
Для однократного или периодического переноса данных из систем, отличных от SAP, можно использовать рабочую среду миграции унаследованных систем (LSMW — Legacy System Migration Workbench). Миграция происходит следующим образом:
1. Чтение структуры данных из одного или нескольких файлов, представленных на сервере приложений или представлений.
2. Преобразование файлов согласно правилам преобразования, многие из которых предписаны. Программы преобразования генерируются по правилам для специальных ситуаций миграции объектов данных, которые не работают на уровне таблиц или полей.
3. Импорт данных в целевую систему через стандартный интерфейс (пакетный ввод, прямой ввод, BAPI или IDoc). Во время переноса данные подвергаются тем же проверкам, что и во время диалогового ввода.
LSMW полностью интегрирована в систему SAP R/3, но не в стандартную поставку до Basis Release 6.10 включительно. Можно загрузить требуемые переносы из SAP Service Marketplace по быстрой ссылке lsmw. Начиная с Basis Release 6.10, требуется Version 3; LSMW 4.0 является интегральным компонентом SAP Web Application Server.
Начиная с SAP R/3 4.6C, среда LSMW интегрирована в рабочую среду переноса данных (Data Transfer Workbench).
Рабочую среду переноса данных (►Data Transfer Workbench) можно использовать для миграции больших объемов данных в систему SAP. Перенос данных управляется проектом: рабочая среда осуществляет управление проектами, которое состоит из извлечения, очистки, преобразования, загрузки и проверки.
Независимо от целевого приложения рабочая среда переноса данных анализирует описание требуемой структуры и интегрирует стандартные программы переноса данных и, если необходимо, дополнительные инструменты, которые были разработаны.
Преобразование работает с данными в формате SAP: интеграцию LSMW можно использовать для чтения данных во внешних форматах и их преобразования. Также поддерживается загрузка данных через пакетный ввод, прямой ввод и BAPI.
Интерфейс SAPconnect заменил предыдущий интерфейс SAPcomm. SAPconnect служит в качестве унифицированного интерфейса для следующих внешних служб:
Особенности работы с сеансами пакетного ввода в транзакции SM35 экспорт в файл и реорганизация
Красовский Андрей Геннадьевич
Заместитель начальника отдела системного администрирования
Пименов Сергей Валерьевич
В этой статье рассказывается о том, как открыть журнал сеанса пакетного ввода в виде ABAP-списка, а также каким образом осуществляется реорганизация сеансов.
Часть 1. Просмотр журнала сеанса пакетного ввода в виде ABAP-списка, экспорт в файл.
Иногда, например после загрузки данных через транзакцию LSMW с типом загрузки Standard Batch / Direct Input или Batch Input Recording, возникает необходимость проанализировать журналы пакетного ввода на предмет ошибок с помощью SM35. Для этого откройте журнал сеанса пакетного ввода на просмотр, как показано на рисунке Рис. 1 и Рис. 2.
Рис. 2. Транзакция SM35 – анализ сеанса пакетного ввода
Чтобы упростить анализ информации в журнале, можно оставить только «Ошибочные» записи, для этого в опциях раздела «Просмотр» выберите параметр «Ошибочные», см. Рис. 3 и Рис. 4
Рис. 3. Транзакция SM35 – кнопка «Опции»
Рис. 4. Транзакция SM35 – Окно «Параметры настройки»
Но даже после того, как в журнале выбраны только ошибочные записи, его анализ остаётся затруднительным, потому что отсутствует возможность поиска по тексту, сортировки или фильтрации. Гораздо удобнее было бы экспортировать журнал пакетного ввода в файл, например, в электронную таблицу, или открыть в виде списка ABAP. Чтобы сделать это, выполните следующие действия:
1. Выберите нужный сеанс пакетного ввода в транзакции SM35 и нажмите на кнопку «Журнал», см. Рис. 5.
Рис. 5. Транзакция SM35 – выбор сеанса пакетного ввода
2. Выберите журнал и нажмите кнопку «Просмотреть», Рис. 6.
Рис. 6. Транзакция SM35 – обзор журналов сеанса пакетного ввода
3. Нажмите на кнопку «Печать» (или в поле для ввода транзакций введите команду =pri и нажмите клавишу «Enter»), Рис. 7, и журнал откроется в виде ABAP-списка, Рис. 8
Рис. 7. Транзакция SM35 – журнал пакетного ввода (только просмотр)
Рис. 8. Транзакция SM35 – журнал пакетного ввода в виде списка ABAP
4. Теперь, если необходимо, его можно распечатать или экспортировать в файл, Рис. 9.
Рис. 9. Транзакция SM35 – журнал пакетного ввода (печать или экспорт в файл)
Часть 2. Реорганизация сеансов пакетного ввода и их журналов.
Конечные пользователи создают большое количество сессий пакетного ввода и обрабатывают их в транзакции SM35. Не все пользователи заботятся об удалении старых сессий и, соответственно, они накапливаются в системе в большом количестве, практически с любым статусом (в обработке, в фоновой обработке, обработанные, ошибочные и др.). Поскольку ненужные сессии занимают системные ресурсы, их рекомендуется удалять из системы. Удаление успешно обработанных сессий и их журналов выполняется с помощью стандартного отчёта RSBDCREO, а также отчёта RSBDC_REORG (начиная с выпуска 4.6D.), который является альтернативой с видоизмененным интерфейсом.
В системе SAP существует стандартное фоновое задание SAP_REORG_BACTHINPUT, для которого шагом выполнения служит отчёт RSBDCREO, запускаемый со стандартным вариантом SAP&001.
Параметры планирования задания SAP_REORG_BATCHINPUT представлены на Рис. 10.
Рис. 10. Параметры планирования задания SAP_REORG_BATCHINPUT
Обзор списка шагов задания SAP_REORG_BATCHINPUT представлен на Рис. 11.
Рис. 11. Обзор списка шагов задания SAP_REORG_BATCHINPUT
Экран задания параметров стандартного варианта SAP&001отчёта RSBDCREO показан на Рис. 12.
Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland
Иван Болховитинов
Вводная
Пакетный ввод – это симуляция работы пользователя в одной определённой транзакции.
Программный пакетный ввод может только то, что может пользователь.
Как правило BDC используют для проведения массовых и повторяющихся действий (создание или изменение объектов или документов).
Пример
Для примера возьмём изменение основного средства в транзакции AS02. Нам необходимо массово изменить в карточке ОС табельный номер материально-ответственного лица.
Шаг первый
Просто отрабатываем транзакцию, что бы потом при реальной записи не было дополнительных телодвижений.
Шаг второй
Делаем запись. Заходим в SHDB и делаем в ней чистовой прогон транзакции AS02.
После это смотрим на получившуюся запись.
Данную последовательность вполне успешно можно читать “с листа”.
Группы – это последовательный проход экранов. Внутри групп пользователь тыкает мышкой, изменяет поля и нажимает кнопки. После нажатия кнопки происходит переход к следующему экрану.
Можно конечно воспользоваться кнопкой “Создать программку”, но это не мой метод:
Шаг третий
Копируем запись по Ctrl+Y и грубо вставляем в нашу программу “как есть” и делаем зачистку ненужного:
Итого должны остаться:
Шаг четвёртый
Заворачиваем эти строки в ABAP – мы должны переложить эти строки в таблицу со структурой BDCDATA. Практически мы должны получить что-то вроде исходной таблицы записи.
Для этого лучше воспользоваться какими-то мелкими помогалками (инклюдами, макросами). Я пользуюсь вот этим.
(PS: Ссылка умерла: другой подход).
Получится что-то вроде этого:
perform bdc_dynpro using ‘SAPLAIST’ ‘0100’.
perform bdc_field using ‘BDC_OKCODE’ ‘/00’.
perform bdc_field using ‘ANLA-ANLN1’ gt_report-anln1_new.
perform bdc_field using ‘ANLA-ANLN2’ gt_report-anln2_new.
perform bdc_field using ‘ANLA-BUKRS’ gt_report-bukrs.
perform bdc_dynpro using ‘SAPLAIST’ ‘1000’.
perform bdc_field using ‘BDC_OKCODE’ ‘=TAB02’.
perform bdc_dynpro using ‘SAPLAIST’ ‘1000’.
perform bdc_field using ‘BDC_OKCODE’ ‘=BUCH’.
perform bdc_field using ‘ANLZ-PERNR’ gt_report-pernr_new.
perform bdc_dynpro using ‘SAPLAIST’ ‘3020’.
perform bdc_field using ‘BDC_OKCODE’ ‘=YES’.
perform bdc_dynpro using ‘SAPLAIST’ ‘1000’.
gs_bdc_params-dismode = ‘N’.
refresh gt_bdc_result.
call transaction ‘AS02’ using gt_bdc_data
options from gs_bdc_params
messages into gt_bdc_result.
Это уже с добавленной инициализацией сверху и непосредственным вызовом транзакции снизу.
Средняя часть – это всего лишь формирование таблицы gt_bdc_data.
Читается она блоками следующим образом:
Если у вас есть поле с числовыми значениями, то вам понадобятся дополнительные обработки, так как формат числа на экране и внутри ABAP может отличаться:
lv_wrbtr = bseg-wrbtr.
CONDENSE lv_wrbtr.
REPLACE ALL OCCURRENCES OF ‘.’ IN lv_wrbtr WITH ‘,’.
Ну и с датой история попроще.
[TODO] Собраться добавить эти штуки в инклюд
Конструкция “dismode = N” говорит о невидимом выполнении. В целях отладки пакетника меняете этот код на A (видимое выполнение) или E (только ошибки).
Ошибки будут находиться во внутренней таблице gt_bdc_result. Там только коды, но русский текст вы можете получить при помощи ФМ RPY_MESSAGE_COMPOSE.