Автор Тема: Проблема с использованием BADI "MB_MIGO_BADI"  (Прочитано 5558 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Levin

  • Newbie
  • *
  • Сообщений: 2
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Проблема с использованием BADI "MB_MIGO_BADI"
« : Февраль 11, 2010, 02:25:39 pm »
Необходимо, чтобы в транзакции MIGO при проводки переноса выполнялась проверка на вид движения и если вид движения "301", то выдавалось сообщение об о ошибке.
Данная задача была реализована при помощи BADI "MB_MIGO_BADI" методов "Line_modify" и "Check_item".
Но обнаружилась такая ошибка: Если создать проводку переноса с двумя позициями материалов и сразу нажать кнопку Проводка(Post), то методы отрабатывают нормально, если же нажмем кнопку Временно сохранить(HOLD), сохранится временный документ - проводка переноса с двумя позициями(в моем примере). Выйдем из транзакции MIGO, снова её запустим, выберем сохраненный с двумя позициями материалов и нажмём кнопку Проводка(Post) выполнится как и положено BADI "MB_MIGO_BADI" и её методы "Line_modify" и "Check_item".
В начале выполнится метод "Line_modify", но выполнится для i_line_id = '00001' т.е для первой позиции

Код: You are not allowed to view links. Register or Login
DATA: l_subrc TYPE sysubrc.

  READ TABLE gt_line
       WITH KEY table_line = i_line_id
IF sy-subrc = 0.
  IF cs_goitem-bwart NE '301'.
    IF l_subrc NE 0. INSERT i_line_id INTO TABLE gt_line. ENDIF.
  ENDIF.

затем отработает метод "Check_item" c i_line_id = '00001'

Код: You are not allowed to view links. Register or Login
DATA: ls_bapiret TYPE bapiret2.

* Read external data
  READ TABLE gt_line
       WITH TABLE KEY table_line = i_line_id
       TRANSPORTING NO FIELDS.

  IF sy-subrc NE 0.
    ls_bapiret-type       = 'E'.
    ls_bapiret-id         = 'ZMM'.
    ls_bapiret-number     = '443'.
    ls_bapiret-message_v1 = '301'.

    INSERT ls_bapiret INTO TABLE et_bapiret2.
  ENDIF.

А затем снова тут же ещё раз вызывается метод "Check_item" но уже с i_line_id = '00002', а так как метод "Line_modify" не вызвался для i_line_id = '00002', то в таблицу gt_line запись не добавилась и следовательно когда выполняется метод "Check_item" но уже с i_line_id = '00002' в gt_line запись не находится и следовательно выдается ошибка.
Как быть?
Как использовать метод "Line_modify" для каждой позиции при оперировании с временно сохраненными документами?
Или быть может посоветуете другой способ решения проблемы.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 761
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Проблема с использованием BADI "MB_MIGO_BADI"
« Ответ #1 : Февраль 11, 2010, 02:44:41 pm »
1. Ну вообще-то это полномочиями разруливается. Объекты полномочий:
M_MSEG_BMB
M_MSEG_BWA
В них убираете вид движения 301 и пользователь получит сообщение об ошибке. Вообще правильные роли включают только те движения которыми разрешено пользоваться. Вряд ли это весь перечень из всех возможных. Так что лучше тут на ролях день потерять потом головняка будет меньше.


2. Теперь к вашему вопросу через абап я бы проверил это в общих экзитах которые вроде как работают железобетонно и до сих пор. Для начала проверьте вот этот MBCF0002 - для каждой позиции проверка текста позиции ну и там же можно вид движения проверить, ну а если тоже не поможет, то вот MB_CF001 ну 100% там вернете ошибку и ничего не проведется.

Оффлайн Levin

  • Newbie
  • *
  • Сообщений: 2
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Проблема с использованием BADI "MB_MIGO_BADI"
« Ответ #2 : Февраль 11, 2010, 04:09:22 pm »
Рекомендуемые расширения в моем случае не вызываются, проверил

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 761
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Проблема с использованием BADI "MB_MIGO_BADI"
« Ответ #3 : Февраль 11, 2010, 04:17:37 pm »
You are not allowed to view links. Register or Login
Рекомендуемые расширения в моем случае не вызываются, проверил
MB_CF001 вот это тоже не вызвается?! Не может быть вы мне все концепцию мировозрения ломаете, оно то точно должно вызваться, так как это последнее, что перед COMMIT WORK документа вызывается.