事务代码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. VScode怎么实现c的运行,这里只讲述一些细节

    第一下载的Vscode要设置信任模式,否则你后面搞什么都没有用 第二下载minGw还是gcc 都行 第三安装插件,c,c++. 然后编译就行了,我搞了一天,主要弹出的是未找到exe文件,但是我告诉大家 ...

  2. Android辅助功能

    1:AccessibilityService 新建service public class AccessibilityService extends android.accessibilityserv ...

  3. Python——第一章:用户交互

    变量 = input(提示语)首先会在屏幕中显示出提示语, 用户输入内容. 然后把用户输入的内容交给前面的变量 案例1: a = input("请输入第一个数字:") #括号里是提 ...

  4. 报错信息如下:出现身份验证错误。要求的函数不受支持。可能是由于CredSSP加密数据库修正。

    微软官方已出补丁包:CVE-2018-0886 的 CredSSP 更新 Windows Server 2016, all editions.Windows Server 2012 R2 Standa ...

  5. elasticsearch oom问题分析

    背景 线上发现elasticsearch集群状态red,并且有个es节点jvm内存使用不断升高,直到gc后依然内存不够使用,服务停止.查看日志,elasticsearch出现OOM报错. [2023- ...

  6. STM32CubeMX教程8 TIM 通用定时器 - 输出比较

    1.准备材料 开发板(STM32F407G-DISC1) ST-LINK/V2驱动 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) 逻 ...

  7. MyBatis中使用#{}和${}占位符传递参数的各种报错信息处理

    在Mapper层使@Select注解进行SQL语句查询时,往往需要进行参数传入和拼接,一般情况下使用两种占位符#{参数名}和${参数名},两者的区别为: 一.两种占位符的区别 1.参数传入方式的区别 ...

  8. 神经网络基础篇:详解二分类(Binary Classification)

    二分类 注:当实现一个神经网络的时候,通常不直接使用for循环来遍历整个训练集(编程tips) 举例逻辑回归 逻辑回归是一个用于二分类(binary classification)的算法.首先从一个问 ...

  9. 为什么浏览器会提示网站“不安全”?一文读懂https协议与SSL证书

    [摘要] 为什么浏览器会提示网站"不安全"?从浏览器的"不安全"提示来详细了解https与SSL证书.我们打开很多http网站时候,会看到浏览器提示" ...

  10. 数据库面试要点:关于MySQL数据库千万级数据查询和存储

    摘要:百万级.千万级数据处理,核心关键在于数据存储方案设计,存储方案设计的是否合理,直接影响到数据CRUD操作.总体设计可以考虑一下几个方面进行设计考虑: 数据存储结构设计:索引设计:数据主键设计:查 ...