Автор Тема: Автоматическое создание заказа ТОРО при создании сообщения  (Прочитано 10129 раз)

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

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Добрый день.

Возникла задача автоматического создания заказа ТОРО при создании сообщения через тр. IW21 (несмотря на наличие соответствующей кнопки).

Реализую BAdI NOTIF_EVENT_SAVE, внутри которой произвожу вызов ФМ BAPI_ALM_ORDER_MAINTAIN со ссылкой на сообщение. Но тут возникает неприятная ситуация - ФМ BAPI_ALM_ORDER_MAINTAIN также вызывает BadI NOTIF_EVENT_SAVE! Происходит ошибка.

Далее, пробую реализовать расширение QQMA0014 с тем же вызовом ФМ BAPI_ALM_ORDER_MAINTAIN - опять ошибка - теперь уже статус сообщения некорректен.

Может быть у кого-то есть опыт для решения моей задачи?

Спасибо.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 758
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
А флажок какой поставить чтобы оно выходило из BAdI NOTIF_EVENT_SAVE, если это твой вызов ФМ BAPI_ALM_ORDER_MAINTAIN?! Я так понял там рекурсия иначе выходит? Или ошибка в другом?

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
You are not allowed to view links. Register or Login
А флажок какой поставить чтобы оно выходило из BAdI NOTIF_EVENT_SAVE, если это твой вызов ФМ BAPI_ALM_ORDER_MAINTAIN?! Я так понял там рекурсия иначе выходит? Или ошибка в другом?
Может и флажок поставить. Я пока до понимания не дотрассировал. Возможно, второй раз BAdI вызывается для обновления связи между сообщением и заказом.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Повторный вызов BadI происходит из-за того, что система пытается обновить связь между сообщением и заказом. Стандартным образом в IW21 заказ создается ФМ-ом CO_IH_ORDER_GENER_2.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
В общем, задача решилась отложенным запуском процедуры создания заказа отдельным ФМ-ом с предварительным выяснением, создалось ли сообщение в базе.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 758
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
В общем, задача решилась отложенным запуском процедуры создания заказа отдельным ФМ-ом с предварительным выяснением, создалось ли сообщение в базе.
Каким методом делали отложенный запуск? Через события + фоновом задание?

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Создал ФМ с типом дистанционного запуска. В нем цикл на 60 итераций с паузой между каждой в 1 секунду. Во время каждой итерации определяется статус сообщения. Если он определен - то оно уже попало в базу и можно создавать заказ. Этот ФМ запускается из BAdI, в структуре импорта VIQMEL номер сообщения уже есть. Запускается он в режиме in background task. Также нужно поставить галочку на одной из вкладок заказа, но с помощью указанной выше BAPI это сделать нельзя, пришлось сразу после создания заказа с помощью IW32 + BDC "колхозить". Запуск ФМ-а производится только один раз при создании сообщения - это определяется одним из параметров импорта в бади (сейчас точно не помню, вроде бы T351).

Таким образом создается заказ со ссылкой на сообщение, и наоборот тоже ссылка есть (создавать CREATEONNOTIF методом бади). Причем видно, что в бади отладчик проваливается два раза - второй раз когда обновляется связь, но в этот второй раз ФМ для создания заказа не запускается, т.к. сообщение в режиме изменения, а не создания.