Ломаем RPUDEL20

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

Ломаем RPUDEL20: 7 комментариев

  1. Calm

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

  2. VirVit Автор записи

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

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

  3. Fudo

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

  4. VirVit Автор записи

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

  5. Fudo

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

  6. 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.

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