点击蓝字 关注我们
一
问题说明
为了说明清楚. 我们先假定有一个交货单自动过账的程序需要后台调度.
该程序每10分钟执行一次.
业务量不大的时候, 10分钟产生的交货单.一个进程足以处理完成. 但是当业务量增大. 10分钟产生的交货单,一个进程已经不足以完成所有的处理.
此时业务表现就是出现交货单积压. 大量应该自动过账的交货单无法及时过账. 影响库存的准确.
二
解决方案:
方案一: 调整程序,允许程序并发处理.
普通程序调整为可以并发处理的程序不是一个简单的过程, 可能对程序结构有比较大的改变.改变的方法不是本文论述的主题. 就不展开说明了. 后续有机会再专门写文介绍.
方案二: 改变后台调度策略.
一般情况下, 都建议把单号作为选择条件. 如果没有该选择条件, 请务必加上.
定义作业的时候. 可以把单号的尾数作为区分隔离选择的条件.
比如,定义10个作业,
可以用 *0, *1 , *2, *3 ... *9来区分每个作业的单据选择. 这样很方便的就定义了10个并发执行的后台作业. 这些作业彼此取数不冲突. 各自负责一部分单据的过账动作.
以此类推, 如果要定义100个作业.
可以用 *00, *01,...*99 来定义. 只是定义起来比较麻烦.
开发的执念
SPRING
所有手工操作麻烦的都交给代码完成吧.
当然. 这个方案有个限制: 单号必须是CHAR类型的(绝大部分的SAP单号都是CHAR类型)
三
工具介绍
本文要介绍的就是一个帮助你定义并发后台作业的小工具:
ZBC_MULTI_JOB_ALL 针对指定程序创建多个后台作业
开发原理就是基于上述方案二中的后台调度策略. 程序中限定了最大100个并发作业. 根据用户限定的作业数,通过单号限制创建不同的后台作业
01
作业数限制
02
选择字段
输入程序后, 可以通过搜索帮助输入选择字段.(注意需要选择一个单号字段)
执行时也会检查程序是否存在该选择条件
03
变式
可以选择一个程序的变式,后台执行时使用,需要注意的是: 变式中最好没有单号的限制, 因为后面传递的单号限制会覆盖变式中的单号限制.
执行时也会检查程序是否存在该变式
04
执行结果
执行后, 系统会自动产生多个后台作业.
05
作业变式
每个作业都按照单号限定作为变式
四
题外话
这样就实现了后台作业的快速并发调度.
推荐你看一下之前介绍的一个调度后台作业的工具的文章.详见链接.
批量后台作业定义和管控
无峰,公众号:ABAP 技巧与实战SAP批量后台作业定义和管控
我已经把这个并发调度整合到了这个工具中. 后续会发出新版的后台作业调度工具. 解决并发调度的问题.
五
源代码介绍
有了上述介绍, 你是不是已经可以自行开发出来这个并发调度程序了?
或者你也可以付费阅读一下源代码. 在源代码中.
你会了解到并学习以下功能的实现方式:
1. 通过程序获取选择字段及描述
2. 通过程序获取变式及描述
3. 通过程序调度后台作业
4. 选择屏幕自定义搜索帮助
下载链接见文末
关于隐藏代码下载说明: 隐藏代码程序可以执行,但无法查看源码. 可以用来体验程序功能.
程序的安装方式详见链接(付费部分有安装包,也有单独的源码下载)
安装程序
无峰,公众号:ABAP 技巧与实战SAP工具箱之 ABAP安装程序V3.0
约定
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
(如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文