Что такое пакетный ввод sap
Иван Болховитинов
Вводная
Пакетный ввод – это симуляция работы пользователя в одной определённой транзакции.
Программный пакетный ввод может только то, что может пользователь.
Как правило 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.
Что такое пакетный ввод 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 служит в качестве унифицированного интерфейса для следующих внешних служб:
Что такое пакетный ввод sap
Младший специалист |
Зарегистрирован:
Чт, дек 23 2010, 10:54
Сообщения: 67
Откуда: Симферополь
Пол: Мужской
Добрый день. PERFORM DYNPRO USING: PERFORM DYNPRO USING: |
Гуру-эксперт |
Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Младший специалист |
Зарегистрирован:
Чт, дек 23 2010, 10:54
Сообщения: 67
Откуда: Симферополь
Пол: Мужской
FORM DYNPRO USING P_DYNBEGIN IF P_DYNBEGIN = ‘X’. можно подробнее какой код фнкии переходи на другую вкладку. |
Гуру-эксперт |
Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Везде по разному, это от интерфейса зависит. PERFORM DYNPRO USING: PERFORM DYNPRO USING: Судя по Вашим кускам кода, как то так, но мне сложно точно сказать, все это видно в SHDB, у меня нету тр FPP2. Добавил: FPP2 это транзакция по Бизнес партнеру, разве нету подходящих БАПИшек? |
Младший специалист |
Зарегистрирован:
Чт, дек 23 2010, 10:54
Сообщения: 67
Откуда: Симферополь
Пол: Мужской
Младший специалист |
Зарегистрирован:
Чт, дек 23 2010, 10:54
Сообщения: 67
Откуда: Симферополь
Пол: Мужской
Часовой пояс: UTC + 3 часа Кто сейчас на конференцииСейчас этот форум просматривают: Korvax |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения |
Логотип © 2006 Андрей Горшков
Поддержка: Кирилл Андреев, 2011-…
Особенности работы с сеансами пакетного ввода в транзакции 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
SAP LSMW — проще некуда!
О LSMW написано много, но мой товарищ Михаил Крылов (автор данной статьи) решил предложить свое видение. По-моему получилось неплохо, с учетом некоторых фокусов для ленивых, позволяющих не вбивать параметры вручную.
SAP LSMW — проще некуда!
Наиболее распространенными транзакциями для ввода пакетных данных (это когда много однотипных данных нужно ввести в одну или несколько форм) в SAP являются SECATT и LSMW. В силу разных причин SAP рекомендует отключать ECATT для продуктивных сред. Если администраторы базиса последуют этой рекомендации, у читателя не будет возможности запустить свой пакет сразу в продуктивную систему, и придется прогонять данные в тестовых средах. А это, обычно, занимает больше времени: подготовка данных справочников, приведение настроек к равенству с продуктивом и т.д. Именно поэтому можно и нужно уметь работать с транзакцией LSMW. А наиболее простой способ работы с этой замечательной транзакцией будет описан в этой инструкции
Запуск транзакции.
Если вы не умеете запускать транзакции SAP, то зачем вообще открыли эту инструкцию?
Создание проекта
Запустите транзакцию LSMW
Для создания нового проекта нажмите листик .
Здесь мы вводим проект, подпроект и объект. Проект может содержать множество подпроектов, которые могут содержать множество объектов.
Заполните поля: Проект (Project) и Описание (Description). Код проекта должен быть написан на латинице.
Нажмите ОК (зеленую галочку ;).
Заполните поля: Подпроект (Subproject) и Описание (Description). Код подпроекта должен быть написан на латинице.
Заполните поля: Объект (Object) и Имя (Name). Код объекта должен быть написан на латинице.
Название проекта, подпроекта и объекта автор рекомендует скопировать в блокнотик.
Заполнение проекта
Существует множество вариантов заполнения проектов LSMW. Автор предлагает рассмотреть наиболее простой вариант. В общем виде он таков:
У данных логических пунктов есть технические аспекты. SAP предлагает выполнять все технические моменты с помощью “регламента”, которые вы увидите на форме ниже. Подробнее остановимся на каждом шаге регламента.
Нажмите Часы
В открывшейся форме указаны шаги регламента, которые необходимо выполнить. Некоторые обязательны для выполнения, другие технические.
Maintain Object Attributes. Ведение атрибутов объекта.
Здесь создаем запись последовательных действий пользователя (скрипт).
Выделите строку и нажмите Часы.
Нажмите
Выберите «Batch Input recording» (запись входного пакета) и нажмите обзор.
Откроется форма ведения записи пакета
Нажмите «Листик». Укажите название записи и её описание. Логин не трогайте.
Далее введите код транзакции, в которой будет происходить все действо.
В нашем примере покажем, как массово присвоить роли для штатных должностей. Итак:
Нажимаем ОК. Заполняем данные. Находим должность.
Нажимаем “Листик”. Вводим тип объекта и роль.
Получаем отчет . Выходим из транзакции.
Получаем такую форму:
SAP показывает, какие значения в полях были и какие были введены руками.
Чтобы быстро и без заморочек создать переменные для всех полей скрипта нажимаем кнопку .
Если нужно создать только несколько переменных (в которые в дальнейшем будут литься данные), то выбираем строку и нажимаем кнопку .
И все же автор рекомендует создавать переменные для всех полей. Мало ли что может случиться, а у нас уже готовый скрипт.
В розовых Полях появятся названия переменных.
Сохраняем на каждом экране.
В поле “Recording” прописываем название записи.
Существует возможность записать скрипт и вне данной транзакции. Например вот так:
Нажмем кнопку
Укажем название записи и код транзакции. Конец примера.
Название записи и есть то, что нам нужно прописать в поле “Recording”
Сохраняем . Выходим
.
Maintain Source Structures. Ведение структуры.
В целом, структура – это область объединения пользовательских переменных, которые впоследствии можно связать с переменными записанного скрипта (действий пользователя). Подобные структуры необходимы для разделения полномочий разных подразделений предприятия, занимающихся подготовкой данных для объединенного пакета.
Заходим. Создаем структуру по-умолчанию. Сохраняем. Выходим.
Maintain Source Fields. Ведение источника полей.
Здесь создаются пользовательские переменные, а также заполняются их параметры.
Некоторые специалисты долго корпят над созданием структуры пользовательских переменных. Автор покажет быстрый и эффективный способ избавить себя от подобных “мучений”.
Заходим в форму. Нажимаем мышкой на структуру (выделена желтым) и переключаемся в табличный режим
Открываем еще один режим SAP . Запускаем транзакцию SE16. Вводим таблицу /SAPDMC/LSGBDC
Ентер . Вводим название нашего проекта (блокнотик ауу. ).
Выберем нужные поля. Меню:
Выгружаем даные в текст с табуляторами
Проваливаемся в «Имя файла» и указываем место хранения и имя файла
Создать. Если файл уже существует – Заменить.
В созданном файле Excel удалям все пустые столбики и строки. Удаляем повторы и строки с размером равным нулю. Между столбцами вставляем еще один столбец “Type”. Всем ячейкам столбца задаем значение “С” (char).
Копируем все данные в таблицу LSMW (без заголовка)
Maintain Structure Relations. Ведение связей структуры.
Здесь указываем связи структур, если их несколько. В нашем примере структура одна. Щелкаем на структуру и нажимаем Relationship
ОК. Сохраняем. Выходим.
Maintain Field Mapping and Conversion Rules. Ведение мэпинга (связей) и правил изменения данных.
Здесь указываем связь переменных скрипта и переменных структуры.
Нажимаем на первое поле.
Нажимаем на кнопку
Связываем пользовательские переменные структуры и переменные скрипта
Так и проходим по всем полям вручную.
Или, если названия переменных совпадают, делаем автомэпинг:
Смотрим на проценты и нажимаем (см. ниже)
Maintain Fixed Values, Translations, User-Defined Routines
Ведение констант, преобразований, правил.
В нашем примере эту “муть” рассматривать не будем.
Зашли, нажали “Листик”. Ввели название. ОК. Вышли. Всё!
Specify Files
Создадим файл для загрузки. Открываем лист Excel. Открываем наш скрипт.
Из скрипта копируем (Ctrl+Y) переменные и вставляем вниз листа Excel. Выделяем вставленный столбец с переменными, копируем и транспонируем его в первую строку листа.
Тоже самое делаем со значениями по-умолчанию (это чтобы не запутаться, где какое поле).
Автор рекомендует выделить те переменные, которые будут меняться.
Дальше, копируем строки по вместо красных подставляем то что нужно (должности и роли).
А если вдруг что, то у нас все переменные есть. Можно и дату присвоения роли поменять.
Не забудьте удалить скопированные столбцы. Внимательно просматривайте файлы. Эксель любит «хавать» нули. А для SAP «001» и «1» это не одно и тоже. Поэтому только текстовый формат данных.
Вот что получаем на выходе:
Сохраняем. Выбираем этот файл для пакетного ввода.
Входим. Нажимаем карандаш.
Два раза щелкаем в “On the PC (Frontend)”.
Выбираем файл. Копируем его название.
Ставим точки и галки:
Сохраняем. Если система ругается на (название не больше 45 символов) переименуйте её. Выходим.
Assign Files
Здесь связываем файлы и структуру. Входим.
Нажимаем кнопку
Ок. Сохраняем. Выходим.
Read Data
Считывание данных. Входим. Указываем строки, которые будут считаны. Часы.
Display Read Data
Указываем с какой строки и по какую строку показать
Видим, что данные загрузились.
Convert Data
Конвертация данных. Запускаем, вводим строки от и до:
Display Converted Data
Просмотр конвертированных данных. Запускаем. Указываем строки от и до:
Если все желтое – значит формат полей и данных совпадает. Выходим.
Create Batch Input Session
Создадим сеанс пакетного ввода.
Всё по-умолчанию. Часы.
Run Batch Input Session
Запускаем пакет. Выделяем наш проекта. Меню: Сеанс –Выполнить в фоновом режиме.
Если сеанс выполнять в фоновом режиме программа игнорирует желтые сообщения. Запускаем.
Готово. Проверим данные.
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
- Оземпик передозировка что делать
- что такое сетка в инстаграм