You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提交ABAP后台作业且不打印假脱机文件,仅保留SM37可查看?

解决后台作业假脱机文件自动打印问题

核心思路是通过配置打印参数,强制后台作业生成的假脱机请求仅保存而不自动打印,同时保留在SM37中查看的权限,且无需切换系统用户规避权限问题。

具体修改步骤及代码示例

  1. 新增打印参数变量,调用GET_PRINT_PARAMETERS函数配置不自动打印的参数
  2. 在SUBMIT语句中引入该打印参数控制行为

修改后的完整代码如下:

DATA:
  v_jobname TYPE tbtcjob-jobname,
  v_jobcount TYPE tbtcjob-jobcount,
  ls_print_params TYPE pri_params.

CALL FUNCTION 'JOB_OPEN'
  EXPORTING
    jobname          = v_jobname
    sdlstrtdt        = sy-datum
    sdlstrttm        = sy-uzeit
  IMPORTING
    jobcount         = v_jobcount.

* 获取不自动打印的参数配置
CALL FUNCTION 'GET_PRINT_PARAMETERS'
  EXPORTING
    no_print       = abap_true  " 禁止假脱机请求自动发送到打印机
    release        = abap_true  " 释放假脱机请求,确保可在SM37中查看
    immediately    = abap_false " 不立即触发打印流程
  IMPORTING
    out_parameters = ls_print_params
  EXCEPTIONS
    OTHERS         = 1.

IF sy-subrc <> 0.
  " 此处可添加异常处理逻辑,比如抛出提示消息或终止作业
ENDIF.

SUBMIT (gc_report) AND RETURN
  USING SELECTION-SET gc_variant
  WITH SELECTION-TABLE t_seltab
  USER sy-uname
  VIA JOB v_jobname
  NUMBER v_jobcount
  USING PRINT PARAMETERS ls_print_params. " 引入打印参数控制打印行为

CALL FUNCTION 'JOB_CLOSE'
  EXPORTING
    jobcount             = v_jobcount
    jobname              = v_jobname
    strtimmed            = abap_true.

参数说明

  • no_print = abap_true:核心控制参数,确保假脱机请求生成后不会自动发送至用户默认打印机
  • release = abap_true:保证假脱机请求被正常释放,可在SM37的作业详情中查看、下载或后续手动触发打印
  • 该方案无需切换系统用户,完全规避了跨用户调度的权限限制,同时兼容绝大多数标准和自定义报表

内容的提问来源于stack exchange,提问作者mmgro27

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 23:43:29