Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Back ground processing

Former Member
0 Likes
1,455

Hello All,

What is the wrong in this code?


  DATA lv_jobname TYPE tbtcjob-jobname.
  DATA lv_count TYPE tbtcjob-jobcount.
  DATA: ls_tbtstrt   LIKE tbtcstrt.    "description startdate/reappl.
  DATA gp_phase LIKE cnvstate-phase VALUE 'C'.
  CONCATENATE sy-repid 'XXXX' INTO lv_jobname.
  CALL FUNCTION 'BP_STDT_EDITOR_AT_DATE_TIME'
    EXPORTING
      stdt_dttm_input               = ls_tbtstrt
      stdt_dttm_editor_opcode       = '14'
*   STDT_DTTM_EDITOR_TITLE        = ' '
   IMPORTING
     stdt_dttm_output              = ls_tbtstrt
*   STDT_DTTM_MODIFIED            =
   EXCEPTIONS
     invalid_opcode                = 1
     OTHERS                        = 2
            .
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
  CALL FUNCTION 'JOB_OPEN'
    EXPORTING
*   DELANFREP              = ' '
*   JOBGROUP               = ' '
      jobname                = lv_jobname
*   SDLSTRTDT              = NO_DATE
*   SDLSTRTTM              = NO_TIME
*   JOBCLASS               =
   IMPORTING
     jobcount               = lv_count
* CHANGING
*   RET                    =
   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.
 
  CALL FUNCTION 'JOB_CLOSE'
       EXPORTING
            jobcount             = lv_count
            jobname              = lv_jobname
            laststrtdt           = ls_tbtstrt-laststrtdt
            laststrttm           = ls_tbtstrt-laststrttm
            prddays              = ls_tbtstrt-prddays
            prdhours             = ls_tbtstrt-prdhours
            prdmins              = ls_tbtstrt-prdmins
            prdmonths            = ls_tbtstrt-prdmonths
            prdweeks             = ls_tbtstrt-prdweeks
            sdlstrtdt            = ls_tbtstrt-sdlstrtdt
            sdlstrttm            = ls_tbtstrt-sdlstrttm
       EXCEPTIONS
            cant_start_immediate = 1
            invalid_startdate    = 2
            jobname_missing      = 3
            job_close_failed     = 4
            job_nosteps          = 5
            job_notex            = 6
            lock_failed          = 7.

When i execute the above code i am able to see the job is scheduled but it will remain same in the same state as scheduled.

My requirement is it should be released. How can i do this?

Can any modify it the above code or give some suggestions to me?

Regards,

Lisa

Message was edited by:

Lisa Roy

15 REPLIES 15
Read only

RaymondGiuseppi
Active Contributor
0 Likes
1,419

Hi,

If you want to specify date/time of execution, look at this sample <a href="http://help.sap.com/saphelp_40b/helpdata/en/fa/096d8e543b11d1898e0000e8322d00/content.htm">Sample Program: Start-Time Window with JOB_CLOSE</a>

If you want immediate execution look at this sample <a href="http://help.sap.com/saphelp_sm32/helpdata/en/fa/096d74543b11d1898e0000e8322d00/content.htm">Sample Program: Immediate Start with JOB_CLOSE</a>

Regards

Read only

0 Likes
1,418

Hello Raymond,

Do you have any idea why my job is not active?

Regards,

Lisa

Read only

0 Likes
1,418

Look (debug) at your JOB_CLOSE parameters,

- Date/time in the past or initial ?

- Value of sy-subrc after call of function ?

Remember fill start date/time or flag as immediate :

- SDLSTRTDT = ls_tbtstrt-SDLSTRTDT

SDLSTRTTM = ls_tbtstrt-SDLSTRTTM

or

- STRTIMMED = 'X'

Regards

Read only

0 Likes
1,418

Hello Raymond,

I have changed my program like this. Even it didn't work.


  CALL FUNCTION 'JOB_OPEN'
    EXPORTING
*   DELANFREP              = ' '
*   JOBGROUP               = ' '
      jobname                = lv_jobname
*   SDLSTRTDT              = NO_DATE
*   SDLSTRTTM              = NO_TIME
*   JOBCLASS               =
   IMPORTING
     jobcount               = lv_count
* CHANGING
*   RET                    =
   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 (sy-repid)
*          VIA JOB lv_jobname
*          NUMBER lv_count
*          WITH gp_phase = gp_phase
*          AND RETURN.

*  IF sy-subrc = 0.
*    MESSAGE ID 'CNV' TYPE 'I' NUMBER 804
*                        WITH sy-repid lv_jobname.
*  ENDIF.

  CALL FUNCTION 'JOB_CLOSE'
    EXPORTING
*   AT_OPMODE                         = ' '
*   AT_OPMODE_PERIODIC                = ' '
*   CALENDAR_ID                       = ' '
*   EVENT_ID                          = ' '
*   EVENT_PARAM                       = ' '
*   EVENT_PERIODIC                    = ' '
      jobcount                          = lv_count
      jobname                           = lv_jobname
*   LASTSTRTDT                        = NO_DATE
*   LASTSTRTTM                        = NO_TIME
*   PRDDAYS                           = 0
*   PRDHOURS                          = 0
*   PRDMINS                           = 0
*   PRDMONTHS                         = 0
*   PRDWEEKS                          = 0
*   PREDJOB_CHECKSTAT                 = ' '
*   PRED_JOBCOUNT                     = ' '
*   PRED_JOBNAME                      = ' '
*   SDLSTRTDT                         = NO_DATE
*   SDLSTRTTM                         = NO_TIME
*   STARTDATE_RESTRICTION             = BTC_PROCESS_ALWAYS
     strtimmed                         = 'X'
*   TARGETSYSTEM                      = ' '
*   START_ON_WORKDAY_NOT_BEFORE       = SY-DATUM
*   START_ON_WORKDAY_NR               = 0
*   WORKDAY_COUNT_DIRECTION           = 0
*   RECIPIENT_OBJ                     =
*   TARGETSERVER                      = ' '
*   DONT_RELEASE                      = ' '
*   DIRECT_START                      =
   IMPORTING
     job_was_released                  = lv_job_released
* CHANGING
*   RET                               =
   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.

Regards,

Lisa

Read only

0 Likes
1,418

Value of sy-subrc ?

Regards

Read only

Former Member
0 Likes
1,418

http://help.sap.com/saphelp_nw70/helpdata/en/fa/096ef2543b11d1898e0000e8322d00/frameset.htm

Please visit the above link:

The user should have the corresponding permission profile for the Background job releasing...Please assign the SAP_ALL permission profile for your user....

Read only

0 Likes
1,418

Hello Ramkumar,

Do you have any idea why my job is not active?

Regards,

Lisa

Read only

0 Likes
1,418

Hello Ramkumar,

I have authorization for SAP_ALL.

Regards,

Lisa

Read only

Former Member
0 Likes
1,418

HI Lisa,

Submit the job by using JOB_SUBMIT.

Regards,

Hk

Read only

Former Member
0 Likes
1,418

Hi

As user can "lauch" the job in foreground or background, use something like

  • screen fields

TABLES sscrfields.

  • check box

PARAMETER checkbox AS CHECKBOX.

  • if run and checkbox, force batch

AT SELECTION-SCREEN.

IF sscrfields-ucomm EQ 'ONLI' AND checkbox = 'X'.

sscrfields-ucomm = 'SJOB'.

ENDIF.

Here is the sample program

*Submit report as job(i.e. in background)

data: jobname like tbtcjob-jobname value

' TRANSFER TRANSLATION'.

data: jobcount like tbtcjob-jobcount,

host like msxxlist-host.

data: begin of starttime.

include structure tbtcstrt.

data: end of starttime.

data: starttimeimmediate like btch0000-char1.

  • Job open

call function 'JOB_OPEN'

exporting

delanfrep = ' '

jobgroup = ' '

jobname = jobname

sdlstrtdt = sy-datum

sdlstrttm = sy-uzeit

importing

jobcount = jobcount

exceptions

cant_create_job = 01

invalid_job_data = 02

jobname_missing = 03.

if sy-subrc ne 0.

"error processing

endif.

  • Insert process into job

SUBMIT zreport and return

with p_param1 = 'value'

with p_param2 = 'value'

user sy-uname

via job jobname

number jobcount.

if sy-subrc > 0.

"error processing

endif.

  • Close job

starttime-sdlstrtdt = sy-datum + 1.

starttime-sdlstrttm = '220000'.

call function 'JOB_CLOSE'

exporting

event_id = starttime-eventid

event_param = starttime-eventparm

event_periodic = starttime-periodic

jobcount = jobcount

jobname = jobname

laststrtdt = starttime-laststrtdt

laststrttm = starttime-laststrttm

prddays = 1

prdhours = 0

prdmins = 0

prdmonths = 0

prdweeks = 0

sdlstrtdt = starttime-sdlstrtdt

sdlstrttm = starttime-sdlstrttm

strtimmed = starttimeimmediate

targetsystem = host

exceptions

cant_start_immediate = 01

invalid_startdate = 02

jobname_missing = 03

job_close_failed = 04

job_nosteps = 05

job_notex = 06

lock_failed = 07

others = 99.

if sy-subrc eq 0.

"error processing

endif.

Read only

0 Likes
1,418

Hello Naresh,


SUBMIT zreport and return 
with p_param1 = 'value'
with p_param2 = 'value'
user sy-uname
via job jobname
number jobcount.
if sy-subrc > 0.
"error processing
endif.

Could you please explain me what the field Value contains in the above submit statement.

Do you have any liknk how to write the submit statement?

Regards,

Lisa

Read only

RaymondGiuseppi
Active Contributor
0 Likes
1,418

There seems to be TWO problems with your code

- No step specified : Use correct syntax of submit in a background job

    SUBMIT report
      WITH parameter EQ value
      VIA JOB jobname NUMBER jobcount
      AND RETURN. " <- add this 

- No first execution

  CALL FUNCTION 'JOB_CLOSE'
       EXPORTING
            jobcount             = lv_count
            jobname              = lv_jobname
            SDLSTRTDT = ls_tbtstrt-SDLSTRTDT " <- add this
            SDLSTRTTM = ls_tbtstrt-SDLSTRTTM " <- add this
            laststrtdt           = ls_tbtstrt-laststrtdt
            laststrttm           = ls_tbtstrt-laststrttm
            prddays              = ls_tbtstrt-prddays
            prdhours             = ls_tbtstrt-prdhours
            prdmins              = ls_tbtstrt-prdmins
            prdmonths            = ls_tbtstrt-prdmonths
            prdweeks             = ls_tbtstrt-prdweeks

Regards

Read only

0 Likes
1,418

Hello Raymond,

Could you please explain me what will be the value for field 'value' in the submit statement and what values these two fields consists

ls_tbtstrt-SDLSTRTDT " <- add this

ls_tbtstrt-SDLSTRTTM

Regards,

Lisa

Read only

0 Likes
1,418

Sample Program: Immediate Start with JOB_CLOSE

  • Submit job for processing: immediate start

CALL FUNCTION 'JOB_CLOSE'

EXPORTING

JOBCOUNT = JOBNUMBER " Job identification: number

JOBNAME = JOBNAME " and name.

STRTIMMED = 'X' " Schedules the job for

" immediate start. The job

" is started immediately

" only if the user has the

" RELE authorization to

" release a job to run.

IMPORTING

JOB_WAS_RELEASED = JOB_RELEASED " If user has authorization

" to release jobs to run, job

" is automatically released

" when it is scheduled. This

" field is set to 'x' if the

" job has been released.

" Otherwise, the job is sche-

" duled but must be released

" by an administrator before

" it can be started.

EXCEPTIONS

  • CANT_START_IMMEDIATE No longer used. Replaced by IMPORTING

  • parameter JOB_WAS_RELEASED.

INVALID_STARTDATE = 01

JOBNAME_MISSING = 02

JOB_CLOSE_FAILED = 03

JOB_NOSTEPS = 04

JOB_NOTEX = 05

LOCK_FAILED = 06

OTHERS = 99.

IF SY-SUBRC > 0.

<Error processing>

Read only

0 Likes
1,418

These are just example, adapt to your code

Regards