И снова про ALE – инструкция по настройке

Скажу сразу – не люблю писать подробные инструкции. Они расслабляют мозг и формируют класс ленивых консультантов. Профи должен “взять нюх” и найти решение. Поэтому эта небольшая инструкция будет направляющей, а не разжевывающей. Постараюсь дать ссылки и так далее. Хочу сказать спасибо всем, кто откликнулся и помог с материалами или советами. Отдельное спасибо Юрию Сычеву за помощь. Писать я буду со своей колокольни, так как не считаю себя ALE специалистом. Комментарии и правки только приветствуются. Поехали.

Всегда изучение чего-то нового в SAP начинайте с SAP Library, затем IMG, а потом можно и форумы посмотреть (рекомендую SDN). Не первый раз обращаю внимание, что многие часы я тратил зря, когда нужно было внимательно прочитать вышеуказанные материалы. Курсы по сапу я давно уже не открывал, просто отпала необходимость.

Для настройки и понимания ALE нужно запомнить два ключевых понятия:
ALE – Application Link Enabling. Технология передачи данных.
IDOC – Intermediate Document. Объект, который передается по ALE.


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

Почтальон, это модель распределения (тр. BD64), который знает куда отправить информацию. В модели распределения структура простая: отправитель – получатель. Может быть несколько отправителей, несколько получателей. Модель получается таковой, что отправитель всегда знает кто есть получатель. Я точно знаю кто ты – получатель (партнер, логическая система). То есть, я могу отправить Ване, а Ваня может переслать Феде. Или я могу сразу отправить Феде. Как хочу, как разрешает топология сети.

Для HR основной бумажкой (IDOC) является формат HRMD_A. Для каждой версии системы идет свой базовый тип, на основании которого строится этот самый HRMD_A. Это можно посмотреть в транзакции WE82. Найдите тип сообщения HRMD_A. Структуру IDOC можно посмотреть в транзакции WE30. Выбираете там тип документа для своей системы (у меня это HRMD_A07). Внутри будет структура сегментов, которая, если приглядеться, повторяет номера инфотипов. Это и есть та самая избыточность. При отправке данных заполняются только нужные сегменты (инфотипы). Остальное просто не включается в IDOC. Поэтому данные оргменеджмента и кадров будут в одном IDOC, если их не отфильтровать.

Изучив структуру, IDOC нужно понять, как же его отправить. Для этого надо определить отправителей и получателей. Здесь следующая иерархия (САП любит каждый чих запихивать в иерархические последовательности):

RFC путь. Транзакция SM59 поможет создать логические соединения до систем (по сути адрес сервера и манданта, с которым надо будет соединиться).

WE21 порт. Создаем надстройку над RFC в виде дополнительного логического объекта – порт. Все что нужно, это указать RFC соединение. Порт выбираем Transactional RFC.

WE20 партнер (логическая система). По сути это и есть наш отправитель/получатель. Здесь важно отметить следующее. Это первый фильтр высокого уровня. При создании партнера нужно определить какие виды IDOC могут через него проходить. Во входящих и исходящих параметрах нужно добавить все виды IDOC согласно направлениям, какие вы планируете настроить. Например, для HR системы отправителя нужно указать в исходящих вид документа HRMD_A07 (наш базовый вид) и указать порт (куда отправлять). Все это делается для логической системы (тип LS).

Осталось связать отправителей и получателей. Заходим в BD64. Это модели распределения. Создаем новую модель от отправителя к получателю. Нажимаем добавить вид сообщения и заполняем поля. Вид сообщения – HRMD_A. Банально, но это почти все. Теперь нам нужно получателю сказать, что мы ему хотим что-то отдавать. Для этого нажимаем в меню редактирования – модель – распределить. И указываем в какую систему отправить эту настройку. Система передаст информацию в ту систему. Теперь модель распределения в обоих системах будет одинакова. Не забудьте в системе получателе настроить порты, логические системы.

Чтобы нам не отправлять все, вся и всем, есть понятие фильтров. Два раза щелкнув на строке с фильров (под видом сообщения в модели распределения), можно открыть окно фильтров. Здесь мы указываем какие именно сегменты можно отдавать в эту систему получатель. Для каждого вида документа (IDOC) будет свой набор фильтров. Посмотрите, там все просто.

С точки зрения HR фильтров есть маленькие хитрости. Юрий Сычев подсказывает, что можно указать OM соединения сверху вниз, чтобы система сама сгенерировала обратные (снизу вверх). Таким образом будет меньше ошибок при формировании оргструктуры, когда система получатель получит дочерний объект, а старшего пока нет (не доехал еще) и начнет ругаться, что не может создать соединение. Поэтому фильтры делаем так:

Отдельно данные OM (инфотипы 1000-1999), отдельно данные PA (0000-0999) + (2000-9999).
Отдельно передаем связи сверху вниз.
Все это можно разграничить фильтрами.

Если вам нужно отдать информацию по табельникам в другие системы, то минимальный минимум это 0000, 0001, 0002, 0003 инфотипы. Плюс 0009, 0290, если нужно в FI для формирования кассовых ордеров.

Вроде все настроили, осталось проверить и отдать первый кусок данных. Сначала отдаем штатку, потом людей. Отправка HR данных делается одной транзакцией: PFAL. Указываете корневую О-шку, путь анализа, систему получателя и отправить. Система сформирует пачку IDOC и поставит их в очередь для отправки в логические системы. Если в настройках порта вы поставили галочку отправлять немедленно, то обработка начнется сразу же.

За ходом обработки можно смотреть в наглядной форме в транзакции BD87. Система покажет сколько и чего отправлено, принято, какие статусы. Там же можно встать на группу IDOC и нажать кнопку Обработать. Это протолкнет обработку зависших документов. Документы могут зависнуть из-за того, что в системе кто-то что-то блокирует из основных данных.

В системе получатели также можно запустить BD87 и посмотреть, что приехало. Если появились ошибки, то разверните ошибочный узел и увидите причины. Там же можно перезапустить обработку. Если два раза щелкнуть на строку состояния документов, то провалитесь в транзакцию WE05, где можно посмотреть содержимое IDOC и статус обработки каждого сегмента высокого уровня. Это поможет быстро найти причину ошибок (не хватает объектов, заблокированные записи и так далее).

Для автоматизации передачи данных есть механизм указателей (Change Pointer). Суть проста – как только что-то изменили в инфотипе, то изменение упаковывается в IDOC и отправляется всем получателям по модели распределения. Активировать это можно в транзакции BD61. В ракурсе V_TBDA2 отмечаем виды IDOC, для которых нужно генерировать указатели изменений. Указатели изменений будут формироваться в табличке BDCP/BDCPV. Чтобы из них сварганить IDOC нужно запланировать программу RBDMIDOC. Старые указатели (тестовые, например), можно удалить транзакцией BD22.

Много деталей осталось за кадром, весь САП здесь не опишешь. Но, глобально копать тут:
SAP Library
SPRO: SAP Netweaver -> Application Server -> IDOC Interface / Application Link Enabling (ALE) или тоже самое по транзакции SALE. Внимательно читайте хелпы к каждому пункту, там все разжевано!
Меню:
BALM – распределение основных данных (отправить основные данные принудительно)
BALA – распределение данных для приложений (отправить какие-нить документы принудительно)

P.S. На улице тепло и хорошо, поэтому оформлять мне лень 🙂 Ашипки и очипятки править тоже лень 🙂

И снова про ALE – инструкция по настройке: 1 комментарий

  1. Константин Полушкин

    Виталий!
    Спасибо.
    Настраивал IDOC с нуля. Первый раз прочитав ваш пост ничего не понял.
    Но когда порыл инет, понял процесс, настроил первично – всё стало понятно.

Добавить комментарий