Случается такое, что в процессе отладки каких-то масштабных вещей нужно удалить какой-то определенный период расчета из кластера. По одному удалять можно с помощью транзакции 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
Виталий, как нужно поменять форму FORM FILL_RGDIR?
Похоже у Вас опечатка в тексте. Код формы до замены и после — одинаковый.
VirVit
Виноват, исправился 🙂 Добавил IF. Спасибо!
P.S. Можно на ты 🙂
Calm
Спасибо, Виталий!
P.S. замётано 😉
Fudo
Сделали так, но: не раскрываются расчеты по ТН, нет кнопки удалить, есть кнопка выполнить, но при нажатии выдает «выберите действительную функцию». Не работает.
VirVit
А строку статуса точно скопировали? В ней же определяются функциональные коды.
Fudo
да, скопировали. Смешно, но перезагрузка системы помогла — проявились кнопки. Но удалить внециклический расчет не получится (наша задача) — фильтрация по В-периоду, которого нет во внецикле.
Fudo
Добавили так:
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.