RURT хранится в кластере. Это происходит только для расчета типа B. Я даже привел исходник ФМ, который на этапе считывания производит подмену RT на RURT.
Чтобы было понятнее, посмотрите как работает 2НДФЛ.
Откройте в se38 HRULNDFL
Найдите следующий фрагмент
Code:
** read payroll results
data: g_lines type i.
go_tax->if_hrpayru_report_control~set_person(
exporting
i_pernr = pernr-pernr
exceptions
payroll_results = 1
error_of_class = 2 ).
** reject pernr if there isn't relevant payroll result
провалитесь в set_person
найтите фрагмент
Code:
IF ms_ocrun IS NOT INITIAL.
l_period = ms_ocrun-bondt(6).
lv_permo = me->get_permo( l_period ).
me->read_cluster( EXPORTING
begper = l_period
endper = l_period
permo = lv_permo
pernr = <ls_pernr>-rfpnr
is_ocrun = ms_ocrun
IMPORTING
it_payroll = lt_results
EXCEPTIONS
payroll_results = 1
) .
IF sy-subrc EQ 0.
Поставьте breakpointer на me->read_cluster.
Теперь запустим 2НДФЛ для своего расчета. На закладке "Другой прогон" необходимо указать параметры вашего корректировочного расчета.
Выполнить. Программа остановиться на breakpointer. Провалимся в read_cluster, там будет вызов hr_ru_get_evaluation_periods, пройдем туда.
Теперь смотрим как зачитваются результаты расчета. Последним шагом как и раз и будет подмена RT на RURT в коде, который я привел в первом сообщении.
Для самой 2НДФЛ эта подмена выполнена совершенно прозрачно, логика ее работы нисколько не меняется. Для расчетных листов нужно сделать тоже самое - произвести замену RT на RURT на этапе считывания. В RURT сохранена вся оригинальная информация о привязки к спитам. Условия подмены приведены в первом сообщении.
ЗЫ. При расчете типа B изменения в ВО, переданные из перерасчетов прошлых периодов, попадают в расчет текущего месяца, где они заменяются на другие ВО. При реализации этого подхода Вы должны настроить показывать оригинальные ВО, а не подменные, иначе изменения в расчетке будут отображены дважды.