What is a background
job?
SAP background job allows the automation of
routine tasks and the optimization of the use of SAP computing resources. It
provides you with extensive functions for scheduling and administering
background jobs.
What is the use of a
background job?
SAP background processing automates routine
tasks and helps you optimize your organization’s SAP computing resources. Using
background processing, you tell the SAP System to run programs for you.
Background processing lets you move long-running or resource-intensive program
runs to times when the system load is low. It also lets you delegate to the
system the task of running reports or programs. Your dialog sessions are not
tied up, and reports that run in the background are not subject to the
dialog-step run-time limit that applies to interactive sessions
the background processing system has an interface to external
management tools so you can integrate your SAP background processing into an
external tool. Certified implementations of this interface are available for
several external system management tools.
How to create a
Background Job?
1. Call
Transaction SM36
2. Assign a job name. Decide on a name
for the job you are defining and enter it in the Job
Name field.
3. Set the job’s priority or “Job Class”:
·
High priority: Class
A
·
Medium priority: Class
B
·
Low priority: Class
C
4. In the Taregt server field, indicate whether to
use system load balancing.
For the system to use system
load balancing to automatically select the most efficient application server to use at the
moment, leave this field empty.
To
use a particular application server to run the job, enter a specific target
server.
5. If spool requests generated by this
job are to be sent to someone as email, specify the email address. Choose the spool line receiptent button.
6. Define when the job is to start by
choosing Start Condition and completing the appropriate
selections. If the job is to repeat, or be periodic, check the box at the
bottom of this screen.
7. Define the job’s steps by choosing step, then specify the ABAP program, external command, or external program to be used for each step.
8. Save the fully defined job to submit
it to the background processing system.
9. When you need to modify, reschedule,
or otherwise manipulate a job after you've scheduled it the first time, you'll manage jobs from the Job Overview.
How to monitor a background job?
Background jobs monitoring is one of the core
responsibilities of the SAP Basis administrator. Basically, background jobs are scheduled to
achieve specific tasks in the SAP system. There is more to simply monitoring the success or
other wise of a background job. You should add value to the monitoring of your
background in the SAP system. Depending on what you want to monitor/analyze,
the SAP system provides the functionalities to simplify the exercise. Some
information that you might want to investigate include…
Similar jobs:
Transaction SM37 can also help you identify jobs that are similar or probably
duplicated. The job name column can help in identifying such jobs. For these
kinds of jobs, you might have to carry out housekeeping activities such as
deleting the redundant jobs.
Long running job – If you are interested in investigating long running jobs,
you can do that via transaction SM37. The “Duration (sec.)” column of the
report allows you to analyze this requirement properly. For these kinds of
jobs, it will be nice to investigate the root cause via performance detection
transactions such as STAD, ST03N and ST12.
Regularly cancelled jobs – Transaction SM37 is also a veritable tool for
investigating jobs that are cancelled regularly. This status check can be seen
in the “status” column of the report. It will be nice for you to review why
they are always cancelled.
Obsolete jobs:
Some jobs might not have been modified in a long time and as such they have
become obsolete. You can see the jobs that falls to this category via
transaction SE16 by specifying the table name, TBTCO and reviewing the “last
job change” field accordingly. For the jobs in this category, you might
consider modifying the jobs or deleting them where possible.
Trouble shooting of a background job?
1)
First of all identify the job that is long running and identify details like
job class, workprocess that is executing the job
2)
Click on the job to view the display job screen. In the screen, click on job
log to understand what is being performed by the job currently. This may
give details like job is currently extracting some data packages or processing
data packages etc
3)
Identify the executing server and process id of the job from the step 1 and
goto transaction SM50 of the respective executing server to view more details
about the background job running.
Figure
out the status of the job like On Hold or running from the process
overview. If the job is On Hold, find out the reason for On Hold by examing the
"Reason" column of SM50 transaction. Reason for On
Hold could be due to CPIC/RFC/DEBUG/ENQ/PRIV/UPD etc.
Double
click on the reason column for detailed information on the same and
troubleshoot accordingly. If reason is RFC, check out which RFC it is referring
to and cross check whether destination system is up or not and any other
problems with that system.
·
If it is ENQ, check
out any lock issues like lock overflow etc
·
If it is PRIV, check
out for memory bottlenecks
·
If it is UPD, check
out whether any update issues
·
If it is CPIC, check
out for any network , gateway, message server and other communication problems
4) After performing
step3, if you figure out job is not on Hold and it is in running state, then
examine report column to identify what report/program is being executed by the
job. Once you got the report/program details, figure whether it sap program or
custom program and take actions accordingly.
5) Also examine
Action and table columns in SM50 transaction of respective executing server to
identify what is the action( roll in/roll out /Sequential read/Physical
read/insert/update/delete etc) being carried out by the job currently and
what is the table on which action is being carried out.
If it is sequential
read, figure out the cost of that sequential etc and consider for indexing etc.
If it is physical read, check out whether there are too many swaps and consider
resizing buffers accordingly. If you observed delay is due to high roll in/roll
out, identify reasons for the same and tune buffer/memory parameters
accordingly.
6) Once you get the
table details on which action is being carried out, figure
out
·
How many records are
existing in the table ?
·
Is this taking long
time due to volume of records ?
·
Are there proper
indexes on the table ?(If no proper index, consider index
creation by taking help of DBA )
·
Is the table having
upto date statistics ? (If statistics are out of date,
consider updating statistics of that table)
7) Consider
debugging the process in SM50 ( Program/Session -> Program ->
Debugging ) to figureout the issue
8) Using ST05 or
ST12, a trace can be taken for background job to figure out where exactly time
is being consumed and to identify various cpu/memory bottlenecks or any buffer
issues.
9) STAT/STAD
transcation can be used to figure out what is the reason for high response time
and actions can be taken accordingly
10) By taking help
of ABAP er, even ABAP run time analysis can be done using SE30 transaction
By following the
above steps, you can pin point the issue and take actions accordingly to
minimize runtime of long running background jobs.