Текущее время: Ср, июл 30 2025, 17:27

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Проблема с использованием BADI "MB_MIGO_BADI" методов "Line_modify" и "Check_item"
СообщениеДобавлено: Чт, фев 11 2010, 13:37 
Начинающий
Начинающий

Зарегистрирован:
Сб, май 30 2009, 12:08
Сообщения: 15
Необходимо, чтобы в транзакции 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' т.е для первой позиции
Code:
 
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'
Code:
  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" для каждой позиции при оперировании с временно сохраненными документами?
Или быть может посоветуете другой способ решения проблемы.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Проблема с использованием BADI "MB_MIGO_BADI" методов "Line_modify" и "Check_item"
СообщениеДобавлено: Чт, фев 11 2010, 14:07 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
Попробовать посмотреть пример внедрения методов HOLD_DATA_SAVE, HOLD_DATA_LOAD, HOLD_DATA_DELETE в CL_EXM_IM_MB_MIGO_BADI и сделать аналогично у себя.

_________________
"I have a dream"(c)Martin Luther King, Jr.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с использованием BADI "MB_MIGO_BADI" методов "Line_modify" и "Check_item"
СообщениеДобавлено: Чт, фев 11 2010, 14:10 
Начинающий
Начинающий

Зарегистрирован:
Вт, ноя 17 2009, 12:21
Сообщения: 16
Попробуйте для проверки использовать user-exit MBCF0002 (ФМ EXIT_SAPMM07M_001)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Проблема с использованием BADI "MB_MIGO_BADI" методов "Line_modify" и "Check_item"
СообщениеДобавлено: Чт, фев 11 2010, 14:49 
Начинающий
Начинающий

Зарегистрирован:
Сб, май 30 2009, 12:08
Сообщения: 15
Как это не печально, но пока ничего из вышеуказанного не помогает.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Проблема с использованием BADI "MB_MIGO_BADI" методов "Line_modify" и "Check_item"
СообщениеДобавлено: Чт, фев 11 2010, 15:20 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
При работе с временно сохраненным документом LINE_MODIFY срабатывает только для 1-й позиции, т.к. она показывается на подробном экране позиции. Если выбрать 2-ю строку, то и для нее сработает этот метод.
Можно самому сохранять все данные позиций, которые доступны на момент временного сохранения документа HOLD_DATA_SAVE, как написал Alex80, затем восстанавливать их в глобальную таблицу с помощью HOLD_DATA_LOAD для проверки документа в целом.
А если пользователь что-то изменит, то LINE_MODIFY заменит данные в изменившейся строке.
Ну и проверку проводить не в CHECK_ITEM, а в CHECK_HEADER ;)

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с использованием BADI "MB_MIGO_BADI" методов "Line_modify" и "Check_item"
СообщениеДобавлено: Чт, фев 11 2010, 17:00 
Начинающий
Начинающий

Зарегистрирован:
Сб, май 30 2009, 12:08
Сообщения: 15
Цитата:
При работе с временно сохраненным документом LINE_MODIFY срабатывает только для 1-й позиции, т.к. она показывается на подробном экране позиции. Если выбрать 2-ю строку, то и для нее сработает этот метод.
Можно самому сохранять все данные позиций, которые доступны на момент временного сохранения документа HOLD_DATA_SAVE, как написал Alex80, затем восстанавливать их в глобальную таблицу с помощью HOLD_DATA_LOAD для проверки документа в целом.
А если пользователь что-то изменит, то LINE_MODIFY заменит данные в изменившейся строке.
Ну и проверку проводить не в CHECK_ITEM, а в CHECK_HEADER ;)

_________________
С уважением,
Удав.


Хорошее предложение, да можно в HOLD_DATA_SAVE сохранить номера позиций документов(gt_line), затем HOLD_DATA_LOAD считать их и далее как вы пишите использовать CHECK_HEADER, но нужно также проверить позиции на вид движения, а планах также ещё и вид запаса, а где в какой таблице эти поля взять?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Проблема с использованием BADI "MB_MIGO_BADI" методов "Line_modify" и "Check_item"
СообщениеДобавлено: Чт, фев 11 2010, 17:08 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
krivolov_s написал(а):
а где в какой таблице эти поля взять?
А кто мешает включить в gt_line структуру goitem и заполнять её?

_________________
"I have a dream"(c)Martin Luther King, Jr.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с использованием BADI "MB_MIGO_BADI" методов "Line_modify" и "Check_item"
СообщениеДобавлено: Чт, фев 11 2010, 18:11 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Alex80 написал:
krivolov_s написал(а):
а где в какой таблице эти поля взять?
А кто мешает включить в gt_line структуру goitem и заполнять её?

+1
Естественно, во временные данные нужно записывать все данные позиций со структурой goitem

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB