后台JOB List and EMail

REPORT z_barry_job_list .

TYPE-POOLS: slis.
TABLES:p0105_af,btch2170.
DATA: gd_fieldcat TYPE slis_t_fieldcat_alv.
DATA: sla TYPE slis_layout_alv ,
ivariant LIKE disvariant,
i_repid LIKE sy-repid ,
i_excluding TYPE slis_t_extab.

DATA: BEGIN OF in_wa .
INCLUDE STRUCTURE btcselect.
DATA: END OF in_wa.

DATA: BEGIN OF itab OCCURS 0 .
INCLUDE STRUCTURE tbtcjob_bk.
DATA: END OF itab.

DATA: it_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
it_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,
it_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
it_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
gd_cnt TYPE i,
gd_sent_all(1) TYPE c,
gd_doc_data LIKE sodocchgi1,
gd_error TYPE sy-subrc.

DATA: it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
WITH HEADER LINE.
PARAMETERS : p_user LIKE btch2170-username OBLIGATORY DEFAULT sy-uname .
SELECT-OPTIONS: s_date FOR btch2170-from_date NO-EXTENSION
DEFAULT sy-datum ,
s_addr FOR p0105_af-email DEFAULT 'victory114@163.COM'.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-010.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS p_pre AS CHECKBOX DEFAULT 'X' .
SELECTION-SCREEN COMMENT (10) text-001 FOR FIELD p_pre .
PARAMETERS p_sch AS CHECKBOX DEFAULT 'X' .
SELECTION-SCREEN COMMENT (10) text-002 FOR FIELD p_sch .
PARAMETERS p_rea AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT (10) text-003 FOR FIELD p_rea .
PARAMETERS p_run AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT (10) text-004 FOR FIELD p_run .
PARAMETERS p_fin AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT (10) text-005 FOR FIELD p_fin .
PARAMETERS p_abo AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT (10) text-006 FOR FIELD p_abo .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.
PERFORM getdata.
PERFORM outdata.
* PERFORM send_mail.

*---------------------------------------------------------------------*
* FORM getdata *
*---------------------------------------------------------------------*
FORM getdata.
in_wa-jobname = '*'.
in_wa-username = p_user .
in_wa-from_date = s_date-low.
in_wa-to_date = s_date-high .

***Job的状态
in_wa-prelim = p_pre.
in_wa-schedul = p_sch.
in_wa-ready = p_rea .
in_wa-running = p_run.
in_wa-finished = p_fin.
in_wa-aborted = p_abo.

CALL FUNCTION 'BP_JOB_SELECT_SM37B'
EXPORTING
jobselect_dialog = 'N'
jobsel_param_in = in_wa
TABLES
* JOBSELECT_JOBLIST =
jobselect_joblist_b = itab
EXCEPTIONS
invalid_dialog_type = 1
jobname_missing = 2
no_jobs_found = 3
selection_canceled = 4
username_missing = 5
OTHERS = 6 .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form outdata
*&---------------------------------------------------------------------*
FORM outdata.
sla-colwidth_optimize = 'X'.
sla-zebra = 'X'.
i_repid = sy-repid.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = i_repid
i_structure_name = 'TBTCJOB_BK'
is_layout = sla
TABLES
t_outtab = itab
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " outdata

*---------------------------------------------------------------------*
* FORM send_email_message *
*---------------------------------------------------------------------*
FORM send_mail.
DATA: txt TYPE string .

gd_doc_data-doc_size = 1.
gd_doc_data-obj_langu = sy-langu.
gd_doc_data-obj_name = 'SAPRPT'.
CONCATENATE 'Job监控自动发送邮件' '' INTO gd_doc_data-obj_descr.
gd_doc_data-sensitivty = 'F'.

LOOP AT itab.
CASE itab-status.
WHEN 'P'.
txt = 'PRELIMINARY'.
WHEN 'S'.
txt = 'SCHEDULED'.
WHEN 'Y'.
txt = 'READY'.
WHEN 'R'.
txt = 'RUNNING'.
WHEN 'F'.
txt = 'FINISHED'.
WHEN 'A'.
txt = 'ABORTED'.
ENDCASE.

CONCATENATE itab-jobname ',' txt INTO it_message .
APPEND it_message.
ENDLOOP.

CLEAR it_packing_list.
REFRESH it_packing_list.
it_packing_list-transf_bin = space.
it_packing_list-head_start = 1.
it_packing_list-head_num = 0.
it_packing_list-body_start = 1.
DESCRIBE TABLE it_message LINES it_packing_list-body_num.
it_packing_list-doc_type = 'RAW'.
APPEND it_packing_list.

CLEAR it_receivers.
REFRESH it_receivers.
LOOP AT s_addr.
it_receivers-receiver = s_addr-low.
it_receivers-rec_type = 'U'.
it_receivers-com_type = 'INT'.
it_receivers-notif_del = 'X'.
it_receivers-notif_ndel = 'X'.
APPEND it_receivers.
CLEAR it_receivers.
ENDLOOP.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = gd_doc_data
put_in_outbox = 'X'
IMPORTING
sent_to_all = gd_sent_all
TABLES
packing_list = it_packing_list
contents_txt = it_message
receivers = it_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.

IF sy-subrc = 0 .
WAIT UP TO 2 SECONDS.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.
ENDIF.
ENDFORM. " SEND_EMAIL_MESSAGE

### 如何在 SAP 中为异步后台 JOB 设置调试断点 为了在 SAP 系统中为异步后台作业设置调试断点,可以采用以下方法: #### 使用 SM37 和 SE38/SE80 调试工具组合 对于异步后台作业的调试,通常会通过事务码 `SM37` 来管理这些作业。要设置断点,则需先找到目标程序并利用 ABAP 开发环境中的调试功能。 1. 找到计划执行的具体报告或可执行对象名称。 2. 进入开发工作台 (SE38 或者更现代的 SE80),加载该程序源代码。 3. 在希望暂停的地方放置静态断点;这可以通过点击左侧边栏来实现,或者直接输入 `/h` 命令于期望中断的那一行之前[^1]。 #### 利用 ST05 SQL Trace 工具辅助定位问题区域 有时可能难以确定确切应该在哪一行设立断点。此时可以借助 `ST05` 性能跟踪器记录下数据库交互情况,从而帮助识别出需要关注的部分逻辑所在位置。 #### 启动后台处理时激活调试模式 确保当提交新的后台实例运行前已经启用了全局级别的ABAP Debugger开关。此操作可通过参数配置完成 (`RSDEBUG`) ,使得任何新启动的任务都会自动进入等待状态直到用户确认继续执行流程为止。 ```abap REPORT ztest_program. PARAMETERS: p_debug AS CHECKBOX DEFAULT 'X'. IF p_debug IS NOT INITIAL. CALL FUNCTION 'TH_START_DEBUGGING' EXPORTING mode = 'A'. " A for asynchronous debugging ENDIF. ... SUBMIT zbackground_job AND RETURN. ``` 上述代码片段展示了如何编写一段简单的 ABAP 代码以允许选择性开启异步调试选项,并且在实际调用后台任务之前进行了相应准备动作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值