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

Program to create and process a batch input session

Former Member
0 Likes
1,573

Hi Guys,

I would like to write a program that create and process a batch input session. A message should be given out if the job didnt work (errors during the process).

Can you explain me what happen during each steps.

In example:

CALL FUNCTION  'JOB_SUBMIT'

EXPORTING

         ...

         jobname = 'JOBNAME'

         report = 'RFBIBL00'

EXCEPTIONS

          .....

if sy-subrc <> 0

    ... Error message : job   JOBNAME  has error during the process

CALL FUNCTION  'JOB_CLOSE'  

EXPORTING

      ....

IMPORTING

......

A simple working example with explanation will be great.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
988

Hello,

JOB_OPEN->For opening a job in the background

JOB_SUBMIT->For submitting the job

JOB_CLOSE->For closing the job.

Example program

****************************

REPORT ZMAILSPOOL.

INCLUDE LBTCHDEF.

  • Include the Business Object Repository object

INCLUDE <CNTN01>.  DATA ABAPNM LIKE SY-REPID.  DATA BEGIN OF LOCAL_JOB. INCLUDE STRUCTURE TBTCJOB. DATA END OF LOCAL_JOB.  DATA BEGIN OF LOCAL_STEP_TBL OCCURS 10. INCLUDE STRUCTURE TBTCSTEP. DATA END OF LOCAL_STEP_TBL. 

  • Data declarations for the mail recipient

DATA RECIPIENT TYPE SWC_OBJECT. DATA RECIPIENT_OBJ LIKE SWOTOBJID. SWC_CONTAINER CONTAINER. 

  • Data declarations for the background job

PARAMETERS ABAPNAME(20) DEFAULT 'ZTEST1'. PARAMETERS EMPFNAME LIKE SY-UNAME DEFAULT SY-UNAME.  ABAPNM = ABAPNAME. LOCAL_JOB-JOBNAME = ABAPNAME.

  • Generate recipient object (see report RSSOKIF1 for an example)
      • 1. Create the recipient:

IF EMPFNAME <> SPACE. "** 1.1 Generate an object reference to a recipient object SWC_CREATE_OBJECT RECIPIENT 'RECIPIENT' SPACE.  "** 1.2 Write the import parameters for method "** recipient.createaddress into the container "** and empty the container SWC_CLEAR_CONTAINER CONTAINER. "** Set address element (internal user 'JSMITH') SWC_SET_ELEMENT CONTAINER 'AddressString' EMPFNAME. "** Set address type (internal user) SWC_SET_ELEMENT CONTAINER 'TypeId' 'B'.  "** 1.3 Call the method recipient.createaddress SWC_CALL_METHOD RECIPIENT 'CreateAddress' CONTAINER. "** Issue any error message generated by a method exception IF SY-SUBRC NE 0. MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO. ENDIF. SWC_CALL_METHOD RECIPIENT 'Save' CONTAINER. SWC_OBJECT_TO_PERSISTENT RECIPIENT RECIPIENT_OBJ. ENDIF.

      • Recipient has been generated and is ready for use in a
      • background job

CALL FUNCTION 'JOB_OPEN'      exporting

  •      DELANFREP              = ' '
  •      JOBGROUP               = ' '

       jobname                = LOCAL_JOB-JOBNAME

  •      SDLSTRTDT              = NO_DATE
  •      SDLSTRTTM              = NO_TIME

     IMPORTING        JOBCOUNT               = LOCAL_JOB-JOBCOUNT      EXCEPTIONS        CANT_CREATE_JOB        = 1        INVALID_JOB_DATA       = 2        JOBNAME_MISSING        = 3        OTHERS                 = 4              .    if sy-subrc <> 0.       WRITE: / 'JOB_OPEN PROBLEM ', SY-SUBRC.    ELSE.       WRITE: / 'JOB OPEN SUCCESS',                                   LOCAL_JOB-JOBNAME, LOCAL_JOB-JOBCOUNT.    endif.  CALL FUNCTION 'JOB_SUBMIT'      exporting

  •      ARCPARAMS                         =

       authcknam                         = SY-UNAME

  •      COMMANDNAME                       = ' '
  •      OPERATINGSYSTEM                   = ' '
  •      EXTPGM_NAME                       = ' '
  •      EXTPGM_PARAM                      = ' '
  •      EXTPGM_SET_TRACE_ON               = ' '
  •      EXTPGM_STDERR_IN_JOBLOG           = 'X'
  •      EXTPGM_STDOUT_IN_JOBLOG           = 'X'
  •      EXTPGM_SYSTEM                     = ' '
  •      EXTPGM_RFCDEST                    = ' '
  •      EXTPGM_WAIT_FOR_TERMINATION       = 'X'

       jobcount                          = LOCAL_JOB-JOBCOUNT        jobname                           = LOCAL_JOB-JOBNAME

  •      LANGUAGE                          = SY-LANGU
  •      PRIPARAMS                         = ' '

       REPORT                            = ABAPNM

  •      REPORT                            = 'ZTEST1'
  •      VARIANT                           = ' '
  •    IMPORTING
  •      STEP_NUMBER                       = LOCAL_JOB-STEPCOUNT

     EXCEPTIONS        BAD_PRIPARAMS                     = 1        BAD_XPGFLAGS                      = 2        INVALID_JOBDATA                   = 3        JOBNAME_MISSING                   = 4        JOB_NOTEX                         = 5        JOB_SUBMIT_FAILED                 = 6        LOCK_FAILED                       = 7        PROGRAM_MISSING                   = 8        PROG_ABAP_AND_EXTPG_SET           = 9        OTHERS                            = 10              .    if sy-subrc <> 0.       WRITE: / 'JOB_SUBMIT PROBLEM ', LOCAL_JOB-JOBCOUNT,                LOCAL_JOB-JOBNAME, ABAPNAME, SY-SUBRC.    endif.  IF EMPFNAME <> SPACE. CALL FUNCTION 'JOB_CLOSE'   exporting

  •   AT_OPMODE                         = ' '
  •   AT_OPMODE_PERIODIC                = ' '
  •   CALENDAR_ID                       = ' '
  •   EVENT_ID                          = ' '
  •   EVENT_PARAM                       = ' '
  •   EVENT_PERIODIC                    = ' '

    jobcount                          = LOCAL_JOB-JOBCOUNT     jobname                           = LOCAL_JOB-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                     = RECIPIENT_OBJ

  •   TARGETSERVER                      = ' '
  •   DONT_RELEASE                      = ' '
  • IMPORTING
  •   JOB_WAS_RELEASED                  = '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 ).

  WRITE: / 'Job_Close Problem:', ABAPNAME, SY-SUBRC.

ELSE.

  WRITE: / 'Job_Close done'.

ENDIF.

ELSE. "no empfname

...

ENDIF.

********************************

Check below links too

http://help.sap.com/saphelp_nw04/helpdata/en/fa/096d4d543b11d1898e0000e8322d00/frameset.htm

http://wwwcs.uni-paderborn.de/cs/heiss/lehre/pg/intern/docs/bc_xbp_45.pdf

best regards,

swanand

3 REPLIES 3
Read only

Former Member
0 Likes
989

Hello,

JOB_OPEN->For opening a job in the background

JOB_SUBMIT->For submitting the job

JOB_CLOSE->For closing the job.

Example program

****************************

REPORT ZMAILSPOOL.

INCLUDE LBTCHDEF.

  • Include the Business Object Repository object

INCLUDE <CNTN01>.  DATA ABAPNM LIKE SY-REPID.  DATA BEGIN OF LOCAL_JOB. INCLUDE STRUCTURE TBTCJOB. DATA END OF LOCAL_JOB.  DATA BEGIN OF LOCAL_STEP_TBL OCCURS 10. INCLUDE STRUCTURE TBTCSTEP. DATA END OF LOCAL_STEP_TBL. 

  • Data declarations for the mail recipient

DATA RECIPIENT TYPE SWC_OBJECT. DATA RECIPIENT_OBJ LIKE SWOTOBJID. SWC_CONTAINER CONTAINER. 

  • Data declarations for the background job

PARAMETERS ABAPNAME(20) DEFAULT 'ZTEST1'. PARAMETERS EMPFNAME LIKE SY-UNAME DEFAULT SY-UNAME.  ABAPNM = ABAPNAME. LOCAL_JOB-JOBNAME = ABAPNAME.

  • Generate recipient object (see report RSSOKIF1 for an example)
      • 1. Create the recipient:

IF EMPFNAME <> SPACE. "** 1.1 Generate an object reference to a recipient object SWC_CREATE_OBJECT RECIPIENT 'RECIPIENT' SPACE.  "** 1.2 Write the import parameters for method "** recipient.createaddress into the container "** and empty the container SWC_CLEAR_CONTAINER CONTAINER. "** Set address element (internal user 'JSMITH') SWC_SET_ELEMENT CONTAINER 'AddressString' EMPFNAME. "** Set address type (internal user) SWC_SET_ELEMENT CONTAINER 'TypeId' 'B'.  "** 1.3 Call the method recipient.createaddress SWC_CALL_METHOD RECIPIENT 'CreateAddress' CONTAINER. "** Issue any error message generated by a method exception IF SY-SUBRC NE 0. MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO. ENDIF. SWC_CALL_METHOD RECIPIENT 'Save' CONTAINER. SWC_OBJECT_TO_PERSISTENT RECIPIENT RECIPIENT_OBJ. ENDIF.

      • Recipient has been generated and is ready for use in a
      • background job

CALL FUNCTION 'JOB_OPEN'      exporting

  •      DELANFREP              = ' '
  •      JOBGROUP               = ' '

       jobname                = LOCAL_JOB-JOBNAME

  •      SDLSTRTDT              = NO_DATE
  •      SDLSTRTTM              = NO_TIME

     IMPORTING        JOBCOUNT               = LOCAL_JOB-JOBCOUNT      EXCEPTIONS        CANT_CREATE_JOB        = 1        INVALID_JOB_DATA       = 2        JOBNAME_MISSING        = 3        OTHERS                 = 4              .    if sy-subrc <> 0.       WRITE: / 'JOB_OPEN PROBLEM ', SY-SUBRC.    ELSE.       WRITE: / 'JOB OPEN SUCCESS',                                   LOCAL_JOB-JOBNAME, LOCAL_JOB-JOBCOUNT.    endif.  CALL FUNCTION 'JOB_SUBMIT'      exporting

  •      ARCPARAMS                         =

       authcknam                         = SY-UNAME

  •      COMMANDNAME                       = ' '
  •      OPERATINGSYSTEM                   = ' '
  •      EXTPGM_NAME                       = ' '
  •      EXTPGM_PARAM                      = ' '
  •      EXTPGM_SET_TRACE_ON               = ' '
  •      EXTPGM_STDERR_IN_JOBLOG           = 'X'
  •      EXTPGM_STDOUT_IN_JOBLOG           = 'X'
  •      EXTPGM_SYSTEM                     = ' '
  •      EXTPGM_RFCDEST                    = ' '
  •      EXTPGM_WAIT_FOR_TERMINATION       = 'X'

       jobcount                          = LOCAL_JOB-JOBCOUNT        jobname                           = LOCAL_JOB-JOBNAME

  •      LANGUAGE                          = SY-LANGU
  •      PRIPARAMS                         = ' '

       REPORT                            = ABAPNM

  •      REPORT                            = 'ZTEST1'
  •      VARIANT                           = ' '
  •    IMPORTING
  •      STEP_NUMBER                       = LOCAL_JOB-STEPCOUNT

     EXCEPTIONS        BAD_PRIPARAMS                     = 1        BAD_XPGFLAGS                      = 2        INVALID_JOBDATA                   = 3        JOBNAME_MISSING                   = 4        JOB_NOTEX                         = 5        JOB_SUBMIT_FAILED                 = 6        LOCK_FAILED                       = 7        PROGRAM_MISSING                   = 8        PROG_ABAP_AND_EXTPG_SET           = 9        OTHERS                            = 10              .    if sy-subrc <> 0.       WRITE: / 'JOB_SUBMIT PROBLEM ', LOCAL_JOB-JOBCOUNT,                LOCAL_JOB-JOBNAME, ABAPNAME, SY-SUBRC.    endif.  IF EMPFNAME <> SPACE. CALL FUNCTION 'JOB_CLOSE'   exporting

  •   AT_OPMODE                         = ' '
  •   AT_OPMODE_PERIODIC                = ' '
  •   CALENDAR_ID                       = ' '
  •   EVENT_ID                          = ' '
  •   EVENT_PARAM                       = ' '
  •   EVENT_PERIODIC                    = ' '

    jobcount                          = LOCAL_JOB-JOBCOUNT     jobname                           = LOCAL_JOB-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                     = RECIPIENT_OBJ

  •   TARGETSERVER                      = ' '
  •   DONT_RELEASE                      = ' '
  • IMPORTING
  •   JOB_WAS_RELEASED                  = '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 ).

  WRITE: / 'Job_Close Problem:', ABAPNAME, SY-SUBRC.

ELSE.

  WRITE: / 'Job_Close done'.

ENDIF.

ELSE. "no empfname

...

ENDIF.

********************************

Check below links too

http://help.sap.com/saphelp_nw04/helpdata/en/fa/096d4d543b11d1898e0000e8322d00/frameset.htm

http://wwwcs.uni-paderborn.de/cs/heiss/lehre/pg/intern/docs/bc_xbp_45.pdf

best regards,

swanand

Read only

RaymondGiuseppi
Active Contributor
0 Likes
988

Look at report similar to /SAPDMC/SAP_LSMW_INTERFACE.

Regards,

Raymond

Read only

FredericGirod
Active Contributor
0 Likes
988

Hi,

if we speak about Batch Input, you could used the old program RSBDCSUB to call batch-input.

regards

Fred