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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Сообщение при создании исх. поставки "Товара Х на заводе У нет"
СообщениеДобавлено: Вт, ноя 20 2007, 16:07 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, мар 25 2005, 11:46
Сообщения: 282
Откуда: SPb
Добрый день, коллеги!
Создаю программно поступление материала на склад завода. Поступление проходит на ура.

Когда этот же материал, количество ставлю в заказ на перемещение и делаю по нему поставку, выскакивает сообщение "Товара Х на складе У нет". Если повторно прогнать программу по этому же товару, то все срабатывает.
Если же все делать ручками, то срабатывает с первого раза.

У меня возникли подозрения, что возможно проблема в том, что новый для этого завода материал не успевает прописаться на заводе, и уже создается поставка. Но у меня в программе, после BAPI поступления материала на завод стоит BAPI_TRANSACTION_COMMIT. По идее, пока обновления не пройдут, выполнение программы не продолжится.
Поставку создаю через BAPI_DELIVERYPROCESSING_EXEC.

Встречался ли кто-нибудь с проблемой такого рода и что можно предпринять в этом случае? Спасибо!

_________________
Лучше сделать и пожалеть, чем не сделать и потом жалеть.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 20 2007, 16:12 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Вариантов много, обсуждалось не раз, учитесь пользоваться поиском.

1) SET UPDATE TASK LOCAL. COMMIT WORK AND WAIT.
2) ждать пока в таблице документ не появится. LOOP. SELECT FROM MSEG. WAIT. ENDLOOP.
3) тоже, только SELECT FROM VBHDR.


Последний раз редактировалось sibrin Вт, ноя 20 2007, 16:17, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 20 2007, 16:15 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, мар 25 2005, 11:46
Сообщения: 282
Откуда: SPb
Да, забыл сказать, перед BAPI поступления материала стоит SET UPDATE TASK LOCAL. По-идее понятно, что должно происходить, нужные операторы стоят. Но почему тогда программа выполняется, пока не прошло обновление?

_________________
Лучше сделать и пожалеть, чем не сделать и потом жалеть.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 20 2007, 16:18 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
zaba написал(а):
Да, забыл сказать, перед BAPI поступления материала стоит SET UPDATE TASK LOCAL. По-идее понятно, что должно происходить, нужные операторы стоят. Но почему тогда программа выполняется, пока не прошло обновление?


У ф.м. BAPI_TRANSACTION_COMMIT есть параметр WAIT.
Хотя, это, большой роли не должно играть.

Важно, чтобы SET UPDATE TASK LOCAL стояло до регистрации первого модуля обновления.


Последний раз редактировалось sibrin Вт, ноя 20 2007, 16:25, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 20 2007, 16:24 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, мар 25 2005, 11:46
Сообщения: 282
Откуда: SPb
да

_________________
Лучше сделать и пожалеть, чем не сделать и потом жалеть.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 20 2007, 16:26 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Да, в смысле он у Вас уже установлен в 'X' и это проблему не решает?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 20 2007, 16:28 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, мар 25 2005, 11:46
Сообщения: 282
Откуда: SPb
Именно так, установлен при вызове ФМ. В настройках завода стоит флаг "а/м создание склада", по-идее в этом случае материал а/м должен созадаваться при первом поступлении. Я вот думаю, нет ли здесь какой-нибудь загвоздки?...

_________________
Лучше сделать и пожалеть, чем не сделать и потом жалеть.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 20 2007, 16:34 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Значит, наверное, обновление происходит хитрее, чем в одном LUW.
Ну тогда остаётся в цикле ждать, пока документ материала не появится в таблицах.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 20 2007, 16:54 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, мар 25 2005, 11:46
Сообщения: 282
Откуда: SPb
да, наверно так и придется сделать. А насколько это нагрузит систему, ведь запрос в цикле - не лучшее решение с точки зрения производительности?

_________________
Лучше сделать и пожалеть, чем не сделать и потом жалеть.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 20 2007, 17:47 
Начинающий
Начинающий

Зарегистрирован:
Чт, ноя 08 2007, 10:26
Сообщения: 14
Не может это быть связано, что SET UPDATE TASK LOCAL действует до первого COMMIT или ROLLBACK?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 20 2007, 18:54 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
AndrewV написал(а):
Не может это быть связано, что SET UPDATE TASK LOCAL действует до первого COMMIT или ROLLBACK?

Это и значит, что не один LUW, а несколько.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 20 2007, 19:31 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, мар 25 2005, 11:46
Сообщения: 282
Откуда: SPb
Интересно, а если вызвать диалоговое окно после функции, закончится только текущая транзакция или все? Наверное все-таки текущая, хотя, может быть кто-нибудь опровергнет?:)

_________________
Лучше сделать и пожалеть, чем не сделать и потом жалеть.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 20 2007, 22:11 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Неважно, когда закончится транзакция. Если update task не local, то обновление запускается в upd-процессе, который может исполняться сколько угодно времени вне зависимости от диалоговых процессов. Из-за блокировок или нехватки памяти процессы обновления могут и не стартовать вовсе, а накапливаться. Их можно посмотреть и "протолкнуть" в sm13.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 27 2007, 10:55 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, мар 25 2005, 11:46
Сообщения: 282
Откуда: SPb
Проблема решилась по примеру, указанному в этой теме http://sapboard.ru/forum/viewtopic.php?t=23139&highlight=submit
Если кому интересно, то делаю поступление материала в своей программе, а исходящую поставку создаю в отдельной программе, вызывая ее по SUBMIT

_________________
Лучше сделать и пожалеть, чем не сделать и потом жалеть.


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

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


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

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


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

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