2008 Jan 08 1:24 PM
hi gurus,
I want write a code for a program which will run in background.
for example.
if <condition>.
run in back ground.
else.
run in foreground.
endif.
can i use sy-batch and how.
please advice.
thanks in advance.
Hi,
You can put what code to run in back ground and what code to run in foreground in the if conditions.
If sy-batch = 'X'.
write the code which u want to run in back ground.
else.
write the code which you want to run in foreground.
endif.
Check the status of the background job in sm30 transaction code.
Thanks & Regards
Haritha.
2008 Jan 08 1:30 PM
if sy-batch = 'X'
run in back ground.
else.
run in foreground.
endif.
Reward some points
Madhavi
2008 Jan 08 1:33 PM
Hi Abhishek,
You can use sy-batch to run the program in background. Write the code like this.
if sy-batch = 'X'.
run in background.
else.
run in foreground.
endif.
Thanks & Regards
Haritha.
2008 Jan 08 1:36 PM
Hi,
Check the code using sy-batch which u have to use with if condition
FORM download_html_file_on_pc tables YT_DOWNLOAD
using X_OUTFILE type string.
Use gui_download if file is located on the local PC.
WS_download only works in foreground
IF SY-batch EQ 'X'.
MESSAGE e001(AQ) WITH
'This program cannot be executed in background'.
ERROR: Unable to download locally stored files when running in
background
ELSE.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = X_OUTFILE
FILETYPE = 'ASC'
TABLES
DATA_TAB = YT_DOWNLOAD
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.
Status of download
CASE SY-subrc.
WHEN 0.
MESSAGE I002(AQ) WITH
'Code converted to HTML and downloaded as ' X_OUTFILE.
WHEN OTHERS.
Upload unsuccessful - error message
MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDCASE.
ENDIF.
ENDFORM. " download_html_file_on_pc
Hope this help u
Reward points if useful
Regards,
Sreenivas
2008 Jan 08 1:40 PM
Hi Abhishek,
Do you want to know how to submit a program in background ?
The SY-BATCH field will tell you if you are already running in background.
Can you clarify your requirement?
Best Regards,
Chester
2008 Jan 08 1:49 PM
hi,
actually what code i have to write to make a program to run in background.
means i have a simple program.
but i want to make it run in background and foreground both on a particular condition.
Is there any code to make a program to run in background.
so that i can put it inside IF condition.
IF sy-batch = 'X'.
code for background.
ENDIF.
I need code for background.
if u have any question please let me know.
thanks. please advice.
2008 Jan 08 2:06 PM
Hi Abhisbek,
Try something like this:
IF p_bkgrd IS NOT INITIAL.
Program is being run in background...
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = w_name
IMPORTING
jobcount = w_number
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
SUBMIT program
WITH p_1 EQ p_1
VIA JOB w_name NUMBER w_number
AND RETURN.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = w_number
jobname = w_name
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.
ELSE
Program is being run in foreground
SUBMIT program
WITH p_1 EQ p_1
AND RETURN.
ENDIF.
Regards,
Chester
2008 Jan 08 2:08 PM
Hi,
Chester's point is accurate, sy-batch is of no use to you here at all, it will only tell you if you are currently running in the background.
All this will do;
IF sy-batch = 'X'.
code for background.
ENDIF.
is perform 'code for background' if your program is already running in the background.
It run a program in the background you can use the SUBMIT statement. Take a look at the ABAP help for this statement, particularly the job_options.
So an example might be;
if counter gt 5000.
submit program (using job_options) and return.
else.
submit program and return.
endif.
Regards,
Nick
2008 Jan 08 1:54 PM
Hi,
You can put what code to run in back ground and what code to run in foreground in the if conditions.
If sy-batch = 'X'.
write the code which u want to run in back ground.
else.
write the code which you want to run in foreground.
endif.
Check the status of the background job in sm30 transaction code.
Thanks & Regards
Haritha.
2008 Jan 08 2:01 PM
Hi,
You have to use as below :
if sy-batch = 'X'.
Run the report in background.
else.
Run the report in foreground.
endif.
Thanks,
Sriram Ponna.
| User | Count |
|---|---|
| 6 | |
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |