Базовые практики

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

VirVit No Comments

Несмотря на то, что система многофункциональна и избыточна, все же достаточно часто требуется вносить изменения в ее логику работы. Начинающие консультанты часто спрашивают, как же можно расширить логику работы системы для требований бизнеса? Не все можно сделать галочками, это верно. Иногда мы влезаем в исходные коды вендора, чтобы сделать свое расширение 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 для поля «Прикладной компонент». К этому полю, почему-то, нет средства поиска.

Спустя 15 лет я узнал как делать это

VirVit 3 комментария

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

Я говорю про копирование организационных объектов предприятия. Это те объекты, которые создаются в самом начале работы с системой, а не PPOME.

Уверен, все помнят этот экран, где мы копируем разделы, подразделы, группы и категории с модельных в наши пользовательские. В одном из банков мы писали хитрую LSMW, чтобы сделать копирование пары сотен таких разделов персонала ввиду расширения компании. Ох и муторно это было.

Создание раздела персонала

Создание раздела персонала

Что такое мандант в SAP?

VirVit No Comments

Ответ совсем для новичков, которые только открыли систему и тут же увидели это странное слово. Мандант это перевод с английского Client – клиент. В одной системе может быть множество мандантов (1000, если быть точным). Нужны они для того, чтобы на уровне базы данных разграничить доступ. То есть, если у вас есть полномочия администратора в одном манданте, то вы не сможете получить доступ к данным второго манданта (за редким исключением). В одном манданте может работать более одного юридического лица или компании, разделение доступа настраивается системой полномочий.

По-умолчанию, в SAP ERP (а SAP HCM это часть, мизерная часть, от SAP ERP System), вендором создаются 000, 001, 066 манданты. Это технические манданты, которые нужны самому САП для обновлений, поддержания эталона в трезвом состоянии, для организации поддержки к системам заказчика. Поэтому при начале работы с системой системные администраторы (SAP BASIS) обычно сразу же делают копию 000 (эталонного) манданта в любой другой, не занятый. Как скопировать мандант можно посмотреть у меня в видео ВИДЕО: Создание нового манданта

Список всех мандантов можно посмотреть в транзакции SCC4.

Практические задачи на собеседовании

VirVit 2 комментария

Вчера у меня было собеседование в американской компании. Меня решили погонять по техническим вопросам на уровне настроек. Предлагаю вашему вниманию вопросы, которые были заданы мне. Как бы вы решили эти задачи?

Задача 1.
У человека графика 8 часов внутри них 30 минут перерыв. Оплачиваемое время 7 часов 30 минут. Но если на этот день вводится отсутствие, то оно должно считаться как 8 часов.

Задача 2.
У человека график 8-8-8-8-8-В-В = 40 часов. По факту он работал 8-9-7-8-8-1-В = 41 час. 1 час сверхурочка, которую нужно оплатить. Если в пятницу человек взял отпуск, то как понять, что у него сверхурочка, и ему нужно оплатить этот 1 час?

Задача 3.
У человека график 00 – 08. Если он пришел в 22 часа, перед сменой, то как ему оплатить эти 2 часа сверхурочно в сутках смены.

Задача 4.
У рабочего и бригадира один график с 8 до 16. Оба пришли на 15 минут раньше. Но рабочему нужно оплатить только по графику, так как он просто раньше пришел. А бригадиру нужно оплатить доптариф, так как он составляет вахтенное задание.

Свой ответы я опубликую позже.

Инфотип 1003 (Штаб/Отдел)

VirVit No Comments

Дождливым вечером сидели мы с Романом (metha) и рисовали концепции. Вспомнили про галочку штаб (инфотип 1003), которая в PPOME мозолит всем глаза в то время, как мало кто знает о ней что-то. Поясняю.

Есть два концептуальных пути для ее использования. С одной стороны эту галочку используют в России и СНГ для того, чтобы пометить подразделение для вывода в шапку приказа. Если галочка стоит, то выводим в бумажку, если нет, то на нет и суда нет.

С другой стороны есть малопонятная фича. Если в T77S0 активировать ключик PPABT – PPABT, то система начнет работать иначе.

t77so_ppabt

При такой галочке и пометке “Отдел” на уровне организационной единицы в инфотипе 1003 Штаб в первый инфотип при приеме или переводе записывается другая организационная единица.

Вот смотрите. У меня есть два подразделения, одно в другом.

ppome_1

Если флаг в T77S0 не активирован, то при приеме на позицию рабочего у нового табельного номера в ИТ0001 будет прописана организационная единица 10001193.