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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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