Anfang des Inhaltsbereichs

Programmbeispiel: Sofortiger Start mit Mail-Empfänger von Spoolaufträgen   Dokument im Navigationsbaum lokalisieren

Mit Release 4.0 können Sie automatisch von einem Hintergrund-Job erstellte Spoolaufträge an einen SAPoffice-Benutzer senden.

Das folgende Programmbeispiel zeigt, wie Sie die SWOTOBJID-Struktur erzeugen, die JOB_CLOSE benötigt, um den SAPoffice-Benutzer zu identifizieren. Weitere Informationen finden Sie in der ABAP-Dokumentation zur Programmierung mit Business-Object-Repository-Objekten.

INCLUDE LBTCHDEF.
*
* Business-Object-Repository-Objekt einfügen
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.

*
* Datendeklarationen für den Mail-Empfänger
DATA RECIPIENT TYPE SWC_OBJECT.
DATA RECIPIENT_OBJ LIKE SWOTOBJID.
SWC_CONTAINER CONTAINER.

* Datendeklarationen für den Hintergrund-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'.

* Empfängerobjekt generieren (siehe als Beispiel Report RSSOKIF1)
*** 1. Empfänger erstellen:

IF EMPFNAME <> SPACE.
"** 1.1 Objektreferenz auf ein Empfängerobjekt erzeugen
SWC_CREATE_OBJECT RECIPIENT 'RECIPIENT' SPACE.

"** 1.2 Importparameter für Methode
"** recipient.createaddress in Container schreiben
"** und Container leeren
SWC_CLEAR_CONTAINER CONTAINER.
"** Adreßelement einstellen (interner Benutzer 'JMEIER')
SWC_SET_ELEMENT CONTAINER 'AddressString' EMPFNAME.
"** Adreßtyp einstellen (interner Benutzer)
SWC_SET_ELEMENT CONTAINER 'TypeId' 'B'.

"** 1.3 Methode recipient.createaddress aufrufen
SWC_CALL_METHOD RECIPIENT 'CreateAddress' CONTAINER.
"** Etwaige Fehlermeldung von Methodenausnahme ausgeben
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.
*** Empfänger wurde angelegt und kann in einem Hintergrund-Job
*** verwendet werden

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.