Entering content frame

Sample Program: Immediate Start with Spool Request Mail Recipient  Locate the document in its SAP Library structure

With Release 4.0, you can automatically mail spool requests that are generated by a background job to a SAPoffice user.

The following sample program shows how to generate the SWOTOBJID structure that JOB_CLOSE needs to identify the SAPoffice user. For more information, please see the ABAP documentation on programming with Business Object Repository objects.

INCLUDE LBTCHDEF.
*
* Include the Business Object Repository object
INCLUDE <CNTN01>.

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
EXECHOST LIKE SY-HOST DEFAULT 'host1',
EXESERVR LIKE BTCTGTSRVR-SRVNAME DEFAULT 'host1_SID_00',
ABAPNAME LIKE SY-REPID DEFAULT 'Program2run',
EMPFNAME LIKE SY-UNAME DEFAULT 'JSmith'.

* 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'
...

CALL FUNCTION 'JOB_SUBMIT'
...

IF EMPFNAME <> SPACE.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
JOBCOUNT = LOCAL_JCOUNT
JOBNAME = LOCAL_JOBNAME
STRTIMMED = 'X'
TARGETSYSTEM = EXECHOST
TARGETSERVER = EXESERVR
RECIPIENT_OBJ = RECIPIENT_OBJ
IMPORTING
JOB_WAS_RELEASED = JOBLOS
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(empfname) Problem:', SY-SUBRC.
ELSE.
WRITE: / 'Job_Close(empfname) done'.
ENDIF.

ELSE. "no empfname
....
ENDIF.

Leaving content frame