abap - 发送邮件,邮件正文带表格和excel附件

发送内容 的数据获取:

  •  正文部分使用cl_document_bcs=>create_document静态方法实现
  •  传入参数为html内表结构 
      CLEAR lo_document .lo_document =  cl_document_bcs=>create_document(i_type =    'HTM'i_text =     lt_htmli_length =  conlengthsi_subject = lv_subject ).
  • 添加附件使用lo_document->add_attachment 
  • 传入参数为二进制数据(Excel的制作使用ZXLSX_WORKBENCH方式,百度搜ZXLSX_WORKBENCH就可以了)
      CALL METHOD lo_document->add_attachmentEXPORTINGi_attachment_type    = 'BIN'i_attachment_subject = lv_att_subjecti_attachment_size    = lv_att_sizei_att_content_hex    = lt_doc_table.

示例代码:

  DATA: lv_subject      TYPE so_obj_des,lo_send_request TYPE REF TO cl_bcs,lo_document     TYPE REF TO cl_document_bcs,conlengths      TYPE so_obj_len,bcs_exception   TYPE REF TO cx_bcs,bcs_message     TYPE string,lt_html         TYPE STANDARD TABLE OF w3html,  "存放HTML5代码的内表lw_html         TYPE w3html,                    "工作区lo_sender       TYPE REF TO cl_sapuser_bcs,     "发送人lv_to           TYPE adr6-smtp_addr,            "接收人lo_bcs_to       TYPE REF TO if_recipient_bcs,lv_cc           TYPE adr6-smtp_addr,            "抄送人lo_bcs_cc       TYPE REF TO if_recipient_bcs,lv_rawdata_01   TYPE mime_data,lv_doc_size     TYPE i,                                             "文件大小lt_doc_table    TYPE solix_tab,                                     "文件内容lv_att_size     TYPE so_obj_len,                                    "附件长度lv_att_subject  TYPE so_obj_des,                                    "附件名称lv_result       TYPE os_boolean,                "发送结果lo_fail         TYPE REF TO cx_bcs.             "异常信息DEFINE %%add_html.lw_html-line = &1.APPEND lw_html TO lt_html.CLEAR lw_html.END-OF-DEFINITION.SELECT * INTO TABLE @DATA(lt_emp) FROM ztlbmm_emp_email.** 邮件主题lv_subject = '大仓多库位库存预警表'.
** 邮件正文%%add_html:'<html>','<head>','<meta charset="utf-8" />','<title></title>','<style>table {text-align: center;}</style>','</head>','<body>','<h3>    为避免单个SKU存放多库位交货时,产品不能按批次先进先出原则,导致存在呆滞风险,','烦请仓库重点关注对产品库位进行管控;单个SKU多库位存放的成品预警明细见附件:</h3>','<table border="1" width="550px" height="150px" cellspacing="0" align="center">','<thead><tr>','<th>装运点</th>','<th>数据获取时间</th>','<th>SKU总数</th>','<th>多库位SKU总数</th>','<th>多库位SKU占比</th>','<th>增长率</th>','</tr></thead>'.LOOP AT lt_email INTO lw_email.   "存放表格数据%%add_html: '<tbody><tr>','<td>',  lw_email-name1,  '</td>','<td>',  lw_email-zdate,  '</td>','<td>',  lw_email-skun1,  '</td>','<td>',  lw_email-skun2,  '</td>','<td>',  lw_email-zcent,  '</td>','<td>',  lw_email-zupsn,  '</td>','</tr></tbody>'.CLEAR:lw_email.ENDLOOP.%%add_html:   '</table>','</body>','</html>'."开源项目ZXLSX_WORKBENCH使用方式CALL FUNCTION 'ZXLWB_CALLFORM'EXPORTINGiv_formname         = 'ZMMR05B_TEMP'    "Excel 模板iv_context_ref      = lt_excel[]        "Excel 映射内表 会自动填充到模板iv_viewer_suppress  = 'X'IMPORTINGev_document_rawdata = lv_rawdata_01     "把EXCEL 转换为String类型的字符串EXCEPTIONSOTHERS              = 2."附件部分CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'EXPORTINGbuffer        = lv_rawdata_01        "传入ZXLSX_WORKBENCH处理的Excel字符串IMPORTINGoutput_length = lv_doc_sizeTABLESbinary_tab    = lt_doc_table.        "传出二进制内容"附件长度lv_att_size = lv_doc_size."附件名称lv_att_subject = |{ sy-datum }_多库位预警报表.xlsx|.IF sy-subrc NE 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.RETURN.ENDIF." 开始发送流程TRY."正文部分CLEAR lo_document .lo_document =  cl_document_bcs=>create_document(i_type =    'HTM'         "正文选择HTML格式显示i_text =     lt_html      "显示的内容i_length =  conlengths   i_subject = lv_subject ). "邮件主题"添加附件CALL METHOD lo_document->add_attachmentEXPORTINGi_attachment_type    = 'BIN'i_attachment_subject = lv_att_subject "附件主题i_attachment_size    = lv_att_size   i_att_content_hex    = lt_doc_table.  "附件内容"创建传输请求对象CLEAR lo_send_request.lo_send_request = cl_bcs=>create_persistent( )."将文件对象放进传输请求对象CALL METHOD lo_send_request->set_document( lo_document )." 发件人:前提是这个邮箱地址能发邮件,并且不需要密码lo_sender = cl_sapuser_bcs=>create( sy-uname ).lo_send_request->set_sender( lo_sender )." 收件人lv_to = '这里填收件人邮箱'lo_bcs_to = cl_cam_address_bcs=>create_internet_address( lv_to ).CALL METHOD lo_send_request->add_recipientEXPORTINGi_recipient = lo_bcs_to." 抄送人lv_cc = '这里填抄送人邮箱'.lo_bcs_cc = cl_cam_address_bcs=>create_internet_address( lv_cc ).CALL METHOD lo_send_request->add_recipientEXPORTINGi_recipient = lo_bcs_cci_copy      = 'X'."设置立即发送lo_send_request->set_send_immediately( 'X' )."与outbox关联lo_send_request->send_request->set_link_to_outbox( 'X' )."发送邮件CALL METHOD lo_send_request->send(EXPORTINGi_with_error_screen = 'X'RECEIVINGresult              = lv_result ).CATCH cx_bcs INTO bcs_exception.bcs_message = bcs_exception->get_text( ).MESSAGE bcs_exception TYPE 'E'.EXIT.ENDTRY.IF lv_result EQ 'X'.COMMIT WORK AND WAIT.   "提交事务ELSE.ROLLBACK WORK.          "事务回滚ENDIF.IF sy-subrc NE 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.RETURN.ENDIF.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/669609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【漏洞复现】EPON上行A8-C政企网关信息泄露漏洞

Nx01 产品简介 EPON上行A8-C政企网关是一款终端产品&#xff0c;提供企业网络解决方案。 Nx02 漏洞描述 EPON上行A8-C政企网关敏感信息泄露漏洞&#xff0c;攻击者通过敏感信息泄露获取管理员密码。 Nx03 产品主页 fofa-query: "ZXECS" && title"Web…

网络安全红队基础建设与介绍

1.ATT&CK相关背景 ATT&CK在各种日常环境中都很有价值。开展任何防御活动时&#xff0c;可以应用ATT&CK防御法&#xff0c;参考攻击者及其行为。ATT&CK不仅对网络防御者提供通用技术库&#xff0c;还为渗透测试和红队提供了基础。提到对抗行为时&#xff0c;这为…

【机器学习】机器学习简单入门

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;matplotlib &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

谷歌免费开放模糊测试框架OSS-Fuzz(物联网、车联网、供应链安全、C/C++)

目录 模糊测试的智能化和自动化 模糊测试不能代替安全设计原则 AI驱动的漏洞修补

<.Net>使用visual Studio 2022在VB.net中新添自定义画图函数(优化版)

前言 这是基于我之前的一篇博文&#xff1a; 使用visual Studio 2019在VB.net中新添自定义画图函数 在此基础上&#xff0c;我优化了一下&#xff0c;改进了UI&#xff0c;添加了示例功能&#xff0c;即以画圆函数为基础&#xff0c;添加了走马灯功能。 先看一下最终效果&#…

Google Chrome Close AutoUpdate

DOMException: play() failed because the user didn‘t interact with the document first.-CSDN博客 html5 audio video-CSDN博客 Google Chrome Close AutoUpdate 关闭google浏览器自动更新 1&#xff1a;检查是否已安装google浏览器&#xff0c;并卸载&#xff1a; 2&…

router路由跳转的两种模板

<router-link><router-link/> <router-view><router-view/> link &#xff1a;链接&#xff0c;联系 view&#xff1a;指看见展现在人们面前的、可以稳定地进行详细审视的事物 将语境拉回到router里&#xff0c;抽象概括一下 router-link就是一个…

docker compose安装minio

要使docker-compose管理的容器&#xff08;如MinIO&#xff09;在系统启动时自动启动&#xff0c;你需要使用Docker的重启策略。在你的docker-compose.yml文件中为MinIO服务添加restart策略即可实现这一目标。restart: always指令确保了在容器退出时总是重新启动容器&#xff0…

55. 右旋字符串(卡码网KamaCoder)

文章目录 55. 右旋字符串题目描述暴力优化&#xff1a;不能申请额外空间&#xff0c;只能在本串上操作思路代码 55. 右旋字符串 题目描述 字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k&#xff0c;请编写一个函数&…

Spark SQL调优实战

1、新添参数说明 // Driver和Executor内存和CPU资源相关配置 --是否开启executor动态分配&#xff0c;开启时spark.executor.instances不生效 spark.dynamicAllocation.enabledfalse --配置Driver内存 spark.dirver.memory5g --driver最大结果大小&#xff0c;设置为0代…

SQLserver2008 r2 下载安装配置、使用、新建登录用户及通过Navicat远程连接

目录 一、下载 二、安装配置 1.安装 2.许可条款 3.安装程序支持文件 4.功能选择 5.实例配置 6.服务器配置 7.数据库引擎配置 8.Reporting Services 配置 9.安装进度 ​编辑 10.完成 三、使用 四、新建登录用户 1.新建登录名 2.常规 3.服务器角色 4. 用户映…

08 - python操作mysql

认识pymysql 借助pymysql模块&#xff0c;这是一个python编写的MYSQL驱动程序&#xff0c;借助它来操作数据库。 操作数据库的流程和java 使用原生的JDBC操作数据的流程步骤差不多。 安装pymysql pip install pymysql 操作步骤 导入pymysql模块 import pymysql创建数据库…

基于CNN+LSTM深度学习网络的时间序列预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 卷积神经网络&#xff08;CNN&#xff09; 4.2 长短时记忆网络&#xff08;LSTM&#xff09; 4.3 CNNLSTM网络结构 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MA…

Java设计模式大全:23种常见的设计模式详解(一)

本系列文章简介&#xff1a; 设计模式是在软件开发过程中&#xff0c;经过实践和总结得到的一套解决特定问题的可复用的模板。它是一种在特定情境中经过验证的经验和技巧的集合&#xff0c;可以帮助开发人员设计出高效、可维护、可扩展和可复用的软件系统。设计模式提供了一种在…

将程序做成系统服务 shell脚本

要将程序做成系统服务&#xff0c;你可以使用Shell脚本来创建一个systemd服务单元文件。下面是一个示例的Shell脚本&#xff0c;用于创建一个名为my_service的服务单元文件&#xff1a; #!/bin/bash# 定义服务的名称和描述 SERVICE_NAME"my_service" DESCRIPTION&quo…

【手写数据库toadb】toadb表数据文件存储结构,创建表与插入数据在物理文件层的流程,行列混合存储新增分组文件结构介绍

12 数据库表物理存储结构 ​专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上ta…

二进制可执行文件的常见后缀

有关二进制程序 二进制程序是一种由机器代码【机器代码是一种由计算机硬件理解和执行的低级指令集】组成的程序&#xff0c;它由计算机直接执行。二进制程序通常是由高级编程语言编译而来&#xff0c;经过编译器的处理将高级代码转换为机器代码。在不同的操作系统上&#xff0…

【Mysql】基本语法(数据操作+表结构操作)

一&#xff1a;数据操作 1.数据库&#xff08;库名&#xff09; create database 数据库名 //创建数据库 use 数据库名 //选择数据库 drop database 数据库名 //删除数据库[rootxibushuma ~]# mysql db2 -e show tables 不登录mysql 情况下&…

架构学习(四):scrapy下载中间件实现动态切换User-Agent

scrapy下载中间件实现动态与固定UserAgent 前言关卡&#xff1a;实现动态切换User-Agentscrapy设置User-Agent方式梳理User-Agent生效梳理为何选择在下载中间件中实现自定义User-Agent下载中间件 结束 前言 请求头User-Agent是比较常规的反爬手段&#xff0c;不同站点对其检测…

thinkphp6入门(17)-- 网站开发中session、cache、cookie的区别

Session&#xff08;会话&#xff09;: 定义&#xff1a; Session是一种用于在服务器端存储用户信息的机制&#xff0c;以跟踪用户的状态。 数据存储位置&#xff1a; 存储在服务器端&#xff0c;可以存在于内存、数据库或文件系统中。 生命周期&#xff1a; 存在于用户访问应…