Sapforum.Biz
Логистика => Техническое обслуживание и ремонт оборудования (PM) => Тема начата: A. от Декабрь 22, 2011, 10:11:11 am
-
Добрый день.
Возникла задача автоматического создания заказа ТОРО при создании сообщения через тр. IW21 (несмотря на наличие соответствующей кнопки).
Реализую BAdI NOTIF_EVENT_SAVE, внутри которой произвожу вызов ФМ BAPI_ALM_ORDER_MAINTAIN со ссылкой на сообщение. Но тут возникает неприятная ситуация - ФМ BAPI_ALM_ORDER_MAINTAIN также вызывает BadI NOTIF_EVENT_SAVE! Происходит ошибка.
Далее, пробую реализовать расширение QQMA0014 с тем же вызовом ФМ BAPI_ALM_ORDER_MAINTAIN - опять ошибка - теперь уже статус сообщения некорректен.
Может быть у кого-то есть опыт для решения моей задачи?
Спасибо.
-
А флажок какой поставить чтобы оно выходило из BAdI NOTIF_EVENT_SAVE, если это твой вызов ФМ BAPI_ALM_ORDER_MAINTAIN?! Я так понял там рекурсия иначе выходит? Или ошибка в другом?
-
А флажок какой поставить чтобы оно выходило из BAdI NOTIF_EVENT_SAVE, если это твой вызов ФМ BAPI_ALM_ORDER_MAINTAIN?! Я так понял там рекурсия иначе выходит? Или ошибка в другом?
Может и флажок поставить. Я пока до понимания не дотрассировал. Возможно, второй раз BAdI вызывается для обновления связи между сообщением и заказом.
-
Повторный вызов BadI происходит из-за того, что система пытается обновить связь между сообщением и заказом. Стандартным образом в IW21 заказ создается ФМ-ом CO_IH_ORDER_GENER_2.
-
В общем, задача решилась отложенным запуском процедуры создания заказа отдельным ФМ-ом с предварительным выяснением, создалось ли сообщение в базе.
-
В общем, задача решилась отложенным запуском процедуры создания заказа отдельным ФМ-ом с предварительным выяснением, создалось ли сообщение в базе.
Каким методом делали отложенный запуск? Через события + фоновом задание?
-
Создал ФМ с типом дистанционного запуска. В нем цикл на 60 итераций с паузой между каждой в 1 секунду. Во время каждой итерации определяется статус сообщения. Если он определен - то оно уже попало в базу и можно создавать заказ. Этот ФМ запускается из BAdI, в структуре импорта VIQMEL номер сообщения уже есть. Запускается он в режиме in background task. Также нужно поставить галочку на одной из вкладок заказа, но с помощью указанной выше BAPI это сделать нельзя, пришлось сразу после создания заказа с помощью IW32 + BDC "колхозить". Запуск ФМ-а производится только один раз при создании сообщения - это определяется одним из параметров импорта в бади (сейчас точно не помню, вроде бы T351).
Таким образом создается заказ со ссылкой на сообщение, и наоборот тоже ссылка есть (создавать CREATEONNOTIF методом бади). Причем видно, что в бади отладчик проваливается два раза - второй раз когда обновляется связь, но в этот второй раз ФМ для создания заказа не запускается, т.к. сообщение в режиме изменения, а не создания.