事务代码smartforms创建一个表单ZTEST001

将表单转换成PDF并添加到邮件的附件中发送给用户

"-----------------------------------------@斌将军--------------------------------------------
"打印参数
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'
EXPORTING
FORMNAME = 'ZTEST001'
IMPORTING
FM_NAME = LV_FMNAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF. CALL FUNCTION 'SSF_OPEN'
EXPORTING
OUTPUT_OPTIONS = LS_COMPOP
CONTROL_PARAMETERS = LS_CTRLOP
USER_SETTINGS = 'X'
IMPORTING
JOB_OUTPUT_OPTIONS = LS_OPTIONS
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF. CALL FUNCTION LV_FMNAME
EXPORTING
OUTPUT_OPTIONS = LS_COMPOP
CONTROL_PARAMETERS = LS_CTRLOP
USER_SETTINGS = ' '
IMPORTING
JOB_OUTPUT_INFO = LS_RETURN
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
ENDIF. CALL FUNCTION 'SSF_CLOSE'
IMPORTING
JOB_OUTPUT_INFO = LS_INFO
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
APPEND LINES OF LS_INFO-OTFDATA TO LT_OTF.
ENDIF. CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
PDF_USERNAME = 'TIANCZ'
IMPORTING
BIN_FILESIZE = LV_SIZE
BIN_FILE = LV_BENFILE
TABLES
OTF = LT_OTF
LINES = LT_TLINE
EXCEPTIONS
ERR_MAX_LINEWIDTH = 1
ERR_FORMAT = 2
ERR_CONV_NOT_POSSIBLE = 3
ERR_BAD_OTF = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF. IF LV_BENFILE IS NOT INITIAL.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
BUFFER = LV_BENFILE
IMPORTING
OUTPUT_LENGTH = LV_SIZE
TABLES
BINARY_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'
EXPORTING
DOCUMENT_DATA = LS_DOC_CHNG " 邮件属性
PUT_IN_OUTBOX = ''
COMMIT_WORK = 'X'
TABLES
PACKING_LIST = GT_OBJPACK " 邮件内容
CONTENTS_BIN = GT_OBJBIN " 附件内容(二进制)
CONTENTS_TXT = GT_OBJTXT " 邮件内容(直接填入)
RECEIVERS = GT_RECLIST " 收件箱地址
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
DOCUMENT_TYPE_NOT_EXIST = 3
OPERATION_NO_AUTHORIZATION = 4
PARAMETER_ERROR = 5
X_ERROR = 6
ENQUEUE_ERROR = 7
OTHERS = 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.
"-----------------------------------------@斌将军--------------------------------------------

邮箱发送SMARTFORMS 转 PDF附件的更多相关文章

  1. spring 实现邮箱发送

    使用spring mail 实现的邮箱发送功能,包括附件的发送(附件发送要保证附件存在的路径是真实),使用maven集成jar包,通过spring mvc 实现前后台的调用,发送方使用的是163邮箱, ...

  2. 飘逸的python - 发送带各种类型附件的邮件

    上一篇博文演示了如何发送简单的邮件,这一篇将演示如何发送各种类型的附件. 基本思路就是,使用MIMEMultipart来标示这个邮件是多个部分组成的,然后attach各个部分.如果是附件,则add_h ...

  3. python - 发送带各种类型附件的邮件

    如何发送各种类型的附件. 基本思路就是,使用MIMEMultipart来标示这个邮件是多个部分组成的,然后attach各个部分.如果是附件,则add_header加入附件的声明. 在python中,M ...

  4. VC++ 利用MAPI实现在程序中调用默认的电子邮件程序发送EMAIL(可以添加附件)。

    1.利用ShellExecute 可以条用默认邮件客户端,但不能发送带附件的邮件 mailto:用户账号@邮件服务器地址?subject=邮件主题&body=邮件正文   如:ShellExe ...

  5. java邮件发送 qq与163邮箱互发和qq和163邮箱发送其他邮箱实例

    研究了近一天的时间,通过查阅相关资料,终于对java发送邮件的机制,原理有了一点点的理解,希望能够帮到大家! 1.首先要向你的项目里导入1个jar包:mail-1.4.4.jar即可(实现qq和163 ...

  6. java邮箱发送

    一.为何要使用邮箱发送 相信大家在日常工作生活中少不了和邮件打交道,比如我们会用邮件进行信息交流,向上级汇报日常工作:邮件发送的原理是什么?邮件是如何发送的呢?本系列教程将会讲解邮件如何申请可用jav ...

  7. VC++ 使用ShellExecute函数调用邮箱客户端发送邮件(可以带附件)

      之前写过一篇博文,通过MAPI实现调用邮箱客户端发送邮件带附件,当时对ShellExecute研究不深,以为ShellExecute不能带附件,因为项目需求原因(MAPI只能调用Foxmail和O ...

  8. [Xcode 实际操作]八、网络与多线程-(7)使用MessageUI框架,创建并发送一封带有附件的邮件

    目录:[Swift]Xcode实际操作 本文将演示如何使用MessageUI框架,创建并发送一封带有附件的邮件. 使用邮件编辑视图控制器(MFMailComposeViewController)实现邮 ...

  9. SpringBoot中快速实现邮箱发送

    前言 在许多企业级项目中,需要用到邮件发送的功能,如: 注册用户时需要邮箱发送验证 用户生日时发送邮件通知祝贺 发送邮件给用户等 创建工程导入依赖 <!-- 邮箱发送依赖 --> < ...

  10. python邮箱发送

    普通发送邮件 使用email模块和stmplib模块,内容比较固定,配好了即可实现,代码如下 一.普通邮箱发送 # -*- coding:utf-8-*- import smtplib from em ...

随机推荐

  1. JavaSE中的一些面试题

    list与Set区别 List 和 Set 是 Java 集合中两个重要的接口,它们在数据存储.数据查找.数据操作等方面有以下几个不同点: 1. 数据存储方式不同:List 是一个有序的 Collec ...

  2. Windows 11 + Samsung 980 踩坑:在 LocalDB 15.0 实例启动期间出错: 无法启动 SQL Server 进程(附赠 查询指定日期范围内的前1000条SQL执行记录)

    Windows 11 + Samsung 980 踩坑:在 LocalDB 实例启动期间出错: 无法启动 SQL Server 进程 起因 用 Microsoft Visual Studio 2022 ...

  3. bash shell笔记整理——外部命令和内部命令区别

    linux命令的类别: 外部命令 内部命令 什么是内部命令 bash shell程序内部自带的命令. 什么是外部命令 不是bash shell内建命令,bash会根据用户给定的命令从PATH环境变量中 ...

  4. SpringBoot 这么实现动态数据源切换,就很丝滑!

    大家好,我是小富- 简介 项目开发中经常会遇到多数据源同时使用的场景,比如冷热数据的查询等情况,我们可以使用类似现成的工具包来解决问题,但在多数据源的使用中通常伴随着定制化的业务,所以一般的公司还是会 ...

  5. 2023"安洵杯"第六届网络安全挑战赛-Misc WP

    dacongのsecret 题目 我的解答: 题目给出一张png图片和一个加密压缩包,压缩包里面还存在另一张jpg图片 看名字就知道是盲水印.由于压缩包里的图片提不出来,因此是单图盲水印,我们使用工具 ...

  6. 数字孪生结合GIS能够在公共交通领域作出什么贡献?

    数字孪生结合地理信息系统(GIS)在公共交通领域具有潜在的重大贡献,这种结合可以帮助城市更高效地规划.运营和改进公共交通系统.以下是一些关键方面的讨论,以说明数字孪生和GIS在这一领域的作用: 数字孪 ...

  7. SQL注入Fuzzing字典

    需要的自取 ' " # - -- ' -- --'; ' ; = ' = ; = -- \x23 \x27 \x3D \x3B' \x3D \x27 \x27\x4F\x52 SELECT ...

  8. history详解

    linux下history命令详解 如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率.本文将通过实例的方式向你介绍 history 命令的 15 个用法. ...

  9. jpa整合mybatis模板解析、hibernate整合mybatis模板解析

    jpa整合mybatis模板解析.hibernate整合mybatis模板解析 jpa是hibernate的封装,主要用于spring全家桶套餐. hibernate难以编写复杂的SQL.例如一个订单 ...

  10. .NET Web应用配置本地IIS(实现Visual Studio离线运行与调试)

    前言: 因为项目程序需要频繁的修改,然后每次修改以后都要重新编译才能查看到修改的效果.而且有时候前端也需要及时的对接我们的接口,导致每次修改一点东西都要发布一次,这样子对于开发者而言是十分的浪费时间, ...