SAP ABAP 直接把内表转换成PDF格式(smartform的打印函数输出OTF格式数据)
直接上代码:
REPORT zcycle055.DATA: lt_tab TYPE TABLE OF zpps001.
DATA: ls_tab TYPE zpps001.ls_tab-werks = '1001'.
ls_tab-gamng = '150.00'.
ls_tab-gstrp = '20201202'.
ls_tab-aufnr = '000010000246'.
ls_tab-auart = '标准生产'.
ls_tab-gltrp = '20201205'.
ls_tab-matnr = '04-r02a000-00005'.
ls_tab-maktx = 'Cycle is handsome!'.
ls_tab-ernam = 'lf002'.
ls_tab-erdat = '20201202'.
ls_tab-zcwb = 'MO20120003'.
ls_tab-zdddw = '盒'.
ls_tab-ftrmi = '20201210'.
ls_tab-zzczgsmc = 'Cycle有限责任公司'.APPEND ls_tab TO lt_tab.
CLEAR ls_tab.PERFORM export_pdf.FORM export_pdf.DATA:zsmart_name TYPE rs38l_fnam.CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'EXPORTINGformname           = 'ZPP001'IMPORTINGfm_name            = zsmart_nameEXCEPTIONSno_form            = 1no_function_module = 2OTHERS             = 3.DATA: w_ctrlop TYPE ssfctrlop, "Smart Forms: 控制结构 "W_CONTROLw_compop TYPE ssfcompop, "SAP Smart Forms: 智能写作器 (传输) 选项"W_OUTPUT.w_return TYPE ssfcrescl. "Smart Forms: 表格打印结束时返回值DATA: len           TYPE i,w_filesize    TYPE i,g_pdf_xstring TYPE xstring,l_lines       TYPE TABLE OF tline WITH HEADER LINE.DATA  doctab TYPE TABLE OF docs WITH HEADER LINE.DATA  itab LIKE tline OCCURS 0 WITH HEADER LINE.DATA: file_name TYPE string,fullpath  TYPE string,path      TYPE string,p_sefile  LIKE rlgrap-filename VALUE 'D:\'.           "'/usr/sap/tmp/'.w_ctrlop-getotf    = 'X'."OTF 表的返回w_ctrlop-no_dialog = 'X'."关闭打印对话框"w_ctrlop-no_open   = 'X'."no dialog box"w_ctrlop-no_close  = 'X'."no*&W_COMPOP-TDNOPRINT = 'X'.w_compop-tdnoprev  = 'X'."没有打印预览"W_COMPOP用来设置打印参数弹出对话框中的值,下面这几个参数不必要
*  W_COMPOP-TDNEWID  = 'X'.    "New Spoolw_compop-tdimmed  = 'X'.w_compop-tddelete = ''.    "Delete Spool After Printw_compop-tdfinal  = 'X'.w_compop-tdiexit  = 'X'.    "Exit after printing in print previeww_compop-tddest   = 'lp01'.  "设备名称w_compop-xdf2outdev = 'lp01'.w_compop-tdarmod  = '1'.w_compop-tdnoprev = 'X'.        "隐藏报表预览功能,默认为空*&smartforms打印 ,将打印的值输入到W_RETURN-OTFDATA[]中CALL FUNCTION zsmart_nameEXPORTINGcontrol_parameters = w_ctrlopoutput_options     = w_compop
*     totalpages         = totalpages
*     zbukrs             = p_bukrs
*     zcb                = cb"gth_header         = gth_alv_selIMPORTINGjob_output_info    = w_returnTABLESt_item             = lt_tab  "传所选行项目明细内表 传到sfEXCEPTIONSformatting_error   = 1internal_error     = 2send_error         = 3user_canceled      = 4OTHERS             = 5."CONVERT_OTF函数取不到lines的返回值
"但是可以直接获取到PDF数据的XSTRING数据,可以用于后台直接OPEN DATASET 生成文件CALL FUNCTION 'CONVERT_OTF'EXPORTINGformat                = 'PDF'IMPORTINGbin_filesize          = lenbin_file              = g_pdf_xstringTABLESotf                   = w_return-otfdata[]lines                 = itabEXCEPTIONSerr_max_linewidth     = 1err_format            = 2err_conv_not_possible = 3err_bad_otf           = 4OTHERS                = 5."后台OPEN DATASET 直接生成PDF文件CONCATENATE p_sefile sy-uname '-' sy-uzeit '.pdf' INTO file_name. "addrssOPEN DATASET file_name FOR OUTPUT IN BINARY MODE." MESSAGE L_MESSAGE_DB.IF sy-subrc EQ 0.TRANSFER g_pdf_xstring TO file_name.CLOSE DATASET file_name.ELSE.MESSAGE 'OPEN ERROR!!' TYPE 'E'.STOP.ENDIF."CONVERT_OTF_2_PDF 可以生成PDF格式的内表CALL FUNCTION 'CONVERT_OTF_2_PDF'   "转换otf数据为二进制PDF文件,可以用于前台直接下载PDF文件
*    EXPORTING
*      use_otf_mc_cmd         = 'X'
*      archive_index          = archive_indexIMPORTINGbin_filesize           = lenTABLESotf                    = w_return-otfdata[]doctab_archive         = doctablines                  = l_lines[]EXCEPTIONSerr_conv_not_possible  = 1err_otf_mc_noendmarker = 2.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF."前台下载PDF文件CONCATENATE 'D:\' sy-uname '-' sy-uzeit ' FFF.pdf' INTO  file_name."定义文件名"这一段不屏蔽,  在打印的时候会有显示选择路径的对话框,屏蔽则直接保存在上面的文件名"file_name  指定的路径CALL METHOD cl_gui_frontend_services=>file_save_dialog    "保存文件窗口(选择路径)EXPORTINGdefault_extension    = 'PDF'file_filter          = '*.PDF'default_file_name    = file_nameCHANGINGfilename             = file_namepath                 = pathfullpath             = fullpath
*     user_action          = uaEXCEPTIONScntl_error           = 1error_no_gui         = 2not_supported_by_gui = 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.CALL FUNCTION 'GUI_DOWNLOAD'   "保存文件在本地EXPORTINGbin_filesize            = lenfilename                = file_namefiletype                = 'BIN'IMPORTINGfilelength              = w_filesizeTABLESdata_tab                = l_lines[]EXCEPTIONSfile_write_error        = 1no_batch                = 2gui_refuse_filetransfer = 3invalid_type            = 4no_authority            = 5unknown_error           = 6header_not_allowed      = 7separator_not_allowed   = 8filesize_not_allowed    = 9header_too_long         = 10dp_error_create         = 11dp_error_send           = 12dp_error_write          = 13unknown_dp_error        = 14access_denied           = 15dp_out_of_memory        = 16disk_full               = 17dp_timeout              = 18file_not_found          = 19dataprovider_exception  = 20control_flush_error     = 21OTHERS                  = 22.IF sy-subrc <> 0.MESSAGE  'File not downloaded'  TYPE  'I' .ENDIF.ENDIF.ENDFORM.                    "export_pdf
效果:
 直接把文件下载到桌面
 
打开文件
 
 更多细节可以参考大佬的文章:https://www.cnblogs.com/buduzhiren/p/10754617.html
相关文章:
 
SAP ABAP 直接把内表转换成PDF格式(smartform的打印函数输出OTF格式数据)
直接上代码: REPORT zcycle055.DATA: lt_tab TYPE TABLE OF zpps001. DATA: ls_tab TYPE zpps001.ls_tab-werks 1001. ls_tab-gamng 150.00. ls_tab-gstrp 20201202. ls_tab-aufnr 000010000246. ls_tab-auart 标准生产. ls_tab-gltrp 20201205. ls_tab-matn…...
 
侯捷 C++ part2 兼谈对象模型笔记——7 reference、const、new/delete
7 reference、const、new/delete 7.1 reference x 是整数,占4字节;p 是指针占4字节(32位);r 代表x,那么r也是整数,占4字节 int x 0; int* p &x; // 地址和指针是互通的 int& r x;…...
C++学习笔记总结练习:primer 学习日志
文章目录 针对自己的引言学习内容c语言基础知识1.为什么要声明变量2.cout ,cin3.c 不容许一个函数定义嵌套到另一个函数的定义中。4.编译指令using5.c基本类型长度6.在定义常量时尽可能使用const 关键字而不用#define9.前缀递增符与后缀递增符的区别10.c中的cctype库11.c 中的s…...
 
发布一个开源的新闻api(整理后就开源)
目录 说明: 基础说明 其他说明: 通用接口: 登录: 注册: 更改密码(需要token) 更换头像(需要token) 获取用户列表(需要token): 上传文件(5000端口): 获取文件(5000端口)源码文件,db文件均不能获取: 验证token(需要token): 获取系统时间: 文件…...
 
3d max省时插件CG MAGIC功能中的材质参数可一键优化!
渲染的最终结果就是为了让渲染效果更加真实的体现。 对于一些操作上,可能还是费些时间,VRay可以说是在给材质做加法的路上越走越远,透明度、凹凸、反射等等参数细节越做越多。 对于材质参数调节的重要性大家都心里有数的。 VRay材质系统的每…...
 
什么是变量提升(hoisting)?它在JavaScript中是如何工作的?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 变量提升(Hoisting)⭐ 变量提升的示例:⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&…...
.git内存清理方式
查看前15个大文件 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -15 | awk {print$1})"删除文件夹(public/housimg文件夹目录) git filter-branch --tree-filter rm -rf publ…...
 
i.MX6ULL开发板无法进入NFS挂载文件系统的解决办法
问题 使用NFS网络挂载文件系统后卡住无法进入系统。 解决办法 此处不详细讲述NFS安装流程 查看板卡挂载在/home/etc/rc.init下的自启动程序 进入到../../home/etc目录下,查看rc.init文件,首先从第一行排查,查看/home/etc/netcfg文件代码内容&…...
 
七夕特辑——3D爱心(可监听鼠标移动)
前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄ÿ…...
 
C++函数模板和类模板
C另一种编程思想称为泛型编程,主要利用的技术是模板 C提供两种模板机制:函数模板和类模板 C提供了模板(template)编程的概念。所谓模板,实际上是建立一个通用函数或类, 其类内部的类型和函数的形参类型不具体指定, 用…...
【Unity】编辑器下查找制定文件下的所有特定资源
需求上很简单,就是在编辑器下,找到某个制定文件下的所有特定资源(UnityEngine.Object)。Unity 没有提供专门的 API,我一开始想在网上搜索代码,发现没有现成可以直接用的。 功能实现本身并不复杂,…...
 
分布式唯一ID实战
目录 一、UUID二、数据库方式1、数据库生成之简单方式2、数据库生成 - 多台机器和设置步长,解决性能问题3、Leaf-segment 方案实现4、双 buffer 优化5、Leaf高可用容灾 三、基于Redis实现分布式ID四、雪花算法1、雪花算法介绍2、 雪花算法生产环境架构:3…...
el-element日期时间组件限制可选时间范围
<el-date-pickerv-model"formData.meetingTime"type"datetime"value-format"yyyy-MM-dd HH:mm:ss"style"width: 100%"placeholder"请选择日期"clearable:picker-options"pickerOptions"></el-date-picke…...
【李沐】3.3线性回归的简洁实现
1、生成数据集 import numpy as np import torch from torch.utils import data from d2l import torch as d2l true_w torch.tensor([2, -3.4]) # 定义真实权重 true_w,其中 [2, -3.4] 表示两个特征的权重值 true_b 4.2 # 定义真实偏差 true_b,表示…...
 
Ghost-free High Dynamic Range Imaging withContext-aware Transformer
Abstract 高动态范围(HDR)去鬼算法旨在生成具有真实感细节的无鬼HDR图像。 受感受野局部性的限制,现有的基于CNN的方法在大运动和严重饱和度的情况下容易产生重影伪影和强度畸变。 本文提出了一种新的上下文感知视觉转换器(CA-VIT)用于高动态…...
 
过来,我告诉你个秘密:送给程序员男友最好的礼物,快教你对象学习磁盘分区啦!小点声哈,别让其他人学会了!
[原文连接:来自给点知识](过来,我告诉你个秘密:送给程序员男友最好的礼物,快教你对象学习磁盘分区啦!小点声哈,别让其他人学会了!) 再唱不出那样的歌曲 听到都会红着脸躲避 虽然会经常忘了我依然爱着你 …...
 
Cadence+硬件每日学习十个知识点(38)23.8.18 (Cadence的使用,界面介绍)
文章目录 1.Cadence有共享数据库的途径2.Cadence启动3.Cadence界面菜单简介(file、edit、view、place、options)4.Cadence界面的图标简介5.我的下载资源有三本书 1.Cadence有共享数据库的途径 答: AD缺少共享数据库的途径,目前我…...
 
React Native Expo项目,复制文本到剪切板
装包: npx expo install expo-clipboard import * as Clipboard from expo-clipboardconst handleCopy async (text) > {await Clipboard.setStringAsync(text)Toast.show(复制成功, {duration: 3000,position: Toast.positions.CENTER,})} 参考链接:…...
 
React源码解析18(5)------ 实现函数组件【修改beginWork和completeWork】
摘要 经过之前的几篇文章,我们实现了基本的jsx,在页面渲染的过程。但是如果是通过函数组件写出来的组件,还是不能渲染到页面上的。 所以这一篇,主要是对之前写得方法进行修改,从而能够显示函数组件,所以现…...
 
vscode ssh 远程 gdb 调试
一、点运行与调试,生成launch.json 文件 二、点添加配置,选择GDB 三、修改启动程序路径...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
 
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
 
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
 
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
 
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
 
手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
