涉及到两个程序:

ZTEST_ZUMA02 (主程序)
ZTEST_ZUMA(被调用的程序,需要以后台job执行)
"ztest_zuma 的代码
DATA col TYPE i VALUE 0.
DO 8 TIMES.
MESSAGE 'JOB HERE' TYPE 'S'.
ENDDO.

程序ZTEST_ZUMA是在程序ZTEST_ZUMA02中以job的形式调用的,先来看看SM37里面ZTEST_ZUMA的执行日志,当然这些日志是ZTEST_ZUMA程序中通过message输出的:
到这里你应该有一个初步的认识了,那么关键看看ZTEST_ZUMA02是通过什么方式实现以JOB的形式调用ZTEST_ZUMA的呢,看一下代码的几处关键位置,job_open,submit,job_close.
简单解释一下,代码中也有注释。
job_open :开启一个后台job,job名任意命名,会生产一个job id.
submit :调用需要设置为后台执行的程序,使用via 参数设置job的相关参数.(这个时候可以看到SM37里面有一个job 状态为schedule).
job_close :把之前创建的job release 并执行(参数strtimmed = 'X' 表示立即执行,设置某一个时间执行还没有研究).
======================
REPORT ztest_zuma02.
DATA: lv_jobnum  TYPE btcjobcnt.
DATA: gv_jobname TYPE btcjob VALUE 'ZUMATESTJOB'."Step1. open a job define a job_name(whatever you want), and return a jobnumber.
CALL FUNCTION 'JOB_OPEN'EXPORTINGjobname          = gv_jobnameIMPORTINGjobcount         = lv_jobnumEXCEPTIONScant_create_job  = 1invalid_job_data = 2jobname_missing  = 3OTHERS           = 4."Step2. Submit a program which you want to run in background as job.
SUBMIT ztest_zuma VIA JOB gv_jobname NUMBER lv_jobnum AND RETURN.
"ztest_zuma 的代码
"DATA col TYPE i VALUE 0.
"DO 8 TIMES.
"  MESSAGE 'JOB HERE' TYPE 'S'.
"ENDDO."Step3-Option. This is option step, for some special requirment modify job name instead of sy-uname.
"  in this step first call BP_JOB_READ to read the job information and then call BP_JOB_MODIFY to modify
"  the user name.
PERFORM modify_job_name USING lv_jobnum gv_jobname.IF sy-subrc = 0.
"Step4. To release the job which you were opened in step1.CALL FUNCTION 'JOB_CLOSE'EXPORTINGjobcount             = lv_jobnumjobname              = gv_jobnamestrtimmed            = 'X'EXCEPTIONScant_start_immediate = 1invalid_startdate    = 2jobname_missing      = 3job_close_failed     = 4job_nosteps          = 5job_notex            = 6lock_failed          = 7OTHERS               = 8.IF sy-subrc NE 0.MESSAGE 'Job error' TYPE 'E'.ELSE.MESSAGE 'Job success' TYPE 'S'.ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
*&      Form  MODIFY_JOB_NAME
*&---------------------------------------------------------------------*
*       Modify user name for job owner
*----------------------------------------------------------------------*
*      -->P_LV_JOBNUM  text
*      -->P_GV_JOBNAME  text
*----------------------------------------------------------------------*
FORM modify_job_name  USING    p_lv_jobnump_gv_jobname.DATA: ls_jobhead TYPE tbtcjob,lt_jobstep TYPE STANDARD TABLE OF tbtcstep.CALL FUNCTION 'BP_JOB_READ'EXPORTINGjob_read_jobcount     = p_lv_jobnumjob_read_jobname      = p_gv_jobnamejob_read_opcode       = '20'IMPORTINGjob_read_jobhead      = ls_jobheadTABLESjob_read_steplist     = lt_jobstepEXCEPTIONSinvalid_opcode        = 1job_doesnt_exist      = 2job_doesnt_have_steps = 3OTHERS                = 4.IF sy-subrc <> 0.ENDIF.ls_jobhead-sdluname = 'BATCH_CM'.CALL FUNCTION 'BP_JOB_MODIFY'EXPORTINGdialog                     = 'N'jobcount                   = p_lv_jobnumjobname                    = p_gv_jobnamenew_jobhead                = ls_jobheadopcode                     = '16'IMPORTINGmodified_jobhead           = ls_jobheadTABLESnew_steplist               = lt_jobstepEXCEPTIONScant_derelease_job         = 1cant_enq_job               = 2cant_read_jobdata          = 3cant_release_job           = 4cant_set_jobstatus_in_db   = 5cant_start_job_immediately = 6cant_update_jobdata        = 7eventcnt_generation_error  = 8invalid_dialog_type        = 9invalid_new_jobdata        = 10invalid_new_jobstatus      = 11invalid_opcode             = 12invalid_startdate          = 13job_edit_failed            = 14job_modify_canceled        = 15job_not_modifiable_anymore = 16nothing_to_do              = 17no_batch_on_target_host    = 18no_batch_server_found      = 19no_batch_wp_for_jobclass   = 20no_modify_privilege_given  = 21no_release_privilege_given = 22no_startdate_no_release    = 23target_host_not_defined    = 24tgt_host_chk_has_failed    = 25invalid_targetgroup        = 26conflicting_targets        = 27OTHERS                     = 28.IF sy-subrc <> 0.ENDIF.
ENDFORM.

转载于:https://www.cnblogs.com/askzuma/p/6284988.html

ABAP 通过sumbit调用另外一个程序使用job形式执行-简单例子相关推荐

  1. python类中调用另一个程序函数_Python:如何在另一个类中调用函数

    我被一些python脚本困住了 https://python4kids.brendanscott.com/2014/12/02/hooking-up-the-sunfish-chess-engine- ...

  2. linux java socket编程_linux下java程序与C语言程序通过SOCKET通信的简单例子

    #include int sockfd,newfd; void *read_socket(); int main() { int ret; pthread_t read_tid,write_tid; ...

  3. PhpMyAdmin的简单安装和一个mysql到Redis迁移的简单例子

    1.phpmyadmin的安装 sudo apt-get install phpmyadmin 之后发现http://localhost/phpmyadmin显示没有此url,于是想到本机上能显示的网 ...

  4. ABAP SQL取最大值及聚合函数OUNT, AVG, MAX的简单例子 SAP

    在ABAP里取最大值,有好几种方法 第一种 SELECT posnr "项目号FROM resb AS aJOIN afko AS b ON a~aufnr = b~aufnrINTO TA ...

  5. java用if语句调用方法_J2SE中main函数中的if语句想要调用另一个类的方法怎么能实现?...

    日常生活中,要完成一件复杂的功能,我们总是习惯把"大功能"分解为多个"小功能"以实现.在C++程序的世界里,"功能"可称呼为"函数 ...

  6. 让java程序在后台一直执行

    让java程序在后台一直执行(例如putty关闭后后台程序继续运行) Linux 2011-01-17 21:14:30 阅读73 评论0 字号:大中小 订阅 在linux系统下如何使一个程序在后台一 ...

  7. 举个程序员年终总结大纲的例子

    以下是一个程序员年终总结大纲的例子: I. 回顾过去一年 完成的项目 遇到的困难和解决方案 个人成长和收获 II. 计划未来一年 主要工作目标 技术提升计划 参加培训和研讨会 III. 感谢和建议 对 ...

  8. Call 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。

    想写一个批处理文件去调用多个批处理文件,按照以前写的调用多个程序的方法 a.exe b.exe c.exe 写了一个 startAll.bat --------------------内容------ ...

  9. SQL Server 2005 - 如何在预存程序中调用另外一个预存程序

    要在一个预存程序中调用另外一个预存程序,可以使用下列两种方式之一进行调用:  <?xml:namespace prefix = o /> EXECUTE <欲执行之预存程序的名称&g ...

最新文章

  1. R语言dplyr包coalesce函数处理缺失值(missing value)实战
  2. Docker+Jenkins+Git+GitLab实现DevOps
  3. java 使用适当的签名_关于数字签名和policy文件设置!
  4. redis通过expire设置存活期注意问题
  5. html中css修改字体,CSS字体设置 DIV内字体设置
  6. php表示昨天_php输出各种时间代码表示
  7. 【Yii框架系列一】Yii中CDbCriteria常用总结
  8. EXCEL 保护工作表、工作薄不被破坏
  9. 入坑codewars第五天-Dubstep、Regex validate PIN code
  10. 猎豹网校java版算法_猎豹网校JAVA语言数据结构与算法视频教程 Java语言
  11. android第三方拨号盘,Android开发-教你如何使用拨号盘
  12. Cannot deploy artifacts when Maven is in offline mode
  13. java内存溢出定位
  14. Centos 在 Selenium 使用中的异常:chrome not reachable
  15. 华为服务器显示红色的心跳,服务器的心跳线
  16. 通往古埃及文明的钥匙 ———— 罗塞塔石碑
  17. (转载)周鸿祎在360新员工入职培训上的讲话
  18. 线性代数学习笔记——行列式的性质及拉普拉斯定理——5. 行列式的性质4
  19. 机器视觉丨AOI光源原理图和打光案例
  20. 软件测试电池满但是不耐用,手机电池越来越不耐用?这一功能才是罪魁祸首!赶紧关掉!...

热门文章

  1. android恶意代码检测报告,用机器学习检测Android恶意代码
  2. 阿里云 apt-get mysql_阿里云Ubuntu 16.04 x64 装配Mysql 5.7
  3. 【必看】 一篇 CPU 占用高,导致请求超时的故障排查
  4. 从基础设施到云原生应用,全方位解读阿里云原生新锐开源项目
  5. 深度聚焦 3 大技术领域,阿里云将重磅亮相首届线上 KubeCon
  6. java date 操作类_JAVA时间操作类常用方法汇总
  7. python自动源码_谷歌推出Tangent开源库,在Python源代码上做自动微分
  8. python源码编译 带tkinter_python通过Tkinter库实现的一个简单的文本编辑器源码
  9. java 线程安全_Java创建线程安全的方法
  10. v系列存储配置Linux多路径,linux下san存储多路径软件的配置