通过电子邮件发送多个PDF附件

2020-08-24 11:05发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我的要求是在一封邮件中发送两个PDF作为附件。 我能够看到两个附件。 但是,第一个附件没有打开,而第二个附件只是打开。

在这里,我正在提供我编写的代码。 有谁可以帮助我解决错误所在? 如果需要其他ABAP声明,请提出建议。

预先感谢您的帮助。

  • 从Application Server中读取SRQ文档

数据:开始为INT_SRQ发生0,

FIELD(256),

INT_SRQ的结尾。

数据:WS_FILE1(100)值'/tmp/ safety_questionaire.pdf '。

在二进制模式下输入要打开的数据集WS_FILE1。

做。

将WS_FILE1数据集读入INT_SRQ-FIELD。

IF SY-SUBRC EQ 0。

APPEND INT_SRQ。

ELSE。

退出。

ENDIF。

ENDDO。

  • 从Application Server中读取保险文档

数据:开始出现INT_INSURANCE发生次数0,

FIELD(256),

INT_INSURANCE的结尾。

数据:WS_FILE2(100)VALUE'/tmp/ insurance.pdf '。

在BINARY模式下输入要打开的数据集WS_FILE2。

做。

将WS_FILE2数据集读入INT_INSURANCE-FIELD。

如果SY-SUBRC EQ 0。

APPEND INT_INSURANCE。

ELSE。

退出。

ENDIF。

ENDDO。

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

数据:类似于itcpo的itcpo,

tab_line类似于sy-tabix。

  • 电子邮件功能的变量

数据:类似于sodocchgi1的邮件数据。

数据:像sopcklsti1这样的邮件包在标题行中出现2。

数据:像solisti1这样的邮件头在标题行中出现1。

数据:类似于solisti1的邮件箱出现在标题行中的10。

数据:类似于solisti1的mailtxt在标题行出现10次。

数据:类似于somlrec90的mailrec在标题行出现0。

数据:类似于solisti1的solisti1在标题行出现0。

执行send_form_via_email。

如果sy-subrc eq为0。

使用"电子邮件发送成功"的消息i000(0)。

endif。

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

  • 表单SEND_FORM_VIA_EMAIL *

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

表单send_form_via_email。

清除:maildata,mailtxt,mailbin,mailpack,mailhead,mailrec。

刷新:mailtxt,mailbin,mailpack,mailhead,mailrec。

  • 创建要发送的文档文件名

maildata-obj_name ='SRQ'。

  • 邮件主题

maildata-obj_descr =调查表。

  • 邮件内容

mailtxt-line ='问卷'。

附加mailtxt。

  • 准备装箱单

执行prepare_packing_list。

  • 在此处设置收件人-电子邮件地址!

mailrec-receiver = 'vamseekrishna_k@yahoo.co.in '。

mailrec-rec_type ='U'。

附加mailrec。

  • 发送文档

调用函数" SO_NEW_DOCUMENT_ATT_SEND_API1"

导出

document_data = maildata

put_in_outbox ='x'

表格

包装清单=邮件包

object_header =邮件头

contents_bin = mailbin

contents_txt = mailtxt

收件人= mailrec

例外

too_many_receivers = 1

document_not_sent = 2

operation_no_authorization = 4

其他= 99。

endform。

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

  • 表格PREPARE_PACKING_LIST

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

form prepare_packing_list。

清除:mailpack,mailbin,邮件头。

刷新:mailpack,mailbin,邮件头。

描述表格mailtxt行tab_lines。

读取表mailtxt索引的tab_lines。

maildata-doc_size =(tab_lines-1)* 255 + strlen(mailtxt)。

  • 创建压缩文档的条目

清除mailpack-transf_bin。

mailpack-head_start = 1。

mailpack-head_num = 0。

mailpack-body_start = 1。

mailpack-body_num = tab_lines。

mailpack-doc_type ='RAW'。

附加邮件包。

mailhead =' TEST.pdf '。

附加邮件头。

  • 文件1

通话功能'QCE1_CONVERT'

表格

T_SOURCE_TAB = INT_SRQ

T_TARGET_TAB =邮件箱。

附加邮件箱。

* CLEAR:TAB_LINES。

描述表邮件箱行tab_lines。

读取表信箱索引TAB_LINES。

mailpack-transf_bin ='X'。

mailpack-head_start = 1。

mailpack-head_num = 0。

mailpack-body_start = 1。

mailpack-body_num = tab_lines。

mailpack-doc_type ='PDF'。

mailpack-obj_name ='TEST1'。

mailpack-obj_descr ='attach1'。

mailpack-doc_size = tab_lines * 255。

附加邮件包。

如果SY-SUBRC EQ 0。

具有'FILE1 READ IS OKAY'的消息I000(2)。

ENDIF。

**文件2

通话功能'QCE1_CONVERT'

表格

T_SOURCE_TAB = INT_INSURANCE

T_TARGET_TAB =邮件箱。

*

附加邮件箱。

data:TAB_LINES2类型i。

描述表邮件箱行TAB_LINES2。

读取表信箱索引TAB_LINES2。

*

数据:开始输入i。

数据:结束类型i。

end = TAB_LINES2。

开始= tab_lines + 1。

*

  • 描述表信箱行的结尾。

*

mailpack-transf_bin ='X'。

mailpack-head_start = 1。

mailpack-head_num = 0。

mailpack-body_start =开始。

mailpack-body_num =结束。

mailpack-doc_type ='PDF'。

mailpack-obj_name ='TEST2'。

mailpack-obj_descr ='attach2'。

mailpack-doc_size =(tab_lines2-1)* 255 + strlen(mailBIN)。

附加邮件包。

**

如果sy-subrc eq为0。

具有"文件2读取正常"的消息i000(1)。

endif。

endform。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我的要求是在一封邮件中发送两个PDF作为附件。 我能够看到两个附件。 但是,第一个附件没有打开,而第二个附件只是打开。

在这里,我正在提供我编写的代码。 有谁可以帮助我解决错误所在? 如果需要其他ABAP声明,请提出建议。

预先感谢您的帮助。

  • 从Application Server中读取SRQ文档

数据:开始为INT_SRQ发生0,

FIELD(256),

INT_SRQ的结尾。

数据:WS_FILE1(100)值'/tmp/ safety_questionaire.pdf '。

在二进制模式下输入要打开的数据集WS_FILE1。

做。

将WS_FILE1数据集读入INT_SRQ-FIELD。

IF SY-SUBRC EQ 0。

APPEND INT_SRQ。

ELSE。

退出。

ENDIF。

ENDDO。

  • 从Application Server中读取保险文档

数据:开始出现INT_INSURANCE发生次数0,

FIELD(256),

INT_INSURANCE的结尾。

数据:WS_FILE2(100)VALUE'/tmp/ insurance.pdf '。

在BINARY模式下输入要打开的数据集WS_FILE2。

做。

将WS_FILE2数据集读入INT_INSURANCE-FIELD。

如果SY-SUBRC EQ 0。

APPEND INT_INSURANCE。

ELSE。

退出。

ENDIF。

ENDDO。

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

数据:类似于itcpo的itcpo,

tab_line类似于sy-tabix。

  • 电子邮件功能的变量

数据:类似于sodocchgi1的邮件数据。

数据:像sopcklsti1这样的邮件包在标题行中出现2。

数据:像solisti1这样的邮件头在标题行中出现1。

数据:类似于solisti1的邮件箱出现在标题行中的10。

数据:类似于solisti1的mailtxt在标题行出现10次。

数据:类似于somlrec90的mailrec在标题行出现0。

数据:类似于solisti1的solisti1在标题行出现0。

执行send_form_via_email。

如果sy-subrc eq为0。

使用"电子邮件发送成功"的消息i000(0)。

endif。

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

  • 表单SEND_FORM_VIA_EMAIL *

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

表单send_form_via_email。

清除:maildata,mailtxt,mailbin,mailpack,mailhead,mailrec。

刷新:mailtxt,mailbin,mailpack,mailhead,mailrec。

  • 创建要发送的文档文件名

maildata-obj_name ='SRQ'。

  • 邮件主题

maildata-obj_descr =调查表。

  • 邮件内容

mailtxt-line ='问卷'。

附加mailtxt。

  • 准备装箱单

执行prepare_packing_list。

  • 在此处设置收件人-电子邮件地址!

mailrec-receiver = 'vamseekrishna_k@yahoo.co.in '。

mailrec-rec_type ='U'。

附加mailrec。

  • 发送文档

调用函数" SO_NEW_DOCUMENT_ATT_SEND_API1"

导出

document_data = maildata

put_in_outbox ='x'

表格

包装清单=邮件包

object_header =邮件头

contents_bin = mailbin

contents_txt = mailtxt

收件人= mailrec

例外

too_many_receivers = 1

document_not_sent = 2

operation_no_authorization = 4

其他= 99。

endform。

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

  • 表格PREPARE_PACKING_LIST

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

form prepare_packing_list。

清除:mailpack,mailbin,邮件头。

刷新:mailpack,mailbin,邮件头。

描述表格mailtxt行tab_lines。

读取表mailtxt索引的tab_lines。

maildata-doc_size =(tab_lines-1)* 255 + strlen(mailtxt)。

  • 创建压缩文档的条目

清除mailpack-transf_bin。

mailpack-head_start = 1。

mailpack-head_num = 0。

mailpack-body_start = 1。

mailpack-body_num = tab_lines。

mailpack-doc_type ='RAW'。

附加邮件包。

mailhead =' TEST.pdf '。

附加邮件头。

  • 文件1

通话功能'QCE1_CONVERT'

表格

T_SOURCE_TAB = INT_SRQ

T_TARGET_TAB =邮件箱。

附加邮件箱。

* CLEAR:TAB_LINES。

描述表邮件箱行tab_lines。

读取表信箱索引TAB_LINES。

mailpack-transf_bin ='X'。

mailpack-head_start = 1。

mailpack-head_num = 0。

mailpack-body_start = 1。

mailpack-body_num = tab_lines。

mailpack-doc_type ='PDF'。

mailpack-obj_name ='TEST1'。

mailpack-obj_descr ='attach1'。

mailpack-doc_size = tab_lines * 255。

附加邮件包。

如果SY-SUBRC EQ 0。

具有'FILE1 READ IS OKAY'的消息I000(2)。

ENDIF。

**文件2

通话功能'QCE1_CONVERT'

表格

T_SOURCE_TAB = INT_INSURANCE

T_TARGET_TAB =邮件箱。

*

附加邮件箱。

data:TAB_LINES2类型i。

描述表邮件箱行TAB_LINES2。

读取表信箱索引TAB_LINES2。

*

数据:开始输入i。

数据:结束类型i。

end = TAB_LINES2。

开始= tab_lines + 1。

*

  • 描述表信箱行的结尾。

*

mailpack-transf_bin ='X'。

mailpack-head_start = 1。

mailpack-head_num = 0。

mailpack-body_start =开始。

mailpack-body_num =结束。

mailpack-doc_type ='PDF'。

mailpack-obj_name ='TEST2'。

mailpack-obj_descr ='attach2'。

mailpack-doc_size =(tab_lines2-1)* 255 + strlen(mailBIN)。

附加邮件包。

**

如果sy-subrc eq为0。

具有"文件2读取正常"的消息i000(1)。

endif。

endform。

付费偷看设置
发送
4条回答
软件心理学工程师
1楼-- · 2020-08-24 11:57

嗨,

检查标准FM'FI_SEND_PDF'中的逻辑,如果该FM不可用,请参见sap note976306。

此致

Bhaskar

hongfeng1314
2楼-- · 2020-08-24 11:49

嗨。

我遇到了同样的问题,我的代码几乎与示例代码相同。 我可以在电子邮件中查看第一个PDF,但不能查看第二个PDF。 你能帮我吗?

V

我的电子邮件ID,我会将代码发送给您。

wang628962
4楼-- · 2020-08-24 12:02

清除DDATA。
DDATA-OBJ_NAME ='NAME -1'。
DDATA-OBJ_SORT ='NAME-1'。

DDATA-OBJ_EXPDAT = SY-DATUM。
DDATA-SENSITIVTY ='P'。
DDATA-NO_CHANGE ='X'。
DDATA-PRIORITY ='1'。
DDATA-OBJ_PRIO ='1'。
DDATA-OBJ_LANGU = SY-LANGU。
DDATA-NO_CHANGE ='X'。

刷新TXT。
清除TXT。

TXT-LINE ='电子邮件主题'。
附加TXT。

描述表TXT线TAB_LINES。
读取表TXT索引TAB_LINES。
DDATA-DOC_SIZE =(TAB_LINES-1 )* 255 + STRLEN(TXT)。

清除标题。
刷新标题。
标题行='PDF'

附加标题。

刷新BIN。
清除:BIN,PDF_LINES,PDF_STRING,PDF_SIZE,PDF_LINES2,PDF_STRING2,PDF_SIZE2 ..
环绕PDF_FILE。
使用'〜'转换PDF_FILE。
合并 PDF_STRING PDF_FILE进入PDF_STRING。
ENDLOOP。

在'PDF_FILE2'处循环。
使用'〜'转换PDF_FILE2。
合并PDF_STRING2 PDF_FILE2到PDF_STRING2。
ENDLOOP。

使用'〜'转换PDF_STRING。
使用'〜'转换PDF_STRING2。

DO。
TEXT255 = PDF_STRING。
将TEXT255追加到BIN。
CLEAR TEXT255。
< br>将PDF_STRING左移255个位置。
如果PDF_STRING处于初始状态。
退出。
ENDIF。
ENDDO。

DO。
TEXT255 = PDF_STRING2。
将TEXT255追加到BIN2。
清除TEXT255。

SHIFT将PDF_STRING2左移255个位置。
如果PDF_STRING2初始。
退出。
ENDIF。
ENDDO。
描述表bin行PDF_LINES。
描述表bin2行PDF_LINES2。
读取表bin索引PDF_LINES。
PDF_SIZE =(PDF_LINES-1)* 255 + S TRLEN(BIN)。


读取表BIN2索引PDF_LINES2。
PDF_SIZE2 =(PDF_LINES2-1-)* 255 + STRLEN(BIN2)。


将BIN2的行追加到BIN。 >

刷新:PLIST。
清除:PLIST。

PLIST-TRANSF_BIN =空格。
PLIST-HEAD_START =1。
PLIST-HEAD_NUM =0。
PLIST-BODY_START = 1.
PLIST-BODY_NUM = TAB_LINES。
PLIST-DOC_TYPE ='RAW'。
追加PLIST。

PLIST-TRANSF_BIN ='X'。
PLIST-HEAD_START = 1.
PLIST-HEAD_NUM = 1.
PLIST-BODY_START = 1.
PLIST-BODY_NUM = PDF_LINES。
PLIST-DOC_TYPE ='PDF'。
PLIST-OBJ_NAME ='ATTACHMENT' 。
PLIST-OBJ_DESCR ='FILE-1'。
PLIST-DOC_SIZE = PDF_SIZE。
附加PLIST。

PLIST-TRANSF_BIN ='X'。
PLIST-HEAD_START = 1.
PLIST-HEAD_NUM = 1.
PLIST-BODY_START = PDF_LINES + 1.
PLIST-BODY_NUM = PDF_LINES2。
PLIST-DOC_TYPE ='PDF'。
PLIST-OBJ_NAME =' 附件"。
PLIST-OBJ_DESCR ='FILE-2'。
PLIST-DOC_SIZE = PDF_SIZE2。
追加PLIST。

呼叫功能'SO_DOCUMENT_SEND_API1'
导出
DOCUMENT_DATA = DDATA
PUT_IN_OUTBOX =空间
COMMIT_WORK ='X'
SENDER_ADDRESS ='WF-BATCH'
SENDER_ADDRESS_TYPE ='B'
TABLES
OBJECT_HEADER = HEADER
PACKING_LIST = PLIST
CONTENTS_BIN = BIN
RECEIVERS = RECV
CONTENTS_TXT = TXT
例外情况
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_S
DOCUMENT_TYPE_NOT_EXIST = 3
OPERATION_NO_AUTHORIZATION = 4
PARAMETER_ERROR = 5
X_ERROR = 6
ENQUEUE_ERROR = 7
其他=8。

如果SY-SUBRC = 0。
EMAIL_COUNT = EMAIL_COUNT +1。
ENDIF。

一周热门 更多>