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

SMARTFORM不同模板一起打印

一、背景

由于客户提出发货单要加上条形码打印,条形码单独一个模板,加在后面打印,输出PDF并发送邮件。

二、效果展示

不同模板一起打印效果如下,建立smartforms的表单时,也使用了两个不同的模板

三、smartforms建立表单

(一)条形码

事务码:SE73

设置条形码长宽高

SMARTFORMS设置条形码格式

(二)表单

主窗口采用table的方式,可以实现自动换行,会比使用模板更好。但是使用table我遇到一个未解决的问题。在条件那里加上比较值的判断未生效,比如加上header的语言判断,使用不同文本,就未生效,如果是判断这个字段是否为空是生效的,很奇怪,希望大佬们指点一下。

在smartforms 里面填写内容的时候,将字段的格式选择为设置的格式就可以了,系统会自动的将字段的内容转换成条形码的格式

四、代码

(一)示例

打印,发送邮件会单独放一期来写,这里只到输出PDF字符

DATA:gcos_sfname TYPE tdsfname, gcos_sfname_2 TYPE tdsfname. DATA: l_fnam TYPE rs38l_fnam, " Function name l_fnam_2 TYPE rs38l_fnam, l_ctrlparm TYPE ssfctrlop, " Control parameters for smartforms l_output_info TYPE ssfcrescl. " job output infomation for smartforms DATA: t_control_parameters TYPE ssfctrlop, t_output_options TYPE ssfcompop. DATA: git_lines TYPE STANDARD TABLE OF tline, git_lines_2 TYPE STANDARD TABLE OF tline. DATA: gs_lines TYPE solix_tab . DATA:gs_lines_2 TYPE solix_tab. DATA:lv_xstring TYPE xstring, lv_xstring_2 TYPE xstring. IF wa_header-country = 'CN'. gcos_sfname = 'ZSDF003_SF_V1'. gcos_sfname_2 = 'ZSDF003_SF_CODE'. ELSE. gcos_sfname = 'ZSDF003_SF_EN'. gcos_sfname_2 = 'ZSDF003_SF_CODE_EN'. ENDIF. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = gcos_sfname "SMARTFORMS 名称 * VARIANT = ' ' * DIRECT_CALL = ' ' IMPORTING fm_name = l_fnam "转换后的函数名 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. t_output_options-tdiexit = 'X'. "这个参数,最后一次打印一定要是X,前面的几次都是空,才会连续打印 * t_control_parameters-no_close = 'X'. t_control_parameters-no_dialog = 'X'. "设置了不弹出对话框 t_control_parameters-getotf = 'X'. "要导出PDF,这个参数一定要设:OTF 表的返回 IF p_code = 'X'. "选择了条码打印 t_control_parameters-no_close = 'X'. ELSE. t_control_parameters-no_close = ''. ENDIF. CALL FUNCTION l_fnam EXPORTING control_parameters = t_control_parameters "连续预览 output_options = t_output_options "默认打印选项设置传输 wa_header = wa_header IMPORTING job_output_info = t_otf_from_fm TABLES it_item = it_tab it_item2 = it_tab2 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. t_control_parameters-no_open = 'X'. "未知 ENDIF. "执行打印功能后,进行的操作,如数据库之类的 CALL FUNCTION 'CONVERT_OTF' EXPORTING format = 'PDF' IMPORTING bin_file = lv_xstring TABLES otf = t_otf_from_fm-otfdata[] lines = git_lines EXCEPTIONS err_max_linewidth = 1 err_format = 2 err_conv_not_possible = 3 OTHERS = 4. "转换二进制 CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING buffer = lv_xstring TABLES binary_tab = gs_lines. IF p_code = 'X'. t_control_parameters-no_close = space. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = gcos_sfname_2 "SMARTFORMS 名称 * VARIANT = ' ' * DIRECT_CALL = ' ' IMPORTING fm_name = l_fnam_2 "转换后的函数名 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 l_fnam_2 EXPORTING control_parameters = t_control_parameters "连续预览 output_options = t_output_options "默认打印选项设置传输 * wa_header = wa_header IMPORTING job_output_info = t_otf_from_fm_2 TABLES it_item = it_tab_code * it_item2 = it_tab2 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. t_control_parameters-no_open = 'X'. "未知 ENDIF. ENDIF. CALL FUNCTION 'CONVERT_OTF' EXPORTING format = 'PDF' IMPORTING bin_file = lv_xstring_2 TABLES otf = t_otf_from_fm_2-otfdata[] "PDF字符最终会存储到这里,前面的会是空 lines = git_lines_2 EXCEPTIONS err_max_linewidth = 1 err_format = 2 err_conv_not_possible = 3 OTHERS = 4. "转换二进制 CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING buffer = lv_xstring_2 TABLES binary_tab = gs_lines_2. APPEND LINES OF gs_lines_2 TO gs_lines.

(二)补充

如果不需要发送PDF邮件,则不需要输出下面这一段,在打印完结束即可

"执行打印功能后,进行的操作,如数据库之类的 CALL FUNCTION 'CONVERT_OTF' EXPORTING format = 'PDF' IMPORTING bin_file = lv_xstring TABLES otf = t_otf_from_fm-otfdata[] lines = git_lines EXCEPTIONS err_max_linewidth = 1 err_format = 2 err_conv_not_possible = 3 OTHERS = 4. "转换二进制 CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING buffer = lv_xstring TABLES binary_tab = gs_lines.
http://www.jsqmd.com/news/862003/

相关文章:

  • 计算机毕业设计 | SpringBoot+vue医院药品管理系统(附源码+论文)
  • 彻底掌控Windows Defender:开源工具defender-control完全指南
  • 中画幅风格仅限Pro订阅者可用?不!3个未公开API参数+本地化--seed锁定技巧,让免费账户稳定输出中画幅质感
  • 在家办公效率低?试试这个“空间切换”技巧
  • Word文档保护技巧:防止内容被轻易复制
  • 2026年4月钢边止水带企业推荐分析,聚乙烯闭孔泡沫板/聚乙烯泡沫棒/钢边止水带/橡胶止水带,钢边止水带生产厂家找哪家 - 品牌推荐师
  • STM32矩阵按键详解——4×4行列扫描与非阻塞消抖(硬件总结六)
  • 把SAC model的数据导出到BW的ADSO中
  • 几十万买的数字孪生低代码平台集体落灰?被隐瞒的落地真相,终于说透了
  • 【Unity】MiniGame编辑器小游戏(十六)中国象棋局域网对战【Chinese Chess】(下)
  • 变压器设计-基于AP法
  • 408 每日一题 Day 2:二叉树的重构与遍历
  • 强制启动 Cursor IDE 主程序(不带 Agent 模式)
  • leetcode思路-236 二叉树的最近公共祖先
  • 最常见的漏洞有哪些?如何发现存在的漏洞呢
  • 分布式团队的代码协作规范:从分支策略到提交信息格式
  • 联想拯救者工具箱终极指南:释放游戏本性能的免费开源神器
  • 模块化机房建设解决方案
  • Cell Host Microbe | 西奈山伊坎医学院房刚团队揭示肠道微生物的表观遗传“押注对冲“策略
  • 同层排水45°和90°弯头,怎么使用才能避免堵塞、返水......
  • 用Claude Code做了一件事,现在AI比我还了解我?
  • 别再叠加加载了!一文讲透GB4053.2钢斜梯有限元分析,90%的人都搞错了!
  • 嘉立创EDA:原理图到PCB学习总结
  • Skillhub网站
  • 忙碌”幻觉:你以为在推进项目,其实只是在逃避
  • 全球石墨纤维粉市场分析与行业发展趋势
  • 对比直接使用厂商API与通过Taotoken调用的体验差异
  • 告别被封号!这款30项检测全过的“隐形浏览器”火了
  • 短波通讯:魔术6米波
  • 通宵降AI率?10款降AI工具亲测:哪个神器一次过,哪个白花钱