Assigning Jobclass to Background Jobs
Dear BW Gurus,
Regards.We got an situation : We schedule an Infopackage as Background Job (JOB A),with default Jobclass-> C.Hence the background job runs with Jobclass>C in the Source system(SAP R/3) aswell.Now when the Endusers run programs in the Background(Source system(SAP R/3 ) (JOB B),they assign Jobclass-->A(High Priority),Hence the sytem allocates the Workprocess id (assigned to our JOB A) to the Background Job(JOB B) with High priority,and finally our Background job is still "ACTIVE",but without no WorkProcess id assigned to it !!!(For more than 30 hours!!!).This has happened earlier aswell and it would be really helpful if some one could throw light on this issue.Should we
1) Leave the Job undisturbed (would the system allocate anyother WP to the job??)
2) Kill the Background job ??
Thanks
Shiv
Dear BW Gurus,
Regards.We got an situation : We schedule an Infopackage as Background Job (JOB A),with default Jobclass-> C.Hence the background job runs with Jobclass>C in the Source system(SAP R/3) aswell.Now when the Endusers run programs in the Background(Source system(SAP R/3 ) (JOB B),they assign Jobclass-->A(High Priority),Hence the sytem allocates the Workprocess id (assigned to our JOB A) to the Background Job(JOB B) with High priority,and finally our Background job is still "ACTIVE",but without no WorkProcess id assigned to it !!!(For more than 30 hours!!!).This has happened earlier aswell and it would be really helpful if some one could throw light on this issue.Should we
1) Leave the Job undisturbed (would the system allocate anyother WP to the job??)
2) Kill the Background job ??
Thanks
Shiv
Similar Messages
-
Assign Server to Background Job
Hi all,
I need a help in Background Job,
we got two servers i need to assigning one of the server to my background job running through report using 1)JOB_OPEN 2) Submit Report and 3) JOB_CLOSE.
Thank you all in Advance,
Jagan.You can do this easily via SM36 by filling the Exec. Target while creating the Job.. But if you would like to set the SERVER name vai your Program.... try this
after the function call JOB_OPEN & before the SUBMIT statement, update the field EXECSERVER of the TBTCS dbTable with the server name. ( SInce it is your own Job & all you are doing is trying to force it to a server, a direct db UPDATE should not be an issue)
~Suresh -
Is there any FM to generate spool request for error log of a background job
Hi,
I am going to create a program to create deliveries and do PGI. This program will be assigned to periodic background job.Now whatever errors are generated in program i have to send the error log to spool request.Is there any FM for generating spool request with this error log or how can this be done? Kindly provide sample code if possible.
Thanks.
Nimish Dongare.Hi Nimish,
How are you doing, This is Shreekant working as ABAP developer, I sow your post in sdn forum, I have a similar requirement like I am changing the delivery taking some data from a flat file which is coming from other system and do PGI. If any error occurs during this process I need to capture it and present it as a report or create log file.. whichever is easier.
Please can u help me how did u achieved this functionality for your requirement?.. pls. can u share some details.
If u don mind, can u give me ur email id to communicate.
Thanks,
Shreekant -
Background job monitoring - alert from second failure
Hi All,
There is a need for configure monitoring for background jobs.
I have been enabled background job monitoring via SE16 and background job is visible in RZ20.
The problem is that we want to have a critical alert from second failure of certain job, not from first failure.
Seems that I need to create a new method and assigne it to background job in RZ20?
Is there a documentation how to create own method? or is there a another way to implement this monitor?
Best Regards,
Jani MäkiHi,
Do you want to monitor second failure on a day?
Do you know the schedule of second job run?
If yes to these questions, you can try to monitor using BPM in solution manager.
Feel Free to revert back.
-=-Ragu -
Background Job Hanged but no work process assigned
Hi,
Background job has hanged When i see in SM37. But no work process assigned to this job. All work process are waiting status.
What could be the reason. What is the resolution process.
Thanks,
DayakarHow did you come to a conclusion that the bg job is hangend.
What is the status of the job. ? I guess Job defined, but not yet eligible to run even if the start condition has been fulfilled so it should be in Scheduled status. -
How to create a background job in CE and assign a Web Service to it?
Hi,
We have a specific requirement here.
We have an application service which perform some updates based on timestamp etc, it will be exposed as a Web Service.
The requirement here is that a background job should invoke this Web Service everyday at Midnight.
But here I don't know how to implement this functionality in SAP CE 7.1.
Please reply ASAP.
Regards,
ManishHi Manish,
Job Scheduler is available as part of the app server,
Create a class and extend MDBJobImplementation override the method onJob in this method trigger your webservice.
for more details please go through this document
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/10fed553-0e01-0010-9bb8-ed55659e1236
https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/90a95132-8785-2b10-bda5-90d82a76431e
Regards
Ayyapparaj -
Performance issues-assigning background jobs to a designated server
Hello all, we have been having peformance issues in our production enviorment and were entertaining the idea of running all our our background jobs on a separate/designated server. Has anyone had any experience with this and if so any insight on how you did this would be appreciated? Thanks.
I suppose your performance issues are then for the online users? In general, the best option should be to distribute the workload as much as possible, to avoid performance problems for online users as well as background jobs.
I agree with Atish, this is something for Basis people. Ask them (hopefully that's not you to look at their application server settings. I know where I used to work before they had set up the system so only a certain part of the dialog processes could be occupied by background jobs. I am sure SAP has a lot of parameters that can be tweaked, possibly also with time-dependent settings? -
Error while scheduling Background Job for User/Role Full Synchronization
Hi all,
We have installed RAR 5.3 Component and uploaded the authorization data & established the connectors to the backend system.
We have performed all the post installation activities and everything is complete.
When we have scheduled User -Full Synchronization with the Back End system as a part of Post Installation Activity we are receiving the below error message
"Error while executing the Job:Cannot assign an empty string to host variable 2."
Also the VIEW LOG/ Terminate Job buttons are disabled in this screen.
Can somebody please help us in resolving the above issue
Thanks and Best Regards,
Srihari.KHi,
We are copy pasting the error log (Part as it is huge) below here. We could able to do Full Synch for Roles and also for Profiles. Only for User Synch we are getting this error and none of the users are sychronized to RAR
Jan 13, 2009 12:34:27 AM com.virsa.cscext.dao.CSCDAO populateGenObjUser
INFO: Update user WILSONA of HL2-QAHR
Jan 13, 2009 12:34:27 AM com.virsa.cscext.dao.CSCDAO populateGenObjUser
INFO: Update user WINDC of HL2-QAHR
Jan 13, 2009 12:34:27 AM com.virsa.cscext.dao.CSCDAO populateGenObjUser
INFO: Update user WLADICHJ of HL2-QAHR
Jan 13, 2009 12:34:27 AM com.virsa.cscext.dao.CSCDAO populateGenObjUser
INFO: Update user WUK of HL2-QAHR
Jan 13, 2009 12:34:27 AM com.virsa.cscext.dao.CSCDAO populateGenObjUser
INFO: Update user ZENGS of HL2-QAHR
Jan 13, 2009 12:34:27 AM com.virsa.cscext.dao.CSCDAO populateGenObjUser
INFO: Update user ZHENGL of HL2-QAHR
Jan 13, 2009 12:34:27 AM com.virsa.cscext.dao.CSCDAO populateGenObjUser
INFO: All System Flag:false=====Last Batch Flag:true
Jan 13, 2009 12:34:27 AM com.virsa.cc.xsys.bg.BatchRiskAnalysis loadUserData
INFO: @@@ User sync completed for params true: Syskey List is [HL2-QAHR]
Jan 13, 2009 12:34:27 AM com.virsa.cc.xsys.bg.BgJob run
WARNING: *** Job Exception: Cannot assign an empty string to host variable 2.
com.sap.sql.log.OpenSQLException: Cannot assign an empty string to host variable 2.
at com.sap.sql.log.Syslog.createAndLogOpenSQLException(Syslog.java:85)
at com.sap.sql.log.Syslog.createAndLogOpenSQLException(Syslog.java:124)
at com.sap.sql.types.VarcharResultColumn.setString(VarcharResultColumn.java:57)
at com.sap.sql.jdbc.common.CommonPreparedStatement.setString(CommonPreparedStatement.java:511)
at com.sap.engine.services.dbpool.wrappers.PreparedStatementWrapper.setString(PreparedStatementWrapper.java:355)
at com.virsa.cscext.dao.CSCDAO.updateIgnoredUserData(CSCDAO.java:1388)
at com.virsa.cscext.dao.CSCDAO.populateGenObjUser(CSCDAO.java:1169)
at com.virsa.cc.xsys.bg.BatchRiskAnalysis.populateGenObj(BatchRiskAnalysis.java:868)
at com.virsa.cc.xsys.bg.BatchRiskAnalysis.insertBAPIUserData(BatchRiskAnalysis.java:142)
at com.virsa.cc.xsys.bg.BatchRiskAnalysis.loadUserData(BatchRiskAnalysis.java:390)
at com.virsa.cc.xsys.bg.BatchRiskAnalysis.performBatchSyncAndAnalysis(BatchRiskAnalysis.java:1275)
at com.virsa.cc.xsys.bg.BgJob.runJob(BgJob.java:402)
at com.virsa.cc.xsys.bg.BgJob.run(BgJob.java:264)
at com.virsa.cc.xsys.riskanalysis.AnalysisDaemonBgJob.scheduleJob(AnalysisDaemonBgJob.java:240)
at com.virsa.cc.xsys.riskanalysis.AnalysisDaemonBgJob.start(AnalysisDaemonBgJob.java:80)
at com.virsa.cc.comp.BgJobInvokerView.wdDoModifyView(BgJobInvokerView.java:436)
at com.virsa.cc.comp.wdp.InternalBgJobInvokerView.wdDoModifyView(InternalBgJobInvokerView.java:1225)
at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.doModifyView(DelegatingView.java:78)
at com.sap.tc.webdynpro.progmodel.view.View.modifyView(View.java:337)
at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.doModifyView(ClientComponent.java:481)
at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doModifyView(WindowPhaseModel.java:551)
at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:148)
at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:335)
at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:319)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:713)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:666)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:250)
at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:149)
at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)
at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doGet(DispatcherServlet.java:46)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:386)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:364)
at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:1039)
at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:265)
at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:175)
at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(Native Method)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:102)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:172)
Jan 13, 2009 12:34:27 AM com.virsa.cc.xsys.bg.BgJob setStatus
INFO: Job ID: 13 Status: Error
Jan 13, 2009 12:34:27 AM com.virsa.cc.xsys.bg.BgJob updateJobHistory
FINEST: --- @@@@@@@@@@@ Updating the Job History -
2@@Msg is Error while executing the Job:Cannot assign an empty string to host variable 2.
Jan 13, 2009 12:34:27 AM com.virsa.cc.xsys.bg.dao.BgJobHistoryDAO insert
INFO: -
Background Job History: job id=13, status=2, message=Error while executing the Job:Cannot assign an empty string to host variable 2.
Jan 13, 2009 12:34:27 AM com.virsa.cc.xsys.riskanalysis.AnalysisDaemonBgJob scheduleJob
INFO: -
Complted Job =>13----
Please let us know how to resolve this error
Thanks and Best Regards,
Srihari.K -
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 -
Schedule a Background Job to Available Free Application servers
Hi,
There is a requirement to develop a Wrapper program,which needs to schedule Background jobs by checking all the available free application servers and assigning it to them.
For Eg: If there are 5 application servers in LIVE system,Then this program needs to find free application server's which will submit the job to that particular free server
Appreciate Your Inputs!!
Thanks
RakeshLook at some documentation like [Scheduling Background Jobs |http://help.sap.com/erp2005_ehp_04/helpdata/EN/c4/3a7f87505211d189550000e829fbbd/frameset.htm] (look for "system load balancing")
Regards -
Hi,
I am scheduling a report to run in background.
In this report it is creating background jobs automatically for different company codes.
It submits the 1st background job and waits until it finishes.
Then 2nd job starts in background and continues with other jobs.
At end it finishes all the jobs and closes.
Now my problem is.
1. Whether is it possible for us to submit all the jobs at 1 time. And execute at same time. Ie., 1st, 2nd job will start at same time.
2. If possible how can we do that.
What I have written is
loop at companycode.
Create job name.
call fun 'Job_Open'.
submit xxxx user sy-uname via job job_name numer job_count
to sap-spool
spool parameters l_spool_parameter
without spool dynpro
with companycode
with ......
and return.
endloop.
Please help ASAP, urgent.hi praveen,
Job Scheduling Explained
Definition
Before any background processing can actually begin, background jobs must be defined and scheduled. The scheduled time for when a job runs is one part of the jobs definition. There are several ways to schedule jobs:
From Transaction SM36 (Define Background Job)
With the "start program in the background" option of either Transaction SA38 (ABAP: Execute Program) or Transaction SE38 (the ABAP editor)
Through the background processing systems own programming interface. (Many SAP applications use the internal programming interface to schedule long-running reports for background processing.)
Through an external interface.
Scheduling Background Jobs
Use
You can define and schedule background jobs in two ways from the Job Overview:
· Directly from Transaction SM36. This is best for users already familiar with background job scheduling.
· The Job Scheduling Wizard. This is best for users unfamiliar with SAP background job scheduling. To use the Job Wizard, start from Transaction SM36, and either select Goto ® Wizard version or simply use the Job Wizard button.
Procedure
1. Call Transaction SM36 or choose CCMS ® Jobs ® Definition.
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 jobs priority, or Job Class:
· High priority: Class A
· Medium priority: Class B
· Low priority: Class C
4. In the Target 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 list recipient 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 jobs 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.
Note: Release the job so that it can run. No job, even those scheduled for immediate processing, can run without first being released.
Specifying Job Start Conditions
Use
When scheduling a background job (either from Transaction SM36, Define Background Job or CCMS ® Jobs ® Definition), you must specify conditions that will trigger the job to start.
Procedure
Choose the Start condition button at the top of the Define Background Job screen.
Choose the button at the top of the Start Time screen for the type of start condition you want to use (Immediate, Date/Time, After job, After event, or At operation mode) and complete the start time definition in the screen that appears.
For the job to repeat, check the Periodic job box at the bottom of the Start Time screen and choose the Period values button below it to define the frequency of repetition (hourly, daily, weekly, monthly, or another specific time-related period). Then choose the Save button in the Period values screen to accept the periodicity and return to the Start Time screen.
Once youve completed specifying the job start conditions, choose the Save button at the bottom of the Start Time screen to return to the Define Background Job screen.
No job can be started until it is released, including jobs scheduled to start immediately. Since releasing jobs can be done only by a system administrator from the job management screen (Transaction SM37) or by other users who have been granted the appropriate Authorizations for Background Processing, no unauthorized user can start a job without explicit permission
Managing Jobs from the Job Overview
Use
The Job Overview, or Job Maintenance, screen is the single, central area for completing a wide range of tasks related to monitoring and managing jobs, including defining jobs; scheduling, rescheduling, and copying existing jobs; rescheduling and editing jobs and job steps; repeating a job; debugging an active job; reviewing information about a job; canceling a job's release status; canceling and deleting jobs; comparing the specifications of several jobs; checking the status of jobs; reviewing job logs; and releasing a job so it can run.
Procedures
To display the Job Overview screen, choose CCMS ® Jobs ® Maintenance or call Transaction SM37. Before entering the Job Overview screen, the system first displays the Select Background Jobs screen. You'll need to complete this Job Selection screen to define the criteria for the jobs you want to manage. Once you've selected jobs to manage, you can choose from a wide range of management tasks:
To copy a single existing job, choose Job ® Copy.
To reschedule or edit job steps or attributes of a single job, choose Job ® Change. A job step is an independent unit of work within a background job. Each job step can execute an ABAP or external program. Other variants or authorizations may be used for each job step. The system allows you to display ABAP programs and variants. You can scan a program for syntax errors. You can also display the authorizations for an authorized user of an ABAP job step.
To repeat a single job, choose Job ® Repeat scheduling.
To debug an active job, choose Job ® Capture: active job. Only a single selection is allowed. If an active job seems to be running incorrectly (e.g., running for an excessively long time), you can interrupt and analyze it in debugging mode in a background process, and then either release it again or stop it altogether.
You will be able to capture a background job only if you are logged on to the SAP server on which the job is running. To find server information in the Job Overview, select and mark the job, then choose Job ® Job details.
To review information about a job, choose Job ® Job details. Details displayed can include:
current job status
periodicity, or the repetition interval
other jobs linked to the current job, either as previous or subsequent jobs
defined job steps
spool requests generated by the current job
To cancel a job's "Released" status, select the job or jobs from the Job Overview list and choose Job ® Release -> Scheduled.
To cancel a job from running but keep the job definition available, select the job or jobs from the Job Overview list and choose Job ® Cancel active job.
To delete a job entirely, select the job or jobs from the Job Overview list and choose Job ® Delete. Jobs with the status of Ready or Running cannot be deleted.
To compare the specifications of more than one job, select the jobs from the Job Overview list and choose Job ® Compare jobs.
To check the status of jobs, select the job or jobs from the Overview Job list and choose Job ® Check status. This allows you to either change the job status back to Planned or cancel the job altogether. This is especially useful when a job has malfunctioned.
To review job logs, select a job or jobs with the status Completed or Canceled from the Job Overview list and
regards
karthik
reward me points if helpfull -
Class (Priority) change in the background job
Hi,
We have a program which will pick up the file from application server and will submit to one more background job by using JOB_SUBMIT. Whenever the automatic background job has submitted from another program, by default it will take the class (priority) as 'C'. Is there any way to change the priority level from C to A throuhg JOB_SUBMIT i.e changing to higher level.
Please let me know.
regards,
Chandra
null(1) Keep in memory that class "A" job must be reserved for system
(2) Nevertheless
The class is hard-coded in JOB_OPEN:
* Jobklasse setzen / NEWFLAG auf 'O'(Open) setzen
* (der Workflow-Job 'SWWDHEX_' bekommt immer Jobklasse A).
* Weiterhin bekommt ein spezieller Einplaner immer Jobklasse A
* wg. der Archivierung auf Datenbankhosts (->F.Hoffmann).
IF ( JOBNAME EQ 'SWWDHEX' ) OR ( CALLING_ABAP EQ CENTRAL_ADK_ABAP ).
GLOBAL_JOB-JOBCLASS = BTC_JOBCLASS_A.
ELSE.
GLOBAL_JOB-JOBCLASS = BTC_JOBCLASS_C.
ENDIF.
You may look at function modules BAPI_XBP_JOB_OPEN, BAPI_XBP_JOB_ADD_ABAP_STEP and BAPI_XBP_JOB_CLOSE.
(documentation at <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/edab9790-0201-0010-479a-98fcc7ebc7bd">External Interface for Background</a>)
Regards -
Page-break in alv background job for alv output variant not coming correctl
Hi,
I have created an ALV grid report. When i run the report in background i get the output with correct page-break on FIELD1. Now when i run the report in background with an "ALV output variant" (its the ALV variant that controls the fields display in the output; this is not the program variant), i do not get the page-break on FIELD1. I have already build the sort criteria and using:
gs_sort-group = '* '. "New-Page
Please let me know what could be reason for not getting the page-break in background when i am using the alv output variant and how do i correct this problem.
Regards,
RakeshHello Everyone,
I have solved the problem. While running the program in background, we get the page-breaks when we use the below part of code in the sort catalogue with the condition that the program variant should not use any ALV layout variant.
gs_sort-group = '* '. "New-Page
If you are using the ALV layout variant in the program variant then we can check the ROWPOS, COLPOS, and NO_OUT for that ALV layout variant and pass them along in the fieldcatalog table. You should be careful with not to pass the layout variant in the DISVARIANT. You can notice that i have cleared it and simply passing the program name into that.
*C-- Process separately for jobs running in Background. Actually
*C-- sortcat-group solves the problem only in Foreground. In background
*C-- when ALV layout variant is not selected then it works otherwise it
*C-- fails. So for background jobs we are reading the fieldcat and then
*C-- passing the same in the display FM.
IF sy-batch = 'X'.
CALL FUNCTION 'REUSE_ALV_VARIANT_SELECT'
EXPORTING
i_dialog = ' '
i_user_specific = ' '
i_default = ' '
* I_TABNAME_HEADER =
* I_TABNAME_ITEM =
it_default_fieldcat = gt_fieldcat
i_layout = gs_layout
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
IMPORTING
* E_EXIT =
et_fieldcat = lt_fieldcat
* et_sort = gt_sort[]
* ET_FILTER =
* es_layout = gs_layout
CHANGING
cs_variant = gs_disvariant
EXCEPTIONS
wrong_input = 1
fc_not_complete = 2
not_found = 3
program_error = 4
OTHERS = 5
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CLEAR gs_fieldcat.
LOOP AT gt_fieldcat INTO gs_fieldcat.
*C-- Transfer all position changes to gt_fieldcat from lt_fieldcat
CLEAR ls_fieldcat.
READ TABLE lt_fieldcat
INTO ls_fieldcat
WITH KEY fieldname = gs_fieldcat-fieldname.
IF sy-subrc = 0.
gs_fieldcat-row_pos = ls_fieldcat-row_pos.
gs_fieldcat-col_pos = ls_fieldcat-col_pos.
gs_fieldcat-no_out = ls_fieldcat-no_out.
MODIFY gt_fieldcat FROM gs_fieldcat INDEX sy-tabix.
CLEAR gs_fieldcat.
ENDIF.
ENDLOOP.
*C-- Clear the disvariant for the background job as it contains the ALV
*C-- layout varinat
CLEAR gs_disvariant.
gs_disvariant-report = 'ZGPPMP0001'.
Then pass gt_fieldcat to 'REUSE_ALV_GRID_DISPLAY'.
The reason i'm doing it this way is that when we pass the layout variant name, the contents in gt_fieldcat were getting modified.
One more thing i'd like to point out is that that, i tried to delete the fields with no_out = 'x'. Now when i ran the program in background with all the fields in sort catalog (suppose there are 2 fields field1 and field2) also in fieldcatalog it ran fine. In the next run in background i removed one of the fields in sort catalog from the fieldcatalog (delete the fields with no_out = 'x') and i got dump. Basically i had hidden field1 and so the code which was deleting fields with no_out = 'x' deleted this field from gt_fieldcat. So basically we should not delete fields with no_out = 'x'.
I was getting ABAP runtime errors MESSAGE_TYPE_X in the following part of the standard code.
000310 LOOP AT CT_SORT INTO LS_SORT.
000320
000330 READ TABLE IT_FIELDCAT ASSIGNING <LS_FIELDCAT>
000340 WITH KEY FIELDNAME = LS_SORT-FIELDNAME BINARY SEARCH.
000350 IF SY-SUBRC NE 0.
> MESSAGE X000(0K).
000370 ENDIF.
000380
000390 LS_SORT-SELTEXT = <LS_FIELDCAT>-SELTEXT.
i have just mentioned this part because when i checked the forum many people were getting such errors "MESSAGE_TYPE_X". This could also be one of the reasons. -
Error in Schedule Background Job for Deadline Monitoring of swu3
While Auto Customization swu3 i am getting error message 'Output device "" not known' in 'Schedule Background Job for Deadline Monitoring'
Please advice what could be cause of itthe earlier problem of background job was solved by changing the output device assigned to user wf-batch .
regarding the transport request :
when i was trying to execute the step : "Schedule bakgrd for missed deadlines " MANUEL it was giving me an option of SAVE AND SCHEDULE . which was creating the transport request . but when i executed it automatically it worked fine without asking a request to me ... i don't know why )-: ... probablly we can specify a different interval then the standard of three minutes and which will be transported (it's just a guess) . i have executed it automatically ...
well thanks all for u r help -
Error in triggering background job
HI, I've been facing an error which a background job is being scheduled. The scenario is something like this ...
1) A third party schedulling system triggers a SAP job and monitors the progress
2) In SAP, the master job is been copied with a different user name and then released for processing.
3) There are multiple jobs which get triggered but there is one job which is causing a problem.
4) The job makes a copy an stays in a scheduled status without getting released. While i try to manually release the job it give me an error that cannot create record in the database.
5) Upon checking the system log it gives me this - Error: INSERT background sched. table(job $$$$).
There is already an entry for the specified job in the table TBTCS.
6) While checking the TBTCS table i've found multiple entries out there. Should this table be empty or have information about the runtime of this job.
Please help as this background job is causing concerns in archiving processess defined.
Thankx in advance for your help.
Arvind.the earlier problem of background job was solved by changing the output device assigned to user wf-batch .
regarding the transport request :
when i was trying to execute the step : "Schedule bakgrd for missed deadlines " MANUEL it was giving me an option of SAVE AND SCHEDULE . which was creating the transport request . but when i executed it automatically it worked fine without asking a request to me ... i don't know why )-: ... probablly we can specify a different interval then the standard of three minutes and which will be transported (it's just a guess) . i have executed it automatically ...
well thanks all for u r help
Maybe you are looking for
-
Can i share music from one iphone to another iphone
can i share files or music from one iphone to another iphone?
-
i get this error everytime i try to run setup on a particular app. could not load the dll library c:\documents and settings\owner\my documents\palm os desktop\userdata.dll. the specified module could not be found. i did an online chat with a palm re
-
Can't use gift card without the actual card?
I have 65.00 left from a gift card thatI received at Christmas, entered it and threw away since I already put in the code and had a balance but now it wants my card code to be able to redeem the rest of the card. How do I get to use my 65.00 that sho
-
Watching videos from ipod to tv
Good day I hope some one can help me I have been researching what the av cable (the one that has 3.5mm plug to 3 rca plugs)works on and so far I found that it works on certain ibooks and the ipod video(5.5g video) I would like to know if there any ot
-
Is photoshop cc 14.0 X64 compatible with the new mavericks software
is photoshop cc 14.0 X64 compatible with the new mavericks software??