当前位置: 首页 > news >正文

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.

相关文章:

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

发送内容 的数据获取&#xff1a; 正文部分使用cl_document_bcs>create_document静态方法实现 传入参数为html内表结构 CLEAR lo_document .lo_document cl_document_bcs>create_document(i_type HTMi_text lt_htmli_length conlengthsi_subject lv_subje…...

Ubuntu编译和测试ITK4.13.1

安装不麻烦&#xff0c;环境配置挺麻烦&#xff0c;主要是gcc、cmake和ccmake的版本不匹配问题。 环境&#xff1a; gcc -- 7.5.0 cmake -- 3.15.2 ccmake -- 3.15.2 参考以下两篇博客安装&#xff1a; 1、 ITK的安装与测试&#xff08;Ubuntu系统&#xff09;_ubuntu20…...

【C语言】简易计算器转移表(函数指针简化)

什么是转移表&#xff1f; 转移表是一种根据输入条件进行分支选择的技术。它通常用于根据不同的条件执行不同的操作。在 C 语言中&#xff0c;我们可以使用 switch 语句来创建转移表&#xff0c;根据表达式的值选择不同的分支执行。 计算器转移表的普通实现 #include<stdi…...

JavaBase持续更新

仅作笔记&#x1f4d2;, 尚不完善, 持续更新中… 一、Java概述 1.1 Java语言发展史 语言: 人与人交流沟通的表达方式 计算机语言: 人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司&#xff08;Stanford University Network&#xff09;在1995年推出的…...

AI专题:海外科技巨头指引,AI主线逻辑依旧坚挺

今天分享的是AI 系列深度研究报告&#xff1a;《AI专题&#xff1a;海外科技巨头指引&#xff0c;AI主线逻辑依旧坚挺》。 &#xff08;报告出品方&#xff1a;华西证券&#xff09; 报告共计&#xff1a;54页 本周热点:海外科技巨头指引&#xff0c;AI主线逻辑依旧坚挺 硬件…...

性能测试工具LoadRunner与登录性能测试分析

1. LoadRunner与Jmeter Jmeter是开源免费的&#xff0c;LoadRunner是商业收费的。 但是LoadRunner具有非常强大的录制功能&#xff0c;具有丰富且灵活的场景&#xff0c;具备丰富的报告性能。 1&#xff09;Jmeter没有录制功能 2&#xff09;LoadRunner可以设计非常丰富的测试…...

作业2024/2/5

第四章 堆与拷贝构造函数 一 、程序阅读题 1、给出下面程序输出结果。 #include <iostream.h> class example {int a; public: example(int b5){ab;} void print(){aa1;cout <<a<<"";} void print()const {cout<<a<<endl;} …...

聊聊并发编程,另送5本Golang并发编程新书

大家好&#xff0c;我是飞哥&#xff01; 并发编程并不是一个新话题&#xff0c;但是我觉得在近几年以及未来的时间里&#xff0c;并发编程将显得越来越重要。 为什么这样讲&#xff0c;让我们先回到一个基本的问题上来&#xff0c;为什么我们要采用并发编程&#xff1f;关于这…...

Jgit Packfile is truncated解决方案

配置方式解决 这两个配置选项是用于提高 SSH 连接稳定性的 SSH 客户端配置参数&#xff0c;它们被添加到 SSH 配置文件&#xff08;通常是 ~/.ssh/config&#xff09;中。这些参数有助于在网络不稳定或者长时间无数据交换时保持 SSH 连接不被断开。下面是每个参数的具体作用&am…...

为后端做准备

这里写目录标题 flask 文件上传与接收flask应答&#xff08;接收请求&#xff08;文件、数据&#xff09;flask请求&#xff08;上传文件&#xff09;传递参数和文件 argparse 不从命令行调用参数1、设置default值2、"从命令行传入的参数".split()3、[--input,内容] …...

地下停车场智慧监查系统:科技让停车更智能

随着城市化进程的加速&#xff0c;停车难成为了许多城市居民的痛点。而地下停车场作为解决停车难问题的重要手段&#xff0c;其安全性和便捷性也成为了人们关注的焦点。为了解决这一问题&#xff0c;山海鲸可视化搭建的地下停车场智慧监查系统应运而生&#xff0c;为车主们提供…...

LeetCode每日一题 | 1696. 跳跃游戏 VI

文章目录 题目描述问题分析程序代码 题目描述 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 一开始你在下标 0 处。每一步&#xff0c;你最多可以往前跳 k 步&#xff0c;但你不能跳出数组的边界。也就是说&#xff0c;你可以从下标 i 跳到 [i 1&#xff0c; min(…...

大型装备制造企业案例分享——通过CRM系统管理全球业务

本期&#xff0c;小Z为大家带来的CRM管理系统客户案例是某大型装备制造企业运用Zoho CRM管理全球业务的过程分享。该企业是创业板上市公司&#xff0c;业务遍及100多个国家和地区&#xff0c;合作伙伴超百位&#xff0c;拥有覆盖全球的销售和服务网络。截止目前&#xff0c;相继…...

16.docker删除redis缓存数据、redis常用基本命令

1.进入redis容器内部 &#xff08;1&#xff09;筛选过滤出redis容器 docker ps | grep "redis"&#xff08;2&#xff09;进入redis容器 #说明&#xff1a;d24为redis容器iddocker exec -it d24 /bin/bash2.登陆redis (1) 进入redis命令行界面 redis-cli说明&a…...

【开源】基于JAVA+Vue+SpringBoot的教学资源共享平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 类图设计3.3 数据库设计3.3.1 课程档案表3.3.2 课程资源表3.3.3 课程作业表3.3.4 课程评价表 四、系统展…...

如何使用Python + 百度翻译API 自动大批量免费翻译Excel文件中的外语内容

手里有一个Excel文件,包括了大量的亚马逊德语搜索词(关键词),每个单元格1个,需要翻译为中文。但是文件大小超过了10M,不能使用百度或Google免费的文档功能,如果手工一个个的翻译然后粘贴又太麻烦,于是想到用Python加免费翻译API完成。 一、openpyxl库 用Python编辑处…...

ONLYOFFICE:一站式办公,探索高效办公新境界

写在前面ONLYOFFICE 介绍ONLYOFFICE 有哪些优势ONLYOFFICE 文档 8.0 发布如何体验 ONLYOFFICEONLYOFFICE 文档部分页面截图 写在前面 在当今这样一个数字化时代&#xff0c;办公软件已经成为我们日常工作中不可或缺的一部分&#xff0c;熟练使用 Office、WPS、腾讯文档、金山文…...

nginx反向代理----->微服务网关----->具体微服务

今天&#xff0c;做项目的时候做项目的时候配路由出现bug&#xff0c;特此理顺一下从nginx到微服务网关再到微服务这一过程。 nginx配置 upstream admin-gateway{server localhost:21217; }server {listen 8803;location / {root F:/develop/admin-web/;index index.html;}…...

怎么清理电脑内存?详细图文教程分享!

“我的电脑用了才不到一年&#xff0c;现在内存总是不足。想问问大家平常遇到电脑内存不足的情况时有什么好用的清理方法吗&#xff1f;” 随着电脑使用时间的增长&#xff0c;内存占用可能会不断增加&#xff0c;导致电脑运行缓慢。为了保持电脑的良好性能&#xff0c;定期清理…...

CKS1.28【1】kube-bench 修复不安全项

Context 针对 kubeadm 创建的 cluster 运行 CIS 基准测试工具时&#xff0c;发现了多个必须立即解决的问题。 Task 通过配置修复所有问题并重新启动受影响的组件以确保新的设置生效。 修复针对 API 服务器发现的所有以下违规行为&#xff1a; 1.2.7 Ensure that the --authoriz…...

从洛伦兹吸引子到三体问题:用Python RK45方法探索混沌与天体物理的奇妙世界

从洛伦兹吸引子到三体问题&#xff1a;用Python RK45方法探索混沌与天体物理的奇妙世界 混沌系统与天体运动看似毫不相关&#xff0c;却共享着对初始条件极度敏感的数学本质。1963年&#xff0c;气象学家爱德华洛伦兹在简化大气对流模型时&#xff0c;意外发现了"蝴蝶效应…...

Ubuntu系统中Miniconda的安装与配置指南

1. 为什么选择Miniconda&#xff1f; 在开始之前&#xff0c;我们先聊聊为什么要在Ubuntu上安装Miniconda。作为一个长期使用Python进行数据分析和机器学习开发的工程师&#xff0c;我尝试过各种Python环境管理工具&#xff0c;最终发现Miniconda是最适合个人开发者的选择。它比…...

A股闪崩策略全解析:从数据接口选股到实时交易执行的完整流程

A股闪崩策略实战指南&#xff1a;从数据接口选股到自动化交易 引言&#xff1a;闪崩策略的市场逻辑与适用场景 2023年A股市场单日振幅超过5%的个股出现频率较前一年增长37%&#xff0c;这种市场波动为短线交易者创造了特殊机会。闪崩策略本质上是一种利用极端价格波动获取短期收…...

GLM-4.1V-9B-Base实战教程:跨境电商A+页面图像卖点自动提炼

GLM-4.1V-9B-Base实战教程&#xff1a;跨境电商A页面图像卖点自动提炼 1. 为什么需要自动提炼图像卖点 跨境电商卖家每天需要处理大量商品图片&#xff0c;传统人工标注方式存在三个痛点&#xff1a; 效率低下&#xff1a;一个运营人员每天最多处理50-100张图片成本高昂&…...

VOOHU沃虎:从SFP到SFP28不同光模块如何选笼子?

在高速通信设备的设计中&#xff0c;SFP光模块笼子是一个看似简单却至关重要的组件。随着数据传输速率从1G演进到10G、25G乃至更高&#xff0c;光模块对笼子的要求也在发生质的变化。SFP&#xff08;1G&#xff09;、SFP&#xff08;10G&#xff09;、SFP28&#xff08;25G&…...

从零到一:在Trae平台构建网页数据智能抓取与分析引擎

1. 为什么你需要一个网页数据智能抓取引擎&#xff1f; 每次看到同事手动复制网页数据到Excel&#xff0c;我都忍不住想递杯咖啡——这活儿太费时了&#xff01;去年我帮市场部做竞品分析&#xff0c;发现他们每周要花8小时手工整理20个电商平台的价格数据。直到我们用Trae平台…...

面相对象高级(static)

##静态&#xff08;static&#xff09;1.static修饰成员变量&#xff1a;类变量&#xff1a;有static修饰&#xff0c;属于类&#xff0c;在计算机里只有一份&#xff0c;会被类的全部对象共享因为属于类&#xff0c;需要通过类名就可以调用&#xff1a;类名.静态变量##### 实际…...

保姆级教程:在PX4 SITL仿真中为Iris无人机挂载Kinect、RPLidar和FPV摄像头

PX4仿真环境多传感器集成实战&#xff1a;从零搭建SLAM无人机开发平台 无人机仿真开发中最令人头疼的&#xff0c;莫过于将各类传感器完美集成到飞行平台上。我曾花了整整两周时间调试Kinect和RPLidar在Gazebo中的兼容性问题&#xff0c;直到找到这套经过验证的解决方案。本文将…...

终极Cinder着色器编程指南:7个GLSL视觉效果开发技巧

终极Cinder着色器编程指南&#xff1a;7个GLSL视觉效果开发技巧 【免费下载链接】Cinder Cinder is a community-developed, free and open source library for professional-quality creative coding in C. 项目地址: https://gitcode.com/gh_mirrors/ci/Cinder Cinder…...

深度解析ImageToSTL:从二维图像到三维打印模型的技术实现

深度解析ImageToSTL&#xff1a;从二维图像到三维打印模型的技术实现 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the left sid…...