ABAP程序带参调用后台作业

2023-12-28 15:18

本文主要是介绍ABAP程序带参调用后台作业,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 主要内容
  • 代码示例
  • 注意事项


主要内容

带参调用后台作业


代码示例

  DATA:lv_job_name  TYPE btcjob,lv_joblike   TYPE btcjob,lv_name      TYPE progname,lv_subrc     TYPE i,lr_agr_rspar TYPE TABLE OF rsparams,ls_agr_line  LIKE LINE OF  lr_agr_rspar,w_jobid      TYPE tbtcjob-jobcount,w_stepnm     TYPE tbtcjob-stepcount.* 查表  如果已存在执行中的后台 则报错退出lv_joblike = 'ZBJOB_TEST'.SELECT SINGLE jobnameINTO lv_job_nameFROM tbtcoWHERE jobname EQ lv_joblike
*    AND ( status = 'R'  "Active
*    OR status = 'Z' ). "Released/SuspAND status EQ 'R'.IF sy-subrc NE 0.lv_job_name = 'ZBJOB_TEST'.ELSE.MESSAGE w147(zps) WITH '已存在活动后台作业' RAISING foreign_lockbg.RETURN.ENDIF.* 唤起后台    有则报错退出
*1. using JOB_OPEN to open jobCLEAR:w_jobid.CALL FUNCTION 'JOB_OPEN'EXPORTING
*     DELANFREP        = ’ ’
*     JOBGROUP         = ’ ’jobname          = lv_job_name
*     SDLSTRTDT        = NO_DATE
*     SDLSTRTTM        = NO_TIME
*     JOBCLASS         =IMPORTINGjobcount         = w_jobid
*   CHANGING
*     RET              =EXCEPTIONScant_create_job  = 1invalid_job_data = 2jobname_missing  = 3OTHERS           = 4.IF sy-subrc EQ 0.ls_agr_line-kind = 'S'.ls_agr_line-sign = 'I'.ls_agr_line-option = 'EQ'.IF it_agr_name IS NOT INITIAL.ls_agr_line-selname = 'S_AGR'.*	S参数LOOP AT it_agr_name INTO ls_agr_name.*    ls_agr-low = ls_agr_name-agr_name.
*    APPEND ls_agr TO lr_agr.*    lv_agr_name = ls_agr_name-agr_name.ls_agr_line-low = ls_agr_name-agr_name.APPEND ls_agr_line TO lr_agr_rspar.ENDLOOP.ENDIF.IF it_agr_uname IS NOT INITIAL.ls_agr_line-selname = 'S_UNAME'.
*	单值LOOP AT it_agr_uname INTO ls_agr_uname.ls_agr_line-low = ls_agr_uname-uname.APPEND ls_agr_line TO lr_agr_rspar.ENDLOOP.ENDIF.ls_agr_line-selname = 'P_CHK'.ls_agr_line-kind = 'P'.   * 单选按钮类型ls_agr_line-sign = 'I'.ls_agr_line-option = 'EQ'.ls_agr_line-low = abap_true.APPEND ls_agr_line TO lr_agr_rspar.*2. using JOB_SUMMIT to insert stepSUBMIT ztest_bjob_01 WITH SELECTION-TABLE lr_agr_rsparVIA JOB lv_job_nameNUMBER  w_jobidAND RETURN.CALL FUNCTION 'JOB_CLOSE'EXPORTING
*       AT_OPMODE            = ’ ’
*       AT_OPMODE_PERIODIC   = ’ ’
*       CALENDAR_ID          = ’ ’
*       EVENT_ID             = ’ ’
*       EVENT_PARAM          = ’ ’
*       EVENT_PERIODIC       = ’ ’jobcount             = w_jobidjobname              = lv_job_name
*       LASTSTRTDT           = NO_DATE
*       LASTSTRTTM           = NO_TIME
*       PRDDAYS              = 0
*       PRDHOURS             = 0
*       PRDMINS              = 0
*       PRDMONTHS            = 0
*       PRDWEEKS             = 0
*       PREDJOB_CHECKSTAT    = ’ ’
*       PRED_JOBCOUNT        = ’ ’
*       PRED_JOBNAME         = ’ ’
*       SDLSTRTDT            = NO_DATE
*       SDLSTRTTM            = NO_TIME
*       STARTDATE_RESTRICTION             = BTC_PROCESS_ALWAYSstrtimmed            = 'X'
*       TARGETSYSTEM         = ’ ’
*       START_ON_WORKDAY_NOT_BEFORE       = SY-DATUM
*       START_ON_WORKDAY_NR  = 0
*       WORKDAY_COUNT_DIRECTION           = 0
*       RECIPIENT_OBJ        =
*       TARGETSERVER         = ’ ’
*       DONT_RELEASE         = ’ ’
*       TARGETGROUP          = ’ ’direct_start         = 'X'
*   IMPORTING
*       JOB_WAS_RELEASED     =
*   CHANGING
*       RET                  =EXCEPTIONScant_start_immediate = 1invalid_startdate    = 2jobname_missing      = 3job_close_failed     = 4job_nosteps          = 5job_notex            = 6lock_failed          = 7invalid_target       = 8OTHERS               = 9.IF sy-subrc EQ 0.WHILE lv_subrc EQ 0.   "当作业成功启动后才退出SELECT SINGLE jobnameINTO lv_job_nameFROM tbtcoWHERE jobname EQ lv_joblikeAND status EQ 'R'.IF sy-subrc EQ 0.lv_subrc = 2.ELSE.WAIT UP TO 1 SECONDS.ENDIF.ENDWHILE.ENDIF.ELSE.MESSAGE e147(zps) WITH '后台作业关闭失败' RAISING bg_job_fail.ENDIF.

注意事项

区分各个参数之间的类型(KIND)

这篇关于ABAP程序带参调用后台作业的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/546396

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

Java调用Python脚本实现HelloWorld的示例详解

《Java调用Python脚本实现HelloWorld的示例详解》作为程序员,我们经常会遇到需要在Java项目中调用Python脚本的场景,下面我们来看看如何从基础到进阶,一步步实现Java与Pyth... 目录一、环境准备二、基础调用:使用 Runtime.exec()2.1 实现步骤2.2 代码解析三、

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

Python如何调用另一个类的方法和属性

《Python如何调用另一个类的方法和属性》在Python面向对象编程中,类与类之间的交互是非常常见的场景,本文将详细介绍在Python中一个类如何调用另一个类的方法和属性,大家可以根据需要进行选择... 目录一、前言二、基本调用方式通过实例化调用通过类继承调用三、高级调用方式通过组合方式调用通过类方法/静

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

Python用Flask封装API及调用详解

《Python用Flask封装API及调用详解》本文介绍Flask的优势(轻量、灵活、易扩展),对比GET/POST表单/JSON请求方式,涵盖错误处理、开发建议及生产环境部署注意事项... 目录一、Flask的优势一、基础设置二、GET请求方式服务端代码客户端调用三、POST表单方式服务端代码客户端调用四

Python跨文件实例化、跨文件调用及导入库示例代码

《Python跨文件实例化、跨文件调用及导入库示例代码》在Python开发过程中,经常会遇到需要在一个工程中调用另一个工程的Python文件的情况,:本文主要介绍Python跨文件实例化、跨文件调... 目录1. 核心对比表格(完整汇总)1.1 自定义模块跨文件调用汇总表1.2 第三方库使用汇总表1.3 导

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.

Python调用LibreOffice处理自动化文档的完整指南

《Python调用LibreOffice处理自动化文档的完整指南》在数字化转型的浪潮中,文档处理自动化已成为提升效率的关键,LibreOffice作为开源办公软件的佼佼者,其命令行功能结合Python... 目录引言一、环境搭建:三步构建自动化基石1. 安装LibreOffice与python2. 验证安装

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序