Заполнение нового типа IDoc посредством запуска ABAP программы
Предлагаю вашему вниманию небольшую заметку про создание и заполнение нового типа IDoc посредством запуска ABAP программы.
0. Задача
Создать новый тип IDoc и ABAP программу, после запуска которой, произойдет заполнение его данными из пользовательской таблицы.
1. Создание таблицы
Создайте таблицу, значения которой должны будут наличествовать в сегменте вашего IDoc.
См. заметку Создание пользовательской таблицы и ракурса ее ведения
В моем примере будет использоваться таблица с техническим наименованием ZTBL_IDOC1
2. Создание нового сегмента IDoc
Создайте новый сегмент вашего IDoc в транзакции WE31. В моем примере, структура нового сегмента будет схожа со структурой таблицы, значения из которой я планирую передавать в этот сегмент
После того как новый сегмент создан, выполните его деблокирование, выбрав в меню команду Edit -> Set release
3. Создание нового типа IDoc
С помощью транзакции WE30 создайте новый тип IDoc, куда включите созданный ранее сегмент.
Также выполните деблокирование нового типа IDoc, выбрав в меню Edit -> Set release
4. Создание нового типа сообщения и присвоение типу IDoc
Создайте новый тип сообщения и присвойте ему созданный ранее тип IDoc. Выполните эти действия в транзакциях WE81, WE82
5. Добавление нового типа сообщения для системы-потребителя
В транзакции WE20 добавьте новый тип сообщения для системы, куда планируется отправление нового IDoc
6. Настройка модели распределения
Настройте модель распределения, используя транзакцию BD64, добавив новый тип сообщения
См. заметку SAP IDocs. Подготовка HR мастер-данных для переноса в другую HR систему. Часть 1
См. заметку SAP IDocs. Подготовка HR мастер-данных для переноса в другую HR систему. Часть 2
7. Создание ABAP-программы для заполнения IDoc
Исходный код был подсмотрен здесь, а затем несколько адаптирован
8. Тестирование
На следующем видеофрагменте представлена следующая последовательность действий:
- Посредством запуска ABAP программы происходит сбор данных из пользовательской таблицы и заполнение сегментов нового IDoc;
- В этой же программы, через вызов ФМ MASTER_IDOC_DISTRIBUTE, происходит создание IDoc и добавление его в очередь;
В результате было создано 3 айдока с тремя записями в их сегментах, соответствующих записям в Z* таблице. По мере отработки программы RSEOUT00 статус айдоков был изменен c "30 - IDoc ready for dispatch (ALE service)" на "03 - Data passed to port OK"
Спасибо за внимание.