ABAP 设置后台 JOB 封装

作者:ABAP三叔 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, 开发, 数据工程
ABAP 设置后台 JOB 封装 - 封面图
ABAP 设置后台 JOB 封装 - 封面图

前言

在项目开发中,启动后台JOB是经常会用到的开发场景,因此我将它封装在了我的通用工具类中,实现一句代码就可以启动。类似这样

*

zcl_common=>start_job( report = sy-repid params = lt_rsparams ).

方法介绍

方法定义如下图

ABAP 设置后台 JOB 封装 - 封面图
ABAP 设置后台 JOB 封装 - 封面图

参数介绍

**参数名称** | **参数描述

** | **可选

** | **备注

**

---|---|---|---

JOBNAME | JOB名称 | 可选 | 默认取值为报表名+时间+作业用户名 ‍

JOBUSER | JOB用户名 | 可选 | 默认当前登录用户

REPORT | 报表名称 | 必输 | 作业启动的报表名称

VARIANT | 变式名称 | 可选 | 报表选择屏幕的变式

PARAMS | 报表参数

| 可选

| 报表的选择屏幕参数

START_DATE

| JOB计划开始日期

| 可选

| 设置JOB定时启动的日期

START_TIME | JOB计划开始时间 | 可选 | 设置JOB定时启动的时间

使用示例一

需要定义内表 rsparams ,SELECT-OPTIONS的参数 kind = 'S' , PARAMETERS的参数 kind =

'P' .

代码参考如下:

DATA: lt_rsparams TYPE TABLE OF rsparams. APPEND LINES OF VALUE rsparams_tt( FOR wa_asort IN s_asort ( CORRESPONDING #( BASE ( VALUE #( selname = 'S_ASORT' kind = 'S' ) ) wa_asort ) ) ) TO lt_rsparams. APPEND LINES OF VALUE rsparams_tt( FOR wa_matnr IN s_matnr ( CORRESPONDING #( BASE ( VALUE #( selname = 'S_MATNR' kind = 'S' ) ) wa_matnr ) ) ) TO lt_rsparams. APPEND LINES OF VALUE rsparams_tt( FOR wa_year IN s_year ( CORRESPONDING #( BASE ( VALUE #( selname = 'S_YEAR' kind = 'S' ) ) wa_year ) ) ) TO lt_rsparams. APPEND LINES OF VALUE rsparams_tt( FOR wa_season IN s_season ( CORRESPONDING #( BASE ( VALUE #( selname = 'S_SEASON' kind = 'S' ) ) wa_season ) ) ) TO lt_rsparams. APPEND VALUE rsparams( selname = 'RD_BUT1' kind = 'P' low = rd_but1 ) TO lt_rsparams. APPEND VALUE rsparams( selname = 'RD_BUT2' kind = 'P' low = rd_but2 ) TO lt_rsparams. APPEND VALUE rsparams( selname = 'P_DATAB' kind = 'P' low = p_datab ) TO lt_rsparams. APPEND VALUE rsparams( selname = 'P_PRLL' kind = 'P' low = p_prll ) TO lt_rsparams. APPEND VALUE rsparams( selname = 'P_MAXART' kind = 'P' low = p_maxart ) TO lt_rsparams. APPEND VALUE rsparams( selname = 'P_MAXT' kind = 'P' low = p_maxt ) TO lt_rsparams. APPEND VALUE rsparams( selname = 'P_SVGRP' kind = 'P' low = p_svgrp ) TO lt_rsparams.    zcl_common=>start_job( report = 'ZMMP004G' params = lt_rsparams ).

使用示例二

使用报表变式,启动JOB,

例如报表ZMMP004G,变式名为JOB

ABAP 设置后台 JOB 封装 - 封面图
ABAP 设置后台 JOB 封装 - 封面图

代码参考如下:

*

zcl_common=>start_job( report = 'ZMMP004G' variant = 'JOB' ).

SM37检查作业启动情况,是否按设置的变式运行的程序

ABAP 设置后台 JOB 封装 - 封面图
ABAP 设置后台 JOB 封装 - 封面图
ABAP 设置后台 JOB 封装 - 封面图
ABAP 设置后台 JOB 封装 - 封面图
ABAP 设置后台 JOB 封装 - 封面图
ABAP 设置后台 JOB 封装 - 封面图

总结

对于常用的通用功能进行封装,能节省开发的时间,也能提升程序的可阅读性。

GITHUB地址:https://github.com/a87b01c14/ZCL_COMMON.git

ABAP三叔

关于作者:ABAP三叔

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

来源说明:本文内容由「ABAP设置后台JOB封装.md」整理生成,仅用于内部技术分享与学习交流。