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

SAMRTFORMS 转换PDF 发送邮件

最终成果:

*&---------------------------------------------------------------------**& Report ZLC_FIND_EXIT*&---------------------------------------------------------------------**&根据T-CODE / 程序名查询出口、BADI增强*&---------------------------------------------------------------------*REPORT ZEDIT_G."打印参数DATA:LV_FMNAME  TYPE RS38L_FNAM,LS_CTRLOP  TYPE SSFCTRLOP,LS_COMPOP  TYPE SSFCOMPOP,LS_RETURN  TYPE SSFCRESCL,LS_INFO    TYPE SSFCRESCL,LS_OPTIONS TYPE SSFCRESOP."附件参数DATA:LT_OTF    TYPE ITCOO OCCURS 0 WITH HEADER LINE,LT_TLINE  TYPE TLINE OCCURS 0 WITH HEADER LINE,LT_RECORD LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE."邮件参数DATA:LV_SIZE      TYPE I, "邮件附件大小LV_LINES_TXT TYPE I, "邮件文本行数LV_LINES_BIN TYPE I, "邮件附件行数LV_BENFILE   TYPE XSTRING,LV_OBJECT    TYPE CHAR50, "邮件主题LV_PDFNAME   TYPE CHAR50,GT_OBJPACK   LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE, "邮件内容 正文+附件GT_OBJTXT    LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE, "正文内容GT_OBJBIN    LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE, "附件内容GT_RECLIST   LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE, "收件人LS_DOC_CHNG  TYPE SODOCCHGI1. "邮件属性"打印控制LS_CTRLOP-NO_OPEN = 'X'.LS_CTRLOP-NO_CLOSE = 'X'.LS_CTRLOP-GETOTF = 'X'.    "这个必须要打上标记,否则无法获取打印页面数据LS_CTRLOP-LANGU = '1'.LS_CTRLOP-NO_DIALOG = 'X'.LS_COMPOP-TDNOPREV = 'X'.CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'EXPORTINGFORMNAME           = 'ZTEST001'  "创建的SMARTFORMS表单名称IMPORTINGFM_NAME            = LV_FMNAMEEXCEPTIONSNO_FORM            = 1NO_FUNCTION_MODULE = 2OTHERS             = 3.IF SY-SUBRC <> 0.MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNOWITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.CALL FUNCTION 'SSF_OPEN'                 "打开打印页面EXPORTINGOUTPUT_OPTIONS     = LS_COMPOPCONTROL_PARAMETERS = LS_CTRLOPUSER_SETTINGS      = 'X'IMPORTINGJOB_OUTPUT_OPTIONS = LS_OPTIONSEXCEPTIONSFORMATTING_ERROR   = 1INTERNAL_ERROR     = 2SEND_ERROR         = 3USER_CANCELED      = 4OTHERS             = 5.IF SY-SUBRC <> 0.MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNOWITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.CALL FUNCTION LV_FMNAME              调用打印表单接口函数EXPORTINGOUTPUT_OPTIONS     = LS_COMPOPCONTROL_PARAMETERS = LS_CTRLOPUSER_SETTINGS      = ' 'IMPORTINGJOB_OUTPUT_INFO    = LS_RETURNEXCEPTIONSFORMATTING_ERROR   = 1INTERNAL_ERROR     = 2SEND_ERROR         = 3USER_CANCELED      = 4OTHERS             = 5.IF SY-SUBRC <> 0.MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNOWITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ELSE.ENDIF.CALL FUNCTION 'SSF_CLOSE'                "关闭打印表单IMPORTINGJOB_OUTPUT_INFO  = LS_INFOEXCEPTIONSFORMATTING_ERROR = 1INTERNAL_ERROR   = 2SEND_ERROR       = 3OTHERS           = 4.IF SY-SUBRC <> 0.MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNOWITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ELSE.APPEND LINES OF LS_INFO-OTFDATA TO LT_OTF.ENDIF.CALL FUNCTION 'CONVERT_OTF'            "转换PDF格式EXPORTINGFORMAT                = 'PDF'PDF_USERNAME          = 'TIANCZ'IMPORTINGBIN_FILESIZE          = LV_SIZEBIN_FILE              = LV_BENFILETABLESOTF                   = LT_OTFLINES                 = LT_TLINEEXCEPTIONSERR_MAX_LINEWIDTH     = 1ERR_FORMAT            = 2ERR_CONV_NOT_POSSIBLE = 3ERR_BAD_OTF           = 4OTHERS                = 5.IF SY-SUBRC <> 0.MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNOWITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.IF LV_BENFILE IS NOT INITIAL.CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'      "转换PDF添加邮件附件EXPORTINGBUFFER        = LV_BENFILEIMPORTINGOUTPUT_LENGTH = LV_SIZETABLESBINARY_TAB    = LT_RECORD.ENDIF.REFRESH:GT_RECLIST,GT_OBJTXT,GT_OBJBIN,GT_OBJPACK.CLEAR: LS_DOC_CHNG."将转换后的文件添加到邮件附件APPEND LINES OF LT_RECORD TO GT_OBJBIN."添加邮件正文GT_OBJTXT = ''.APPEND GT_OBJTXT.GT_OBJTXT = '邮件测试,包含一个PDF附件'.APPEND GT_OBJTXT."邮件正文行数LV_LINES_TXT = LINES( GT_OBJTXT ).LV_OBJECT = '邮件测试'.LV_PDFNAME = 'SM转换的PDF文件.pdf'.LS_DOC_CHNG-OBJ_LANGU = SY-LANGU.LS_DOC_CHNG-OBJ_NAME = 'Email'.LS_DOC_CHNG-EXPIRY_DAT = SY-DATUM + 10.LS_DOC_CHNG-OBJ_DESCR = LV_OBJECT.  "邮件主题LS_DOC_CHNG-SENSITIVTY = 'F'.LS_DOC_CHNG-DOC_SIZE = LV_LINES_TXT * 255 + LV_SIZE.LS_DOC_CHNG-PRIORITY = '1'.CLEAR GT_OBJPACK-TRANSF_BIN.GT_OBJPACK-HEAD_START = 1.GT_OBJPACK-HEAD_NUM = 0.GT_OBJPACK-BODY_START = 1.GT_OBJPACK-BODY_NUM = LV_LINES_TXT.GT_OBJPACK-DOC_TYPE = 'RAW'.APPEND GT_OBJPACK.CLEAR:LV_LINES_BIN.GT_OBJPACK-TRANSF_BIN = 'X'.GT_OBJPACK-HEAD_START = 1.GT_OBJPACK-HEAD_NUM = 1.GT_OBJPACK-BODY_START = 1.LV_LINES_BIN = LINES( LT_RECORD ).GT_OBJPACK-DOC_SIZE = LV_SIZE .GT_OBJPACK-BODY_NUM = LV_LINES_BIN.GT_OBJPACK-DOC_TYPE = 'PDF'.GT_OBJPACK-OBJ_NAME = 'PO'.GT_OBJPACK-OBJ_DESCR = LV_PDFNAME.APPEND GT_OBJPACK.GT_RECLIST-RECEIVER = 'XXXXX@163.com'."收件人邮箱GT_RECLIST-REC_TYPE = 'U'.APPEND GT_RECLIST.CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'EXPORTINGDOCUMENT_DATA              = LS_DOC_CHNG  " 邮件属性PUT_IN_OUTBOX              = ''COMMIT_WORK                = 'X'TABLESPACKING_LIST               = GT_OBJPACK  " 邮件内容CONTENTS_BIN               = GT_OBJBIN   " 附件内容(二进制)CONTENTS_TXT               = GT_OBJTXT   " 邮件内容(直接填入)RECEIVERS                  = GT_RECLIST  " 收件箱地址EXCEPTIONSTOO_MANY_RECEIVERS         = 1DOCUMENT_NOT_SENT          = 2DOCUMENT_TYPE_NOT_EXIST    = 3OPERATION_NO_AUTHORIZATION = 4PARAMETER_ERROR            = 5X_ERROR                    = 6ENQUEUE_ERROR              = 7OTHERS                     = 8.IF SY-SUBRC = 0.MESSAGE '发送成功!' TYPE 'S'.WAIT UP TO 1 SECONDS.SUBMIT RSCONN01 WITH MODE = 'INT'WITH OUTPUT = ''AND RETURN.ELSE.MESSAGE '发送失败!' TYPE 'S'.ENDIF.

T-CODE:SOST--查看邮件发送情况:

可参考学习笔记:https://www.cnblogs.com/StephenAmell/p/17414767.html

相关文章:

SAMRTFORMS 转换PDF 发送邮件

最终成果&#xff1a; *&---------------------------------------------------------------------**& Report ZLC_FIND_EXIT*&---------------------------------------------------------------------**&根据T-CODE / 程序名查询出口、BADI增强*&-------…...

探讨在大数据体系中API的通信机制与工作原理

** 引言 关联阅读博客文章&#xff1a;深入解析大数据体系中的ETL工作原理及常见组件 关联阅读博客文章&#xff1a;深入理解HDFS工作原理&#xff1a;大数据存储和容错性机制解析 ** 在当今数字化时代&#xff0c;数据已经成为企业发展和决策的核心。随着数据规模的不断增长…...

算法打卡day23

今日任务&#xff1a; 1&#xff09;39. 组合总和 2&#xff09;40.组合总和II 3&#xff09;131.分割回文串 39. 组合总和 题目链接&#xff1a;39. 组合总和 - 力扣&#xff08;LeetCode&#xff09; 给定一个无重复元素的数组 candidates 和一个目标数 target &#xff0c;…...

每天五分钟深度学习:神经网络和深度学习有什么样的关系?

本文重点 神经网络是一种模拟人脑神经元连接方式的计算模型&#xff0c;通过大量神经元之间的连接和权重调整&#xff0c;实现对输入数据的处理和分析。而深度学习则是神经网络的一种特殊形式&#xff0c;它通过构建深层次的神经网络结构&#xff0c;实现对复杂数据的深度学习…...

基于PSO优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1卷积神经网络&#xff08;CNN&#xff09;在时间序列中的应用 4.2 长短时记忆网络&#xff08;LSTM&#xff09;处理序列依赖关系 4.3 注意力机制&#xff08;Attention&#xff09; 5…...

物联网监控可视化是什么?部署物联网监控可视化大屏有什么作用?

随着物联网技术的深入应用&#xff0c;物联网监控可视化成为了企业数字化转型的关键环节。物联网监控可视化大屏作为物联网监控平台的重要组成部分&#xff0c;能够实时展示物联网设备的运行状态和数据&#xff0c;为企业管理决策和运维监控提供了有力的支持。今天&#xff0c;…...

设计一个Rust线程安全栈结构 Stack<T>

在Rust中&#xff0c;设计一个线程安全的栈结构Stack<T>&#xff0c;类似于Channel<T>&#xff0c;但使用栈的FILO&#xff08;First-In-Last-Out&#xff09;原则来在线程间传送数据&#xff0c;可以通过使用标准库中的同步原语如Mutex和Condvar来实现。下面是一个…...

Docker Desktop 在 Windows 上的安装和使用

目录 1、安装 Docker Desktop 2、使用 Docker Desktop &#xff08;1&#xff09;运行容器 &#xff08;2&#xff09;查看容器信息 &#xff08;3&#xff09;数据挂载 Docker Desktop是Docker的官方桌面版&#xff0c;专为Mac和Windows用户设计&#xff0c;提供了一个简…...

2024年最受欢迎的 19 个 VS Code 主题排行榜

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …...

突破编程_C++_网络编程(OSI 七层模型(物理层与数据链路层))

1 OSI 七层模型概述 OSI&#xff08;Open Systems Interconnection&#xff09;七层模型&#xff0c;即开放系统互联参考模型&#xff0c;起源于 20 世纪 70 年代和 80 年代。随着计算机网络技术的快速发展和普及&#xff0c;不同厂商生产的计算机和网络设备之间的互操作性成为…...

Spring boot如何使用redis缓存

引入依赖 这个是参照若依的&#xff0c;如果没有统一的版本规定的话&#xff0c;这里是需要写版本号的 <!-- redis 缓存操作 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</arti…...

红蓝色WordPress外贸建站模板

红蓝色WordPress外贸建站模板 https://www.mymoban.com/wordpress/5.html...

python爬虫----了解爬虫(十一天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…...

碳素光线疗法与宠物健康

碳素光线与宠物健康 生息在地球上的所有动物、在自然太阳光奇妙的作用下、生长发育。太阳光的能量使它们不断进化、繁衍种族。现在、生物能够生存、全仰仗于太阳的光线。太阳光线中、包含有动物健康所需要的极为重要的波长。因此、和户外饲养的动物相比、在室内喂养的观赏动物、…...

展锐平台camera添加底层水印

展锐平台camera添加水印&#xff0c;从底层用编码覆盖图像数组&#xff0c;保证上层获取图像水印的一致性 时间水印diff --git a/vendor/sprd/modules/libcamera/hal3_2v6/SprdCamera3HWI.cpp b/vendor/sprd/modules/libcamera/hal3_2v6/SprdCamera3HWI.cpp index f2b704f9d6..…...

OSX-02-Mac OS应用开发系列课程大纲和章节内容设计

本节笔者会详细介绍下本系统专题的大纲&#xff0c;以及每个专题章节的组织结构。这样读者会有一个全局的概念。 在开始前还是在再介绍一下下面这个框架图&#xff0c;因为比较重要&#xff0c;在这里再冗余介绍一下。开发Apple公司相关产品的软件时&#xff0c;主要有两个框架…...

热门IT【视频教程】-华为/思科/红帽/oracle

华为认证 网络工程师-入门基础课&#xff1a;华为HCIA认证课程介绍-CSDN博客 网络工程师进阶课&#xff1a;华为HCIP认证课程介绍-CSDN博客 职场进阶&#xff0c;踏上高峰——HCIE-Datacom认证-CSDN博客 华为HCIA试听课程 &#xff1a; 超级实用&#xff0c;华为VRP系统文件…...

HCTNet:一种用于乳腺超声图像分割的混合CNN-transformer

HCTNet&#xff1a;一种用于乳腺超声图像分割的混合CNN-transformer 摘要引言相关工作方法 Materials and methods分割方法 HCTNet_ A hybrid CNN-transformer network for breast ultrasound image segmentation 摘要 乳腺超声图像的自动分割有助于提高乳腺癌诊断的准确性。近…...

766. 托普利茨矩阵

给你一个 m x n 的矩阵 matrix 。如果这个矩阵是托普利茨矩阵&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果矩阵上每一条由左上到右下的对角线上的元素都相同&#xff0c;那么这个矩阵是 托普利茨矩阵 。 示例 1&#xff1a; 输入&#xff1a;matr…...

基于STM32的汽车防窒息系统

文章目录 基于STM32的汽车防窒息系统系统简介材料展示视频制作硬件连接原理图PCB实物图GSM模块使用GSM模块代码 SGP30模块SGP30模块代码 步进电机驱动步进电机代码 其他模块主逻辑代码 总结 基于STM32的汽车防窒息系统 系统简介 随着社会的发展目前汽车的流行&#xff0c;汽车大…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...

TCP/IP 网络编程 | 服务端 客户端的封装

设计模式 文章目录 设计模式一、socket.h 接口&#xff08;interface&#xff09;二、socket.cpp 实现&#xff08;implementation&#xff09;三、server.cpp 使用封装&#xff08;main 函数&#xff09;四、client.cpp 使用封装&#xff08;main 函数&#xff09;五、退出方法…...

从零手写Java版本的LSM Tree (一):LSM Tree 概述

&#x1f525; 推荐一个高质量的Java LSM Tree开源项目&#xff01; https://github.com/brianxiadong/java-lsm-tree java-lsm-tree 是一个从零实现的Log-Structured Merge Tree&#xff0c;专为高并发写入场景设计。 核心亮点&#xff1a; ⚡ 极致性能&#xff1a;写入速度超…...