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

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

VirVit 7 комментариев
Заметки на полях Программы

Случается такое, что в процессе отладки каких-то масштабных вещей нужно удалить какой-то определенный период расчета из кластера. По одному удалять можно с помощью транзакции 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. Прежде чем все это делать, подумайте. На свой страх и риск. Не рекомендуется к продуктиву.

7 комментариев

Calm

Август 14, 2012 в 9:21 дп

Виталий, как нужно поменять форму FORM FILL_RGDIR?
Похоже у Вас опечатка в тексте. Код формы до замены и после – одинаковый.

 

VirVit

Август 14, 2012 в 9:18 пп

Виноват, исправился 🙂 Добавил IF. Спасибо!

P.S. Можно на ты 🙂

 

Calm

Август 15, 2012 в 9:58 дп

Спасибо, Виталий!
P.S. замётано 😉

 

Fudo

Январь 28, 2013 в 5:03 пп

Сделали так, но: не раскрываются расчеты по ТН, нет кнопки удалить, есть кнопка выполнить, но при нажатии выдает “выберите действительную функцию”. Не работает.

 

VirVit

Январь 28, 2013 в 5:32 пп

А строку статуса точно скопировали? В ней же определяются функциональные коды.

 

Fudo

Январь 29, 2013 в 8:31 дп

да, скопировали. Смешно, но перезагрузка системы помогла – проявились кнопки. Но удалить внециклический расчет не получится (наша задача) – фильтрация по В-периоду, которого нет во внецикле.

 

Fudo

Январь 29, 2013 в 11:06 дп

Добавили так:

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 3(29) Tp_paytp for field p_paytp.
PARAMETERS: p_paytp LIKE pc261-INPTY.
SELECTION-SCREEN END OF LINE.
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.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 3(29) Tp_datep for field p_datep.
PARAMETERS: p_datep LIKE pc261-BONDT.
SELECTION-SCREEN END OF LINE.
INITIALIZATION.
Tp_datep = ‘Дата платежа’.
Tp_paytp = ‘Тип платежа’.

И так:

* rgdir -> list_rgdir
if p_paytp = ”.
LOOP AT $RGDIR where inper = p_inper.
*if $rgdir-inper = p_inper.
LIST_RGDIR-PERSNR = $PERSNR.
MOVE-CORRESPONDING $RGDIR TO $LIST_RGDIR .
APPEND $LIST_RGDIR.
*endif.
ENDLOOP.
else.
LOOP AT $RGDIR where INPTY = p_paytp and BONDT = p_datep.
*if $rgdir-inper = p_inper.
LIST_RGDIR-PERSNR = $PERSNR.
MOVE-CORRESPONDING $RGDIR TO $LIST_RGDIR .
APPEND $LIST_RGDIR.
*endif.
ENDLOOP.
endif.

 

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