当前位置: 首页 > 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…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景

Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知&#xff0c;帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量&#xff0c;能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度&#xff0c;还为机器人、医疗设备和制造业的智…...