SAP has a table called TBTCO that contains the status of all jobs that have been run so its a simple process to query that file.
The following is a simple flow of how this process is supposed to work.
As you can see I am using the generic email process that I added to my blog two weeks ago.
You of course can use what ever process you want to send out e-mails.
I did not want to send out e-mails for all job failures so I created a table called ZJOBS_DESC that contains only the job names I am monitoring.
Here is the layout for that file.
I also wanted to be able to send e-mails to multiple people so I created another custom table called ZJOBS_LIST.
Here is the layout of that table.
Well I guess were ready for some ABAP.
Global Variables:
The tables ZEMAIL_* are all part of the generic e-mail process.tables: zemail_001, zemail_002, zemail_003a. data: global_tab_tbtco type table of tbtco with header line, global_tab_desc type table of zjobs_desc with header line, global_tab_list type table of zjobs_list with header line, local_source(100) type c, local_date(8) type c, local_time type sy-timlo, local_count type i, local_retain type sy-datum, current_date type sy-datum, current_time type sy-uzeit.Following code goes back an hour to get the starting point for querying TBTCO
current_time = sy-uzeit - 3600. current_date = sy-datum. if current_time < 0. current_time = 230000. current_date = sy-datum - 1. endif.Query TBTCO
select * from tbtco into table global_tab_tbtco where status = 'A' and enddate = sy-datum and endtime >= current_time.Now we loop thru the results and check to see if any aborted jobs are in the table ZJOBS_DESC if they are we send out an e-mail.
loop at global_tab_tbtco. local_date = sy-datum. local_count = 0. get time field local_time. select single * from zjobs_desc into global_tab_desc where jobname = global_tab_tbtco-jobname. if sy-subrc = 0. select single * from zjobs_list into global_tab_list where jobname = global_tab_tbtco-jobname. if sy-subrc = 0. concatenate global_tab_desc-jobname local_date local_time into zemail_002-source_program. zemail_002-com_type = 'MAL'. local_count = local_count + 1. zemail_002-sequence = local_count. zemail_002-email_date = local_date. zemail_002-email_time = local_time. zemail_002-email_address = global_tab_list-phonenum. insert zemail_002. zemail_001-status = 'U'. local_retain = sy-datum + 180. concatenate global_tab_desc-jobname local_date local_time into zemail_001-source_program. zemail_001-email_date = local_date. zemail_001-email_time = local_time. zemail_001-kunnr = global_tab_desc-jobname. zemail_001-description = global_tab_desc-description. zemail_001-subject = global_tab_desc-description. zemail_001-retain_until = local_retain. zemail_001-status = 'U'. zemail_001-attachment = '/usr/sap/transfer/sapout/email/redlight.PDF'. zemail_001-name_attach = 'redlight'. zemail_001-type_attachment = 'JPG'. zemail_001-created_user = sy-uname. insert zemail_001. concatenate global_tab_desc-jobname local_date local_time into zemail_003a-source_program. zemail_003a-email_date = local_date. zemail_003a-email_time = local_time. zemail_003a-sequence = 1. zemail_003a-message = global_tab_desc-description. insert zemail_003a. endif. endif. endloop.Again if you don't want to use the generic email process I created then you will want to remove all of the entries to ZEMAIL_* and use your own process but that is it in a nutshell I hope you find it of use. If you would like the source with out all of my comments send me an email.
Here is a couple of books on ABAP that are worth a look at if your new to ABAP.