点击此处---> 群内免费提供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。
嗨,
检查标准FM'FI_SEND_PDF'中的逻辑,如果该FM不可用,请参见sap note976306。
此致
Bhaskar
嗨。
我遇到了同样的问题,我的代码几乎与示例代码相同。 我可以在电子邮件中查看第一个PDF,但不能查看第二个PDF。 你能帮我吗?
V
我的电子邮件ID,我会将代码发送给您。
清除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。
一周热门 更多>