原文地址:以PDF附件形式发送smartform到邮箱(三)
作者:sap侠之大者
程序要点:1、使用OO方式发送邮件,参考class CL_BCS
2、调用FM显示smartform时,获取对应的OTF数据,然后转换为PDF对象
2、使用类CL_BCS的属性SEND_REQUEST的方法SET_LINK_TO_OUTBOX,将邮件置于发件箱,可以在工作台outbox查看邮件的发送状态及内容
3、使用类cl_bcs的方法SET_SEND_IMMEDIATELY设置邮件立即发送
.这样不必运行邮件发送的程序或后台作业就可以立即发送出去。
以下是程序源码及SAP outbox截图:
*&---------------------------------------------------------------------*
*& Report YZ_TEST27
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT YZ_TEST27 .
* Variables declarations
DATA OUTPUT_OPTIONS TYPE SSFCOMPOP .
DATA CONTROL_PARAMETERS TYPE SSFCTRLOP .
DATA JOB_OUTPUT_INFO TYPE SSFCRESCL .
DATA LV_FNAME ( 30 ) .
PARAMETERS P_MAILTO TYPE AD_SMTPADR DEFAULT 'zyz_erp@163.com' .
*Smartforms
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = '/SAPDII/FINC_LIST'
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
FM_NAME = LV_FNAME
* EXCEPTIONS
* NO_FORM = 1
* NO_FUNCTION_MODULE = 2
* OTHERS = 3
.
IF SY -SUBRC <> 0 .
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF .
CONTROL_PARAMETERS -GETOTF = 'X' .
CALL FUNCTION LV_FNAME
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS = CONTROL_PARAMETERS
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
OUTPUT_OPTIONS = OUTPUT_OPTIONS
* USER_SETTINGS = 'X'
* LINEITEMS =
IMPORTING
* DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO = JOB_OUTPUT_INFO
* JOB_OUTPUT_OPTIONS =
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5
.
IF SY -SUBRC <> 0 .
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF .
DATA : LV_XSTRING TYPE XSTRING ,
LT_TLINE TYPE TABLE OF TLINE .
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT
*& Report YZ_TEST27
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT YZ_TEST27 .
* Variables declarations
DATA OUTPUT_OPTIONS TYPE SSFCOMPOP .
DATA CONTROL_PARAMETERS TYPE SSFCTRLOP .
DATA JOB_OUTPUT_INFO TYPE SSFCRESCL .
DATA LV_FNAME ( 30 ) .
PARAMETERS P_MAILTO TYPE AD_SMTPADR DEFAULT 'zyz_erp@163.com' .
*Smartforms
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = '/SAPDII/FINC_LIST'
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
FM_NAME = LV_FNAME
* EXCEPTIONS
* NO_FORM = 1
* NO_FUNCTION_MODULE = 2
* OTHERS = 3
.
IF SY -SUBRC <> 0 .
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF .
CONTROL_PARAMETERS -GETOTF = 'X' .
CALL FUNCTION LV_FNAME
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS = CONTROL_PARAMETERS
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
OUTPUT_OPTIONS = OUTPUT_OPTIONS
* USER_SETTINGS = 'X'
* LINEITEMS =
IMPORTING
* DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO = JOB_OUTPUT_INFO
* JOB_OUTPUT_OPTIONS =
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5
.
IF SY -SUBRC <> 0 .
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF .
DATA : LV_XSTRING TYPE XSTRING ,
LT_TLINE TYPE TABLE OF TLINE .
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT