Найти пересечения периодов. Оператор PROVIDE

Очень часто в HR необходимо найти все пересечения ИТ т.е. те периоды в которых данные ТН остаются неизменны. Для этого существует оператор PROVIDE .

PROVIDE FIELDS {*|{comp1 comp2 ...}}
               FROM itab1 INTO wa1 VALID flag1
               BOUNDS intliml1 AND intlimu1
               [WHERE log_exp1]
        FIELDS {*|{comp1 comp2 ...}}
               FROM itab2 INTO wa2 VALID flag2
               BOUNDS intliml2 AND intlimu2
               [WHERE log_exp2]
               ...
        BETWEEN extliml AND extlimu
        [INCLUDING GAPS].
  ...
ENDPROVIDE.

FROM itabN - таблицы в которых ищем пересечения
FIELDS {*|{comp1 comp2 ...}} - поля, изменения которых надо учитывать. (например, нас может интересовать только группы сотрудников в ИТ 0001, а остальные нам не важны)
VALID flagN - флаг, который принимает значения abap_true и abap_false в зависимости от того существует запись данной таблицы в данном участке или нет.
INTO wa1 - структура в которую и копируются данные в данном периоде.
BOUNDS -  поля периодов в табличке itabN
BETWEEN extliml AND extlimu - подаем границы в которых мы ищем пересечения дат.
Также необходимо:

1. чтобы данные в таблицах itabN не пересекались;
2. данные в таблицах itabN должны быть отсортированы по возрастанию

Иначе дамп.


Но что же делать, если необходимо найти периоды пересечения, например в рамках одного инфо-типа. Можем использовать для получения периодов ФМ 'HR_RU_PROVIDE_PERIODS'. 

 

Более подробно по F1))

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

Ваш адрес email не будет опубликован.