我如何知道我可以创建多少个 RFC 任务?
How do I know how many RFC tasks I can create?
我正在实现一个报告,它并行执行相同的代码两次。
为此,我执行以下操作:
call function 'my_func'
starting new task 'T1' destination 'NONE'
calling go_results->receive_results on end of task
exporting
it_pernr_tab = lt_1st_half
is_selection_parameters = gs_parm.
call function 'my_func'
starting new task 'T2' destination 'NONE'
calling go_results->receive_results on end of task
exporting
it_pernr_tab = lt_2nd_half
is_selection_parameters = gs_parm.
wait until go_results->mv_received_results = 2.
这将创建两个新任务,它们将正常执行。
但我根本不做任何验证,我只是简单地调用了两次任务,因为我已经决定了。
我不知道是否有足够的 "room" 来完成两个新任务,也不知道是否有足够的空间来完成 10 个,我可以更好地使用它们。
这正是我的问题:
a) 我能否以某种方式计算出我可以创建的最大任务数,以便充分利用并行性?例如,获取可用工作进程的数量?
这个问题已经讨论过了,请找 link 找话题。
.
的 SAP 帮助文档
SPBT_INITIALIZE就是你要找的FM
在启动 asnyc 功能模块之前,您应该调用功能模块 SPBT_INITIALIZE。
相关的是参数 group_name、max_pbt_wps 和 free_pbt_wps
CALL FUNCTION 'SPBT_INITIALIZE'
EXPORTING
group_name = 'YOUR_SERVER_GROUP'
IMPORTING
MAX_PBT_WPS = lv_max
free_pbt_wps = lv_free
EXCEPTIONS
invalid_group_name = 1
internal_error = 2
pbt_env_already_initialized = 3
currently_no_resources_avail = 4
no_pbt_resources_found = 5
cant_init_different_pbt_groups = 6
OTHERS = 7.
服务器组用于避免有人使用 SAP 系统中的所有可用进程。如果不想配置
服务器组您将使用默认服务器组。此外,您应该使用以下名称启动异步功能模块
你的服务器组
CALL FUNCTION 'YOUR_ASYNC_FUNCTION' STARTING NEW TASK 'YOUR_TASK_IDENTIFIER'
DESTINATION IN GROUP 'YOUR_SERVER_GROUP'
或者如果您想使用默认组
CALL FUNCTION 'YOUR_ASYNC_FUNCTION' STARTING NEW TASK 'YOUR_TASK_IDENTIFIER'
DESTINATION IN GROUP DEFAULT
在这里您可以找到服务器组的 SAP 文档
但无论如何,在您拨打 SPBT_INITIALIZE 之后,您将收到您请求的信息。
lv_max:您的服务器组的最大可用进程数
lv_free:您的服务器组目前可用的进程
我正在实现一个报告,它并行执行相同的代码两次。
为此,我执行以下操作:
call function 'my_func'
starting new task 'T1' destination 'NONE'
calling go_results->receive_results on end of task
exporting
it_pernr_tab = lt_1st_half
is_selection_parameters = gs_parm.
call function 'my_func'
starting new task 'T2' destination 'NONE'
calling go_results->receive_results on end of task
exporting
it_pernr_tab = lt_2nd_half
is_selection_parameters = gs_parm.
wait until go_results->mv_received_results = 2.
这将创建两个新任务,它们将正常执行。
但我根本不做任何验证,我只是简单地调用了两次任务,因为我已经决定了。
我不知道是否有足够的 "room" 来完成两个新任务,也不知道是否有足够的空间来完成 10 个,我可以更好地使用它们。
这正是我的问题:
a) 我能否以某种方式计算出我可以创建的最大任务数,以便充分利用并行性?例如,获取可用工作进程的数量?
这个问题已经讨论过了,请找 link 找话题。
SPBT_INITIALIZE就是你要找的FM
在启动 asnyc 功能模块之前,您应该调用功能模块 SPBT_INITIALIZE。
相关的是参数 group_name、max_pbt_wps 和 free_pbt_wps
CALL FUNCTION 'SPBT_INITIALIZE'
EXPORTING
group_name = 'YOUR_SERVER_GROUP'
IMPORTING
MAX_PBT_WPS = lv_max
free_pbt_wps = lv_free
EXCEPTIONS
invalid_group_name = 1
internal_error = 2
pbt_env_already_initialized = 3
currently_no_resources_avail = 4
no_pbt_resources_found = 5
cant_init_different_pbt_groups = 6
OTHERS = 7.
服务器组用于避免有人使用 SAP 系统中的所有可用进程。如果不想配置 服务器组您将使用默认服务器组。此外,您应该使用以下名称启动异步功能模块 你的服务器组
CALL FUNCTION 'YOUR_ASYNC_FUNCTION' STARTING NEW TASK 'YOUR_TASK_IDENTIFIER'
DESTINATION IN GROUP 'YOUR_SERVER_GROUP'
或者如果您想使用默认组
CALL FUNCTION 'YOUR_ASYNC_FUNCTION' STARTING NEW TASK 'YOUR_TASK_IDENTIFIER'
DESTINATION IN GROUP DEFAULT
在这里您可以找到服务器组的 SAP 文档
但无论如何,在您拨打 SPBT_INITIALIZE 之后,您将收到您请求的信息。
lv_max:您的服务器组的最大可用进程数
lv_free:您的服务器组目前可用的进程