通过电子邮件将存档中的发票作为pdf附件发送

2020-08-31 07:21发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨,我对以下报告有疑问。 该报...

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

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


嗨,我对以下报告有疑问。

该报告从存档中获取发票(pdf)并通过电子邮件发送。

我可以在Adobe Reader中打开此pdf附件,但收到以下警告消息。

pdf似乎没有完全转换? 但是文件没有损坏。

但是我看不到错误。

报告Z_SD_SDMAIL4。

类CL_BCS定义加载。

数据:GO_SEND_REQUEST类型引用到CL_BCS,
GO_DOCUMENT类型引用到CL_DOCUMENT_BCS,
GO_SENDER类型引用到IF_SENDER_BCS,< br>将GO_RECIPIENT类型引用为IF_RECIPIENT_BCS,
GT_MESSAGE_BODY类型引用为BCSY_TEXT,
GX_DOCUMENT_BCS类型引用为CX_DOCUMENT_BCS,
GV_SEND类型引用AD_SMTPADR值


CONNECTIONS = GT_CONNECTIONS
异常
NOTHING_FOUND = 1
其他=2。

>在GT_CONNECTIONS处循环进入GS_CONNECTIONS。
调用函数'ARCHIVOBJECT_GET_TABLE'
导出
ARCHIV_ID = GS_CONNECTIONS-ARCHIV_ID
DOCUMENT_TYPE ='PDF'" oc_type" =连接储备
ARCHIV_DOC_ID = GS_CONNECTIONS
导入
BINLENGTH = GV_BINLENGTH

ARCHIVOBJECT = GT_ARCHIVOBJECT
BINARCHIVOBJECT = GT_BINARCHIVOBJECT
异常
ERROR_ARCHIV = 1
ERROR_COMMUNICATIONTABLE = 2
错误_KER >其他=4。

*不起作用
调用方法CL_RMPS_GENERAL_FUNCTIONS => CONVERT_1024_TO_255
导出
IM_TAB_1024 = GT_BINARCHIVOBJECT
正在接收
RE_TAB_255 = GT_SOLIX_TAB。


> endloop。

"创建发送请求
GO_SEND_REQUEST = CL_BCS => CREATE_PERSISTENT()。

"创建消息正文和主题
ap 将"亲爱的供应商"添加到GT_MESSAGE_BODY。
将初始行添加到GT_MESSAGE_BODY。
添加"请填写附件。" 到GT_MESSAGE_BODY。
在GT_MESSAGE_BODY上添加首行。
在GT_MESSAGE_BODY上添加"谢谢"。 I_TYPE ='RAW'
I_TEXT = GT_MESSAGE_BODY
I_SUBJECT ='供应商付款表格')。
试试。
GO_DOCUMENT-> ADD_ATTACHMENT(" Hier sind wir schon bei CL_BCS!
export
> I_ATTACHMENT_TYPE ='PDF'
I_ATTACHMENT_SUBJECT ='测试邮件'
I_ATT_CONTENT_HEX = GT_SOLIX_TAB)。

将CX_DOCUMENT_BCS捕获到GX_DOCUMENT_BCS中。
endtry。

*添加附件 > *传递文档以发送请求
GO_SEND_REQUEST-> SET_DOCUMENT(GO_DOCUMENT)。

GO_RECIPIENT = CL_CAM_ADDRESS_BCS => CREATE_INTERNET_ADDRESS(GV_SEND)。

* -------- -------------------------------------------------- ---------- *
*添加收件人
* ---------------------------- ---------------------------------------- *
试试。
致电 方法GO_SEND_REQUEST-> ADD_RECIPIENT
导出< br> I_RECIPIENT = GO_RECIPIENT。
捕获CX_SEND_REQ_BCS。
尝试。

GO_SEND_REQUEST-> SET_SENDER(CL_SAPUSER_BCS => CREATE(SY-UNAME))。

GO_SEND_REQUEST 'X')。

* -------------------------------------- ------------------------------ *
*发送邮件
* --------- -------------------------------------------------- --------- *
试试。
调用方法GO_SEND_REQUEST-> SEND()。

提交工作。
消息"成功发送",键入" S"。 br>捕获CX_BCS进入GO_EMAIL_ERROR。
GV_EMAIL_MESSAGE = GO_EMAIL_ERROR-> GET_TEXT()。
尝试尝试。

(19.9 kB)
2条回答
宇峰Kouji
2020-08-31 07:40

啊,好的,谢谢。这解决了我的问题:

用于添加文档大小的代码。

数据:prc_lines类型i值0,
prc_line_len类型i值0,
prc_bin_filesize类型i值0,
gv_size类型SOOD-OBJLEN。


字段符号:类型ANY。

描述表GT_BINARCHIVOBJECT行prc_lines。

在GT_BINARCHIVOBJECT分配处循环。 br> ENDLOOP。

prc_bin_filesize = prc_lines * prc_line_len。
gv_size = prc_bin_filesize。

第二个可能是小数点后3位以上的文件类型:

就像新的Office格式:.docx,.xlsx等

数据:lt_add_header TYPE SOLI_TAB,
lv_header类型字符串。

CONCATENATE'&SO_FILENAME ='' TEST.PDF '放入lv_header。
附加lv_header至 lt_add_header。

然后在课堂上(包括语言):

尝试。
GO_DOCUMENT-> ADD_ATTACHMENT(" CL_BCS上的高手! "新的可选
I_ATT_CONTENT_HEX = GT_SOLIX_TAB
I_ATTachment_size = gv_size
I_ATTachment_header = lt_add_header"新的可选
)。 从快速的角度来看,p#

我认为当您向电子邮件中添加文档时,您必须指定附件的大小

还有一个类可以帮助您转换各种表格格式 :CL_BCS_CONVERT

一周热门 更多>