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附件
发送内容 的数据获取: 正文部分使用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
安装不麻烦,环境配置挺麻烦,主要是gcc、cmake和ccmake的版本不匹配问题。 环境: gcc -- 7.5.0 cmake -- 3.15.2 ccmake -- 3.15.2 参考以下两篇博客安装: 1、 ITK的安装与测试(Ubuntu系统)_ubuntu20…...
【C语言】简易计算器转移表(函数指针简化)
什么是转移表? 转移表是一种根据输入条件进行分支选择的技术。它通常用于根据不同的条件执行不同的操作。在 C 语言中,我们可以使用 switch 语句来创建转移表,根据表达式的值选择不同的分支执行。 计算器转移表的普通实现 #include<stdi…...
JavaBase持续更新
仅作笔记📒, 尚不完善, 持续更新中… 一、Java概述 1.1 Java语言发展史 语言: 人与人交流沟通的表达方式 计算机语言: 人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(Stanford University Network)在1995年推出的…...
AI专题:海外科技巨头指引,AI主线逻辑依旧坚挺
今天分享的是AI 系列深度研究报告:《AI专题:海外科技巨头指引,AI主线逻辑依旧坚挺》。 (报告出品方:华西证券) 报告共计:54页 本周热点:海外科技巨头指引,AI主线逻辑依旧坚挺 硬件…...
性能测试工具LoadRunner与登录性能测试分析
1. LoadRunner与Jmeter Jmeter是开源免费的,LoadRunner是商业收费的。 但是LoadRunner具有非常强大的录制功能,具有丰富且灵活的场景,具备丰富的报告性能。 1)Jmeter没有录制功能 2)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并发编程新书
大家好,我是飞哥! 并发编程并不是一个新话题,但是我觉得在近几年以及未来的时间里,并发编程将显得越来越重要。 为什么这样讲,让我们先回到一个基本的问题上来,为什么我们要采用并发编程?关于这…...
Jgit Packfile is truncated解决方案
配置方式解决 这两个配置选项是用于提高 SSH 连接稳定性的 SSH 客户端配置参数,它们被添加到 SSH 配置文件(通常是 ~/.ssh/config)中。这些参数有助于在网络不稳定或者长时间无数据交换时保持 SSH 连接不被断开。下面是每个参数的具体作用&am…...
为后端做准备
这里写目录标题 flask 文件上传与接收flask应答(接收请求(文件、数据)flask请求(上传文件)传递参数和文件 argparse 不从命令行调用参数1、设置default值2、"从命令行传入的参数".split()3、[--input,内容] …...
地下停车场智慧监查系统:科技让停车更智能
随着城市化进程的加速,停车难成为了许多城市居民的痛点。而地下停车场作为解决停车难问题的重要手段,其安全性和便捷性也成为了人们关注的焦点。为了解决这一问题,山海鲸可视化搭建的地下停车场智慧监查系统应运而生,为车主们提供…...
LeetCode每日一题 | 1696. 跳跃游戏 VI
文章目录 题目描述问题分析程序代码 题目描述 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 一开始你在下标 0 处。每一步,你最多可以往前跳 k 步,但你不能跳出数组的边界。也就是说,你可以从下标 i 跳到 [i 1, min(…...
大型装备制造企业案例分享——通过CRM系统管理全球业务
本期,小Z为大家带来的CRM管理系统客户案例是某大型装备制造企业运用Zoho CRM管理全球业务的过程分享。该企业是创业板上市公司,业务遍及100多个国家和地区,合作伙伴超百位,拥有覆盖全球的销售和服务网络。截止目前,相继…...
16.docker删除redis缓存数据、redis常用基本命令
1.进入redis容器内部 (1)筛选过滤出redis容器 docker ps | grep "redis"(2)进入redis容器 #说明: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 文档部分页面截图 写在前面 在当今这样一个数字化时代,办公软件已经成为我们日常工作中不可或缺的一部分,熟练使用 Office、WPS、腾讯文档、金山文…...
nginx反向代理----->微服务网关----->具体微服务
今天,做项目的时候做项目的时候配路由出现bug,特此理顺一下从nginx到微服务网关再到微服务这一过程。 nginx配置 upstream admin-gateway{server localhost:21217; }server {listen 8803;location / {root F:/develop/admin-web/;index index.html;}…...
怎么清理电脑内存?详细图文教程分享!
“我的电脑用了才不到一年,现在内存总是不足。想问问大家平常遇到电脑内存不足的情况时有什么好用的清理方法吗?” 随着电脑使用时间的增长,内存占用可能会不断增加,导致电脑运行缓慢。为了保持电脑的良好性能,定期清理…...
CKS1.28【1】kube-bench 修复不安全项
Context 针对 kubeadm 创建的 cluster 运行 CIS 基准测试工具时,发现了多个必须立即解决的问题。 Task 通过配置修复所有问题并重新启动受影响的组件以确保新的设置生效。 修复针对 API 服务器发现的所有以下违规行为: 1.2.7 Ensure that the --authoriz…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
