Удаление результатов расчета заработной платы

Случается такое, что в процессе отладки каких-то масштабных вещей нужно удалить какой-то определенный период расчета из кластера. По одному удалять можно с помощью транзакции PU01. А если массово, то никак. Программа удаления результатов расчетов RPUDEL20 умеет удалять только все результаты, что нам не очень подходит.

Для этого можно скопировать программу и всего несколькими строчками изменить ситуацию. Копируем RPUDEL20 в свою программу. После блока DATA добавляем:

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 3(29) TEXT-089 for field p_inper.
PARAMETERS: p_inper LIKE pc261-inper.
SELECTION-SCREEN END OF LINE.

Находим процедуру

FORM FILL_RGDIR TABLES $LIST_RGDIR STRUCTURE LIST_RGDIR
$RGDIR STRUCTURE PC261
USING  $PERSNR LIKE PERSNR.

и меняем в ней:

* rgdir -> list_rgdir
LOOP AT $RGDIR.
LIST_RGDIR-PERSNR = $PERSNR.
MOVE-CORRESPONDING  $RGDIR TO $LIST_RGDIR .
APPEND $LIST_RGDIR.
ENDLOOP.

На

* rgdir -> list_rgdir
LOOP AT $RGDIR.
if $rgdir-inper = p_inper.
LIST_RGDIR-PERSNR = $PERSNR.
MOVE-CORRESPONDING  $RGDIR TO $LIST_RGDIR .
APPEND $LIST_RGDIR.
endif.
ENDLOOP.

Проделанные манипуляции добавят поле ‘В периоде’ на селекционный экран. В нем указываем период в формате ГГГГПП (где , ГГГГ – год, ПП – период). Система выведет только этот период для тех табельных, у кого он есть. Выделяем все и нажимаем удалить.

P.S. Прежде чем все это делать, подумайте. На свой страх и риск. Не рекомендуется к продуктиву.