Human Resources системы SAP® ERP

Здесь стоит рассмотреть две задачи, сводящиеся к одной цели, – найти нужный пункт меню IMG в сложном хитросплетении. Есть два варианта:

  • Знаем имя таблицы, нужно найти ветку в IMG. Элементарно. Открываем транзакцию SM30, вводим имя таблицы и нажимаем кнопку «Поиск диалога ведения». Система ищет все созданные для этой таблицы ракурсы или ракурсы, где эта таблица используется. Из списка выбираем нужный по смыслу ракурс (если он один, то система подставит его автоматически). Нажимаем на кнопку «Настройка». Открывается окно с выбором корневой ветки, где используется наша таблица. Таких веток может быть несколько, так как одна и та же таблица может использоваться в разных странах, поэтому и в IMG на нее будет ссылка из различных мест. Выбираем подходящую для нас ветку и нажимаем «ОК». Система разворачивает IMG от этой корневой ветки до нашей искомой таблицы. Дело сделано.
  • Знаем примерное название нужной нам ветки. Открываем IMG и нажимаем кнопку поиска. Поиск ведется по всему IMG по маске, например: «*удержан*» (Рис. 1.7). Если в системе никто до вас не пользовался поиском по IMG, то появится окно для запуска индексации меню IMG. Этот процесс длительный, но его нужно однажды выполнить. Смело запускаем индексацию в фоновом режиме и идем пить кофе. Примерно через 10-20 минут все индексы будут созданы, и такой вопрос больше не будет появляться.

Рис. 1.7

1.7 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_fi ll_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-exits можно посмотреть, создать и документировать через транзакцию CMOD – управление проектами расширений. Запускаем транзакцию CMOD, в меню «Утилиты» выбираем «SAP-расширения». И по ключевым словам ищем доступные расширения. Искать проще по маске по словам PY, PT, PA, HR, OM для поля «Прикладной компонент». К этому полю почему-то нет средства поиска.

BAdI – это уже новая технология. Расшифровывается как Business Add-Ins (бизнес-дополнения). BAdI состоит из двух сущностей: определение и реализация. Определение – это своего рода описание объекта с указанием, что он может хранить (какие есть атрибуты), что делать (какие есть методы). Это определенная модель, которая описывает, что обязательно должно быть на входе и на выходе, какие параметры могут быть, их типы и правила вызова. Своего рода абстракция: все мы понимаем, что велосипед состоит из колес, педалей, рамы, руля, цепи, которая соединяет педали с колесом через муфту. Но реализация может быть разной. Так и здесь. Концептуальный проект велосипеда – это определение BAdI, а его конкретная реализация в горный, шоссейный или дамский велосипед – это реализация BAdI. Чтобы определить модель велосипеда (какую именно реализацию нужно вызвать в программе), есть понятие фильтра. Фильтр – это элемент данных в определении BAdI. При вызове программа заполняет его каким-то значением (как решит программист). Система смотрит все реализации этого определения BAdI, у которых стоит такое же значение фильтра (или фильтр просто не используется как критерий), и вызывает подходящую реализацию. По этому принципу, например, сделана косвенная оценка видов оплаты. Посмотрите определение HR_INDVAL (тр. SE18) и реализации HR_IV_* (тр. SE19) (Рис. 1.8).

Рис.1.8

Пример вызова данного BAdI с косвенной оценкой можно посмотреть в процедуре indbw в функциональном модуле RP_EVALUATE_INDIRECTLY. В данном случае вызов не совсем очевиден, но понять принцип работы можно.

Транзакции для создания BAdI: SE18 – создание определений, SE19 – создание реализаций.

С версии 7.0 ядра системы компания SAP предлагает новое решение для внесения пользовательских расширений (логики) в систему. Решение называется Enhancement Framework (EF) и призвано унифицировать технологию вне- дрения пользовательской бизнес-логики в места, которые определены SAP. На самом деле

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

У вас уже есть учетная запись?

Войти