SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Параллельное программирование в ABAP.



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Crystal_Ra
Старший специалист
Старший специалист



Joined: 12 Mar 2008
Posts: 108
Location: Белгород

PostPosted: Thu Mar 13, 2008 12:18 am    Post subject: Параллельное программирование в ABAP. Reply with quote

Прошу помощи вот в каком вопросе:
Передо мной стоит задача выгрузки борльшого массива данных, большую часть которого занимают расчеты и сбор по базе этих данных... Rolling Eyes хотелось бы ускорить весь процесс и одновременно обойти ограничение в размере самого процесса на сервере в 2ГБ...
Встает вопрос о распараллеливании обработки...

Подскажите Как в ABAP реализована парраллельность? Question

Изучая этот вопрос, я пришел к выводу, что есть одна возможность -
это написать report который затем можно запустить в фоне из диалогового report`a. Использование событий ... и тд...

Возможно данная задача как-то решена в SAP`е стандартно?
пример если не трудно... или ссылку на то в каком направлении "рыть"

_________________
(SAP) Система нипель... выпускает лучше, чем впускает!

Crystal_Ra
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 70
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Thu Mar 13, 2008 9:53 am    Post subject: Reply with quote

Для паралельной обработки можно использовать асинхронный вызов функции, открывающий новую сессию
CALL FUNCTION func ...STARTING NEW TASK task name.

Для синхронизации просессов в разных сессиях, можно эмулировать работу мулексов через переменные в SAP MEMORY (EXPORT/ IMPORT FROM/ TO MEMORY) или же опцию:
CALL FUNCTION func ...STARTING NEW TASK task name
PERFORMING form ON END OF TASK

Для синхронизации доступа к записям в базе данных использовать
LOCK объекты:
http://www.sapnet.ru/viewtopic.php?t=547
Back to top
View user's profile Send private message Blog Visit poster's website
Crystal_Ra
Старший специалист
Старший специалист



Joined: 12 Mar 2008
Posts: 108
Location: Белгород

PostPosted: Thu Mar 20, 2008 1:13 pm    Post subject: Паралл. программирование Reply with quote

Тогда такой вопрос?

Обычно в продуктивной системе имеется несколько кластаров.

При запуске функ. модуля в форме

CALL FUNCTION func ...STARTING NEW TASK task name.

Как точно указать на каком сервере запустить эту задачу?
Или система без указания сама оптимально выберет сервер под задачу?

Если не выберет то как определить менее загруженный сервер?

_________________
(SAP) Система нипель... выпускает лучше, чем впускает!

Crystal_Ra
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 70
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Thu Mar 20, 2008 2:16 pm    Post subject: Re: Паралл. программирование Reply with quote

Crystal_Ra wrote:
Тогда такой вопрос?

Обычно в продуктивной системе имеется несколько кластаров.

При запуске функ. модуля в форме

CALL FUNCTION func ...STARTING NEW TASK task name.

Как точно указать на каком сервере запустить эту задачу?
Или система без указания сама оптимально выберет сервер под задачу?

Если не выберет то как определить менее загруженный сервер?


При использовании в системе нескольких серверов приложений, наименее загруженный выбирается при вашем логине в систему.
Далее ваша программа выполняется на одном сервере.

Если Вы используете конструкцию
CALL FUNCTION func ...STARTING NEW TASK task name.
новая задача будет выполняться на том же сервере приложений, только в новой сессии. Соотвественно новая сессия будет получать от процессора свои кванты времени на выполнение программы. Этим вы можете увеличить вычислительные ресурсы процессора под вашу задачу.

Если Вы хотите запустить выполнение ФМ на другом сервере приложений, используется конструкция
CALL FUNCTION func DESTINATION dest.

Как выбирать менее загруженный сервер, это я сейчас не готов ответить. Надо поискать ФМ.
Back to top
View user's profile Send private message Blog Visit poster's website
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Thu Mar 20, 2008 2:17 pm    Post subject: Reply with quote

Для свободных серверов и рабочих процессов можно использовать группу функций SPBT:
Определение количества свободных процессов
ФМ SPBT_INITIALIZE - при первом запуске
ФМ SPBT_GET_CURR_RESOURCE_INFO - при остальных запусках
Определение сервера для параллельной обработки:
ФМ SPBT_PARALLEL_PROCESSING

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
Crystal_Ra
Старший специалист
Старший специалист



Joined: 12 Mar 2008
Posts: 108
Location: Белгород

PostPosted: Thu Mar 20, 2008 2:40 pm    Post subject: Reply with quote

А пример можно? Если не сложно?
_________________
(SAP) Система нипель... выпускает лучше, чем впускает!

Crystal_Ra
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Thu Mar 20, 2008 4:23 pm    Post subject: Reply with quote

Программы RSPRFC03, RIMODACT
_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
Crystal_Ra
Старший специалист
Старший специалист



Joined: 12 Mar 2008
Posts: 108
Location: Белгород

PostPosted: Fri Mar 21, 2008 4:14 pm    Post subject: Reply with quote

Подскажите еще, как увидеть процесс который запускается как:

CALL FUNCTION 'Z_...' starting new task 'TAB1' ...

_________________
(SAP) Система нипель... выпускает лучше, чем впускает!

Crystal_Ra
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 70
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Fri Mar 21, 2008 4:46 pm    Post subject: Reply with quote

На текущем сервере SM50
На других серверах SM51

так же через меню можете завершить процесс или перейти к его отладке.
Back to top
View user's profile Send private message Blog Visit poster's website
Crystal_Ra
Старший специалист
Старший специалист



Joined: 12 Mar 2008
Posts: 108
Location: Белгород

PostPosted: Fri Mar 21, 2008 4:59 pm    Post subject: Reply with quote

Который из них мой?
Я знаю только имя своего потока...

Куда смотреть , возможно не туда смотрю?

_________________
(SAP) Система нипель... выпускает лучше, чем впускает!

Crystal_Ra
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 70
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Fri Mar 21, 2008 5:33 pm    Post subject: Reply with quote

Всмысле, что, сервер и процесс ваш?
По имени пользователя, например.

Картинку прикрепите к сообщению...
Back to top
View user's profile Send private message Blog Visit poster's website
Crystal_Ra
Старший специалист
Старший специалист



Joined: 12 Mar 2008
Posts: 108
Location: Белгород

PostPosted: Fri Mar 21, 2008 5:48 pm    Post subject: Reply with quote

Запуская процесс по именя язнаю его имя... вроде и все..
SM50 - дает список но имен вроде нету...
мне нужно видеть что процесс еще работает или нет...

------------------------------------------
и еще вопрос...
вызываю
CALL FUNCTION 'ABAP4_CALL_TRANSACTION' STARTING NEW TASK 'TEST'

создается фоновый процесс? или процесс равный диалоговому?
Я что-то запутался...

_________________
(SAP) Система нипель... выпускает лучше, чем впускает!

Crystal_Ra
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 70
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Sat Mar 22, 2008 8:26 pm    Post subject: Reply with quote

Crystal_Ra wrote:
Запуская процесс по именя язнаю его имя... вроде и все..
SM50 - дает список но имен вроде нету...
мне нужно видеть что процесс еще работает или нет...

------------------------------------------
и еще вопрос...
вызываю
CALL FUNCTION 'ABAP4_CALL_TRANSACTION' STARTING NEW TASK 'TEST'

создается фоновый процесс? или процесс равный диалоговому?
Я что-то запутался...

1) Чтобы убедиться, что новая сессия с ФМ стартовала, можете для проверки в код вставить бесконечный цикл:
DATA: v.
WHILE v IS INITIAL.
ENDWHILE.
Тогда точно увидите в sm50, запущен он или нет.

2) http://www.sapnet.ru/abap_docu/ABAPCALL_FUNCTION_STARTING.htm
SAP wrote:
CALL FUNCTION func ...STARTING NEW TASK
Effect
Starts the function module func asynchronously in a new mode. In contrast to normal function module calls, the calling program resumes processing as soon as the function module is started in the target system. It does not wait until the function module has finished. Through CALL SCREEN , the called function module can, for example, display a
screen and thus interact with the user.


Запущенный в новой сессии ФМ имеет связь с SAP GUI на сервере презентаций. То есть вы можете использовать ФМ, например GUI_DOWNLOAD, требующий связи с gui. Разница в том, что новая сессия будет создавать новый диалоговый процесс и новое окно.

Не имеют связи с sap gui задачи, запущенные в фоне,
например: CALL FUNCTION ... IN BACKGROUND TASK DESTINATION.
Back to top
View user's profile Send private message Blog Visit poster's website
vaduser_sap
Участник
Участник



Joined: 07 Mar 2014
Posts: 1

PostPosted: Fri Mar 07, 2014 3:06 pm    Post subject: Reply with quote

Уважаемый, vga!
Подскажите, пожалуйста.
Вот запустился ФМ в фоне... появилось окошко GUI "пустое" (сессия без имени в SM04, TH_LONG_USR_INFO).
Информация в тайтле окна такая (можно увидеть, если правый клик на SAPLogon в трее либо через закрытие режимов): 0(6), , ()
Какую информацию несут значения, и можно ли (я так понимаю, что можно) передавать туда имена (названия ФМ), чтобы можно было различать что запущено (в случае запуска разных ФМ в фоне)

Спасибо.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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.