想法简友广场SAP

ABAP基础知识 并发执行(一 概念及相关知识)

2022-01-03  本文已影响0人  syjf1976_abap

点击蓝字 关注我们

前言

并发执行是指把需要处理的数据切分成若干份并同时调度多个进程同时执行多份数据的处理,以便快速完成整体数据的处理.

本文主要介绍通过ARFC启动多个进程的一些注意事项

关于后台作业的并发调度

详见链接无峰,公众号:ABAP 技巧与实战SAP工具箱 增强后台作业调度程序详解(一)
详见链接无峰,公众号:ABAP 技巧与实战SAP工具箱 增强后台作业调度程序详解(二)

ARFC调用

ARFC调用的主要参数

图一

图二

图三

并发程序的控制参数

怎么提供更多的进程资源供并发调度使用呢?

因为并发调度占用的是前台(DIALOG)进程, 在确保不影响后台作业的情况下, 可以通过RZ04创建一个分配更多前台进程的操作模式, 然后通过RZ03把服务器切换到该操作模式, 这样可以转换部分后台进程为前台进程,提供并发调用使用.

通过服务器组把多个服务器资源放到一个资源组中. 这样并发调度能够使用多个应用服务器的资源.图四的资源组 390 包含了多台应用服务器的资源

图四

并发调用注意事项

01

数据切分

可以把确定数据切分的内容放到内表中循环,循环中读取其它所需的数据通过入参传递到RFC函数中处理,也可以在函数中根据传入的关键字,自行获取数据进行处理.

02

初始化服务器组

可以通过函数SPBT_INITIALIZE 初始化服务器组,检查当前服务器组的可用资源是否能够满足用户输入的最大进程数,如果不满足,报错或者调整最大进程数, 避免出现资源错误.

03

每个进程调度前检查

每个进程调度的时候,检查一下系统是否有空闲进程, 并等待系统有空闲资源后,再CALL ARFC调度进程.

避免并发调用因为没有空闲进程而失败

04

控制变量

调用后追加发出数和执行数

循环中 等待并检查执行必须小于最大运行数,

循环后 等待并检查所有发出的任务都已经接收到结果.(如果回调失败导致 RCV_JOBS没有增加,可能会导致程序一致等待,实际应用中该问题基本不会出现).

回调中追加接收任务数,减少运行任务数

05

通过任务ID识别

ARFC调用时传递的任务ID和回调例程返回的任务ID一致,用于识别每个任务的执行情况, 需要强调的是:分配的任务ID一定不能重复.

06

统计任务执行

通过内表采集所有任务的运行情况

调用前把任务ID写入内表, 回调后读取任务ID内表,写入回调成功信息. 可以在任务内表中加入容易识别的数据分割关键字.最后通过该内表判断处理情况, 对于失败的任务,可以通过关键字识别后,发起重新调度.

实际也可以用这个内表采集的情况作为并发调度的控制信息. 用在循环末的等待中.

总结

并发调度使用了ARFC功能调用,因此并发调度的逻辑必须写入到一个RFC函数中. 暂时没有找到类方法的并发调度方式, 估计只能把类的调用封装在RFC函数中实现.

并发调度的实现比较简单,只需要注意文中的一些事项,即可实现比较完善的并发调度逻辑.

上述注意事项来自一个标准并发调度程序的跟踪,相对靠谱. 当然也可以根据基本原理写一些不同的并发控制逻辑.

上一篇 下一篇

猜你喜欢

热点阅读