点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
这是通过基于SOAP的Web服务发送和接收PDF附件的简单代码。
*&--------------------------------------------- ------------------------ * *&报告ZKP_DS1 *&------------------------------------------------ --------------------- * *& *&------------------------------------------------ --------------------- * 报告zkp_ds4。 类型:开始于gty_file_data, 条目TYPE x LENGTH 255, 结束于gty_file_data。 数据:ls_request TYPE zkp_dsmt_signed_invoice, ls_response类型zkp_dsmt_signed_invoice, s_input TYPE zkp_dsdt_signed_invoice, s_output类型zkp_dsdt_signed_invoice, lo_clientproxy类型参考zkp_dsco_si_signed_invoice, lo_fault类型参考cx_ai_system_fault, tp_lp TYPE prx_logical_port_name, attachment_protocol类型参考if_wsprotocol_attachments, 附件类型REF TO if_ai_attachment, 附件类型prx_attach, attach_xstring TYPE xstring, msgid_prot类型参考if_wsprotocol_message_id, msgguid TYPE sxmsmguid, att_prot类型参考if_wsprotocol_attachments, ATT TYPE prx_attach, Itab类型表gty_file_data, lv_flength TYPE i, tp_filename TYPE字符串, xi_attachment TYPE hrasr00xi_attachment, 文件名TYPE字符串, mime_type TYPE w3conttype, 扩展名(64)TYPE c, gv_attachment_xstring TYPE xstring, bin_filesize TYPE i, 临时表TYPE w3mimetabtype。 FIELD-SYMBOLS:TYPE gty_file_data, 类型引用到if_ai_attachment。 常量:co_type_octet TYPE字符串值'application/xml'。 参数:pa_name TYPE text100默认值'C:\ Users \ padmawak \ Documents \ test_invoice.pdf'。 选择开始。 *以xstring格式显示pdf数据 tp_filename = pa_name。 通话功能'GUI_UPLOAD' 出口 文件名= tp_文件名 filetype ='BIN' 输入 文件长度= lv_flength 桌子 data_tab = itab 例外情况 file_open_error = 1 file_read_error = 2 no_batch = 3 gui_refuse_filetransfer = 4 invalid_type = 5 no_authority = 6 unknown_error = 7 bad_data_format = 8 header_not_allowed = 9 spacer_not_allowed = 10 header_too_long = 11 unknown_dp_error = 12 access_denied = 13 dp_out_of_memory = 14 disk_full = 15 dp_timeout = 16 其他= 17。 循环至itab分配 。 CONCATENATE gv_attachment_xstring -输入INTO gv_attachment_xstring 在字节模式下。 结局。 attach_xstring = gv_attachment_xstring。 *通过传递逻辑端口创建客户端代理对象 tp_lp ='ZKP_PORT_DS'。 创建对象lo_clientproxy 出口 logical_port_name = tp_lp。 *在请求中发送pdf附件xstring attachment_protocol?= lo_clientproxy-> get_protocol(if_wsprotocol => attachments)。 附件=附件协议-> get_attachment_from_binary(数据= attach_xstring 类型= if_ai_attachment => c_mimetype_pdf name ='invoice1')。 将附件追加到附件中。 *设置附件数据 attachment_protocol-> set_attachments(附件)。 *在请求字段中传递数据 s_input-action ='test_data12345'。 ls_request-mt_signed_invoice = s_input。 *呼叫代理(同步)方法 呼叫方法lo_clientproxy-> si_signed_invoice 出口 输入= ls_request 输入 输出= ls_response。 提交工作。 *获取响应的消息ID msgstr_prot?= lo_clientproxy-> get_protocol(if_wsprotocol => message_id)。 msgguid = msgid_prot-> get_message_id()。 *获取响应的附件数据 att_prot?= lo_clientproxy-> get_protocol(if_wsprotocol => attachments)。 atts = att_prot-> get_attachments()。 READ TABLE ATTS ASSIGNING INDEX 1。 如果sy-subrc = 0。 *从回复中获取附件内容 xi_attachment-content = -> get_binary_data()。 *获取文件名 filename = -> get_document_name()。 *获取扩展名 mime_type = -> get_content_type()。 通话功能" SDOK_FILE_NAME_EXTENSION_GET" 出口 mimetype = mime_type 输入 扩展名=扩展名。 *生成文件名。扩展名 CONCATENATE文件名'。' 扩展名INTO xi_attachment-文件名。 *将响应附件数据转换为PDF 通话功能'SCMS_XSTRING_TO_BINARY' 出口 缓冲区= xi_attachment-content 输入 output_length = bin_filesize 桌子 binary_tab =临时表。 *下载到本地路径 cl_gui_frontend_services => gui_download( 出口 bin_filesize = bin_filesize 文件名='C:\ Temp \ 123.pdf' filetype ='BIN' 改变 data_tab =临时表 例外情况 file_write_error = 1 no_batch = 2 gui_refuse_filetransfer = 3 invalid_type = 4 no_authority = 5 unknown_error = 6 header_not_allowed = 7 spacer_not_allowed = 8 filesize_not_allowed = 9 header_too_long = 10 dp_error_create = 11 dp_error_send = 12 dp_error_write = 13 unknown_dp_error = 14 access_denied = 15 dp_out_of_memory = 16 disk_full = 17 dp_timeout = 18 file_not_found = 19 dataprovider_exception = 20 control_flush_error = 21 not_supported_by_gui = 22 error_no_gui = 23 其他= 24 )。 如果sy-subrc <> 0。 消息ID sy-msgid类型sy-msgty编号sy-msgno 与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。 万一。 万一。
有问题吗?
一周热门 更多>