Posted: Fri Jul 25, 2008 3:32 pm Post subject: выполнение программы в фоновом режиме
Доброго времени суток!
возник вопрос.
существует программа (стндартная SAP'овская)
в стандартной программе нет возможности отработать в фоновом режиме (программа с ALV Greed'ом). при этом необходимо обработать очень большой объем данных. программа валится в дамп по таймауту.
сделал с неё копию.
нашел тот участок вычислений который занмает основное время работы программы.
хочу подменить его. точнее зделать так что бы этот участок вычислений выполнялся в фоновом режиме.
как это можно реализовать?
можно ли вызывать методы класса, что бы они отрабатывали в фоновом? или прийдется создавать программу с аналогичными методами и вызывать её submit'ом с передачей необходимых параметров? _________________ Все есть в сети и все есть сеть.
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
Posted: Fri Jul 25, 2008 4:36 pm Post subject:
А какой смысл часть(?) обработки делать в фоновом режиме?
Для обхода таймаута диалогового шага способы есть, но лучше просто произвести оптимизацию выборки и обработки данных и использовать метод cl_gui_alv_grid=>offline( )
Code:
MODULE init_0100 OUTPUT.
IF g_alv_grid IS INITIAL.
IF cl_gui_alv_grid=>offline( ) IS INITIAL. "Если запуск в онлайне - создаем контейнер.
CREATE OBJECT g_container ...
ENDIF.
ALV заполняется данными. поэтому от него избавится нельзя.
первоначально пользователь производит операции. делает настройки.
затем по этим настройка заполняется ALV Greed.
по поводу методов обхода таймера, нельзя ли по подробнее! какие существуют?
знаю что при submit'е таймер сбрасывается в 0. есть ещё какие-то способы? _________________ Все есть в сети и все есть сеть.
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
Posted: Fri Jul 25, 2008 5:16 pm Post subject:
Так я же описал способ, как ALV отобразить в фоне
А настройки можно сделать и с экрана выбора, перед запуском в фоне.
"Передергивать" диалоговый шаг - это плохо.
Представь ситуацию, кода у тебя на сервере приложений 20 диалоговых процессов и все заняты программами, сбасывающими счетчик диалогового шага?
На сервере приложений должен всегда оставаться хотя бы один свободный диалоговый процесс.
А если запускаешь "тяжелые" программы в фоне, то просто выстроится очередь, которая не затрагивает диалоговые процессы и не мешает работе других пользователей. _________________ С уважением,
Удав.
Age: 165 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Fri Jul 25, 2008 5:30 pm Post subject: Re: выполнение программы в фоновом режиме
KeKS wrote:
хочу подменить его. точнее зделать так что бы этот участок вычислений выполнялся в фоновом режиме.
А вы думаете в фоне программа в 10 раз быстрее выполняется? alv все равно придется ждать окончания фонового выполнения, которое займет сопоставимое время, как и онлайн обработка.
Как вариант разбить на несколько параллельных процессов, например расчет для каждого Company Code в отдельном процессе, но в этом случае, наверно, базис будет ругаться.
Асинхронный запуск ФМ:
Quote:
Call a function module in a different mode (asynchronous Remote Function Call):
2. CALL FUNCTION func STARTING NEW TASK taskname.
Asynchronous call to a function module with transactional processing (transactional Remote Function Call):
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.