SAP 工具箱给程序添加并发后台处理

作者:ABAP技巧与实战 约 8 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图

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

前言

如果程序执行耗时过长,一个优化方式是改造程序,添加并发执行功能

> 详见链接 无峰,公众号:ABAP 技巧与实战 [ ABAP基础知识 并发执行(一 概念及相关知识)

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247487396&idx=1&sn=21a6bc63e1b4ef11e404ec9f0be270f9&chksm=cf5dd292f82a5b84a56473496884f3b989eebc66fb466dd1f6fca4bb4e96735766c0aee11bb7&token=1198722698&lang=zh_CN#rd)

或者参考标准DEMO程序 SPTA_PARA_DEMO_1

上述方式是由当前程序执行的进程,通过aRFC调用启动多个dialog进程完成任务的处理.

之前介绍过快速调度并发后台作业的方式.

但这种方式对于最终用户稍显复杂了. 因此考虑把这种方式通过最简单的改变嵌入到程序中.

用户只需要输入选择条件,简单点击按钮即可实现定义多个后台作业同时执行程序(按选择条件区分数据)

**本文主要介绍怎么把并发调度后台作业嵌入到原有程序中**

相关知识点

> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP工具箱 快速调度并发后台作业_2

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247489490&idx=1&sn=b26bd81fa63bcac32ce398a3115ad96c&chksm=cf5dcae4f82a43f2cb84abfda15df9ff4ef056751913d0746806e4cad6ae8facc39e0e308df9&token=1198722698&lang=zh_CN#rd)

达成的效果

程序改造后的效果如下

目标程序添加按钮 后台执行

SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图

用户输入限制条件点击后,弹窗补充并发后台执行的参数

SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图

如果标记了显示作业清单,跳转到显示后台作业界面

SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图

如果用户没有标记显示后台作业,提示已经调度的作业个数

SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图

实现方式

实现方式存在两部分逻辑

• 配置部分

• 源代码调整部分

_**01** _

**配置部分**

其中的分组方式

• 空 从配置表中维护的表,限制条件及程序传递的选择条件获取

• 1 从程序传递,示例程序ZTS_MUL_JOB_CREATE_2

• 2 从选择字段后两位获取(要求选择字段必须时数字字符型)

针对分组方式为空的情况,

需要配置分组字段内容来源的表,表字段名,特殊条件,及程序选择屏幕条件与表字段的映射关系(这些内容用来生成获取分组字段内容的动态SQL,查询出分组字段内容)

SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图

_**02** _

**源程序代码调整部分**

如果该程序未添加过选择屏幕的功能区按钮,在需要优化的程序中添加三个INCLUDE即可.

INCLUDE zbc_multi_job_01. "选择屏幕后,定义后台执行按钮INCLUDE zbc_multi_job_02.

"INITIALIZATION 初始化,设置按钮图标,描述INCLUDE zbc_multi_job_03. "AT SELECTION-

SCREEN,执行按钮功能

SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图

上述include 程序代码很简单

添加功能按钮

SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图

设置功能按钮描述

SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图

实现按钮功能

SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图

如果程序中已经添加过选择屏幕功能按钮. 上述INCLUDE 需要稍作调整 ,

在原来添加选择屏幕功能按钮的基础上,添加一个新的后台执行按钮,并在点击该按钮后执行后台处理功能即可

如下图. 程序中原本已经添加三个功能按钮. 则继续添加第4个功能按钮,响应的include 中处理第四个按钮的内容即可

SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图

核心逻辑

核心逻辑封装在类 ZCL_MUL_JOB中.

其中的MAIN方法包含如下步骤

• 获取源程序选择屏幕内容

• 创建程序的变式

• 根据配置表把选择条件字段及内容映射到表的动态选择字段中

• 弹窗让用户确认后台执行参数

• 根据分组方式,调用不同的程序完成后台作业定义

• ZBC_MULTI_JOB_ALL 针对指定程序创建多个后台作业-按号码后两位拆分

• ZBC_MULTI_JOB_ALL2 针对指定程序创建多个后台作业-按指定字段内容调度

SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图
SAP 工具箱给程序添加并发后台处理 - 封面图

比较

并发后台VS并发aRFC

比较点 | 并发后台 | 并发aRFC

---|---|---

源程序改造 | 较少 | 很多

并发分配均匀度 | 基于并发方式不同均匀度有所不同 尾号后两位方式均匀度依赖数据 , 较差 其它方式均匀度依赖配置逻辑或程序处理逻辑 , 较好 | 程序逻辑控制均匀度 , 较好

稳定性 | 依赖后台调度 , 较好 . 后台作业会自动排程 | 依赖并发调度 , 稍差 . 项目中发现调度失败的情况且不好重现

日志 | 后台作业日志 , 假脱机记录等作为日志 , 比较简单 | 可能需要自行开发日志 , 或启动 aRFC 的跟踪 , 相对比较麻烦

分组维度 | 基于选择条件分组 , 易于理解 | 代码逻辑设置分组维度

总结

整理分析了后台并发的相关思路及之前完成的通用程序.

为了方便的把这个功能嵌入到其它用户开发的程序中. 进一步归纳了后台并发的逻辑. 整合到类 ZCL_MUL_JOB . 并且通过简单INCLUDE

嵌入到其它程序中, 在对原有程序最小化调整的思路指导下,完成了本文涉及的代码.

其中按号码后两位并发后台的方式已经整合到了后台作业调度中.

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

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

后续可以考虑把另外一种方式(配置表中配置数据源,选择条件等)也整合到后台作业调度中. 以便更好的调度并发后台作业.

** THE **

** END **

**约定**

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

请微信联系管理员

syjf1976

sharry_xlp

Yannick_Duan

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

ABAP技巧与实战

关于作者:ABAP技巧与实战

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

来源说明:本文内容由「SAP工具箱给程序添加并发后台处理.md」整理生成,仅用于内部技术分享与学习交流。