SMARTFORMS | 打印成PDF解决方案

cb563705f8d1b93c683b3c612b6060c4.jpeg

客户需要将Smartforms打印成PDF文件。找了一个现存的代码,改了一下参数就可测试了。

5e2598dd8602e23453f7f2d32e29814f.png

代码:

report ZABABHOME.

DATA: FORM_NAME TYPE RS38L_FNAM,

      WA_CTRLOP TYPE SSFCTRLOP,

      WA_OUTOPT TYPE SSFCOMPOP,

      T_OTFDATA TYPE SSFCRESCL.

DATA: T_PDF_TAB TYPE TABLE OF TLINE,

      T_OTF TYPE TABLE OF ITCOO.

DATA: W_FILESIZE TYPE I,

      W_BIN_FILESIZE TYPE I.

DATA : FILE_NAME TYPE STRING,

       FILE_PATH TYPE STRING,

       FULL_PATH TYPE STRING.

START-OF-SELECTION.

  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

    EXPORTING

      FORMNAME           = 'ZABAPHOME'      "改个名称就可测试了

    IMPORTING

      FM_NAME            = FORM_NAME

    EXCEPTIONS

      NO_FORM            = 1

      NO_FUNCTION_MODULE = 2

      OTHERS             = 3.

**重点就是GETOTF这个参数

  WA_CTRLOP-GETOTF = 'X'.

  WA_CTRLOP-NO_DIALOG = 'X'.

  WA_OUTOPT-TDNOPREV = 'X'.

  CALL FUNCTION FORM_NAME

    EXPORTING

      CONTROL_PARAMETERS = WA_CTRLOP

      OUTPUT_OPTIONS     = WA_OUTOPT

      USER_SETTINGS      = 'X'

    IMPORTING

      JOB_OUTPUT_INFO    = T_OTFDATA

    EXCEPTIONS

      FORMATTING_ERROR   = 1

      INTERNAL_ERROR     = 2

      SEND_ERROR         = 3

      USER_CANCELED      = 4

      OTHERS             = 5.

END-OF-SELECTION.

  T_OTF[] = T_OTFDATA-OTFDATA[].

  CALL FUNCTION 'CONVERT_OTF'

    EXPORTING

      FORMAT                = 'PDF'

      MAX_LINEWIDTH         = 132

    IMPORTING

      BIN_FILESIZE          = W_BIN_FILESIZE

    TABLES

      OTF                   = T_OTF

      LINES                 = T_PDF_TAB

    EXCEPTIONS

      ERR_MAX_LINEWIDTH     = 1

      ERR_FORMAT            = 2

      ERR_CONV_NOT_POSSIBLE = 3

      OTHERS                = 4.

  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG

    CHANGING

      FILENAME             = FILE_NAME

      PATH                 = FILE_PATH

      FULLPATH             = FULL_PATH

    EXCEPTIONS

      CNTL_ERROR           = 1

      ERROR_NO_GUI         = 2

      NOT_SUPPORTED_BY_GUI = 3

      OTHERS               = 4.

  CALL FUNCTION 'GUI_DOWNLOAD'

    EXPORTING

      BIN_FILESIZE            = W_BIN_FILESIZE

      FILENAME                = FULL_PATH

      FILETYPE                = 'BIN'

    IMPORTING

      FILELENGTH              = W_FILESIZE

    TABLES

      DATA_TAB                = T_PDF_TAB

    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 '错误不能下载' TYPE 'I'.

  ELSE.

    MESSAGE 'PDF已经下载,请确认' TYPE 'I'.

  ENDIF.

SAPScript的转换方式请参考

SAPScript | 打印转换成PDF

看更多ABAP知识

请长按下方图片扫码关注

ABAPHOME

3d8237fbb0a200a96fcf9feacbb54ff4.gif

写文章不易,如果觉得对你有所帮助。

请转发朋友圈,关注和请点右下角“在看”  .

53dd69bd287f23ad0cf23b0ef3e6060e.gif

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值