2006 Aug 15 4:25 PM
Hi,
I have job's running on production system. I have access to SM37 ... but everyday I have to go & check SM37 to see wether any job failed or not at SAP's end ... Is there a way where in the users & myself can get an e-mail notification if the job fails ...
Thank You,
SB.
2006 Aug 15 4:50 PM
Hi,
Create a report to do the following select, to get the job failure.
Select * from V_OP where STATUS = 'F' "(For failure).
If anything gets selected, then send the details using the function module mentioned in the previous post.
Thanks,
Juwin.
Thank Michael... could you also tell me what is the purpose of NEWFLAG & how does this value get populated in the table.... I see various combinations like
Status = S Newflag = C
Status = F Newflag = C
Status = A Newflag = C
Status = P Newflag = S
Status = F Newflag = ' '(blank)
Status = S Newflag = ' '(blank)
Thank You,
SB
2006 Aug 15 4:28 PM
I don't know of an SAP provided solution, but you could easily write your own program to monitor the background jobs (tables TBTCO, TBTCP) and send emails when an error is detected. I did something similar to this to monitor errored transactions in SM58.
2006 Aug 15 4:30 PM
Tyy the FM 'SO_NEW_DOCUMENT_ATT_SEND_API1'.
&----
*&----
DATA : SEND LIKE SONV-FLAG VALUE 'X',
V_LINE TYPE I.
DATA : SAP_INBOX_V_LINE TYPE I.
DESCRIBE TABLE S_RECNAM LINES SAP_INBOX_V_LINE.
LOOP AT S_RECNAM.
WS_SAP_INBOX-RECEIVER = S_RECNAM-LOW . "SY-UNAME. sap_inbox.
WS_SAP_INBOX-EXPRESS = 'X'.
WS_SAP_INBOX-REC_TYPE = 'B'.
APPEND WS_SAP_INBOX.
ENDLOOP.
LOOP AT S_RECNM1.
WS_SAP_INBOX-RECEIVER = S_RECNM1-LOW . "SY-UNAME. sap_inbox.
WS_SAP_INBOX-EXPRESS = 'X'.
WS_SAP_INBOX-REC_TYPE = 'U'.
APPEND WS_SAP_INBOX.
ENDLOOP.
Sending the document
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = WS_DOC_CHNG
PUT_IN_OUTBOX = 'X'
SENT_TO_ALL = SEND "'X'
TABLES
PACKING_LIST = WS_OBJPACK
OBJECT_HEADER = WS_OBJHEAD
CONTENTS_BIN = WS_OBJBIN
CONTENTS_TXT = WS_OBJTXT
RECEIVERS = WS_SAP_INBOX
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 = 99.
CASE SY-SUBRC.
WHEN '1'.
RAISE TOO_MANY_RECEIVERS.
WHEN '2'.
RAISE DOCUMENT_NOT_SENT.
WHEN '4'.
RAISE OPERATION_NO_AUTHORIZATION.
WHEN OTHERS.
RAISE OTHERS.
ENDCASE.
ENDDO.
ENDFORM. " SEND_OBJECT
-SID
2006 Aug 15 4:50 PM
Hi,
Create a report to do the following select, to get the job failure.
Select * from V_OP where STATUS = 'F' "(For failure).
If anything gets selected, then send the details using the function module mentioned in the previous post.
Thanks,
Juwin.
2006 Aug 15 5:43 PM
Hi Juwin,
Thanks for your reply... I am checking V_OP in prodcution system... & I wanted to know what the various values of the feild STATUS ... but I could not find them...
Above all just now a job finished which creats a session in SM35 ... so I was closely monitoring this job from SM37, SM35 & table V_OP...
SM37 & SM35 shows job as completed & session created & processed... but in V_OP (STATUS feild) is now showing "F" ... previously it was showing "S" ... also a new entry in V_OP got created with tomorrows date for the job & currently it's status feild is "S"... What I understand with this is "F" = Finished & "S" = Scheduled...
So how will I know from this table which all jobs failed??
Thank You,
SB.
2006 Aug 23 4:39 AM
Hi,
I am looking into view V_OP ... & I am unable to get what are the different values to the field "STATUS".... there isno check table for this field so how do I know which job completed successfully & which failed...I also found the value "P" for this which I have no idea to what it stands for...
My requirement is that I have to check for successful & failed jobs that are related to all the interfaces running in the system ... My approach is to write a generic program with parameters having job names & then cross check against V_OP & alert or download a file giving the job status...
Is my approach correct ??
2006 Aug 23 3:16 PM
Any Suggestion for the "STATUS" field in V_OP ??
Any help would be greatly appreciated.
Thank You,
SB.
2006 Aug 23 3:24 PM
A - Cancelled
F - Completed
P - Scheduled
R - Active
S - Released
2006 Aug 23 3:49 PM
Thank Michael... could you also tell me what is the purpose of NEWFLAG & how does this value get populated in the table.... I see various combinations like
Status = S Newflag = C
Status = F Newflag = C
Status = A Newflag = C
Status = P Newflag = S
Status = F Newflag = ' '(blank)
Status = S Newflag = ' '(blank)
Thank You,
SB
2006 Aug 23 4:17 PM
I'm sorry I don't know what the newflag values represent. In the past, I've only concerned myself with the status field when writing monitoring routines.
2006 Aug 15 5:47 PM
You can receive e-mails about failed jobs by using Tx: RZ21 and RZ20.
Refer to the following links:
RZ21: <a href="http://help.sap.com/saphelp_nw04/helpdata/en/2c/abb2e7ff6311d194c000a0c93033f7/frameset.htm">Define Automatic Alert Notification</a>
RZ20: <a href="http://help.sap.com/saphelp_nw04/helpdata/en/20/df2270043c11d294c300a0c93033f7/frameset.htm">Monitor Alerts for Background Processing</a>
Regards
Sridhar
2006 Aug 15 7:57 PM
SB,
I use the following code to create a job and check on the status of that job. You could replace my error message with code to send an e-mail.
Bruce
*
report zfglr027 no standard page heading
line-size 132
message-id zf.
----
END-OF-SELECTION.
*
>>>>>>>> s e l e c t i o n s c r e e n o p t i o n s <<<<<<<
P_PRTR printer
P_PGM report painter program
P_VAR report painter variant
P_JOBNAM job name
P_WAIT seconds to wait in loop when checking if
program finished
*
----
*>>>>>>>>> T A B L E S <<<<<<<
tables: tsp01, " Spool Requests
tbtcp, " Background Job Step Overview
tbtcjob. " Structure for Passing Job Header Data (BI-API)
*>>>>>>>>> S E L E C T I O N S C R E E N O P T I O N S <<<<<<<
*
selection-screen begin of block b1 with frame title text-001.
parameter: p_prtr(4) default 'L9B' obligatory.
parameter: p_pgm like sy-repid obligatory
default 'ZMYSHOW'.
parameter: p_var like rsvar-variantt default 'XX' obligatory.
parameter: p_jobnam like tbtcjob-jobname default 'Budgeted_I_Stmnt'.
*
selection-screen end of block b1.
*
selection-screen begin of block b5 with frame title text-004.
selection-screen comment 1(55) text-005.
parameters: p_wait(3) type n default 010.
selection-screen end of block b5.
*
*>>>>>>>>> D A T A D E F I N I T I O N S <<<<<<<
data w_jobcount like tbtcjob-jobcount.
data: w_btcchar1(1).
data: w_jobhead like tbtco.
data: int_job_read_steplist like tbtcstep occurs 0 with header line.
data: w_rqident like tsp01-rqident.
data: wf_while_check(1).
data: e_receiver like zereport-receiver occurs 0 with header line.
data: e_sent like zereport-receiver occurs 0 with header line.
data w_start like sy-uzeit. " start time of Report Painter pgm
data w_code(40).
*
*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
*
start-of-selection.
perform 1000_run_program.
end-of-selection.
*
*
&----
*& Form 1000_run_program
&----
form 1000_run_program.
*
call function 'JOB_OPEN'
exporting
jobname = p_jobnam
importing
jobcount = w_jobcount
exceptions
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
others = 4.
if sy-subrc <> 0.
case sy-subrc.
when 1.
w_code = 'cant_create_job'.
when 2.
w_code = 'invalid_job_data'.
when 3.
w_code = 'jobname_missing'.
when 4.
w_code = 'others'.
endcase.
message i000 with 'JOB_OPEN Error ' w_code ' Program aborted'.
format color col_negative.
skip 2.
write: / 'Program aborted.'.
write: / 'Function JOB_OPEN Error ', w_code.
stop.
endif.
format color col_normal.
skip 2.
write: / ' JOB_OPEN values after call:'.
write: /4 'jobname ', p_jobnam.
write: /4 'jobcount ', w_jobcount.
*
translate p_pgm to upper case.
get time field w_start .
submit ZMYSHOW
submit (p_pgm)
to sap-spool
destination p_prtr
immediately ' '
keep in spool 'X'
without spool dynpro
user sy-uname via job p_jobnam number w_jobcount
using selection-set p_var
using selection-sets of program p_pgm
and return.
*
skip 2.
write: / ' SUBMIT parameters after submit:'.
write: /4 'user ', sy-uname.
write: /4 'job ', p_jobnam.
write: /4 'jobcount ', w_jobcount.
write: /4 'program ', p_pgm.
write: /4 'variant ', p_var.
*
call function 'JOB_CLOSE'
exporting jobname = p_jobnam
jobcount = w_jobcount
strtimmed = 'X'
exceptions
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
others = 8.
if sy-subrc <> 0.
case sy-subrc.
when 1.
w_code = 'cant_start_immediate'.
when 2.
w_code = 'invalid_startdate'.
when 3.
w_code = 'jobname_missing'.
when 4.
w_code = 'job_close_failed'.
when 5.
w_code = 'job_nosteps'.
when 6.
w_code = 'job_notex'.
when 7.
w_code = 'lock_failed'.
when 8.
w_code = 'others'.
endcase.
message i000 with 'JOB_CLOSE Error ' w_code ' Program aborted'.
skip 2.
format color col_negative.
write: / 'Program aborted.'.
write: / 'Function JOB_CLOSE Error ', w_code.
stop.
endif.
format color col_normal.
skip 2.
write: / ' JOB_CLOSE values after call:'.
write: /4 'jobname ', p_jobnam.
write: /4 'jobcount ', w_jobcount.
*
w_jobhead-status possible values
btc_running like tbtco-status value 'R',
btc_ready like tbtco-status value 'Y',
btc_scheduled like tbtco-status value 'P',
btc_released like tbtco-status value 'S',
btc_aborted like tbtco-status value 'A',
btc_finished like tbtco-status value 'F',
btc_put_active like tbtco-status value 'Z',
btc_unknown_state like tbtco-status value 'X'.
*
Wait for a while so jobs can run
*
while ( not w_jobhead-status = 'F' ) and
( not w_jobhead-status = 'A' ).
call function 'BP_JOB_READ'
exporting
job_read_jobcount = w_jobcount
job_read_jobname = p_jobnam
job_read_opcode = '20'
importing
job_read_jobhead = w_jobhead
tables
job_read_steplist = int_job_read_steplist
exceptions
invalid_opcode = 1
job_doesnt_exist = 2
job_doesnt_have_steps = 3
others = 4.
if w_jobhead-status = 'F'. " F = Finished
exit.
elseif w_jobhead-status = 'A'. " A = Aborted
message e935 with 'BP_JOB_READ function Aborted.'
'Status is '
w_jobhead-status
'"'.
else.
wait up to 300 seconds.
wait up to p_wait seconds.
endif.
endwhile.
if w_jobhead-status <> 'F'.
write: / 'status', w_jobhead-status.
message e935 with
'BP_JOB_READ function did not complete successfully'
w_jobhead-status.
else.
*
endif.
*
*
endform. " 1000_run_program
*
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |