SAP Idocs. Создание, настройка пользовательского Idoc с нуля
SAP Idocs. Создание, настройка пользовательского Idoc с нуля
Что хочет сказать автор, публикуя данную заметку? Скорее всего, именно такой вопрос будет витать в воздухе при прочтении этого заголовка. Так как по обозначенной теме ничего особо нового уж и не скажешь, по причине ее разжеванности и доступности на просторах сети Интернет, я постараюсь преследовать только одну цель, публикуя данный материал. А именно: последовательное и краткое изложение пунктов, которые, надеюсь, могут быть полезны с точки зрения быстрого погружения в тему при столкновении с такого рода задачей в проектной деятельности.
О какой задаче пойдет речь в этой заметке?
- Создать в системе SAP новый Idoc, в структуре которого будет собираться информация для последующего сохранения в стандартном инфо-типе кадрового администрирования.
- Наполнить новый Idoc данными и отправить в сторону системы-получателя. Получателем в моем примере будет выступать SAP система.
- В системе-получателе необходимо принять и обработать данные входящего Idoc'a, сохранив в кадровом инфо-типе содержимое его сегмента.
Шаг 1. Создание сегмента для пользовательского Idoc'a (транзакция WE31)
С помощью транзакции WE31 создайте сегмент, посредством которого будет передаваться и храниться необходимая к последующей передаче информация.
См. Defining Segments
Тема создания новых сегментов также рассмотрена в заметке Заполнение нового типа IDoc посредством запуска ABAP программы

Далее в этой заметке я буду рассматривать пример разработки нового Idoc/ последующее его наполнение/обработку, применительно к инфо-типу кадрового администрирования 0021 - "Family Member/Dependents".
Шаг 2. Определение базисного типа (транзакция WE30)
С помощь транзакции WE30 создайте базисный тип, и включите в него ранее созданный сегмент
См. Defining and Using a Basic Type
См. Defining a Basic Type
Шаг 3. Создание типа сообщения (транзакция WE81)
Определите наименование типа сообщения для вновь создаваемого Idoc в транзакции WE81.

Шаг 4. Присвоение типа сообщения базисному типу (транзакция WE82)
Выполните присвоение типа сообщений и созданный базисный тип в транзакции WE82.

Шаг 5. Создание ФМ для обработки входящего Idoc (транзакция SE80)
Создайте ФМ, который будет обрабатывать входящий Idoc, а также поможет данным, находящимся в нем, оказаться в соответствующем инфо-типе. Подсмотреть исходный код, который может быть взят за основу, необходимо у ФМ BAPI_IDOC_INPUT1.

См. SAP Note 2693798 - Difference between BAPI_IDOC_INPUT1 and BAPI_IDOC_INPUTP

Допустим, что исходный код ФМ может выглядеть следующим образом:
Шаг 6. Присвоение типа сообщения функциональному модулю (транзакция WE57)
Выполните присвоение типа сообщения созданному ФМ, посредством запуска транзакции WE57.

Шаг 7. Определите дополнительные характеристики ФМ (транзакция BD51)
См. Maintaining the Attributes of a Function Module

Шаг 8. Создайте код операций (транзакция WE42)
См. Aim and Purpose of Process Codes

Шаг 9. Настройте профиль системы-партнера (транзакция WE20)
Выполните ведение системы-партнера, куда будет выполнена передача данных вновь созданного Idoc.
См. Defining Partners
В этой заметке я буду пользоваться достаточно примитивным примером по передаче Idoc в рамках одной системы (то есть передача будет выполняться, например, из 800 манданта в 810-й).
Настройки в системе-отправителе нового Idoc (транзакция WE20)
Для успешной последующей демонстрации, а также достижения поставленных в начале заметки целей, мне потребуется выполнить ведение исходящего параметра для системы, куда я собираюсь выполнить отправку вновь созданного Idoc.

N.B. Пожалуйста, обратите свое внимание на то, что изменения из этого пункта выполняются в системе, из которой будет выполняться отправка Idoc. В моем случае - это клиент #800.
Настройки в системе-получателе нового Idoc (транзакция WE20)
Чтобы отправленный Idoc был успешно обработан в системе-получателе, мне также необходимо выполнить ведение соответствующих параметров для системы-отправителя.

N.B. Пожалуйста, обратите свое внимание на то, что изменения из этого пункта выполняются в системе, которая будет принимать отправленный Idoc. В моем случае - это клиент #810.
Шаг 10. Тестирование
Кейс #1. Проверка, что Idoc формируется и отправляется в нужную систему
На следующем видеофрагменте представлена последовательность действий, в результате которой выполняется наполнение сегмента вновь созданного Idoc'а, выбирается система-получатель, и выполняется его первичная отправка. Наполнение сегмента нового Idoc происходит посредством работы с транзакцией WE19. Последующий просмотр статуса сформированного Idoc выполняется с помощью транзакции WE05.
Кейс # 2. Проверка, что Idoc был отправлен в систему-получатель
На следующем видеофрагменте представлена последовательность действий, в результате которой выполняется поиск сформированного Idoc с сомнительным содержимым. Здесь мне важно, чтобы новый Idoc просто был в списке входящих.
Кейс # 3. Проверка, что в системе-получателе есть табельный номер, для которого будет создана новая запись инфо-типа
На следующем видеофрагменте представлена последовательность действий, в результате которой выполняется проверка на то, что в системе-получателе есть какой-либо табельный номер с отсутствующими данными в инфо-типе, который задействован мной под демонстрационные нужды. Итого,
Кейс # 4. Повторное формирование Idoc из системы-отправителя с данными для последующего сохранения в системе-получателе
На следующем видеофрагменте представлена последовательность действий, в результате которой я еще раз убеждаюсь, что в системе-получателе отсутствуют нужные мне данные в кадровом инфо-типе работника. Эти данные должны будут там появиться после того, как произойдет обработка Idoc, пришедшего из системы-отправителя.
Отлично! Как видно на выше представленном видеофрагменте, данные не были успешно обработаны, так как я забыл освободить табельный номер в транзакции PA30. Значит проделанные манипуляции ведут нас в правильном направлении. Чтобы исправить эту ситуацию, я выполню повторную обработку входящего Idoc:
См. заметку Как повторно выполнить отправку idoc? Часть 1
См. заметку Как повторно выполнить отправку idoc. Часть 2
Кейс # 5. Формирование Idoc с другими данными для сохранения в системе-получателе
На следующем видеофрагменте представлена последовательность действий, где повторно формируется Idoc с данными, которые должны быть сохранены в системе-получателе для этого же табельного номера.
Спасибо за ваше терпение. Весна должна быть где-то рядом. Как всегда с любовью, ignatov.