Заполнение нового типа IDoc посредством запуска ABAP программы

Предлагаю вашему вниманию небольшую заметку про создание и заполнение нового типа IDoc посредством запуска ABAP программы.

0. Задача

Создать новый тип IDoc и ABAP программу, после запуска которой, произойдет заполнение его данными из пользовательской таблицы.

1. Создание таблицы

Создайте таблицу, значения которой должны будут наличествовать в сегменте вашего IDoc.

См. заметку Создание пользовательской таблицы и ракурса ее ведения

В моем примере будет использоваться таблица с техническим наименованием ZTBL_IDOC1

2. Создание нового сегмента IDoc

См. Defining Segments

Создайте новый сегмент вашего IDoc в транзакции WE31. В моем примере, структура нового сегмента будет схожа со структурой таблицы, значения из которой я планирую передавать в этот сегмент

После того как новый сегмент создан, выполните его деблокирование, выбрав в меню команду Edit -> Set release

3. Создание нового типа IDoc

См. Defining New IDoc Types

См. Defining and Using a Basic Type

С помощью транзакции WE30 создайте новый тип IDoc, куда включите созданный ранее сегмент.

Также выполните деблокирование нового типа IDoc, выбрав в меню Edit -> Set release

4. Создание нового типа сообщения и присвоение типу IDoc

См. Assigning Basic Types to Message Types

Создайте новый тип сообщения и присвойте ему созданный ранее тип IDoc. Выполните эти действия в транзакциях WE81, WE82

5. Добавление нового типа сообщения для системы-потребителя

См. Partner Profiles in the Standard Dialog

В транзакции WE20 добавьте новый тип сообщения для системы, куда планируется отправление нового IDoc

6. Настройка модели распределения

См.  Modelling Distribution

См. Setting Up Communication

Настройте модель распределения, используя транзакцию BD64, добавив новый тип сообщения

См. заметку SAP IDocs. Подготовка HR мастер-данных для переноса в другую HR систему. Часть 1

См. заметку SAP IDocs. Подготовка HR мастер-данных для переноса в другую HR систему. Часть 2

7. Создание ABAP-программы для заполнения IDoc

Исходный код был подсмотрен здесь, а затем несколько адаптирован

8. Тестирование

На следующем видеофрагменте представлена следующая последовательность действий:

  • Посредством запуска ABAP программы происходит сбор данных из пользовательской таблицы и заполнение сегментов нового IDoc;
  • В этой же программы, через вызов  ФМ MASTER_IDOC_DISTRIBUTE, происходит создание IDoc и добавление его в очередь;

См. Call of MASTER_IDOC_DISTRIBUTE

В результате было создано 3 айдока с тремя записями в их сегментах, соответствующих записям в Z* таблице. По мере отработки программы RSEOUT00 статус айдоков был изменен c "30 - IDoc ready for dispatch (ALE service)" на "03 - Data passed to port OK"

Спасибо за внимание.