Расширение SAP для начинающих. User-exit, BADi, Enhancement

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

User-exit

Самая старая технология, но и наиболее простая и универсальная. Суть заключается в том, что SAP в своих программах делает вызов специальных Includes (программ), которые начинаются с букв ZX и поэтому разрешены для изменения консультантам. То есть, мы находим такой вызов, создаем Include (программу) и в ней пишем любую логику. При компиляции система видит, что появился в базе данных такой объект – Include, вставляет его содержимое на то место, где был вызов. Так получается, с точки зрения системы, что этот кусок кода как будто бы уже был в самой программе. Например, форма Т-2, программа HRULT2_2004, инклуд HRUIT2_PRC_2004. Смотрим событие get pernr:

form get_pernr .
data: ls_log_pernr like line of gt_log_pernr.

* user-exit
include zx_hrult2_pernr.
pn-endda = p_datep.
if gf_fill_period_to = ‘X’.
pnpendda = p_datep.
endif.

Что мы видим? В программе есть user-exit с названием zx_hrult2_pernr. Можно два раза на него кликнуть и тем самым создать программу. Теперь мы в этом Include можем писать свой код, который будет подставлен вместо строчки include zx_hrult2_pernr.

Другой пример из того же отчета:

form end_of_selection .
* user-exit
include zx_hrult2_eos.

Насколько мне известно, нет какого-либо единого наглядного каталога, где можно было бы посмотреть все user-exits. Каждую программу нужно смотреть индивидуально. Часть user-exit можно посмотреть, создать и документировать через транзакцию CMOD – управление проектами расширений. Запускаем транзакцию CMOD, в меню «Утилиты» выбираем «SAP-расширения». И по ключевым словам ищем доступные расширения. Искать проще по маске по словам PY, PT, PA, HR, OM для поля «Прикладной компонент». К этому полю, почему-то, нет средства поиска.

Читать далее


Обновление SAP систем для начинающих

САП действительно обновляется. Как правило один раз в месяц. Ниже я расскажу простые вещи про обновление САП систем в части вообще и HR в частности. Сам я давно обновлениями не занимался, какие-то нюансы могу упустить.

Обновления бывают разные. В общем смысле этого слова и как привыкли считать заказчики, обновление, это исправление ошибок и выход новых форм или реализация требований законодательства. Часто по этому параметру сравнивают САП с 1С. Могу сказать, что САП обновляется достаточно часто для такой махины как САП, но недостаточно проактивно как 1С.

Мельчайшая единица обновления это нота. Это маленькое исправление или рекомендация вендора по исправлению той или иной ошибки или пособие к действию. Ноту можно скачать, можно автоматизированно применить к системе и получить исправленную ошибку. В ноте обычно содержится текстовая часть, где описывается суть исправления, причины возникновения ошибки, примеры. Если ошибка может быть исправлена через ABAP, то в ноте содержится код, который вносит исправление в систему. Такую ноту можно откатить назад.

Есть ноты, где указываются инструкции по ручному исправлению. Часто это касается заработной платы, где нужно добавить кусочки правил расчета или записи в таблицы. Такие ноты устанавливаются вручную по инструкции в самой ноте. Такие ноты нельзя откатить автоматизированно.

Ноту можно скачать с support.sap.com/notes или в транзакции SNOTE. Просто указываем ноту, она скачивается, выбираем ее в списке и нажимаем применить. Система сама учтет правильную версию ноты именно для вашей системы.

Обычно ноты ставятся в системе разработки, сохраняются в транспортный запрос и дальше переносятся по ландшафту стандартной системой транспортных запросов. БЫвают исключения, когда в ноте содержится какой-нибудь XML файл, справочник основных данных, который нужно применить прямо в продуктивной системе (или в каждой системе в ландшафте). В таких случаях указана инструкция что и как сделать, куда “подсунуть” файлик из ноты.

Читать далее


Вопрос-ответ 12. Деловые партнеры (BUPA)

Вопрос:
Добрый день.
я читаю ваш книгу, тему бизнес партнеров. Сейчас у меня такая задача* из эйчар при принятии сотрудника на работу создается БП, и передается в эфай. в эфай нужно создать роль контрагент ЭФАЙ” и казать мол и контрольные счета для дебитора/кредитора. я на другом проекте работал транзакцией PRAA и с БП не сталкивался. в книге кратко описано, та понимю это для тех кто знает эту кухню, чтобы дать направление. Можете чуть подробнее объяснить как это реализовать или что надо расширять. Заранее благодарен

Ответ:
Привет.

Не до конца понял задачу, но постараюсь объяснить процесс. Он достаточно простой.
1. Создание или изменение данных работника вызывает синхронизацию табельного номера с бизнес-партнером. За это отвечает блок настроек.
bupa, business partners

Читать далее


Расширение PTMW

Сегодня наткнулся на решение по расширению PTMW. Оказывается есть очень мощный инструмент для управления данными (но не экранами, к сожалению) при работе в этой транзакции. Называется сие чудо BLP (Business Logic Processor). Работает через BAdi и фильтры на определенные события.

Более подробно можно почитать в нотах (а там же и найти примеры реализации):

Note 447097 – Questions and answers concerning the TMW implementation
Note 367249 – Customer enhancements for the BLP

Проверено – работает, чему я очень рад. Раньше PTMW для меня был закрытым инструментом.

P.S. Если покопаться в настроечных табличках PTMW (которых нет в SPRO), то там для каждой области PTMW и каждого чиха есть свой класс. Что если сделать свои классы и там прописать? Вроде бы и “настроение” транзакции можно поменять.