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

Parallel processing with RFC



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


Age: 48
Joined: 06 Aug 2010
Posts: 79
Location: Ukraine

PostPosted: Mon Sep 23, 2013 3:25 pm    Post subject: Parallel processing with RFC Reply with quote

Здравствуйте уважаемые!
Сделал собственно субж, вызываю некий RFC-ФМ в нескольких диалоговых процессах так как это описано в хелпе, все вроде работает, но периодически получаю кучу дампов на продуктиве вот такого типа
CALL_FUNCTION_SEND_ERROR а потом через секунду подряд два таких RABAX_CALLING_RABAX. В общем это звучит как подземный стук, но если кто может помочь, то выдам более подробную информацию...

CALL_FUNCTION_SEND_ERROR
Code:
 Анализ ошибки
    An error occurred when executing a Remote Function Call.

    "CPIC-CALL: 'ThCMSEND' : cmRc=18 thRc=0#Статистика не активна. "

    Status of connection.... "CODE=CM_DEALLOCATED_NORMAL CM_SEND_RECEIVED
     CM_COMPLETE_DATA_RECEIVED SAPCODE=0 CONV=31381675"
    Internal error code.... "RFC_IO5"

    There is an error in the communication system. To clarify
    and resolve the error, contact your system administrator.


Вроде как похоже что не было свободных диалоговых процессов для пользователя, но я выделил всего 5 штук их, а вообще пользователю у нас доступно 15. Ну так ФМ который это возвращает говорит.
Back to top
View user's profile Send private message
Armann
Модератор
Модератор



Joined: 01 Jan 2008
Posts: 422
Location: Moscow

PostPosted: Tue Sep 24, 2013 10:17 am    Post subject: Reply with quote

ну так может падает когда заняты все процессы?
Back to top
View user's profile Send private message Blog
Удав
Гуру
Гуру


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

PostPosted: Tue Sep 24, 2013 9:30 pm    Post subject: Reply with quote

1. Количество внешних сессий (режимов) для одного пользователя не может превышать 6.
2. При вызове ФМ в режиме STARTING NEW TASK обязательно объявляйте EXCEPTION communication_error и others.
3. После Internal error code.... "RFC_IO5" должна быть подробная информация, типа такой
Quote:
Component............ "NI (network interface)"
Place................ "SAP-Gateway on host siras1pp / sapgw35"
Version.............. 34
Error code........... "-3"
Error text........... "service 'sapgw57' unknown"
Description.......... "NiIServToAddr"
System call.......... " "
Module............... "nixxi.c"
Line................. 2344

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


Age: 48
Joined: 06 Aug 2010
Posts: 79
Location: Ukraine

PostPosted: Thu Sep 26, 2013 11:35 am    Post subject: Reply with quote

Удав wrote:
1. Количество внешних сессий (режимов) для одного пользователя не может превышать 6.
2. При вызове ФМ в режиме STARTING NEW TASK обязательно объявляйте EXCEPTION communication_error и others.
3. После Internal error code.... "RFC_IO5" должна быть подробная информация, типа такой
Quote:
Component............ "NI (network interface)"
Place................ "SAP-Gateway on host siras1pp / sapgw35"
Version.............. 34
Error code........... "-3"
Error text........... "service 'sapgw57' unknown"
Description.......... "NiIServToAddr"
System call.......... " "
Module............... "nixxi.c"
Line................. 2344


Вам ее предоставить?
Exeptions объявлены... Вот как происходит вызов фм
Code:

            CALL FUNCTION 'Z_FM_XXX_XXX_XXXX'
              STARTING NEW TASK gv_taskname
              DESTINATION IN GROUP gv_rfcgr
              PERFORMING task_return_results ON END OF TASK
              EXPORTING
                iv_bukrs              = p_bukrs
                iv_date               = <fs_date>-date_r
                iv_fin                = p_fin
                iv_save_data          = lf_save_data
              TABLES
                et_svodka             = gt_svodka[]
                et_zoln_coef          = gt_zoln_coef[]
                et_aufm               = gt_aufm[]
                et_gamng              = gt_gamng[]
                et_crhd_idx           = gt_crhd_idx[]
                et_crhd               = gt_crhd[]
                et_resb               = gt_resb[]
                et_jest               = gt_jest[]
                et_stat               = gt_stat[]
                et_plpo               = gt_plpo[]
                et_plpo_w             = gt_plpo_w[]
                et_pbid               = gt_pbid[]
              EXCEPTIONS
                communication_failure = 1 
                system_failure        = 2 
                resource_failure      = 3
                OTHERS                = 4.

Я так понимаю если превышено кол-во диалоговых процессов то sy-subrc должно быть равно 3. Эту ситуацию я обрабатываю, а ошибки все равно лезут Sad Причем не всегда и не у всех...

Хм.. вот сейчас обнаружил что написано в ошибке

Code:
Динамическая ошибка    RABAX_CALLING_RABAX
Дата и время           26.09.2013 09:14:05
Анализ ошибки
    The T100 error code is "14 027".
    The error text reads
    Достигнуто максимальное число режимов.
    with this key.



Странно, ведь по идее тогда ФМ должен вернуть resource_failure, а эту ситуацию я обрабатываю
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


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

PostPosted: Fri Sep 27, 2013 12:33 am    Post subject: Reply with quote

klkuznetsov wrote:
Странно, ведь по идее тогда ФМ должен вернуть resource_failure, а эту ситуацию я обрабатываю

resource_failure - это про отсутствие свободных диалоговых процессов на сервере приложений.

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


Age: 48
Joined: 06 Aug 2010
Posts: 79
Location: Ukraine

PostPosted: Fri Sep 27, 2013 2:57 pm    Post subject: Reply with quote

Удав wrote:
klkuznetsov wrote:
Странно, ведь по идее тогда ФМ должен вернуть resource_failure, а эту ситуацию я обрабатываю

resource_failure - это про отсутствие свободных диалоговых процессов на сервере приложений.

В общем я так понял решения нет Sad Но вот там же в пояснению к ошибке написано, что достигнуто максимальное количество режимов, это о чем? Неужели эта ситуация никак не обрабатывается?
Back to top
View user's profile Send private message
XXX_:)
Аналитик
Аналитик


Age: 41
Joined: 01 Feb 2008
Posts: 387
Location: Воронеж

PostPosted: Fri Sep 27, 2013 4:34 pm    Post subject: Reply with quote

Была похожая ошибка в свое время, теоретически был путь через увеличение количества внешних сессий(кажется это возможно). Но у нас было проще, при открытых 6 окнах один запуск функции работает корректно всегда(если не запущен дополнительно отладчик), поэтому у нас все запускалось последовательно по 1. Хотя были идеи делать запуск отдельно через JOB например или в цикле do ограниченном по времени или по успешности выполнения ФМ-а. Успешность выполнения ФМ-а можно оценить по изменениям в БД. + мы делали логирование(SLG) всего и вся, чтобы потом уже можно было отследить что и когда запускалось и как работало.

Говорю то мы, но делал не я, а мой коллега, просто обсуждали задачу совместно, так что я могу что либо путать.

_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Back to top
View user's profile Send private message Blog
Удав
Гуру
Гуру


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

PostPosted: Sat Sep 28, 2013 1:33 pm    Post subject: Reply with quote

klkuznetsov wrote:
В общем я так понял решения нет Sad

Решение есть:
1. Количество свободных процессов сервера приложений (ФМ SPBT_INITIALIZE / SPBT_GET_CURR_RESOURCE_INFO)
2. Если количество свободных процессов больше 2, то вычисляем количество свободных режимов 6 - количество режимов, занятых пользователем (ФМ TH_LONG_USR_INFO).
Меньшее число из п.п.1-2 и определит возможность запуска новых задач.

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


Age: 48
Joined: 06 Aug 2010
Posts: 79
Location: Ukraine

PostPosted: Mon Sep 30, 2013 12:15 pm    Post subject: Reply with quote

Удав wrote:
klkuznetsov wrote:
В общем я так понял решения нет Sad

Решение есть:
1. Количество свободных процессов сервера приложений (ФМ SPBT_INITIALIZE / SPBT_GET_CURR_RESOURCE_INFO)
2. Если количество свободных процессов больше 2, то вычисляем количество свободных режимов 6 - количество режимов, занятых пользователем (ФМ TH_LONG_USR_INFO).
Меньшее число из п.п.1-2 и определит возможность запуска новых задач.


Да, результаты моих раздумий дали похожий результат Smile
Я тут вычислил, что я в проге неверно вычисляю количество запущеных процессов и кол-во процессов доступных пользователю.
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.