サンプルプログラム : スプール依頼電子メール受信者を指定する即時開始 

リリース 4.0 では、バックグラウンドジョブで生成されたスプール依頼を自動的に SAPoffice ユーザにメールとして送信することができます。

次のサンプルプログラムは、 JOB_CLOSE SAPoffice ユーザを特定するために必要とされる SWOTOBJID 構造を生成する方法を示します。詳細については、ビジネスオブジェクトリポジトリオブジェクトを用いたプログラミングに関する ABAP 文書を参照してください。

INCLUDE LBTCHDEF.
*
*
ビジネスオブジェクトリポジトリオブジェクトのインクルード
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 RECIPIENT TYPE SWC_OBJECT.

DATA RECIPIENT_OBJ LIKE SWOTOBJID.
SWC_CONTAINER CONTAINER.

* バックグラウンドジョブに関するデータ宣言
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'.


* 受信者オブジェクト生成 ( 例についてはレポート RSSOKIF1 を参照してください。 )
*** 1.
受信者登録

IF EMPFNAME <> SPACE.
"** 1.1 受信者オブジェクトにオブジェクト参照を生成
SWC_CREATE_OBJECT RECIPIENT 'RECIPIENT' SPACE.

"** 1.2 メソッド recipient.createaddress のインポートパラメータを
"** コンテナに書き込み、 SWC_CLEAR_CONTAINER CONTAINER
"**
コンテナを空にする
.
"** アドレスエレメント ( 内部ユーザ 'JSMITH') を設定
SWC_SET_ELEMENT CONTAINER'AddressString' EMPFNAME.
"** アドレスタイプ ( 内部ユーザ ) を設定
SWC_SET_ELEMENT CONTAINER 'TypeId' 'B'.

"** 1.3 メソッド recipient.createaddress を呼び出す。
SWC_CALL_METHOD RECIPIENT 'CreateAddress' CONTAINER
"** メソッドの例外により生成されたエラーメッセージがあればこれを出力する
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.
***
メール受信者が生成され、バックグラウンドジョブで使用可能になっています。

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.
WRITE: /'Job_Close (empfname) done'.
ENDIF.

ELSE. "no empfname
....

ENDIF.