使用ABAP将Excel格式化为附件

2020-08-24 16:11发布

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

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


专家您好,

我需要将附件创建为excel并将其发送到外部电子邮件地址。 Excel应根据数据使用不同的颜色,并且某些单元格或列不应对接收者进行编辑。 用户必须在其中输入数据的那些列,我必须提供下拉菜单或建议接受的值。 基本上,这类似于使用可用数据创建询价,并要求供应商输入与报价有关的新数据。 我尝试使用xml,但是在编辑特定列时无法实现用于编辑和向用户提出值的锁定单元格。 根据我得到的信息,关于OLE只能在前台使用。 您能否指导我满足此要求。

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

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


专家您好,

我需要将附件创建为excel并将其发送到外部电子邮件地址。 Excel应根据数据使用不同的颜色,并且某些单元格或列不应对接收者进行编辑。 用户必须在其中输入数据的那些列,我必须提供下拉菜单或建议接受的值。 基本上,这类似于使用可用数据创建询价,并要求供应商输入与报价有关的新数据。 我尝试使用xml,但是在编辑特定列时无法实现用于编辑和向用户提出值的锁定单元格。 根据我得到的信息,关于OLE只能在前台使用。 您能否指导我满足此要求。

付费偷看设置
发送
2条回答
jovirus
1楼-- · 2020-08-24 16:34

HI Prakash

请使用下面的代码将数据发送到excel并发送电子邮件

请尝试下面的链接来格式化excel并使用数据验证

https://blogs.sap.com/2012/03/29/using-ole2-objects-for-create-an-excel-file/

https://blogs.sap.com/2010/07/12/abap2xlsx-generate-your-professional-excel-spreadsheet-来自 -abap/

发送电子邮件代码:

     常数:lc_sender类型ad_smtpadr值'noreply@test.com'。


     数据:lo_send_request类型参考为cl_bcs,
           lo_document类型参考cl_document_bcs,
           lo_sender类型参考if_sender_bcs,
           lo_recipient类型参考if_recipient_bcs。


     尝试。
         lo_send_request = cl_bcs => create_persistent()。


         lo_sender = cl_cam_address_bcs => create_internet_address(lc_sender)。


         lo_send_request-> set_sender(i_sender = lo_sender)。


         lo_recipient = cl_cam_address_bcs => create_internet_address(iv_email)。


         lo_send_request-> add_recipient(
                            i_recipient = lo_recipient
                            i_express = abap_true
                            i_copy =空间
                            i_blind_copy =空间
                            i_no_forward = space)。


         "设置我们不需要退货状态电子邮件
         lo_send_request-> set_status_attributes(
                            i_requested_status ='E'
                            i_status_mail ='E')。


         lo_send_request-> set_send_immediately(abap_true)。


         如果it_mailtext不是初始的。
           "建立文件
           lo_document = cl_document_bcs => create_document(
                                            i_type ='RAW'
                                            i_text = it_mailtext
                                            i_subject = iv_subject)。
         万一。


         如果it_pdf不是初始的。
           "将附件添加到文档
           lo_document-> add_attachment(
               i_attachment_type ='PDF'
               i_attachment_subject =转换#(iv_attname)
               i_att_content_hex = it_pdf)。
         万一。


         "添加文件以发送请求
         调用方法lo_send_request-> set_document(lo_document)。


         "发送文件
         调用方法lo_send_request-> send()。


         提交工作。


       赶上cx_send_req_bcs
             cx_address_bcs
             cx_document_bcs。


         引发异常类型noemail
     努力。


 

Excel数据

获取标题:


   链接lv_str
               '对象类型'
               '文件号码。'
               合作伙伴功能
               'T.Type'
               "过程类型"
               cl_abap_char_utilities =>换行符
 INTO lv_str
 由cl_abap_char_utilities => horizo​​ntal_tab分隔。




 获取订单项


   循环至lt_cbp_list INTO ls_cbp_list。
  连接
 lv_str
 ls_cbp_list-object_type
 ls_cbp_list-object_id
 ls_cbp_list-partner_fct
 * ls_cbp_list-partner_guid
 ls_cbp_list-pd_type
 cl_abap_char_utilities =>换行符
 INTO lv_str
 由cl_abap_char_utilities => horizo​​ntal_tab分隔。
   结局。


   通话功能'SCMS_STRING_TO_XSTRING'
     出口
       文字= lv_str
 * MIMETYPE =''
 *编码=
     输入
       缓冲区= lv_xstr
     例外情况
       失败= 1
       其他= 2。
   如果sy-subrc <> 0。
 *在这里实施适当的错误处理
   万一。


   wdr_task => client_window-> client-> attach_file_to_response(
     i_filename ='table.xls'
     i_content = lv_xstr
     i_mime_type ='EXCEL')。


 
微wx笑
2楼-- · 2020-08-24 16:39

您已经解释了要求,但是您真的不知道如何执行其中的某些部分吗?

问题"发送电子邮件","添加一个 附件"和"使用背景颜色创建Excel"在论坛中被询问了"数百次",所以我让您进行一些搜索。 对于下拉菜单,它与"背景颜色"问题的解决方案相同。

一周热门 更多>