FMS系统中自动发送后台作业B假脱机文件的方案求助
解决方案建议
方案1:编写自定义ABAP程序发送指定作业的假脱机文件
开发一个轻量ABAP程序,通过SAP标准函数直接发送作业B的假脱机请求,再将程序绑定到作业B的完成事件实现自动触发。
核心实现步骤:
- 获取作业B的最新假脱机号:调用标准函数
RSPO_FIND_SPOOL_REQUESTS,传入作业名'B'、创建者等筛选条件,定位目标假脱机请求。 - 调用发送函数:使用
RSPO_SEND_SPOOL_REQUEST传入假脱机号、收件人、主题等参数,完成自动发送。
简化代码示例:
REPORT ZSEND_SPOOL_JOBB. DATA: lv_spool_id TYPE tsp01-rqident, lt_spool TYPE TABLE OF tsp01, ls_spool LIKE LINE OF lt_spool. * 查找作业B的最新假脱机请求 CALL FUNCTION 'RSPO_FIND_SPOOL_REQUESTS' EXPORTING rqowner = SY-UNAME rqjobname = 'B' TABLES spoolrequests = lt_spool EXCEPTIONS no_spoolrequests_found = 1 OTHERS = 2. IF sy-subrc = 0. SORT lt_spool BY rqcretime DESCENDING. READ TABLE lt_spool INTO ls_spool INDEX 1. lv_spool_id = ls_spool-rqident. * 发送假脱机文件 CALL FUNCTION 'RSPO_SEND_SPOOL_REQUEST' EXPORTING spoolid = lv_spool_id recipient = 'target_user@domain.com' subject = '作业B自动发送的假脱机输出' EXCEPTIONS spool_not_found = 1 no_recipient_specified = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ENDIF.
自动化配置:
- 在
SM36中创建新作业(如SEND_JOBB_SPOOL),步骤选择上述自定义程序。 - 作业开始条件选择「事件触发」,事件设为
BTC_JOB_FINISHED,参数指定作业B的名称B,确保作业B完成后自动触发发送。
方案2:通过作业链串联执行
使用SM36的作业链功能,将作业A、作业B、发送假脱机步骤按顺序绑定:
- 事务码
SM36进入作业链维护,添加三个步骤:执行作业A → 执行作业B → 执行自定义发送程序。 - 配置步骤依赖:仅当前序步骤成功完成时,才启动下一环节。
- 为作业链设置定时触发规则,替代单独作业调度。
方案3:利用SAP自带报告实现半自动化
无需开发自定义程序,可使用事务码SE38运行RS_SPOOL_MAIL报告:
- 在报告选择界面指定作业B的假脱机筛选条件(作业名、创建时间等),直接发送。
- 若需自动化,将
RS_SPOOL_MAIL配置为后台作业,定期筛选作业B的最新假脱机并发送。
内容的提问来源于stack exchange,提问作者DNASCI
相关产品推荐
相关产品推荐

