Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Abap 在并行处理过程中是否可以跳过某些记录?_Abap_Saprfc - Fatal编程技术网

Abap 在并行处理过程中是否可以跳过某些记录?

Abap 在并行处理过程中是否可以跳过某些记录?,abap,saprfc,Abap,Saprfc,我正在使用并行处理 CALL FUNCTION 'ZABC' STARTING NEW TASK taskname DESTINATION IN GROUP srv_grp PERFORMING come_back ON END OF TASK EXPORTING ... EXCEPTIONS ... . 我在循环中调用这个FM。有时,我的记录会被跳过。我没有得到期望的输出。有时处理2000条记录,有时处理1000条记录。数字各不相同。有什么问题吗?您能提供一些在并行处理

我正在使用并行处理

CALL FUNCTION 'ZABC' STARTING NEW TASK taskname
          DESTINATION IN GROUP srv_grp PERFORMING come_back ON END OF TASK
EXPORTING
 ...
EXCEPTIONS
...
.

我在循环中调用这个FM。有时,我的记录会被跳过。我没有得到期望的输出。有时处理2000条记录,有时处理1000条记录。数字各不相同。有什么问题吗?您能提供一些在并行处理中可以跳过记录的情况吗?

请参阅SAP提供的示例代码:

看看他们是如何处理资源异常的。资源异常意味着您试图启动新的aRFC,但没有更多可用进程。您的程序必须处理这些情况。如果不处理这些情况,将跳过条目。在示例程序中,通常的处理方法是等待一段时间,等待一些活动进程完成:

WAIT UNTIL rcv_jobs >= snd_jobs
     UP TO 5 SECONDS.

请参见SAP提供的示例代码:

看看他们是如何处理资源异常的。资源异常意味着您试图启动新的aRFC,但没有更多可用进程。您的程序必须处理这些情况。如果不处理这些情况,将跳过条目。在示例程序中,通常的处理方法是等待一段时间,等待一些活动进程完成:

WAIT UNTIL rcv_jobs >= snd_jobs
     UP TO 5 SECONDS.
gv_信号量=0。
“您的内部表格大小。
描述表lt\U itab线路lv\U线路。
在lt_itab循环到ls_itab。
“并行进程。-->>
调用函数“ZABC”启动新任务taskname
组srv_grp中的目标正在执行任务结束时返回
出口
...
例外情况
...
.
“
gv_信号量=0。
“您的内部表格大小。
描述表lt\U itab线路lv\U线路。
在lt_itab循环到ls_itab。
“并行进程。-->>
调用函数“ZABC”启动新任务taskname
组srv_grp中的目标正在执行任务结束时返回
出口
...
例外情况
...
.

“请提供更多信息。输入的大小是否始终相同,例如2000条记录?函数调用在做什么?选择数据?更新数据?如果并行调用的FM生成转储,它可能看起来像被跳过了,因为它永远不会调用任务结束时例程。检查ST22,看看你是否是这样。@Gert不,这是不正确的。它将发送一个异常,即使它转储。但是你当然要处理它。你怎么发现这些记录被跳过了呢?@Tapio,自从我上次使用它以来,功能似乎有所改进,或者我记错了东西(很有可能)。我现在写的一个小测试程序不会在被调用的FM中转储,而是在接收命令中转储,这样更好。请提供更多信息。输入的大小是否始终相同,例如2000条记录?函数调用在做什么?选择数据?更新数据?如果并行调用的FM生成转储,它可能看起来像被跳过了,因为它永远不会调用任务结束时例程。检查ST22,看看你是否是这样。@Gert不,这是不正确的。它将发送一个异常,即使它转储。但是你当然要处理它。你怎么发现这些记录被跳过了呢?@Tapio,自从我上次使用它以来,功能似乎有所改进,或者我记错了东西(很有可能)。我现在编写的一个小测试程序不会在被调用的FM中转储,而是在接收命令时转储,这样更好。