ABAP程序中设置SM36后台JOB

这篇博客详细介绍了如何在ABAP程序中创建后台作业(JOB),包括设置作业名、参数传递、调用程序以及作业的开启和关闭。通过示例代码展示了如何处理不同选择参数,并最终成功启动后台作业。

   DATAlv_job_name         LIKE tbtco-jobname,     "作业名
              lv_job_nr           LIKE tbtco-jobcount,          "作业号
              lv_job_released     TYPE c,
              lv_job_start_sofort TYPE c,
              lv_print_parameters TYPE pri_params.
    DATA:lt_rspar TYPE TABLE OF rsparams,
              lw_line  LIKE LINE OF lt_rspar.


    "如果是要传给PARAMETER , lw_line-kind = 'P'. 如果是要传给SELECTION lw_line-kind = 'S
    LOOP AT so_bukrs.
      lw_line-selname 'SO_BUKRS'.
      lw_line-kind    'P'.
      lw_line-sign    so_bukrs-sign.
      lw_line-option  so_bukrs-option.
      lw_line-low     so_bukrs-low.
      lw_line-high    so_bukrs-hi

### ABAP 中使用 SM36 测试后台作业的配置和执行 在 SAP 系统中,SM36 事务代码用于创建和管理后台作业(Background Jobs),这些作业可以在特定时间或由事件触发执行。通过 SM36,开发者可以定义包含多个步骤的后台作业,每个步骤可以调用 ABAP 程序、外部 Shell 命令或程序,并设置执行参数、打印选项等。 #### 创建后台作业 1. **事务代码 SM36** 在 SAP GUI 中输入事务代码 `SM36`,进入后台作业定义界面。 2. **定义作业名称** 后台作业的名称应遵循一定的命名规则,以明确其用途、重要性及触发方式。例如,可以使用前缀 `JOB_`,后接功能描述,如 `JOB_DAILY_REPORT`。 3. **设置启动方式** 后台作业的启动方式可以是定时触发,也可以是事件触发。定时触发可以通过日历和时间设置来定义执行周期,如每天、每周或每月执行;事件触发则依赖于特定的系统事件或外部信号。 4. **添加作业步骤** 每个后台作业可以包含多个步骤,每个步骤定义了要执行的操作。步骤可以调用 ABAP 程序、Shell 命令或外部程序。例如,调用 ABAP 程序时,需要指定程序名称、调用者以及传递的变量参数。 5. **定义打印参数** 如果作业生成输出,可以在步骤中定义打印参数,指定输出的格式、目标打印机或文件路径。 #### 执行后台作业 1. **手动启动作业** 创建完成后,可以通过 SM36 页面中的“Start Immediately”按钮立即执行作业,也可以通过 SM37 监控其执行状态。 2. **监控作业执行** 使用事务代码 `SM37` 可以查看后台作业的执行日志、状态(如成功、失败、运行中)以及输出结果。在调试过程中,SM37 是验证作业逻辑和排查错误的重要工具。 3. **调试后台作业** 如果作业执行失败,可以通过 SM37 查看错误信息,并结合 ABAP 调试工具对程序进行调试。调试时可以在程序设置断点,观察变量值和程序流程。 #### 示例:ABAP 程序调用后台作业 以下是一个简单的 ABAP 程序示例,用于通过 SM36 创建后台作业并调用一个简单的 ABAP 程序: ```abap REPORT ztest_background_job. DATA: lv_jobname TYPE tbtcjob-jobname VALUE 'JOB_TEST_ABAP', lv_program TYPE sy-repid VALUE 'ZTEST_SIMPLE_PROGRAM'. CALL FUNCTION 'JOB_OPEN' EXPORTING jobname = lv_jobname jobcount = 0 EXCEPTIONS cant_create_job = 1 OTHERS = 2. CALL FUNCTION 'JOB_SUBMIT' EXPORTING jobname = lv_jobname jobcount = 0 report = lv_program variant = 'DEFAULT' target = 'ALL' EXCEPTIONS invalid_jobname = 1 OTHERS = 2. CALL FUNCTION 'JOB_CLOSE' EXPORTING jobname = lv_jobname jobcount = 0 strtimmed = 'X' EXCEPTIONS invalid_jobname = 1 job_is_not_open = 2 OTHERS = 3. ``` 该程序通过调用 SAP 提供的函数模块 `JOB_OPEN`、`JOB_SUBMIT` 和 `JOB_CLOSE` 来创建并提交一个后台作业,调用名为 `ZTEST_SIMPLE_PROGRAM` 的 ABAP 程序。 #### 调试与验证 在执行上述后台作业后,可以通过事务代码 `SM37` 查看作业的执行状态和输出结果。如果作业执行失败,可以在 `SM37` 中查看详细的错误日志,并结合 `SE38` 或 `SE80` 对 ABAP 程序进行调试。 此外,SAP 提供了强大的日志记录功能,可以在作业步骤中启用日志记录,以便跟踪程序执行路径和变量值的变化。日志信息可以通过 `SM37` 查看,或导出到文件进行进一步分析。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值