Архив метки: IDOC

LSMW + IDOC

Роман @metha решил поделиться с нами информацией, как можно создавать IDOC из файла. Это бывает нужно для миграции заработной платы, например.

Делаем вот такой file port. Каталог указываем в соответствии со своей системой.

lsmw_idoc_1

Читать далее

Миграция заработной платы

Привет. Часто на проектах любят использовать свои абап программы для загрузки данных в табличку T558*. Плюсы всем известны. Но иногда надо быстро запустить миграцию, а программистов в бюджете нет. Или даже ключа разработчика нет. На помощь приходят стандартные программы HINUULK0, RPULKT00, которые позволяют загрузить данные в таблички из текстовых файлов.

Также можно использовать LSMW для загрузки данных через IDOC. Это BAPI BUS7023, метод INSERTLEGACY. Эта часть работает с проверками основных данных (табельник, периоды).

Change Pointers (Указатели изменений)

Привет.

Поговорим сегодня об указателях изменений. Это такая штука, которая регистрирует у себя изменения объектов, которые вам нужно передать по ALE в другую систему. Например, поменяли инфотип в HR, система создает указатель изменения на этот табельный номер и инфотип, а затем отправляет только измененные данные. Это позволяет увеличить производительность систем и сократить объемы передаваемой информации между системами. Иначе говоря, пропадает необходимость оправлять каждый раз все данные по всем табельным номерам.

Настраиваются указатели очень просто.

1. Транзакция BD61 — активировать указатели изменений по всей системе
2. Транзакция BD50 — Активировать указатели изменений для конкретного вида сообщений (объекта). Например, данные по HR относятся к HRMD_A.
3. Программа RBDMIDOC — Запланируйте программу RBDMIDOC для периодической отправки объектов (IDOC) по ALE. Программа считывает таблицы указателей, создает IDOC и помещает в ALE слой для отправки в другие системы.

Периодически таблицу с указателями желательно чистить. Это можно делать вручную (транзакция BD22) или с помощью запланированной в фоне программы RBDCPCLR.

Если вам нужно определить на уровне полей, какое изменение должно вызывать создание документа изменения, то в транзакции SE11 выбираем элемент данных, переходим на закладку «Прочие характеристики» (Further characteristics) и ставим галочку «Документ изменений» ( Change document). Теперь изменение поля с таким элементом данных во всех инфотипах будет вызывать создание документа изменения, и его отправку по ALE.

Техническая проверка документов проводок

Есть такая волшебная программка у САП RPCIP_TRANSFER_CHECK, которую САП рекомендует запускать каждый расчетный период (согласно документации). Она пробегает по всем прогонам проводок со стороны HR и сверяет с наличием документов в FI системе. Удобно, когда в компании есть много межрасчетов с проводками, много исполнителей и вообще человеческий фактор — прогон проводок запустили, сделали передачу, а что-то не доехало до FI системы. HR об этом не узнает, а базис может не отслеживать все IDOC. А так можно запланировать программку отправлять вам результат проверки на почту и быть в курсе событий.

Изменение содержимого IDOC

Travel Management интересная штука. Когда вы делаете проводку в FI систему, то оно не проверяет на период, открыт ли он. И ваш IDOC с авансовым отчетом может успешно уйти из HR и потеряться в FI. И никто об этом не узнает, если только не нажмет кнопочку проверки в транзакции управления прогонами PRRW. Так и сегодня отправили мой авансовый в FI и забыли. А он на дошел. В таком случае сторнировать нельзя, так как HR считает, что документ уже проведен.

Вот и приходится искать обходные пути. Либо удалять и заново создавать, утверждать у начальства и пр. Либо поменять всего лишь дату проводки в IDOC для FI документа. Я решил пойти вторым путем. В BD87/WE02 открываем нужный нам IDOC. Разворачиваем до уровня сегмента и нажимаем два раза на листочек рядом с названием сегмента. Теперь через меню меняем нужное нам поле и сохраняем. Сам IDOC при этом копируется, получает новый статус.

Осталось самое маленькое — отправить этот исправленный IDOC заново. Просто так этого не сделать, так как установленный статус 32 (отредактирован) не даст. Для этого меняем статус на 30 с помощью программы RC1_IDOC_SET_STATUS.

Вот и все.