Background Job Processing
What is a background Job?
Unlike Foreground jobs, Background jobs are non-interactive
processes that run behind the normal interactive operations. They
run in parallel and do not disturb interactive(foreground) processes
and operations.
It is scheduled from SM36. You can analyze it from SM37 by viewing
its job log.
Advantages of Background Jobs
It reduces manual effort & automates the task.
It can be scheduled as per user's choice.
It reduces user interaction and can run seamlessly in the
background without user input
Once you define the variant for background job, the user doesn't
have to worry about value input in the field. Thus, user confusion
is also reduced.
Ideal for time- consuming/ resource intensive programs which
can be scheduled to run in the night(when system load is low).
Background jobs are classified in three categories -
1. Class A (High/critical Priority) :- Some tasks are urgent or
critical and must be scheduled with class A priority job. Class A
priority reserves one or more background work processes. Users
have to decide how many background work processes should be
assigned to Class A priority job. Suppose a user chooses 2
background work processes for this category then available
background work processes for class B and C = (Total number of
work processes set in operation modes RZ03)- (Background work
processes allowed to class A category).
2. Class B(Medium Priority):- Once Class A jobs are completed ,
Class B job will start executing in the background before class C
jobs.
3. Class C(Low Priority):-It runs after both class A and class B jobs
are completed.
Possible status of background
jobs
1. Scheduled:- You have defined the program name and variant
but not defined start condition like Start Date, End Date ,
Frequency etc. That means you have not defined when job should
be scheduled in system.
2. Released:- All required criteria are fulfilled for job definition.
Start condition is must for the job to be in release status.
3. Ready:- All the required conditions are met to run the job in a
background workprocess. But job scheduler has put the job in the
queue because it is waiting for background workprocess to be
free.
4. Active:- Job has started running in the background. We cannot
change the status of the job once it is in Active status.
5. Finished:- Job is executed successfully. It means desired task is
competed without any error.
6. Cancelled:- There are two possibilities for this. Administrator has
forcefully cancelled the job or there might be some issue with job.
You can investigate this from Job logs.
How to schedule the background
job?
You can schedule the background job using SM36. Planned or
immediate jobs can be scheduled.
Step 1) Execute T-code SM36.
Step 2) Fill the job name, priority(A/B/C) and the target server.
Background jobs once scheduled on a target server run on that
server. Main purpose of defining target server is the workload
balancing.
Step 3) Click on "spool list recipient". You will get output in your
mailbox. You can check email from SBWP.
Step 4) Insert your SAP username and click copy button.
Step 5) Click Step button to define ABAP program, variant's details,
etc.
Step 6) Define program name, variant details.
1. Enter your program name,Variant name in the field. If
you have not created variant as per your
requirement ,then leave it blank.
2. Press save button.
Step 7) Once you schedule the job you will get the following
screen.
Step 8) Click Start conditions to fill start date, end date,
frequency,etc for job. If you do not specify start condition then job
will always remain in scheduled status. A job in scheduled
status will never run.
1. Click on Date/Time(For periodic jobs). If you click
"Immediate" then job will start running right away. But it
will not be set as periodic job. It's like "press and run".
2. Define job's start date/time, end date/time. The job will
be released only once it meets its Scheduled start
date/time.
3. Press periodic values.
Step 9) Click on Hourly/Daily/Weekly period to define the frequency
of the job as per your requirement.We will select Other Period
Step 10) Here you specify the recurring criteria of the job.For
example, You can have the Job run after every 5 days from the
Start Date. Here we select job to run every 10 minutes
Step 11) Click on save button.
Step 12) Click on save again.
Step 13) Click save again
Step 14) Once Job step and start conditions are defined the
following window will appear.
Step 15) Press save.
Step 16) Goto SM37 to know the status of the job.
Step 17) Select your criteria for the job which you want to monitor.
1. Put your job name and username who scheduled
the job.
2. Select the status of the job.
3. Specify the date range. In our scenario we just specify
the end date while keeping From Date Open.
Step 18) You will get the following screen. Look at the status, it's a
released means start conditions are met, and the job is in the queue
is waiting for background work process to be free.
How to Deschedule a background
job
Descheduled jobs will not run in the future. Remeber, you
cannot deschedule the job once it's in active status.
Step 1) Execute SM37.
Step 2) Fill the criteria.
1. Job name and username by which job is scheduled.
2. Select the status. To deschedule the job you can only select
Released/Ready status.
3. Specify the date range.
4. Press Execute(F8) button.
Step 3) Select specified job and press Job -> (Released ->
Scheduled).
Step 4) You will find the message in the status bar once you press
"Released -> Scheduled".
How to Monitor a Background Job
in SAP
Monitoring background job is important because once you schedule
the job it might be cancelled due to some error. To investigate the
root cause use SM37.
Step 1) Execute T-code SM37.
Step 2) Fill the required criteria.
1. Job name and username(who scheduled the job). You can put *
to get details of all jobs scheduled by all the users.
2. Select job status which you want to monitor. If you find that a
background job is not completed , select Canceled status.
3. Put the date range as per your requirement.
Step 3) You will get a screen as shown below.
Step 4) Click on Job Log button to trace the error due to which job
was cancelled.
Step 5) You will get the following details. In the below example, job
was cancelled since there was an issue with RFC connection to the
remote system. As a resolution use SM59 to check if there is an
authorization issue to the remote system.
Sometimes jobs in Active status may also cause an issue.
You may face issues like tablespaces are full, duplicate job is
running with the same name and timing, job is selecting or updating
large data, etc.
You can also check such jobs from SM37. Follow the procedure as
below.
Step 1) Execute SM37.
Step 2) Fill the required criteria.
1. Job name and username(by which job is scheduled).
2. Select job status which you want to monitor. If you find a
system performance issue or if a task is not completed for
a very long time, then select active status.
3. Put the date range as per your requirement.
Step 3) Look into Duration column (which signifies the job is
running since n seconds). If you find a large number in duration then
investigate the job details from job log. Some jobs use a large
number of data.Using SE16 check table entries for the tables used
by the job.
Sometimes jobs show to be in Active Status even though they are
completed.
How to correct them? Follow the below set of procedure -
Step 1) As shown above, Execute T-code SM37 and select the job
with active status.
Step 2) Select the active job which is causing problem.
Step 3) Click the Job->Check status.
Step 4) In the status bar of the window you will find as below
message. This will repair Job Status if there was a problem
Step 5) If still job is in running status then goto SM50. Below
screen will open. Have a look in "Reasn" column which shows any
errors or exceptional issue. Investigate it further.
How to Delete a Background Job
Why Delete Background Job?
Old jobs occupy space on the system. To avoid any inconsistencies within the system
normally we delete the logs. Because if the file system gets full your SAP system will crash!
You can delete jobs in two ways:-
1. Multiple jobs at once.
2. Single job deletion.
Delete Multiple Jobs at once
The best way to do this is use report RSBTCDEL2(New version of RSBTCDEL). Old job
logs will be deleted and will not show in the job overview.
Step 1) Execute T-code SE38.
Step 2) Put the program name in the field as RSBRCDEL2.
Step 3) Fill the proper details.
1. Which job do you want to delete?If you put * means all jobs. If you want to delete jobs from a
specific user , give UserName.
2. Specify Status of Job to be deleted. Specify time period of Deletion. For instance , delete jobs
older than 14 days.NOTE: Once the job is in active status, it is impossible to delete them.
3. Specify Commit. Commit value is proportional to program performance. If the commit value is
high then job deletion will run faster. Recommended value is >= 1000.
4. Check Test run to simulate the deletion. Jobs will not be deleted. Once you are sure only then
uncheck the Test run.
5. Press Execute.
Single job deletion
You can also delete a single job from SM37.
Step 1) Execute SM37.
Step 2) Fill your criteria.
1. Job name and username
2. Status of the job.
3. Select the date range.
Step 3) Select the job you want to delete
Step 4) Goto Job-> Delete.
You can also delete the jobs from OS level under directory
/usr/sap/<SID>/SYS/global/<CLNT>JOBLG. Folder.
But deletion from OS level may cause Temse inconsistency issue.To remove inconsistencies
goto SP12-> Consistency check.Once you get the list , delete the objects.
Normally, Job- SAP_REORG_JOBS (Program to Delete old background jobs) must be
scheduled within the system with program RSBTCDEL2 at daily frequency.