Как "правильно" сторнировать расчет консинации?

Автор Паганель, Липень 07, 2009, 03:17:45 ПП

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

Паганель

Провел расчет на той датой, вижу документ 5100322097, хотелось бы ее теперь корректно сторнировать....

Uukrul

Цитата: Паганель від Липень 07, 2009, 03:17:45 ПП
Провел расчет на той датой, вижу документ 5100322097, хотелось бы ее теперь корректно сторнировать....
А что этот документ просто сторнировать не дает? Обычная наверное FI-ная кредиторская создалась...

Паганель

#2
Цитата: Uukrul  link=topic=709.msg4436#msg4436 date=1246969174
А что этот документ просто сторнировать не дает? Обычная наверное FI-ная кредиторская создалась...

"Просто" это FB08?

Просто при сторнировании через FB08, пишет "Сторно документов в финансовой бухгалтерии невозможно № сообщения F5673" и не сторнирует....

Uukrul


Паганель

Цитата: Uukrul  link=topic=709.msg4438#msg4438 date=1246969452
Ну да... а что после этого грабли какие-то?

Просто не сторнируется.....

Паганель

Как я понял, просто так сторнировать не получится (еще конечно поищу, но кажется точно - не сторнируется), можно провести сторно продажи, и повторно рассчитать (mrko), но в силу особенностей БП, этот вариант мне не подходит.

DEAD_MOROZ

Добрый день.
Сторнировать FI -документ не даст. Нужно сторнировать документ отпуска и произвести повторный расчет.
Поищи на форуме sapboard.ru, как-то обсуждалось, не помню только решили или нет.

Паганель

Цитата: DEAD_MOROZ від Липень 08, 2009, 01:01:38 ПП
Добрый день.
Сторнировать FI -документ не даст. Нужно сторнировать документ отпуска и произвести повторный расчет.
Поищи на форуме sapboard.ru, как-то обсуждалось, не помню только решили или нет.

Спасибо, я это как раз и написал:
Цитата: Паганель від Липень 07, 2009, 04:16:47 ПП
Как я понял, просто так сторнировать не получится (еще конечно поищу, но кажется точно - не сторнируется), можно провести сторно продажи, и повторно рассчитать (mrko), но в силу особенностей БП, этот вариант мне не подходит.

можно провести сторно продажи, и повторно рассчитать (mrko), но в силу особенностей БП, этот вариант мне не подходит.


Uukrul

Ну в общем как обычно есть два вариант или все правильно или, как я это называю "грязный хак". Если все правильно, то похоже без сторно отпуска никак, но если очень хочется, то конечно можно. Прежде чем поехали прочтите ниже следующее предупреждение:

ВНИМАНИЕ: Все что написано ниже, никогда не будет одобрено официальными представителями SAP AG  ;), если дело дойдет до разборки кто умный, а кто красивый и будет обнаружено использование данного метода, то красивым и умным будет SAP AG, а у вас будет хороший шанс слететь с поддержки. Я правда за лет уже значительно больше 10, не помню  такого, чтобы кого-то за это расстреляли, но учтите, что вы всегда можете оказаться первыми  ::) так что как там звучит у мелкософта и других, все что вы сделаете по данному описанию, вы сделаете на свой страх и риск и никакие ссылки на меня (UUKRUL) не будут приняты ни мной, ни тем более SAP AG  ;D , хотя никакого криминала или проблем мной лично зафиксировано небыло. Если кто может это опровергнуть пишите будем смотреть.

А теперь поехали.

В общем системе конечно все равно, что сторнировать, опять же это чисто 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.

Ну и все... типа можно делать новый расчет...

Паганель

Гениально !!! *BRAVO*....

Для меня точно подойдет (это у меня в тестовой системе, набивал тестовые данные, и ошибся датой)......

Спасибо, особенно за идею как это все искать, шо-то я ступил, даже не посмотрел (SE91) чего же ошибка то выскакивает  :-( ......

На поле status в rkwa смотрел (бл..н, перед этим, долго не мог понять, чего же у меня не 01, до проведения расчета, пока люди добрые не подсказали) ..... ну вот, все уже было в руках что бы решить проблему, а не додумался .......