Issue execution of program on background
Hi,
I execute a program to send an email with the result of transaction O4B1 as an attachment Excel.
My issue is when i execute it manually, the result is perfect, but when i execute on background,
the Excel file doesn't contain all data.
Best regards.
Hi
Why don't you check in the debugging mode for the back ground job.
for doing debuggni in background do the follow
1) go to SM37, select the job name and
2) in the command line just put JDBG ( not /nJDBG or /oJDBG) and hit enter it goes to the debugging mode for that batch job.
hope it helps
Thanks!!
Similar Messages
-
Issue in submit program via background. data is not appearing in spool.
hi all,
i am submitting a program in bachground. the output data needs to be written in the spool.
when i try using my ID i am getting desired result. when others execute it it is going to printer instead of spool as they have default printers assigned to them. i tried defaulting print parameters to a dummy printer. still the problem is not solved.
please advice. the code is as follows......
print_parameters-PDEST = 'oooo'.
SUBMIT /pbs/riaufk20
WITH strno IN r_tplnr
WITH auart IN r_auart
WITH datuv EQ '19000101'
WITH datub EQ '99990101'
WITH pbs_apar EQ '3'
WITH dy_ofn EQ 'X'
WITH dy_his EQ 'X'
WITH dy_iar EQ 'X'
WITH dy_mab EQ 'X'
WITH variant EQ '/ZPM_POM_ORD'
TO SAP-SPOOL SPOOL PARAMETERS print_parameters
WITHOUT SPOOL DYNPRO
VIA JOB v_jobname NUMBER v_number_l AND RETURN.print_parameters-PDEST = 'oooo'. dont mention the any thing related to print settings...
SUBMIT <zprg> WITH s_matnr = wmara-matnr
WITH s_werks = wmarc-werks
WITH p_diff = lv_diff
VIA JOB <Name> NUMBER lv_jcount
AND RETURN. -
Load issues with Billing programs in background SDBILLDL or RV60SBT1
We are using SDBILLDL or RV60SBT1 to create billing docs in batch (scheduled background job).
This is not working well, when we have huge load.
Could you please suggest some solutions for this or the reasons for this.
Thanks,
Vinotha MHi
Pls let me know the actual error, what you are getting in the back ground job.
Pls also check the OSS note
Note 652219 - SDBILLDL cannot be executed in background
Pls take opinion from SAP / Basis, before implementing the note
Regards
Madhan D -
Issue while capturing messages when running program in background
Hi,
I have a program where we have BDC for transaction KSU5 and this is using CALL TRANSACTION method to post the documents after this we have to check a table COEP for the document no's generated in ksu5.
This program works absolutely fine in foreground printing the output on screen the document numbers that we get once we use
CALL TRANSACTION 'KSU5' USING bdcdata MODE 'E' MESSAGES INTO return.
but the same gets spoiled if we run this program in background !! the return table where I use to get the document no it shows additional data of the KSU5 transaction which is not required I am just trying to print the document no from the return table with variable msgv1 and msgv2.
Can someone explain or give solution to run this program in background and get the result printed correctly for the user.
Thanks
SudharshanSudarshan,
I guess your code was recorded for Online mode , try to compare it with Simulated background BDC code for the transaction and see if there is any difference for your required functionality .
You can generate 'Simulated background BDC code' by SHDB->New recording-> and then check 'Simulate background BDC code' option in popup window .
-Tushar Shukla
Edited by: TUSHAR SHUKLA on Oct 8, 2010 2:23 AM -
Regarding SUBMIT statement - to process a program in background
Hi All,
I have issue of submitting a program in background and also i need to process the no of records come from program by splitting them by 1000(n).
First of all i have program whose code is like following:
<b>REPORT z_update_material_master.</b>
TYPES: BEGIN OF t_marc,
matnr LIKE marc-matnr, "Material Number
werks LIKE marc-werks, "Plant
beskz LIKE marc-beskz, "Procurement Type
sobsl LIKE marc-sobsl, "Special procurement type
fhori LIKE marc-fhori, "Scheduling Margin Key for Floats
dzeit LIKE marc-dzeit, "In-house production time
plifz LIKE marc-plifz, "Planned delivery time in days
webaz LIKE marc-webaz, "Goods rcpt processing time
pwwrk LIKE t460a-wrk02, "Production plant in planned order
erhor LIKE t436a-erhor, "Opening periodr
zlt TYPE p DECIMALS 3, "Total replenishment lead time
ztlt TYPE p DECIMALS 3, "Total replenishment lead time
wzeit TYPE p DECIMALS 3, "Total replenishment lead time
upd(1) TYPE c, "UPDATE INDICATER
ind TYPE c,
END OF t_marc.
DATA: i_marc TYPE SORTED TABLE OF t_marc INITIAL SIZE 0
WITH HEADER LINE
WITH NON-UNIQUE KEY matnr werks,
i_marc_rpt LIKE i_marc OCCURS 0 WITH HEADER LINE.
DATA: l_plantdata LIKE bapi_marc,
l_headdata LIKE bapimathead,
l_plantdatax LIKE bapi_marcx,
l_tabix LIKE sy-tabix.
CONSTANTS: c_s TYPE c VALUE 'S',
c_x TYPE c VALUE 'X'.
DATA i_temp_bapi_return LIKE bapi_matreturn2
OCCURS 0 WITH HEADER LINE.
DATA BEGIN OF i_temp_zppe0091_01 OCCURS 0.
INCLUDE STRUCTURE zppe0091_01.
DATA: END OF i_temp_zppe0091_01.
DATA: l_tab_nam LIKE rstable-tabname VALUE 'ZPPE0091_01'.
SELECT * FROM zppe0091_01
INTO CORRESPONDING FIELDS OF TABLE i_temp_zppe0091_01.
IF sy-subrc EQ 0.
LOOP AT i_temp_zppe0091_01 WHERE upd = c_x.
l_tabix = sy-tabix.
l_headdata-material = i_temp_zppe0091_01-matnr.
l_plantdata-plant = i_temp_zppe0091_01-werks.
l_plantdata-replentime = i_temp_zppe0091_01-wzeit.
l_plantdatax-replentime = c_x.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = l_headdata
plantdata = l_plantdata
plantdatax = l_plantdatax
TABLES
returnmessages = i_temp_bapi_return.
IF NOT i_temp_bapi_return[] IS INITIAL.
READ TABLE i_temp_bapi_return WITH KEY type = c_s.
IF sy-subrc EQ 0.
i_marc_rpt-matnr = i_temp_zppe0091_01-matnr.
i_marc_rpt-werks = i_temp_zppe0091_01-werks.
APPEND i_marc_rpt. CLEAR i_marc_rpt.
ELSE.
i_temp_zppe0091_01-upd = space.
MODIFY i_temp_zppe0091_01 INDEX l_tabix TRANSPORTING upd.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
Now i want to call this program from another program that is already exists by using <b>SUBMIT</b>
statement in background and i need to process this program by dividing records by <b>1000</b> into seperate session.
how can i do it. Can any body tell me the solution with syntax.
I might get lot of records from above program so i want to split them into diffrent sessions based on number of records(1000).
can any body give me the solution.
Thanks in advance.
Thanks & Regards,
Rayeez.Try implementing the following code. Use the code accordingly...
MOVE 100 TO c_recs_b4_split.
IF num_src_trans > c_recs_b4_split.
target_break = num_src_trans / p_thread.
ELSE.
target_break = num_src_trans + 1.
ENDIF.
wa_subbch = 1.
last_index = 1.
No batch split required if total recrods less than 100
IF num_src_trans < c_recs_b4_split.
CLEAR : range_btch.
REFRESH: range_btch.
IF wa_subbch = p_thread.
target_break = num_src_trans.
ENDIF.
MOVE 'S_SRCTRN' TO range_wa-selname.
MOVE 'S' TO range_wa-kind .
MOVE 'I' TO range_wa-sign .
MOVE 'EQ' TO range_wa-option .
LOOP AT itab_src_trans INTO st_src_trans.
MOVE st_src_trans-src_tran_id TO range_wa-low.
APPEND range_wa TO range_btch.
ENDLOOP.
Step 3 Submit the batch.
v_job_no = v_job_no + 1.
PERFORM submit_tp_jobs.
ELSE.
DO.
Step 1 Collect data for the target count
CLEAR : range_btch.
REFRESH: range_btch.
IF wa_subbch = p_thread.
target_break = num_src_trans.
ENDIF.
MOVE 'S_SRCTRN' TO range_wa-selname.
MOVE 'S' TO range_wa-kind .
MOVE 'I' TO range_wa-sign .
MOVE 'EQ' TO range_wa-option .
IF wa_subbch = p_thread.
target_break = num_src_trans - v_cnt .
ENDIF.
LOOP AT itab_src_trans INTO st_src_trans FROM last_index.
last_index = sy-tabix.
batch_total = batch_total + 1.
IF batch_total <= target_break.
MOVE st_src_trans-src_tran_id TO range_wa-low.
APPEND range_wa TO range_btch.
ELSE.
EXIT.
ENDIF.
v_cnt = v_cnt + 1.
ENDLOOP.
CLEAR batch_total.
Step 2 Submit the batch.
v_job_no = v_job_no + 1.
PERFORM submit_tp_jobs.
ADD 1 TO wa_subbch.
IF wa_subbch > p_thread.
EXIT.
ENDIF.
ENDDO.
ENDIF.
FORM submit_tp_jobs .
DATA : l_jobcount LIKE tbtcjob-jobcount,
l_jobrelease LIKE btch0000-char1,
w_job_flag VALUE 'X',
w_process_mode,
w_user_print_params LIKE pri_params.
l_jobname = p_batch.
CONCATENATE 'TP_' l_jobname '_' v_job_no INTO l_jobname.
CONDENSE l_jobname NO-GAPS.
w_process_mode = ' '.
IF NOT range_btch[] IS INITIAL.
PERFORM create_post_ctrl.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = l_jobname
IMPORTING
jobcount = l_jobcount.
SUBMIT zfi_pc_tran_proc
AND RETURN
WITH p_batch = p_batch
WITH p_jobid = p_jobid
WITH p_mode = w_process_mode
WITH p_subbch = wa_subbch
WITH p_jobq = p_jobid
WITH p_cntlmt = p_cntlmt
WITH p_tpiop = p_iop
WITH SELECTION-TABLE range_btch
USER sy-uname
VIA JOB l_jobname NUMBER l_jobcount
TO SAP-SPOOL
SPOOL PARAMETERS w_user_print_params
WITHOUT SPOOL DYNPRO.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = l_jobcount
jobname = l_jobname
strtimmed = 'X'
IMPORTING
job_was_released = l_jobrelease
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
invalid_target = 8
OTHERS = 9.
ENDIF.
ENDFORM. " submit_tp_jobs
Pl. add the points.... -
Hi all,
The following is the issue in submit program:
I am calling two programs /PBS/RIQMEL20 ( /pbs/iw59 ) and /PBS/RIAUFK20 ( /pbs/iw39 ) using submit programs in my z program.
I have created a layout /ZDEL56 for both programs. If I run submit program for /PBS/RIAUFK20 ( /pbs/iw39 ) I am getting the o/p in desired format ( As specified in the layout ).
How ever for program /PBS/RIQMEL20 ( /pbs/iw59 ) submit program is giving an error saying that layout is not found.
There is no difference b/w these two programs except that submitting program name is different.
The txn /pbs/iw59 when executed in background is giving the desired result. But when I try using submit program it is failing.
Can you please tell what mite be the problem?
Following is the sample piece of code.
submit /PBS/RIQMEL20
with pbs_apar EQ '1'
WITH VARIANT EQ '/ZDEL56'
Pointers will be highly appreciated.
Thanks,
Shiva.Hi,
In this case you need to use another internal table which is of type S_VBELN . Ex : it_vbeln.
In that you have to append the record
wa_vbeln-sign = 'I'
wa_vbeln-option = 'EQ'
wa_vbeln-low = w_inv.
append wa_vbeln to it_vbeln.
now use this
submit B VIA SELECTION-SCREEN
with P_DAYS = '4'
with P_KALSM = 'ZATCIN'
with S_VBELN = it_vbeln.
Now the new record will be appended with the values which are passing,. SO u wil have two rows in the S_VBELN.
Regards,
Venkatesh. -
Execution of report in background and foreground
Hi all,
I have a report in which i have two radio buttons on selection screen.
1, Foreground
2. background
could you please tell how to do foreground and background execution of report depends on user selection.if you could send some sample code its really helpful.
thanksIf the Background radio button is selected the you need to use the SUBMIT command to submit your program in background.
Example
Scheduling a submitable program as a background task with the number number in a background request name. After scheduling, the background task is completed by function module JOB_CLOSE and released immediately providing the user has the relevant authorization.
DATA: number TYPE tbtcjob-jobcount,
name TYPE tbtcjob-jobname VALUE 'JOB_TEST',
print_parameters TYPE pri_params.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = name
IMPORTING
jobcount = number
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
IF sy-subrc = 0.
SUBMIT submitable TO SAP-SPOOL
SPOOL PARAMETERS print_parameters
WITHOUT SPOOL DYNPRO
VIA JOB name NUMBER number
AND RETURN.
IF sy-subrc = 0.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = number
jobname = 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.
IF sy-subrc <> 0.
ENDIF.
ENDIF.
ENDIF.
Cheers
VJ
Message was edited by:
Vijayendra Rao -
Online Backup Failed with error-BR0268E Asynchronous execution of program..
Hi,
We are using DB13 for Online backup.But from few days it failing with below error.
BR0268E Asynchronous execution of program interrupted, exit status: c0000094
BR0267E Asynchronous execution of program failed
BR0278E Command output of 'F:\usr\sap\QE2\SYS\exe\uc\NTAMD64\mkszip -c F:\ORACLE\QE2\SAPDATA4\SR3_22\SR3.DATA22 >
Can someone please help on this issue? Thanks in advance.
Regards,
Kiran MHi,
Check below threads.
BRbackup problem on new system
Offline backup failed with BR0253E errno 13: Permission denied
BR0268E Asynchronous execution of program interrupted, exit status: c000009
Thanks,
Sushil
Edited by: Sushil Suryawanshi on May 28, 2009 8:16 PM -
How tu run the program in background
Hi SapAll.
actually iam new to ABAP ,i just want to know on how i can run the particular program in background .
can any one explain me in steps .
i also want to know on how to delete the particular job which has been already created in sm36 .
will be waiting for best response.
regards.
VarmaHi
Find the below steps to be defined.
1. Go to SM36 -
> Give the Program Name
2. If you have priority defined that to in Job class
3. Click -
> Start Condition
4. Select Data/Time Tab
5. Give the Date and Time for the job execution. (If you want to certain intervale provide it) -
Executing the program in Background
Hi experts i'm trying to Execute the Program in background.
Given the Input and output file locations and Press F9 for process the program in background from SE38. cause i want to run my program as a batch(Background)
but its not accepting. can you please help me how to resolve this issue.
i'm providing the code can you please verify that.
Many Thanks
SELECTION-SCREEN *
selection-screen begin of block b1 with frame title text-001.
*.. Filename
PARAMETERS: f_name TYPE char100, "Upload filename
d_name TYPE char100. " Download filename
selection-screen end of block b1 .
SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: p_serv radiobutton group RAD1,
p_frnt radiobutton group RAD1 default 'X'.
SELECTION-SCREEN: END OF BLOCK b2.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR f_name.
*.. Data Declaration
DATA: lt_file TYPE filetable,
lv_file TYPE LINE OF filetable,
rc_i TYPE i,
cl_gui TYPE REF TO cl_gui_frontend_services,
w_path LIKE dxfields-longpath.
*.. Check if from server or frontend
IF p_frnt = 'X'.
*.. Create objects for method
CREATE OBJECT cl_gui.
*.. Clear the filename
CLEAR f_name.
*.. Call method to search for file
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Choose Input File'
CHANGING
file_table = lt_file
rc = rc_i
EXCEPTIONS
OTHERS = 4.
*.. Check if file found
IF sy-subrc EQ 0.
*.. Check that file path not empty
CHECK NOT lt_file[] IS INITIAL.
LOOP AT lt_file INTO lv_file.
*.. Set parameter to filename
f_name = lv_file-filename.
ENDLOOP.
ENDIF.
*.. Free object
FREE cl_gui.
*.. Upload from Server
ELSE.
Retrieve filename
CALL FUNCTION 'F4_DXFILENAME_TOPRECURSION'
EXPORTING
i_location_flag = 'A'
i_server = ' '
i_path = '/sap_ftp/'
filemask = '**'
fileoperation = 'R'
IMPORTING
O_LOCATION_FLAG =
O_SERVER =
o_path = w_path
ABEND_FLAG =
EXCEPTIONS
rfc_error = 1
error_with_gui = 2
OTHERS = 3.
Set file path
f_name = w_path.
ENDIF.
*.. File selection for output file
AT SELECTION-SCREEN ON VALUE-REQUEST FOR d_name.
*.. Only allow search for front-end
IF p_frnt = 'X'.
*.. Data Declaration
DATA: lt_file TYPE filetable,
lv_file TYPE LINE OF filetable,
rc_i TYPE i,
cl_gui TYPE REF TO cl_gui_frontend_services.
*.. Create objects for method
CREATE OBJECT cl_gui.
*.. Clear the filename
CLEAR d_name.
*.. Call method to search for file
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Choose Input File'
CHANGING
file_table = lt_file
rc = rc_i
EXCEPTIONS
OTHERS = 4.
*.. Check if file found
IF sy-subrc EQ 0.
*.. Check that file path not empty
CHECK NOT lt_file[] IS INITIAL.
LOOP AT lt_file INTO lv_file.
*.. Set parameter to filename
d_name = lv_file-filename.
ENDLOOP.
ENDIF.
*.. Free object
FREE cl_gui.
ENDIF.
*.. General Checks for Selection screen
AT SELECTION-SCREEN.
*.. Check if program run in batch mode and ping directory
IF sy-batch = 'X'.
*.. Move filename to file_name
file_name = d_name.
*.. Check if path can be reached
OPEN DATASET file_name FOR INPUT IN TEXT MODE.
IF sy-subrc NE 0.
MESSAGE e082(zsomerfield).
ENDIF.
ENDIF.
NITIALIZATION.
*.. ALV Variables
variant_save = 'A'.
w_repid = sy-repid.
w_variant_handle = c_handl.
START-OF-SELECTION *
START-OF-SELECTION.
*.. Check if batch program running in batch mode or not
IF sy-batch = 'X'.
*.. Open file on application server for reading
OPEN DATASET file_name FOR INPUT IN TEXT MODE.
DO.
*.. Upload entries
READ DATASET file_name INTO zpernr.
*.. IF end of file reached then exit DO statement
IF sy-subrc = '4'.
EXIT.
ELSE.
*.. IF entry found then add to employee table
in_file-empnum = zpernr.
*.. Add entries to table
APPEND: in_file.
*.. Clear header lines
CLEAR: in_file, zpernr.
ENDIF.
ENDDO.
*.. Close dataset
CLOSE DATASET file_name.
*.. Get file from frontend and run in foreground
ELSE.
*.. Upload from local machine.
DATA: file_name TYPE string. "LIKE rlgrap-filename,
*.. Set filename to filename from screen
file_name = f_name.
*.. Upload the information from the file into the table in_file
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = file_name
TABLES
data_tab = in_file
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
*.. Make sure file uploaded correctly
IF sy-subrc <> 0.
MESSAGE E018(ZHR_MESSAGES).
ELSE.
MESSAGE i017(ZHR_MESSAGES).
ENDIF.
ENDIF.Hi Vamsi,
<b>First Check in the Foreground your program is working for the application server file or not</b>
When you will Execute your program in Background internal table "ZPERNR" will be populated from the file that is there on the application server.
After that what you want to do with the internal table.I think you have not sent the whole code.
In background FM GUI_UPLOAD willl not work.
If you want to debug your code put wait for 100 seconds at the place where you want to dubug your code.Go to transaction code SM50 your job will be running there.
Select Your job
Go to Menu Bar Program/Mode - > program - > Debugging.
In this way you can debug your code.
First Check in the Foreground your program is working for the application server file or not -
Execution of programs after import (XPRA) error during transports
Hi Experts
I am applying the support stack level from 18 to 19. On applying the ABAP support pack i am getting the error. (Ehp1- support pack)
Execution of programs after import (XPRA)
Transport request : SAPKNA7013
System : RIS
tp path : tp
Version and release: 372.04.40 701
Post-import methods for change/transport request: SAPKNA7013
on the application server: mel-srv-sap1
Post-import method ENHS_AFTER_IMPORT started for ENHS L, date and time: 20090820182438
Post-processing for ENHS /SAPCND/CONFIGURATION was already performed successfully earlier
Post-processing for ENHS /SAPCND/GEN_AFTER_IMPORT was already performed successfully earlier
Post-import method ENHS_AFTER_IMPORT completed for ENHS L, date and time: 20090820182438
Post-import method ENHO_AFTER_IMPORT started for ENHO L, date and time: 20090820182438
Post-processing for ENHO PRT_CONFIGURATION_EXIT was already performed successfully earlier
Post-processing for ENHO REF_AFTER_IMPORT_EXT was already performed successfully earlier
Post-processing for ENHO REF_CONFIGURATION_EXIT was already performed successfully earlier
Post-processing for ENHO TTE_CONFIGURATION_EXIT was already performed successfully earlier
Post-import method ENHO_AFTER_IMPORT completed for ENHO L, date and time: 20090820182438
Post-import method /SAPCND/TRN_AFTER_IMPORT_OW started for CTAP L, date and time: 20090820182438
Transport: Execution of method /SAPCND/TRN_AFTER_IMPORT_OW
Mass activation off
Transport: Execution of method /SAPCND/TRN_AFTER_IMPORT_O_OW
End of processing of condition tables for order SAPKNA7013, time 18:24:38
Program terminated (job: RDDEXECL, no.: 18243800)
See job log
Execution of programs after import (XPRA)
End date and time : 20090820182453
Ended with return code: ===> 12 <===
When i click on the job log i get the following details:
Job log overview for job: RDDEXECL / 18245300
Date Time Message text
20.08.2009 18:24:53 Job started
20.08.2009 18:24:53 Step 001 started (program RDDEXECL, variant , user ID DDIC)
20.08.2009 18:24:53 All DB buffers of application server mel-srv-sap1 were synchronized
20.08.2009 18:24:53 ABAP/4 processor: SYNTAX_ERROR
20.08.2009 18:24:53 Job cancelled
Please help me to resolve the issue. Thanks in advance.
Thanks & RegardsHello Folks,
Thank you all for your help. I apologize for the delay. Apparently SAP had a few SAP notes to suggest for my issue and once the notes were implemented, the problem got resolved. Here are the notes for your reference:
1114409
1113718
1059837
1055217
Regards,
Prashant -
Forcing or defaulting program to background
I have a question regarding the possibility to force or default a SAP standard application execution to being a background execution.
It is possible to chose execute in background from the menu in a selection screen (F9) as an altenative to direct processing (F8).
Is it possible to make this the default execution mode without having to do a modification of a SAP standard application?
Thank you in advanceHi,
Just try this.
In this,I want to schedule the program to execute in background dynamically.
I have two programs ztest1 and ztest2.
The user will execute program ztest1 and the user wants that
ztest2 program should be automatically scheduled in the background.
Use job_open, job_close & submit
ZTEST1
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = jobname
IMPORTING
jobcount = jobcount
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
SUBMIT ZTEST2 AND RETURN
USER sy-uname VIA JOB jobname
NUMBER jobcount
with p_zcycle = pzcycle
WITH p_area = wa_record-area.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = jobcount
jobname = jobname
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.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF. -
Failed to Run OLE Excel program in background JOB (SM36)
Please help.
I have write a program to use OLE to create a Excel file.
The program can run successful in front end workstation. However, when I run the program in background job by SM36.
The statement "CREATE OBJECT EXCEL 'EXCEL.APPLICATION'" return with error "SY-SUBRC = 2".
How can I solve it ?
Can OLE Excel be run on background job ?
Thanks so much,
MarkHi Mark:
Your need is a very common one. I also was asked to generate an Excel in Background.
It is not possible to work with OLE in background mode.
The reason is: In background mode there is no presentation server. OLE is executed in presentation server.
Below I paste the code I wrote to solve my problem.
This class sends a mail with an excel attached. The Excel content will be the internal table you pass to the class. But the Excel is not binary, it is a plain text file, separated by tabulators. Anyway, when you open it with Excel, the columns are properly shown.
Sorry. Comments are in spanish, I don't have time to translate it.
I kindly ask to everybody which want to use it to keep my name in the code.
* Autor: Jordi Escoda, 30/10/2008.
* Descripción: Esta clase genera un correo electrónico destinado a
* una persona, adjuntando el contenido de una tabla interna como
* Excel (campos separados por tabuladores).
* La virtud de esta clase es su sencillez de utilización. Para lanzar
* el mail con el excel adjunto basta con declarar la tabla interna,
* llenarla, colocar el asunto del mensaje, el destinatario, el nombre
* del excel adjunto, y pasar la tabla interna.
* Ejemplo de utilización:
* DATA: lc_mail TYPE REF TO cl_mail_builder_xls_attach.
* DATA: lt_anla TYPE STANDARD TABLE OF anla.
* SELECT * INTO TABLE lt_anla FROM anla.
* CREATE OBJECT lc_mail.
* CALL METHOD lc_mail->set_subject( 'Excel adjunto' ).
* CALL METHOD lc_mail->set_recipient( 'XXX@XXXDOTCOM' ).
* CALL METHOD lc_mail->set_attach_filename( 'ANLA' ).
* APPEND 'Cuerpo del mensaje' TO lt_body.
* APPEND 'Saludos cordiales' TO lt_body.
* CALL METHOD lc_mail->set_bodytext( lt_body ).
* CALL METHOD lc_mail->set_attach_table( lt_anla ).
* CALL METHOD lc_mail->send( ).
* CLASS cl_mail_builder_xls_attach DEFINITION
CLASS cl_mail_builder_xls_attach DEFINITION.
PUBLIC SECTION.
METHODS: set_subject
IMPORTING im_subject TYPE so_obj_des,
set_bodytext
IMPORTING im_body TYPE bcsy_text,
set_recipient
IMPORTING im_recipient TYPE ad_smtpadr,
set_attach_table
IMPORTING im_table TYPE ANY TABLE,
set_attach_filename
IMPORTING im_attach_name TYPE sood-objdes,
send.
PRIVATE SECTION.
CONSTANTS:
c_tab TYPE c VALUE cl_bcs_convert=>gc_tab,
c_crlf TYPE c VALUE cl_bcs_convert=>gc_crlf,
c_singlequote TYPE c VALUE '.
DATA: l_recipient_addr TYPE ad_smtpadr.
DATA: send_request TYPE REF TO cl_bcs,
document TYPE REF TO cl_document_bcs,
recipient TYPE REF TO if_recipient_bcs,
bcs_exception TYPE REF TO cx_bcs.
DATA: binary_content TYPE solix_tab,
size TYPE so_obj_len.
DATA: l_string TYPE string,
l_body_text TYPE bcsy_text,
l_subject TYPE so_obj_des,
l_attach_name TYPE sood-objdes.
METHODS: create_binary_content,
get_dataelement_medium_text
IMPORTING im_table_name TYPE tabname
im_field_name TYPE fieldname
EXPORTING ex_medium_text TYPE scrtext_m.
ENDCLASS. "cl_mail_builder_xls_attach DEFINITION
* CLASS cl_mail_builder_xls_attach IMPLEMENTATION
CLASS cl_mail_builder_xls_attach IMPLEMENTATION.
METHOD set_bodytext.
l_body_text[] = im_body[].
ENDMETHOD. "add_bodytext
METHOD set_subject.
l_subject = im_subject.
ENDMETHOD. "add_subject
METHOD set_attach_filename.
l_attach_name = im_attach_name.
ENDMETHOD. "add_subject
METHOD set_recipient.
l_recipient_addr = im_recipient.
ENDMETHOD. "add_subject
METHOD set_attach_table.
* Rellena en un string el contenido de la tabla interna recibida
DATA: ref_to_struct TYPE REF TO cl_abap_structdescr.
DATA: my_like TYPE fieldname,
nombretabla TYPE tabname,
nombrecampo TYPE fieldname,
texto_mediano TYPE scrtext_m.
DATA: l_idx TYPE i,
l_valorcampo(16) TYPE c,
l_long TYPE i.
FIELD-SYMBOLS: <fs_linea> TYPE ANY,
<fs_campo> TYPE ANY.
FIELD-SYMBOLS: <comp_descr> TYPE abap_compdescr.
CHECK NOT im_table[] IS INITIAL.
* Línea con los nombres de las columnas.
CLEAR l_string.
LOOP AT im_table ASSIGNING <fs_linea>.
* Toma los atributos del componente
ref_to_struct =
cl_abap_structdescr=>describe_by_data( <fs_linea> ).
LOOP AT ref_to_struct->components ASSIGNING <comp_descr>.
ASSIGN COMPONENT <comp_descr>-name
OF STRUCTURE <fs_linea> TO <fs_campo>.
* Obtenemos el origen de donde proviene (like). Ej:BKPF-BUDAT
DESCRIBE FIELD <fs_campo> HELP-ID my_like.
SPLIT my_like AT '-' INTO nombretabla nombrecampo.
CALL METHOD get_dataelement_medium_text
EXPORTING
im_table_name = nombretabla
im_field_name = nombrecampo
IMPORTING
ex_medium_text = texto_mediano.
IF texto_mediano IS INITIAL.
CONCATENATE l_string <comp_descr>-name INTO l_string.
ELSE.
CONCATENATE l_string texto_mediano INTO l_string.
ENDIF.
AT LAST.
CONCATENATE l_string c_crlf INTO l_string.
EXIT.
ENDAT.
CONCATENATE l_string c_tab INTO l_string.
ENDLOOP.
EXIT.
ENDLOOP.
* Contenido de la tabla
LOOP AT im_table ASSIGNING <fs_linea>.
* Toma los atributos del componente
ref_to_struct =
cl_abap_structdescr=>describe_by_data( <fs_linea> ).
LOOP AT ref_to_struct->components ASSIGNING <comp_descr>.
* Asignamos el componente ue tratamos, para obtener
* el valor del mismo
ASSIGN COMPONENT <comp_descr>-name OF STRUCTURE <fs_linea>
TO <fs_campo>.
CASE <comp_descr>-type_kind.
WHEN 'P'. "Packed Number
* Convierte a caracter
WRITE <fs_campo> TO l_valorcampo.
CONCATENATE l_string l_valorcampo INTO l_string.
WHEN OTHERS.
l_long = STRLEN( <fs_campo> ).
IF l_long > 11 AND <fs_campo> CO ' 0123456789'.
* El Excel muestra un número tal como 190000000006
* en formato 1,9E+11.
* Para eviarlo, los números de más de 11 dígitos los
* concatenamos con comillas simples.
CONCATENATE l_string c_singlequote
<fs_campo> c_singlequote INTO l_string.
ELSE.
CONCATENATE l_string <fs_campo> INTO l_string.
ENDIF.
ENDCASE.
AT LAST.
* Añade CRLF
CONCATENATE l_string c_crlf INTO l_string.
EXIT.
ENDAT.
* Añade tabulador
CONCATENATE l_string c_tab INTO l_string.
ENDLOOP.
ENDLOOP.
create_binary_content( ).
ENDMETHOD. "set_attach_table
METHOD create_binary_content.
DATA: l_size TYPE so_obj_len.
* convert the text string into UTF-16LE binary data including
* byte-order-mark. Mircosoft Excel prefers these settings
* all this is done by new class cl_bcs_convert (see note 1151257)
TRY.
cl_bcs_convert=>string_to_solix(
EXPORTING
iv_string = l_string
iv_codepage = '4103' "suitable for MS Excel, leave empty
iv_add_bom = 'X' "for other doc types
IMPORTING
et_solix = binary_content
ev_size = size ).
CATCH cx_bcs.
MESSAGE e445(so).
ENDTRY.
ENDMETHOD. "create_binary_content
METHOD send.
DATA: l_sent_to_all TYPE os_boolean.
TRY.
* create persistent send request
send_request = cl_bcs=>create_persistent( ).
* create and set document with attachment
* create document object
document = cl_document_bcs=>create_document(
i_type = 'RAW'
i_text = l_body_text
i_subject = l_subject ).
* add the spread sheet as attachment to document object
document->add_attachment(
i_attachment_type = 'xls'
i_attachment_subject = l_attach_name
i_attachment_size = size
i_att_content_hex = binary_content ).
* add document object to send request
send_request->set_document( document ).
* add recipient (e-mail address)
recipient =
cl_cam_address_bcs=>create_internet_address(
l_recipient_addr ).
* add recipient object to send request
send_request->add_recipient( recipient ).
* send document
l_sent_to_all = send_request->send(
i_with_error_screen = 'X' ).
COMMIT WORK.
IF l_sent_to_all IS INITIAL.
MESSAGE i500(sbcoms) WITH l_recipient_addr.
ELSE.
MESSAGE s022(so).
ENDIF.
CATCH cx_bcs INTO bcs_exception.
MESSAGE i865(so) WITH bcs_exception->error_type.
ENDTRY.
ENDMETHOD. "lcl_mail_xls_attachment
METHOD get_dataelement_medium_text.
DATA: lt_fld_info TYPE STANDARD TABLE OF dfies,
wa_fld_info TYPE dfies.
* Busca en el diccionario los datos del campo
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = im_table_name
fieldname = im_field_name
langu = sy-langu
TABLES
dfies_tab = lt_fld_info
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
CLEAR ex_medium_text.
IF sy-subrc = 0.
READ TABLE lt_fld_info INDEX 1 INTO wa_fld_info.
* Si lo ha podido tomar del diccionario...
IF NOT wa_fld_info-scrtext_m IS INITIAL.
* Toma el nombre del nombre de campo del diccionario
ex_medium_text = wa_fld_info-scrtext_m.
ENDIF.
ENDIF.
ENDMETHOD. "get_dataelement_medium_text
ENDCLASS. "cl_mail_builder_xls_attach IMPLEMENTATION -
To run a program in BACKGROUND using SUBMIT
I need to run a program in background using the SUBMIT option. Here i have to pass an internal table form one program to another which will be used to update sales orders using BDC.
Questions
1} Can we execute a program in background using SUBMIT?
2} I am sending data to a MEMORY ID , if i run the program in background will the memory id work. As in do memory IDs work in the background.
Thanks in Advancerefer same thread.
Re: Problem with SUBMIT in Background -
How to schedule a program in background after 5 or 10 sec
Hi All,
Can anyone tell me how to schedule a program after 5 or 10 sec in background after the transaction is completed.
It is not a custom transaction. I want to execute a Z program in background in a BADI
Regards
Yathish
Message was edited by:
Yathish GundlupetProgramattically? You can add this code to the end of your transaction(if it is custom, of course).
report zrich_0004 .
data: sdate type sy-datum,
stime type sy-uzeit,
l_valid,
ls_params like pri_params,
l_jobcount like tbtcjob-jobcount,
l_jobname like tbtcjob-jobname.
start-of-selection.
* Get Print Parameters
call function 'GET_PRINT_PARAMETERS'
exporting
no_dialog = 'X'
importing
valid = l_valid
out_parameters = ls_params.
* Open Job
l_jobname = 'THIS_JOB'.
call function 'JOB_OPEN'
exporting
jobname = l_jobname
importing
jobcount = l_jobcount.
* Submit report to job
submit <your_program_name
via job l_jobname
number l_jobcount
to sap-spool without spool dynpro
spool parameters ls_params
and return.
* Kick job off 10 seconds from now.
sdate = sy-datum.
stime = sy-uzeit + 10.
* Schedule and close job.
call function 'JOB_CLOSE'
exporting
jobcount = l_jobcount
jobname = l_jobname
sdlstrtdt = sdate
sdlstrttm = stime
Regards,
RIch Heilman
Maybe you are looking for
-
Problems with special characters displaying in PDF when exported.
I have a very frustrating question. I've never had any problems with font and pdfs before switching to the operating system for Mac. Of course, they have Helvetica Neue pre-installed as a system font. The problem is, Bold doesn't work and is not an o
-
I have MAC OS X 10.5.8 laptop. I had Firefox version 3 on and got email to upgrade to version 4. I downloaded it and couldn't get it into applications. Symbol had circle w/ line thru it. Pop up screen said it is not supported on this architecture. I
-
How to create curved line segments in PE v. 4?
Specifically, I want to superimpose curved lines onto a scanned drawing. Thanks in advance.
-
Activation of datatargets in bw 3.5 is taking lot of time
Hi i am using bw 3.5.I have created lot of infocubes , ods etc for practice sake .May be due to this or some other reason , its taking lot of time to get executed . sometimes same screen is appearing for a long time (nearly half an hour)even i m tryi
-
Why is my Macbook pro clock running negative numbers?
My Macbook Pro clock is running negative numbers.