Еще как вариант поставить точку останова в RPCIPD00 FORM READ_RECALCULATED_PPOIX. B посмотреть как SAP в вашем конкретном случае это делает.А логику то в двух словах описать сложно

.
Находим строки из PPOPX которые использовались в нашем прогоне.
Code:
SELECT * FROM ppopx INTO CORRESPONDING FIELDS OF TABLE it_ppopx
WHERE runid = if_runid.
Для них теперь надо найти соответствующие PPOIX
Нужно найти прогоны, из которых будем смотреть PPOIX.
Code:
DATA: productive_runs LIKE hrpp_pernr_runtab OCCURS 0 WITH HEADER LINE.
*Найдем для каких табельных и за какие периоды нужны расчеты
LOOP AT it_ppopx INTO wa_ppopx.
MOVE-CORRESPONDING wa_ppopx TO productive_runs.
CLEAR productive_runs-runid.
COLLECT productive_runs.
ENDLOOP.
*Находятся соответствующие продуктивные прогоны для выбранных табельных и периодов
*с использованием PCALAC
CALL FUNCTION 'HR_EVAL_PROD_A_RUN_GET_TABLE'
TABLES
result_table = productive_runs.
Я думаю, что раз вы там что то удаляли, то вот в этом месте происходит ошибка.
Далее стандарт рассматривает какие то "архивные прогоны". У нас их нет, поэтому я с ними никак

. и тут я их не пишу.
Code:
* fill ppoix-keys for needed ppoix
CLEAR prod_runs_db.
LOOP AT it_ppopx INTO wa_ppopx.
WHILE wa_ppopx-pernr GT prod_runs_db-pernr OR
( wa_ppopx-pernr EQ prod_runs_db-pernr AND
wa_ppopx-seqno GT prod_runs_db-seqno ).
tabix = tabix + 1.
READ TABLE prod_runs_db INDEX tabix.
IF sy-subrc NE 0.
EXIT.
ENDIF.
ENDWHILE.
CHECK wa_ppopx-pernr EQ prod_runs_db-pernr AND
wa_ppopx-seqno EQ prod_runs_db-seqno.
CLEAR lt_ppoix_key.
MOVE-CORRESPONDING prod_runs_db TO lt_ppoix_key.
lt_ppoix_key-postnum = wa_ppopx-postnum.
lt_ppoix_key-actsign = 'A'.
COLLECT lt_ppoix_key.
ENDLOOP.
* read corresponding ppoix-data from database
READ TABLE prod_runs_db INDEX 1.
IF sy-subrc EQ 0.
SELECT pernr seqno actsign runid postnum tslin lgart betrg waers
wpbpref c0ref c1ref koart anzhl meins spprc momag
mo_fix komok mcode auart nofin rtline
FROM ppoix
INTO CORRESPONDING FIELDS OF TABLE ppoix_for_ppopx
FOR ALL ENTRIES IN lt_ppoix_key
WHERE pernr = lt_ppoix_key-pernr
AND seqno = lt_ppoix_key-seqno
AND actsign = 'A'
AND runid = lt_ppoix_key-runid
AND postnum = lt_ppoix_key-postnum.
ENDIF.
Теперь данные считаны и происходит для PPOPX заполнение внутренней таблицы аналогичной PPOIX
Code:
CLEAR wa_ppoix.
* fill rest-info from corresponding ppoix-set into ppopx-sets
* and switch sign of ppopx-amounts and append them to ppoix-lines
tabix = 0.
DESCRIBE TABLE ppoix_for_ppopx LINES count_lines.
ADD 2 TO count_lines."because of last 'if' before enddo
LOOP AT it_ppopx INTO wa_ppopx.
DO.
tabix = tabix + 1.
READ TABLE ppoix_for_ppopx INDEX tabix.
IF tabix GE count_lines. "infinite do/enddo recognized
MESSAGE e442(3g) WITH wa_ppopx-pernr
wa_ppopx-seqno
wa_ppopx-postnum.
ENDIF.
IF ppoix_for_ppopx-pernr = wa_ppopx-pernr AND
ppoix_for_ppopx-seqno = wa_ppopx-seqno AND
ppoix_for_ppopx-postnum = wa_ppopx-postnum.
MOVE-CORRESPONDING ppoix_for_ppopx TO wa_ppoix.
MOVE-CORRESPONDING wa_ppopx TO wa_ppoix.
* switch sign for P-entries
IF wa_ppoix-actsign <> 'A'.
wa_ppoix-betrg = - wa_ppoix-betrg.
wa_ppoix-anzhl = - wa_ppoix-anzhl.
ENDIF.
APPEND wa_ppoix to it_ppoix.
EXIT.
ELSEIF tabix GE 2.
* Maybe the current PPOPX entry belongs to the same PPOIX_FOR_PPOPX
* entry as the previous PPOPX entry (can happen if revision info
* is selected for several posting runs at the same time).
prev_tabix = tabix - 1.
READ TABLE ppoix_for_ppopx
INTO ppoix_for_ppopx_wa
INDEX prev_tabix.
IF ppoix_for_ppopx_wa-pernr = wa_ppopx-pernr AND
ppoix_for_ppopx_wa-seqno = wa_ppopx-seqno AND
ppoix_for_ppopx_wa-postnum = wa_ppopx-postnum.
MOVE-CORRESPONDING ppoix_for_ppopx_wa TO wa_ppoix.
MOVE-CORRESPONDING wa_ppopx TO wa_ppoix.
* switch sign for P-entries
IF wa_ppoix-actsign <> 'A'.
wa_ppoix-betrg = - wa_ppoix-betrg.
wa_ppoix-anzhl = - wa_ppoix-anzhl.
ENDIF.
APPEND wa_ppoix to it_ppoix.
tabix = tabix - 1.
EXIT.
ENDIF.
ENDIF.
IF ppoix_for_ppopx-pernr > wa_ppopx-pernr OR
ppoix_for_ppopx-pernr = wa_ppopx-pernr AND
ppoix_for_ppopx-seqno > wa_ppopx-seqno OR
ppoix_for_ppopx-pernr = wa_ppopx-pernr AND
ppoix_for_ppopx-seqno = wa_ppopx-seqno AND
ppoix_for_ppopx-postnum > wa_ppopx-postnum.
tabix = tabix - 1.
EXIT.
ENDIF.
ENDDO.
ENDLOOP.