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

Автор A., Грудень 22, 2011, 10:11:11 ДП

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

A.

Добрый день.

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

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

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

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

Спасибо.

Uukrul

А флажок какой поставить чтобы оно выходило из BAdI NOTIF_EVENT_SAVE, если это твой вызов ФМ BAPI_ALM_ORDER_MAINTAIN?! Я так понял там рекурсия иначе выходит? Или ошибка в другом?

A.

Цитата: Uukrul від Грудень 22, 2011, 11:10:39 ДП
А флажок какой поставить чтобы оно выходило из BAdI NOTIF_EVENT_SAVE, если это твой вызов ФМ BAPI_ALM_ORDER_MAINTAIN?! Я так понял там рекурсия иначе выходит? Или ошибка в другом?
Может и флажок поставить. Я пока до понимания не дотрассировал. Возможно, второй раз BAdI вызывается для обновления связи между сообщением и заказом.

A.

Повторный вызов BadI происходит из-за того, что система пытается обновить связь между сообщением и заказом. Стандартным образом в IW21 заказ создается ФМ-ом CO_IH_ORDER_GENER_2.

A.

В общем, задача решилась отложенным запуском процедуры создания заказа отдельным ФМ-ом с предварительным выяснением, создалось ли сообщение в базе.

Uukrul

Цитата: A. від Січень 07, 2012, 08:56:44 ПП
В общем, задача решилась отложенным запуском процедуры создания заказа отдельным ФМ-ом с предварительным выяснением, создалось ли сообщение в базе.
Каким методом делали отложенный запуск? Через события + фоновом задание?

A.

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

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


SMF spam blocked by CleanTalk