SAP ABAP 直接把内表转换成PDF格式(smartform的打印函数输出OTF格式数据)

这篇具有很好参考价值的文章主要介绍了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'
    EXPORTING
      formname           = 'ZPP001'
    IMPORTING
      fm_name            = zsmart_name
    EXCEPTIONS
      no_form            = 1
      no_function_module = 2
      OTHERS             = 3.

  DATA: w_ctrlop TYPE ssfctrlop, "Smart Forms: 控制结构 "W_CONTROL
        w_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 Spool
  w_compop-tdimmed  = 'X'.
  w_compop-tddelete = ''.    "Delete Spool After Print
  w_compop-tdfinal  = 'X'.
  w_compop-tdiexit  = 'X'.    "Exit after printing in print preview
  w_compop-tddest   = 'lp01'.  "设备名称
  w_compop-xdf2outdev = 'lp01'.
  w_compop-tdarmod  = '1'.
  w_compop-tdnoprev = 'X'.        "隐藏报表预览功能,默认为空

*&smartforms打印 ,将打印的值输入到W_RETURN-OTFDATA[]CALL FUNCTION zsmart_name
    EXPORTING
      control_parameters = w_ctrlop
      output_options     = w_compop
*     totalpages         = totalpages
*     zbukrs             = p_bukrs
*     zcb                = cb
      "gth_header         = gth_alv_sel
    IMPORTING
      job_output_info    = w_return
    TABLES
      t_item             = lt_tab  "传所选行项目明细内表 传到sf
    EXCEPTIONS
      formatting_error   = 1
      internal_error     = 2
      send_error         = 3
      user_canceled      = 4
      OTHERS             = 5.

"CONVERT_OTF函数取不到lines的返回值
"但是可以直接获取到PDF数据的XSTRING数据,可以用于后台直接OPEN DATASET 生成文件
  CALL FUNCTION 'CONVERT_OTF'
    EXPORTING
      format                = 'PDF'
    IMPORTING
      bin_filesize          = len
      bin_file              = g_pdf_xstring
    TABLES
      otf                   = w_return-otfdata[]
      lines                 = itab
    EXCEPTIONS
      err_max_linewidth     = 1
      err_format            = 2
      err_conv_not_possible = 3
      err_bad_otf           = 4
      OTHERS                = 5.

  "后台OPEN DATASET 直接生成PDF文件
  CONCATENATE p_sefile sy-uname '-' sy-uzeit '.pdf' INTO file_name. "addrss
  OPEN 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_index
    IMPORTING
      bin_filesize           = len
    TABLES
      otf                    = w_return-otfdata[]
      doctab_archive         = doctab
      lines                  = l_lines[]
    EXCEPTIONS
      err_conv_not_possible  = 1
      err_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    "保存文件窗口(选择路径)
    EXPORTING
      default_extension    = 'PDF'
      file_filter          = '*.PDF'
      default_file_name    = file_name
    CHANGING
      filename             = file_name
      path                 = path
      fullpath             = fullpath
*     user_action          = ua
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 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.
    CALL FUNCTION 'GUI_DOWNLOAD'   "保存文件在本地
      EXPORTING
        bin_filesize            = len
        filename                = file_name
        filetype                = 'BIN'
      IMPORTING
        filelength              = w_filesize
      TABLES
        data_tab                = l_lines[]
      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  'File not downloaded'  TYPE  'I' .
    ENDIF.
  ENDIF.

ENDFORM.                    "export_pdf

效果:
直接把文件下载到桌面
SAP ABAP 直接把内表转换成PDF格式(smartform的打印函数输出OTF格式数据),笔记,pdf,linux,运维,SAP,abap

打开文件
SAP ABAP 直接把内表转换成PDF格式(smartform的打印函数输出OTF格式数据),笔记,pdf,linux,运维,SAP,abap
更多细节可以参考大佬的文章:https://www.cnblogs.com/buduzhiren/p/10754617.html文章来源地址https://www.toymoban.com/news/detail-651070.html

到了这里,关于SAP ABAP 直接把内表转换成PDF格式(smartform的打印函数输出OTF格式数据)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SAP/ABAP(二)

    一、循环结构 二、条件判断 三、异常处理(cx-root) 四、结构体,工作区 五、内表

    2024年02月17日
    浏览(40)
  • 图片转换成pdf格式?这几种转换格式方法了解一下

    图片转换成pdf格式?将图片转换成PDF格式的好处有很多。首先,PDF格式具有通用性,可以在几乎任何设备上查看。其次,PDF格式可以更好地保护文件,防止被篡改或者复制。此外,PDF格式还可以更好地压缩文件大小,使其更易于共享和传输。因此,将图片转换成PDF格式是一个

    2024年02月12日
    浏览(37)
  • 【SAP ABAP】SAP Webservice & RESTful 接口服务发布教程

    关于 WebService 概念,这篇文章讲解的非常全面,可以移步阅读《SAP Web service》。 本想通过 RFC 来发布 ODATA 服务,奈何当前 SAP ECC 版本过低不支持,只好采用其他方式来发布服务,于是就尝试了下面这两种方法。 SE37,创建以下测试用 RFC 测试执行 RFC,得到的数据结果如下图:

    2024年02月02日
    浏览(40)
  • SAP ABAP技术文章合集_微信公众号:ABAP猿

    序号 文章标题 01 ABAP OOALV-基本显示 02 ABAP OOALV-排序、过滤 03 ABAP OOALV-合计、小计 04 ABAP OOALV-选择模式、触发事件 05 ABAP OOALV-隐藏列、修改列标题、添加图标列、调整列位置 06 ABAP OOALV-固定列、鼠标悬停文本 07 ABAP OOALV-颜色(列、行、单元格) 08 ABAP OOALV-样式(列、行、单元格

    2024年02月03日
    浏览(48)
  • SAP ABAP 基础语法超详细

    1.表声明 当你声明了一个数据表的同时,系统也同时自动生成了一个和数据表同名的结构,结构的变量集等于数据表里面的字段。 2.定义变量 v1 是变量名。 (l) 是变量的长度。 t 是数据类型。 d 是小数位。 ‘xxx’ 是缺省值。 如:data num(10) type p decimals 3 value ‘1.12’. 数据

    2024年02月15日
    浏览(59)
  • SAP ABAP 用户状态锁定案例

    一、前言 项目需求是根据当天及前两天的离职员工信息(假设这是一个定时器任务每天下午5点执行程序,计算前两天的员工工号是为了将5点之后办理离职的员工工号找出来),将这些员工在用户表 USR02 中的锁定状态设置为 “64”,以保证离职员工无法继续使用系统账号。

    2024年02月15日
    浏览(49)
  • 电脑pdf如何转换成word格式?用它实现pdf文件一键转换

    pdf转word格式可以用于提取和重用pdf文档中的内容,有时候,我们可能需要引用或引用pdf文档中的一些段落、表格或数据,通过将pdf转换为可编辑的Word文档,可以轻松地复制和粘贴所需内容,节省我们的时间,那么如何进行pdf转word呢?市面上许多的pdf转换器对于大多数人来说

    2024年01月21日
    浏览(46)
  • SAP,ABAP:ALV变式复制

    应用场景:程序优化,需要新开一个程序优化,优化完成后原程序ALV变式无法带到新的程序, ALV变式是很好用的功能 REPORT zbsc. 事务代码:ZBSC-ALV变式复制 程序名称:ZBSC-ALV变式复制 程序目的: ZBSC-ALV变式复制 开发人员: *(修改日志)----------------------------------------------------

    2024年02月09日
    浏览(43)
  • 3D模型格式转换工具HOOPS Exchange:如何将3D PDF转换为STEP格式?

    3D CAD数据在制造、工程和设计等各个领域都扮演着重要的角色。为了促进不同软件应用程序之间的协作和互操作性,它通常以不同的格式进行交换。 HOOPS Exchange是一个强大的软件开发工具包,提供了处理和将3D CAD数据从一种格式转换为另一种格式的解决方案。 在本文中,我们

    2024年02月04日
    浏览(47)
  • dxf怎么转换成PDF格式?转换方法其实很简单

    PDF文件是一种可靠的文件格式,可以在各种操作系统和软件上打开和查看。而dxf是CAD文件的一种格式,打开它一般都是需要相关的操作软件才能打开,不是特别方便,将dxf文件转换成PDF格式就可以很好的解决这一问题,下面教大家几种简单方法,一起来学习下吧。   工具一:

    2024年02月16日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包