SAP IDocs. Указатели изменений.

Пояснение к вопросу

Любое изменение в HR мастер-данных может послужить триггером для создания указателя изменений, который затем трансформируется в IDoc. Данный механизм может быть использован для случаев, когда, необходимо непрерывно (не единовременно) передавать изменения по персоналу в какие-нибудь внешние системы (как HR, так и не HR подобные). Предлагаю рассмотреть простенький пример генерации документа изменений после внесения корректировок в PA инфо-тип.

Решение вопроса

Для начала откройте соответствующий раздел IMG, выполнив транзакцию SALE

IDoc Interface / Application Link Enabling (ALE) -> Modelling and Implementing Business Processes -> Master Data Distribution

Рисунок 1.

1. Activate Change Pointers - Generally

См. Activate Change Pointers

Выполнив настройку «Activate Change Pointers - Generally» вы, фактически, включаете механизм создания документов изменений в SAP системе

Рисунок 2.

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

2. Activate Change Pointers for Message Types

Выполнив настройку «Activate Change Pointers for Message Types», вы конкретизируете для каких типов сообщений необходимо формировать документы изменений

Рисунок 3.

Типы сообщений можно создать/просматривать в транзакции WE81

3. Reduce Change Pointers for Message Type

Для каждого типа сообщений можно определить дополнительную обработку формирования его документа изменений, создав внедрение для BAdI BDCP_BEFORE_WRITE.

Например, на время работы какой-то пользовательской программы, вносящей изменения в кадровые инфо-типы, вы хотите отключить создание документов изменений. Метод FILTER_BDCPV_BEFORE_WRITE к вашим услугам!

Для создаваемого внедрения не забудьте выбрать соответствующий тип сообщения

Рисунок 4.

4. Create IDocs from Change Pointers

После того, как документ изменений будет сформирован, необходимо сгенерировать IDoc. За вас это сделает программа RBDMIDOC. От вас потребуется разве что настроить вариант, и запланировать программу для работы в фоновом режиме. Сделать это можно, выполнив настройку «Create IDocs from Change Pointers -> Define Variants»

Рисунок 5.

5. Тестирование. Формирование документа изменений

На следующем видеофрагменте отражена последовательность действий при которой происходит вызов внедрения BAdI **BDCP_BEFORE_WRITE **и последующее формирование документа изменений. По сформированному ключу затем можно выполнить поиск соответствующей записи в таблице BDCP2

6. Тестирование. Формирование IDoc

Выполните программу RBDMIDOC для соответствующего типа сообщений

IDoc успешно сформирован. Посмотреть его содержимое возможно через транзакцию WE02

Рисунок 6.

Обратите внимание, что после того, как программа RBDMIDOC отработала и IDoc успешно сформирован, в таблице BDCP2 для соответствующего ключа записи будет установлена метка обработки (BDCP2-PROCESS = X)

Рисунок 7.

P.S. Никогда не используйте ABAP конструкции, представленные в качестве примера в этой заметке (break username). Использование таких конструкций негативно влияет на карму. Причем не только вашу. Жму руку.