Parallel processing 启动新任务的并行处理-前端屏幕超时

Parallel processing 启动新任务的并行处理-前端屏幕超时,parallel-processing,abap,Parallel Processing,Abap,我正在运行一个ABAP程序来处理大量数据。SAP文档提供了我应该使用的信息 远程功能模块,添加新任务以处理数据 因此,我的程序首先选择所有数据,将数据分解成包,并使用数据包调用函数模块进行进一步处理 这是我的伪代码: Select KEYFIELD from MYSAP_TABLE into table KEY_TABLE package size 500. append KEY_TABLE to ALL_KEYS_TABLE. Endselect. Loop at ALL_KEYS_

我正在运行一个ABAP程序来处理大量数据。SAP文档提供了我应该使用的信息 远程功能模块,添加新任务以处理数据

因此,我的程序首先选择所有数据,将数据分解成包,并使用数据包调用函数模块进行进一步处理

这是我的伪代码:

Select KEYFIELD from MYSAP_TABLE into table KEY_TABLE package size 500.

 append KEY_TABLE to ALL_KEYS_TABLE.

Endselect.


Loop at ALL_KEYS_TABLE assigning <fs_table> .

  call function 'Z_MASS_PROCESSING'
     starting new TASK 'TEST' destination in group default
       exporting
           IT_DATA = <fs_table> .

Endloop .
将MYSAP_表中的KEYFIELD选择为表KEY_表包大小500。
将键\u表附加到所有键\u表。
结束选择。
循环所有\u键\u表分配。
调用函数“Z_MASS_PROCESSING”
在组默认值中启动新任务“测试”目标
出口
IT_DATA=。
结束循环。
但我惊讶地发现,我正在使用对话框进程而不是后台进程来调用我的函数模块

所以现在我遇到了一个问题,我的一个对话进程在60分钟后因为超时而被终止

对我来说,开始新任务似乎不是并行处理海量数据的正确解决方案


替代方案是什么?

要实现并行处理,您需要做的不仅仅是添加该子句。该信息包含在中。需要投入大量的设计工作,以确保并行处理的通信和结果合并开销不会首先否定并行处理所获得的性能优势,并且即使某些并行任务失败,数据的引用完整性也会得到维护。不要低估这项任务的复杂性。

如前所述,这不是一个用几行代码就能处理的简单主题。您必须以深思熟虑的方式实施的一般步骤是:

1) 获得可用于并行处理的自由工作流程

2) 将数据切片到要处理的包中

3) 为具有可用工作流程的每个包异步调用启用RFC的功能模块。处理等待空闲工作流程,如果包>可用流程

4) 异步接收结果

5) 等到一切都处理完毕,再将数据合并在一起,确保每个包都得到了正确的处理

虽然仅仅发布链接是一种不好的做法,但代码很长,这会使答案非常混乱,因此请查看以下链接:

其他RFC变体(如qRFC、tRFC等)可以通过简短的描述找到,但遗憾的是,无法为您提供进一步的了解

编辑:

在并行处理中,作业步骤通常在后台启动 处理工作流程。(…)而作业本身在 后台进程,它启动运行的并行处理任务 对话框中的工作流程。此类对话工作流程可能位于 任何SAP服务器

服务器由组(默认值:parallel_generators)指定,请参见事务RZ12,并且可以有自己的资源用于并行处理。如果进程超时,则必须以不同的大小分割包。

您可以使用。这是SAP开发的一种新的后台处理方法

除了已经存在的后台任务外,BgRFC还可以配置和监视通过此方法运行的所有调用


您可以在不同的可能性之间阅读更多文档。当然,这完全取决于您的SAP版本。

我认为,SAP中并行处理的最佳方式是银行并行处理框架,正如Jagger所提到的。不幸的是,它在任何资源中都很少被提及,而且没有很好的文档记录。 事实上,我找到的最好的文档就是这本书

是的,这很棘手。我花了5到6天的时间才勉强完成。但结果是好的

所有的东西都在package
BANK\u PP\u JOBCTRL
中,你可以用它的名字在谷歌上搜索

其主要思想是将您的所有工作划分为步骤(简化):

  • 准备工作

  • 并行处理

    2.1。加工准备

    2.2。处理 (实际上还有更多的步骤)

  • 第一步不是平行的。在这里,您应该为并行处理准备所有数据,并将其划分为并行处理的“部分”。 反过来,片段的内容也可以是ID或预加载的数据。 之后,您可以在并行处理中运行步骤2。 所有这些的最大好处是,一个并行工作中的错误不会导致所有处理的崩溃。
    我建议您检查功能组中的演示
    BANK\u API\u PP\u demo

    是否在每个并行过程完成后尝试刷新屏幕?因此,屏幕不会在所有处理时间都被锁定。SAP有一个专用的并行处理框架(FPP),该框架应在ERP系统中提供。我不知道它是否有很好的文档记录。尝试在系统中搜索功能模块
    BANK\u MAP\u PP\u START
    。为什么不通过管理后台作业(如作业打开、作业提交、作业关闭)的FMs提交程序?此外,如果NW堆栈位于HANA DB之上,则可以使用AMDP(ABAP托管数据库过程)类,并将数据推送到数据库级别进行处理。不确定此时是否支持SAP HANA以外的数据库使用AMDP。@Jagger感谢FPP的提示。我知道这个框架,但我认为它对于我的要求来说有点太大了。但优点是并行进程在后台进程中运行,而不是在对话进程中运行。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能无效。-@马苏德