Ну в общем как обычно есть два вариант или все правильно или, как я это называю "грязный хак". Если все правильно, то похоже без сторно отпуска никак, но если очень хочется, то конечно можно. Прежде чем поехали прочтите ниже следующее предупреждение:
ВНИМАНИЕ: Все что написано ниже, никогда не будет одобрено официальными представителями SAP AG
, если дело дойдет до разборки кто умный, а кто красивый и будет обнаружено использование данного метода, то красивым и умным будет SAP AG, а у вас будет хороший шанс слететь с поддержки. Я правда за лет уже значительно больше 10, не помню такого, чтобы кого-то за это расстреляли, но учтите, что вы всегда можете оказаться первыми
так что как там звучит у мелкософта и других, все что вы сделаете по данному описанию, вы сделаете на свой страх и риск и никакие ссылки на меня (UUKRUL) не будут приняты ни мной, ни тем более SAP AG
, хотя никакого криминала или проблем мной лично зафиксировано небыло. Если кто может это опровергнуть пишите будем смотреть.А теперь поехали.
В общем системе конечно все равно, что сторнировать, опять же это чисто FI-кредторская создается. Но, разработчики внести в транзакцию сторнирования правило, если транзакция которая создан документ FI, начинается на MR*, то будет выдано сообщение "Сторно документов в финансовой бухгалтерии невозможно" № сообщения F5673. В транзакции сторно там все по тупому, есть вызов ФМ FI_REVERSE_POSTING_ALLOWED в котором есть вот такая вот проверочка:
if not i_awtyp is initial
and not i_awtyp eq 'FOTP ' "<595518
and not i_awtyp eq 'BKPF '
and not i_awtyp eq 'BKPFF' "FI Document from AC INterface
and not i_awtyp eq 'EBKPF' "External Co Code
and not i_awtyp eq 'IBKPF'
and not i_awtyp eq 'FEBEP' "Doc created from el. bank statement
and not i_awtyp eq 'FKKST' "Doc from FI-CA application
and not i_awtyp eq 'FMPSO' "Doc from Public Sector
and not i_awtyp eq 'JVAM ' "JV WIP to WIP transfers
and not i_awtyp eq 'GLYEC' "GL year end closing italy n816757
and not ( i_awtyp eq 'AMBU ' and "reversal of AA postings during
" migration of new gl
( i_tcode eq 'ASKBND' or i_tcode eq 'ASKBN' ) )
and not i_tcode eq 'FBVB' "Doc from Parking Transactions
and not ( i_awtyp eq 'IDOC' and "IDOC innerhalb FI erzeugt
i_tcode eq 'FB05' ). " note 560553
* Exception: Documents from Treasury -----------------------
if i_glvor ne 'RFBU' or
*- From 99A on, reversal via AC Interface or CALL DIALOG --------------
( ( i_awtyp ne 'TR-TM' or i_revdoc = space )
and ( i_awtyp ne 'BEKI' or i_revdoc = space )
and ( i_awtyp ne 'LOANS' or i_revdoc = space )
and i_awtyp ne 'REACC' ).
rc = 4.
select single * from ttypt where spras eq sy-langu
and awtyp eq i_awtyp.
endif.
elseif i_tcode(2) = 'MR'.
rc = 4.
otext = 'Rechnungsprüfung'(mr0).
endif.
В общем вот это вот i_tcode(2) = 'MR', генерирует нам sy-subrc = 4 и невозможность сторно. Так что первый обход проблемы это обновление таблицы BKPF-TCODE = 'BKPF', для документа FI, т.е. типа маскируемся под обычную проводку FI. После этого документ сторнируется без проблем.
Теперь надо еще решить, что делать с расчетом, который висит MRKO, как обработанный, само собой это как то не хорошо (ну или может по вашему бизнес процессу это типа нормально, тогда дальше не идем)? Для этого делаем такой код:
UPDATE rkwa SET: status = '0'
WHERE mblnr = <документ MM> AND
mjahr = <год документа ММ> AND
zeile = <позиция документа ММ>,
belnr = space
WHERE mblnr = <документ MM> AND
mjahr = <год документа ММ> AND
zeile = <позиция документа ММ>,
gjahr = space
WHERE mblnr = <документ MM> AND
mjahr = <год документа ММ> AND
zeile = <позиция документа ММ>,
buzei = space
WHERE mblnr = <документ MM> AND
mjahr = <год документа ММ> AND
zeile = <позиция документа ММ>,
COMMIT WORK.
Ну и все... типа можно делать новый расчет...