使用类 CL_ABAP_PARALLEL 进行大规模并行对话工作流程
3215918 - 并行 RFC 组 \"default\" 替换组 \"parallel_generators\"
新的系统可以用上面类的办法,或者cds等办法。
我这在介绍一遍SPTA
上面也有自己的异步RFC办法
原理相同
SAP ABAP 中使用 SPTA 框架的并行处理技术
随着 HANA 和内存处理技术的出现,探讨这个话题可能看起来时机不太对。但是,有许多企业在未来几年内仍没有迁移到 HANA 的计划。正如人们所说,工作还得继续,这促使我们在这里为那些仍需在批处理作业中处理数百万行数据,且感觉 “在 SAP 中执行那些批处理作业时夜晚变得太短(时间不够用)” 的 ABAP 开发人员发布这篇拖延已久的文章(灵感来自一位朋友的博客)。
为何需要并行处理?
并行处理主要是为了提高任何 ABAP 程序的性能。使用并行处理框架,我们可以显著缩短任何程序的处理时间,特别是在数据量非常大的情况下。并行处理框架背后的基本概念是将大量数据划分成若干个小的工作包,并在不同的任务中处理不同的工作包。这样每个工作进程将同时并行处理,从而显著缩短时间。如今,每个与分发相关的项目都有大量数据,因此调用并行处理框架对于缩短时间非常有用。
传统并行处理
为什么需要 SPTA 框架?
SPTA并行处理框架
"BEFORE_RFC_CALLBACK_FORM:该例程由功能模块在调用RFC功能模块之前调用。这里我们必须构建我们想要在RFC功能模块中处理的不同工作包。
RFC 的功能模块或自定义代码来处理每个工作包。
"AFTER_RFC_CALLBACK_FORM:该例程由功能模块在最后调用。处理完所有工作包后,我们必须收集所有处理后的数据。
CALL FUNCTION 'SPTA_PARA_PROCESS_START_2'
EXPORTING
SERVER_GROUP = P_GROUP " SERVER_GROUP created from RZ12
MAX_NO_OF_TASKS = P_TASK "最大进程数
BEFORE_RFC_CALLBACK_FORM = 'BEFORE_RFC'
IN_RFC_CALLBACK_FORM = 'IN_RFC'
AFTER_RFC_CALLBACK_FORM = 'AFTER_RFC'
CALLBACK_PROG = SY-REPID
CHANGING
USER_PARAM = GT_DATE_LIST "这是为了让你传输你想要处理的数据
EXCEPTIONS
INVALID_SERVER_GROUP = 1
NO_RESOURCES_AVAILABLE = 2
OTHERS = 3.
BEFORE_RFC_CALLBACK_FORM:该例程由功能模块在调用RFC功能模块之前调用。这里我们必须构建我们想要在RFC功能模块中处理的不同工作包。
IN_RFC_CALLBACK_FORM:该例程在工作包创建后由功能模块调用。在此例程中,我们可以使用自己的启用 RFC 的功能模块或自定义代码来处理每个工作包。
AFTER_RFC_CALLBACK_FORM:该例程由功能模块在最后调用。处理完所有工作包后,我们必须收集所有处理后的数据。
BEFORE_RFC_CALLBACK_FORM:在此例程中,我们必须创建小型内部表,我们将其称为工作包,以便在 IN RFC 例程中进行并行处理。