Текущее время: Чт, июл 24 2025, 02:02

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Как выполнить 3 BAPI в трех различных потоках?
СообщениеДобавлено: Ср, янв 16 2013, 14:27 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, дек 15 2008, 16:22
Сообщения: 72
При работе с BAPI сбытовых документов, они использую функции из одни и тех же инклудов, в связи с этим возникают глюки неочищения буфера.
Требуется чтоб каждая из 3 BAPI выполнялась в своём потоке. Чтоб области памяти не пересекались.
Пока удалось разделить только 2 BAPI
1е выполняется в основном потоке
2е выполняется в FM RFC destination 'NONE'.
Если 3е BAPI тоже выполнить в FM RFC destination 'NONE' оно попадает в один LUW со 2м и начинаются глюки.

CALL FUNCTION STARTING NEW TASK использовать запрещено, заказчик такого не примет.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как выполнить 3 BAPI в трех различных потоках?
СообщениеДобавлено: Ср, янв 16 2013, 15:11 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
после каждой bapi luw должен закрываться,
можно поискать ф/м и подпрограммы очистки;
или, если не запретили, попробовать call function .. in background task [as separate unit]
вроде ограничений на новый luw нет, надо проверять.
submit report тоже вероятно поможет


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как выполнить 3 BAPI в трех различных потоках?
СообщениеДобавлено: Ср, янв 16 2013, 15:31 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
RFC-вызов порождает свой контекст (в вашей терминологии LUW).
Беда в том, что этот контекст существует либо до принудительного закрытия соединения (например, ФМ RFC_CONNECTION_CLOSE), либо до завершения работы программы, установившей соединение. То есть, определяется соединением (NONE в данном случае). Соответственно, у вас не получается запустить дважды RFC-модуль с одним соединением - они попадают в один контекст.
Если по условию требуется делать вызовы параллельно, никуда от STARTING NEW TASK не уйти.
Если можно делать вызовы последовательно, закрывайте соединение перед последующим его использованием.

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как выполнить 3 BAPI в трех различных потоках?
СообщениеДобавлено: Ср, янв 16 2013, 15:51 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, дек 15 2008, 16:22
Сообщения: 72
nicky555 написал:
RFC-вызов порождает свой контекст (в вашей терминологии LUW).
Беда в том, что этот контекст существует либо до принудительного закрытия соединения (например, ФМ RFC_CONNECTION_CLOSE), либо до завершения работы программы, установившей соединение. То есть, определяется соединением (NONE в данном случае). Соответственно, у вас не получается запустить дважды RFC-модуль с одним соединением - они попадают в один контекст.
Если по условию требуется делать вызовы параллельно, никуда от STARTING NEW TASK не уйти.
Если можно делать вызовы последовательно, закрывайте соединение перед последующим его использованием.

Вызовы BAPI происходят последовательно. Программа: селекционный экран+ экран с ALV На экране c ALV есть кнопки, "провести документ",
"стронировать документ". Если делать провести->сторнировать->провести, то на второй проводке BAPI выдает глючные ошибки, чтоб не было ошибок нужно выходить на селекционный экран и возвращаться.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как выполнить 3 BAPI в трех различных потоках?
СообщениеДобавлено: Ср, янв 16 2013, 22:55 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Не пробовали "завернуть" вызов BAPI в программу и 3 раза последовательно делать SUBMIT?

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как выполнить 3 BAPI в трех различных потоках?
СообщениеДобавлено: Чт, янв 17 2013, 14:18 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 12 2004, 10:44
Сообщения: 370
Откуда: Москва
Удав написал(а):
Не пробовали "завернуть" вызов BAPI в программу и 3 раза последовательно делать SUBMIT?

жестковато. согласен с Nicky555, вызывайте bapi в destination NONE, после вызова делайте RFC_CONNECTION_CLOSE для NONE. все будет хорошо :)

ps: bapi_transaction_commit / rollback надо тоже вызывать с destination NONE, а уж после RFC_CONNECTION_CLOSE конечно, тогда контекст будет всегда новый


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

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


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

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


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

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