SAP 工具箱优化作业的定时调度

作者:ABAP技巧与实战 约 7 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, SD, 开发, 数据工程, 销售分销
目录
SAP 工具箱优化作业的定时调度 - 封面图
SAP 工具箱优化作业的定时调度 - 封面图

原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)

前言

因为标准事务代码SM36调度的后台作业功能相对比较简单.项目中需要针对后台作业做很多特殊的处理,这些处理有些可以通过标准功能实现,

有些无法通过标准功能实现.

为了简化后台作业的定义及丰富后台作业的控制,开发了这个后台作业二次调度程序 ZBC_IF_JOB_SCHEDULE

**本文主要介绍增强后台作业调度的定时调度功能**

详细介绍

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

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247486087&idx=1&sn=00f1e8e36c0a61963f1cbd0339999283&chksm=cf5dd7b1f82a5ea70775ceefa267996dc71f0344faadb5495b06a984b76745e33805d061881e&token=1630584820&lang=zh_CN#rd)

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

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247486102&idx=1&sn=129eed336411020cc80864b1160acd61&chksm=cf5dd7a0f82a5eb693f6be2e685fd2b0583435253354f3edc78dbbf6f7c840bf35aae54420fc&cur_album_id=1841167070126784519&scene=189#wechat_redirect)

思维缺陷

前期的调度思路是基于配置表中的时间间隔. 当调度程序在后台定时执行时, 判断配置表ZTIF002BJ中的每个作业距离上次调度时间是否已经超过了时间间隔,

如果超过则创建这个作业并立即执行.

由于思维局限在了这个时间间隔,对于每天定时调度的也是基于这个时间间隔来计算,后来添加了一些定时的优化逻辑.但效果不太好.

> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP工具箱 增强后台作业调度改进-准点调度

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247488292&idx=1&sn=e33e4816fda5611a418ce3c75102f6f5&chksm=cf5dce12f82a4704ee1a72a3fe0105df04187febd02611a93528b50c570f75d19141fc967e96&cur_album_id=1841167070126784519&scene=189#wechat_redirect)

突破

后来无意中看到作业调度的函数也可以限定开始执行日期/时间,才恍然大悟. 同时感慨于个体思维的局限性.

**感悟**

**SPRING**

大脑会给自己的思维画个框框(这个框取决于个人的学识,经历,阅读量等等因素).

很多时候思考问题时都会被局限在这个框中. 学习的目的应该不是记住多少东西(尤其在这个的AI快速发展的年代), 而是不断的通过学习或阅历拓展思维局限的框.

让大脑思考问题的方式有更多的可能性.

改进

后台作业配置表中增加了两个控制字段

作业调度控制

用来指定作业调度的两种方式

• I 通过间隔控制 调度器执行时,通过间隔判断是否立即调用一个新的作业

• T 通过指定时间控制 调度器执行时,为当前条目检查并定义当天的定时作业

SAP 工具箱优化作业的定时调度 - 封面图
SAP 工具箱优化作业的定时调度 - 封面图

多时间限制

该限制同时作用于上述两种作业调度方式

对于通过间隔调度的作业, 这里可以限制调度时间段. 这个限制和 后台作业的允许期间控制 同时生效

对于通过指定时间控制的, 这里限定执行的时间

改字段可以通过搜索帮助给定内容

SAP 工具箱优化作业的定时调度 - 封面图
SAP 工具箱优化作业的定时调度 - 封面图

搜索效果

单值效果(用于指定时间控制)

SAP 工具箱优化作业的定时调度 - 封面图
SAP 工具箱优化作业的定时调度 - 封面图

字段存储

SAP 工具箱优化作业的定时调度 - 封面图
SAP 工具箱优化作业的定时调度 - 封面图
SAP 工具箱优化作业的定时调度 - 封面图
SAP 工具箱优化作业的定时调度 - 封面图

读取时间区间控制

比如限定 20:00:00 -> 22:00:00 并排除 20:10:00->20:20:00

存储效果

SAP 工具箱优化作业的定时调度 - 封面图
SAP 工具箱优化作业的定时调度 - 封面图
SAP 工具箱优化作业的定时调度 - 封面图
SAP 工具箱优化作业的定时调度 - 封面图
SAP 工具箱优化作业的定时调度 - 封面图
SAP 工具箱优化作业的定时调度 - 封面图
SAP 工具箱优化作业的定时调度 - 封面图
SAP 工具箱优化作业的定时调度 - 封面图

逻辑实现

在程序中通过传递指定的时间. 来判断是立即调度作业, 还是在指定的时间调度作业. 这样就实现了精确控制的基于指定时间的后台作业调度.

SAP 工具箱优化作业的定时调度 - 封面图
SAP 工具箱优化作业的定时调度 - 封面图

再次调度时, 需要检查指定时间的作业是否已经调度, 如果已经调度,则忽略.

SAP 工具箱优化作业的定时调度 - 封面图
SAP 工具箱优化作业的定时调度 - 封面图

优缺点

**优点:**

这个配置可以极大的简化后台作业的定义

比如期望于每天在上午8:00 9:00 10:00 下午 14:00 15:00 16:00 执行作业. 这种无法通过周期定义来实现.

用SM36需要定义6次. 并且改动执行时间也会很麻烦. 用ZBC_IF_JOB_SCHEDULE 程序仅需要简单的指定一行记录. 即可完成.调整也很方便.

**缺陷:**

ZBC_IF_JOB_SCHEDULE 每次仅调度当天的后续指定日期的作业, 如果当天的作业调整执行时间. 对于当天已经调度的, 可能需要手工删除.

后续可以考虑优化:在调度时同时检查那些已经调度且无效的,自动删除.

总结

增强后台作业调度程序ZBC_IF_JOB_SCHEDULE 在项目中存在一定的价值.

赋予它越多的功能. 它的价值也就越大.

目前基本上可以代替SM36来实现定时作业的控制: **简单,快捷,方便**

当然,这个程序本身要通过SM36定义成后台作业

** THE **

** END **

**约定**

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.

( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.

越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )

请微信联系管理员

syjf1976

sharry_xlp

Yannick_Duan

申请进入公众号讨论群提问或者参与话题讨论

ABAP技巧与实战

关于作者:ABAP技巧与实战

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「SAP工具箱优化作业的定时调度.md」整理生成,仅用于内部技术分享与学习交流。