Найти пересечения периодов. Оператор 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))

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *