打印详细讲解

news/2024/7/8 6:25:39 标签: 前端
DATA: lv_func_module_name   TYPE rs38l_fnam, "打印程序函数名
      lv_sformname          TYPE tdsfname, "smartforms名称
      ls_control_parameters TYPE ssfctrlop,
      ls_output             TYPE ssfcompop,
      ls_job_output_info    TYPE ssfcrescl,
      ls_ssfcrespd          TYPE ssfcrespd,
      lv_index              TYPE i.

"PDF变量
DATA:lv_file_size TYPE i, "PDF文件大小
     lv_bin_fiel  TYPE xstring, "二进制文件流
     lt_lines     TYPE STANDARD TABLE OF tline,
     lt_otfdata   TYPE tsfotf. "OTF数据

  lv_sformname = 'ZSFPP_001'.

  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname           = lv_sformname
    IMPORTING
      fm_name            = lv_func_module_name
    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.

* 打印参数赋值
  ls_control_parameters-no_open = 'X'.
  ls_control_parameters-no_close = ''.    
  ls_control_parameters-getotf          = 'X'."返回OTF表

 LOOP AT gt_data5 ASSIGNING FIELD-SYMBOL(<fs_data5>) .

      AT END OF lgort.

        CALL FUNCTION 'SSF_OPEN'
          EXPORTING
            control_parameters = ls_control_parameters
          EXCEPTIONS
            formatting_error   = 1
            internal_error     = 2
            send_error         = 3
            user_canceled      = 4
            OTHERS             = 5.

        "调用smartforms
        CALL FUNCTION lv_func_module_name
          EXPORTING
            control_parameters = ls_control_parameters
            gs_head            = gs_data7
            gv_title           = gv_title
          IMPORTING
            job_output_info    = ls_job_output_info
          TABLES
            gt_item            = gt_data7
          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.

        "OTF数据赋值
        APPEND LINES OF ls_job_output_info-otfdata TO lt_otfdata.

      ENDAT.

    ENDLOOP.
   
    CALL FUNCTION 'SSF_CLOSE'
      EXCEPTIONS
        formatting_error = 1
        internal_error   = 2
        send_error       = 3
        OTHERS           = 4.
 
   "SMARTFORMS转PDF
    CALL FUNCTION 'CONVERT_OTF'
      EXPORTING
        format                = 'PDF'
      IMPORTING
        bin_filesize          = lv_file_size
      TABLES
        otf                   = lt_otfdata
        lines                 = lt_lines
      EXCEPTIONS
        err_max_linewidth     = 1
        err_format            = 2
        err_conv_not_possible = 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.
    ENDIF.

***BEGIN&-------------------保存PDF文件到本地----------------******************************
    DATA: lv_filename TYPE string, "保存pdf文件名
          lv_path     TYPE string,
          lv_fullpath TYPE string, "文件全路径
          lv_user_act TYPE i. "用户操作类型

    lv_filename = gv_title && '.pdf'.
    CALL METHOD cl_gui_frontend_services=>file_save_dialog "保存文件 窗口
      EXPORTING
        window_title              = '保存文件'
        default_extension         = 'PDF' "文件后缀
        default_file_name         = lv_filename "文件名
*       with_encoding             =
        file_filter               = '*.PDF'
*       initial_directory         =
        prompt_on_overwrite       = 'X'
      CHANGING
        filename                  = lv_filename
        path                      = lv_path
        fullpath                  = lv_fullpath
        user_action               = lv_user_act "用户操作类型
*       file_encoding             =
      EXCEPTIONS
        cntl_error                = 1
        error_no_gui              = 2
        not_supported_by_gui      = 3
        invalid_default_file_name = 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.
      IF lv_user_act = cl_gui_frontend_services=>action_cancel.
        MESSAGE '取消存取' TYPE 'S' DISPLAY LIKE 'E'.
      ENDIF.
    ENDIF.

    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        bin_filesize            = lv_file_size
        filename                = lv_fullpath
        filetype                = 'BIN'
*       APPEND                  = ' '
*   IMPORTING
*       FILELENGTH              =
      TABLES
        data_tab                = lt_lines
*       FIELDNAMES              =
      EXCEPTIONS
        file_write_error        = 1
        no_batch                = 2
        gui_refuse_filetransfer = 3
        invalid_type            = 4
        no_authority            = 5
        unknown_error           = 6
        header_not_allowed      = 7
        separator_not_allowed   = 8
        filesize_not_allowed    = 9
        header_too_long         = 10
        dp_error_create         = 11
        dp_error_send           = 12
        dp_error_write          = 13
        unknown_dp_error        = 14
        access_denied           = 15
        dp_out_of_memory        = 16
        disk_full               = 17
        dp_timeout              = 18
        file_not_found          = 19
        dataprovider_exception  = 20
        control_flush_error     = 21
        OTHERS                  = 22.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

方法二:smartforms转换成PDF[CONVERT_OTF] | 摆渡SAP (baidusap.com)

Smart Form主要通过SSFCTRLOP和SSFCOMPOP两个参数来配置打印控制的

http://www.niftyadmin.cn/n/5536632.html

相关文章

昇思学习打卡-5-基于Mindspore实现BERT对话情绪识别

本章节学习一个基本实践–基于Mindspore实现BERT对话情绪识别 自然语言处理任务的应用很广泛&#xff0c;如预训练语言模型例如问答、自然语言推理、命名实体识别与文本分类、搜索引擎优化、机器翻译、语音识别与合成、情感分析、聊天机器人与虚拟助手、文本摘要与生成、信息抽…

如何在Java中实现高性能的网络通信

如何在Java中实现高性能的网络通信 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. 引言 在当今互联网时代&#xff0c;高性能的网络通信是构建大规模分布…

latex 报错解决①aligned ②begin document

1. 是aligned&#xff0c;不是align&#xff01;&#xff01; 网上写的公式大多是这样的 \begin{equation}\label{eq:2} \begin{align} Q\left( {s,t} \right) a{s^2} 2bst c{t^2} 2ds 2et f \end{align} \end{equation}但是报错&#xff1a; ! Package amsmath Erro…

去中心化 RAG 先行者,KIP Protocol 如何保护数据所有权、激活 AI 资产

AI 时代&#xff0c;人人都应实现 KnowledgeFi 的梦想或许并不遥远&#xff0c;KIP Protocol 正在生动践行这一价值理念&#xff0c;带动去中心化数字产权的创建与盈利&#xff0c;面向 CryptoAI 的蓝海市场迈出创新探索的技术步伐&#xff0c;朝着 Web3 行业打造去中心化 AI 的…

深入了解Linux中的udhcpc:动态主机配置协议客户端

目录 什么是udhcpc&#xff1f;安装udhcpc配置网络接口使用udhcpc获取IP地址配置静态IP地址自定义udhcpc脚本高级选项udhcpc常见问题及排查方法1. 无法获取IP地址2. DNS配置不正确3. IP地址冲突4. 无法连接到默认网关5. 无法执行自定义脚本 在Linux系统中&#xff0c;网络配置是…

Uniapp的简要开发流程指南

Uniapp开发指南 简介 Uniapp 是由DCloud推出的一款基于Vue.js的多端开发框架&#xff0c;支持编译到iOS、Android、H5、以及各大小程序平台&#xff08;如微信小程序、支付宝小程序、百度小程序等&#xff09;。它使开发者可以通过一次编码&#xff0c;实现跨平台的应用发布&…

线程池的七大核心参数

今天了解到线程池的七大核心参数包括&#xff1a; 1. 核心线程数&#xff08;corePoolSize&#xff09;&#xff1a;线程池中能够同时执行的线程数量。 2. 最大线程数&#xff08;maximumPoolSize&#xff09;&#xff1a;线程池中允许的最大线程数量。 3. 线程空闲时间&#…

Angluar 实现pdf页面预览以及编辑

之前用过一个pdf预览的lib&#xff0c;并且还支持在线编辑&#xff0c;和直接下载编辑之后的pdf和直接打印&#xff0c;还不错&#xff0c;记录下 PdfShowcase 首先安装依赖 npm install ngx-extended-pdf-viewer 然后引入 import { NgxExtendedPdfViewerModule } from &q…