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

点击蓝字 关注我们

前言

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

  • 切分数据基于业务逻辑,没有固定的模式,一般需要确保数据均匀,可重现. 可以使用单号,单据类型,月,地点,公司等维度切分数据.

  • 调度多进程可以使用系统提供的ARFC调用方式实现.

  • 并发调度的主进程可以前台/后台执行,负责协调发起并发子进程并搜集子进程返回的结果

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

关于后台作业的并发调度

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

ARFC调用

ARFC调用的主要参数

  • DESTINATION  RFC函数执行的目标系统, 可以指定一个事务代码SM59维护的RFC目标(图二).DEFAULT或者为空表示当前系统

  • IN GROUP     指定一个通过RZ12维护的资源组(图三),DEFAULT或者为空表示使用当前服务器的默认资源.通过指定资源组及资源组中的资源分配, 可以调度多个服务器的资源,并限定每个服务器最大进程占用量.

  • CALLING/PERFORMING  指定回调方法或子例程,当并发进程执行完成后,会调用指定的回调方法或子例程,返回该并发进程执行的结果.(通过RECEIVE RESULTS FROM FUNCTION 获取函数的返回结果)

图一

图二

图三

并发程序的控制参数

  • 服务器组, (IN GROUP) : 通过限定资源组,控制并发进程占用的最大服务器资源

  • 并发的最大进程数:  程序中自行限制并发的最大进程数,避免占用过多服务器资源,该数字受限于服务器组和系统的最大可用前台进程.

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

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

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

图四

并发调用注意事项

01

数据切分

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

02

初始化服务器组

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

03

每个进程调度前检查

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

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

04

控制变量

  • SND_JOBS :用于统计已经发送的任务数

  • RCV_JOBS :用于统计回调模块接收的任务数

  • RUN_JOBS: 用于统计正在运行的任务数

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

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

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

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

05

通过任务ID识别

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

  • PERFORM 的回调参数名固定为 name

  • CALL METHOD 的回调参数名固定为 P_TASK

06

统计任务执行

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

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

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

总结

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

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容