Monday, 29 September 2014

Back ground Jobs

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.


No comments:

Post a Comment