Отпуск за вредные условия труда

Отпуск за вредные условия труда

VirVit One comment
Заметки на полях Разработки на ABAP

Нашел в старых записках описание, как создавать отпуск за вредные/особые условия труда. Критиковать кривизну реализации бессмысленно, так как это было в “мохнатые” годы. Поэтому приветствуется только улучшайзинг! В САП главное понять принцип, получить вектор, а дальше включить фантазию 😉

Для генерации отпусков за работу во вредных условиях труда (ВУТ) создаем лимит  (например, код 06) с автоматической генерацией в оценке времени. Для генерации лимита необходимы два условия:

  1. Наличие связи штатной должности (S) с объектом вредных условий (CH). Для объекта CH создаем инфотип 9100, в котором указывается количество дней отпуска за ВУТ (IT9100-ZDAYS). При генерации лимита в user-exit EXIT_SAPLHRLV_004 читается этот ИТ на оцениваемую дату и устанавливается количество базового права в лимите согласно HRP9100-ZDAYS. Транзакция CMOD для создания расширения.
  2. Сотрудник должен отработать более 50% рабочего времени за смену для получения права на отпуск. Для этого используется вид времени 9000. В правиле вычисляется процент отработанного времени путем:  вид времени 0002/вид времени 0050. Если больше 0.5, то вид времени 9000 = 1, иначе – 0. В функции QUOTA при генерации лимита производится умножение начисленного права на отпуск за день на вид времени 9000 «Фактич время > 50%». То есть, отработал больше 0.5 смены, то умножаем начисленное право на 1, в противном случае на ноль.

При накоплении права на отпуск кратного целой единице, система переносит целую единицу в 2006 ИТ. То есть, за 3 дня накопили 1,12 дня отпуска, то один день отпуска начислится в ИТ2006.

Текст EXIT_SAPLHRLV_004 инклуд ZXPLAU05

 

*&———————————————————————*
*& Include ZXPLAU05
*&———————————————————————*

infotypes: 9100.

data:
l_sobid like hrp1001-sobid,
l_ch_objid like hrp1001-objid.

* Read base entitlement for hazardous work conditions from CH object IT9100-ZDAYS
* We do this only quota type 06 “Hazardous work conditions”
if xqtype = ’06’.
xlvnum = 0.

loop at xp0001 where begda le xgdate and endda ge xgdate.
select single sobid from hrp1001 into l_sobid where
otype = ‘S’ and
objid = xp0001-plans and
plvar = ’01’ and
istat = ‘1’ and
begda le xgdate and
endda ge xgdate and
sclas = ‘CH’.

if sy-subrc <> 0.
exit.
endif.

l_ch_objid = l_sobid(8).

CALL FUNCTION ‘RH_READ_INFTY’
EXPORTING
AUTHORITY = ‘DISP’
* WITH_STRU_AUTH = ‘X’
PLVAR = ’01’
OTYPE = ‘CH’
OBJID = l_ch_objid
INFTY = ‘9100’
ISTAT = ‘1’
* EXTEND = ‘X’
* SUBTY = ‘ ‘
BEGDA = xgdate
ENDDA = xgdate
TABLES
INNNN = p9100.

loop at p9100.
xlvnum = p9100-zdays.
exit.
endloop.
endloop.
endif.

One comment

Vasiliy

Апрель 22, 2012 в 1:43 пп

Функциональность начисление отпуска за вредные условия труда с помощью отчета HRUTQTA0 появилась в EHP5. Подробнее не копал.
Бизнес-функция:
HCM_LOC_CI_19
• Process absence quotas for employees who work in certain professions that entitle them to additional leave, for example, if they work in hazardous conditions

 

Вы должны быть авторизованы, чтобы оставить комментарий.