SAP 开发程序生成PDF文件例子

DATA: IT_OTF      TYPE STANDARD TABLE OF ITCOO,
      IT_DOCS     TYPE STANDARD TABLE OF DOCS,
      IT_LINES    TYPE STANDARD TABLE OF TLINE.
DATA:
      ST_JOB_OUTPUT_INFO       TYPE SSFCRESCL,
      ST_DOCUMENT_OUTPUT_INFO  TYPE SSFCRESPD,
      ST_JOB_OUTPUT_OPTIONS    TYPE SSFCRESOP,
      ST_OUTPUT_OPTIONS        TYPE SSFCOMPOP,
      ST_CONTROL_PARAMETERS    TYPE SSFCTRLOP,
      V_LEN_IN                 TYPE SO_OBJ_LEN,
      V_LANGUAGE               TYPE SFLANGU VALUE ‘E’,
      V_E_DEVTYPE              TYPE RSPOPTYPE,
      V_BIN_FILESIZE           TYPE I,
      V_NAME                   TYPE STRING,
      V_PATH                   TYPE STRING,
      V_FULLPATH               TYPE STRING,
      V_FILTER                 TYPE STRING,
      V_UACT                   TYPE I,
      V_GUIOBJ                 TYPE REF TO CL_GUI_FRONTEND_SERVICES,
      V_FILENAME               TYPE STRING,
      V_FM_NAME                TYPE RS38L_FNAM.
DATA:it_zfi011adxs2_2 LIKE zfi011adxs  OCCURS 0 WITH HEADER LINE.
CONSTANTS C_FORMNAME           TYPE TDSFNAME VALUE ‘ZFI011_SM’.

CALL FUNCTION ‘SSF_GET_DEVICE_TYPE’
  EXPORTING
    I_LANGUAGE    = V_LANGUAGE
    I_APPLICATION = ‘SAPDEFAULT’
  IMPORTING
    E_DEVTYPE     = V_E_DEVTYPE.

ST_OUTPUT_OPTIONS-TDPRINTER = V_E_DEVTYPE.
ST_CONTROL_PARAMETERS-NO_DIALOG = ‘X’.
ST_CONTROL_PARAMETERS-GETOTF = ‘X’.
*……………..GET SMARTFORM FUNCTION MODULE NAME……………..*

CALL FUNCTION ‘SSF_FUNCTION_MODULE_NAME’
  EXPORTING
    FORMNAME           = C_FORMNAME
  IMPORTING
    FM_NAME            = V_FM_NAME
  EXCEPTIONS
    NO_FORM            = 1
    NO_FUNCTION_MODULE = 2
    OTHERS             = 3.

*………………………CALL SMARTFORM……………………….*

CALL FUNCTION V_FM_NAME
  EXPORTING
    CONTROL_PARAMETERS   = ST_CONTROL_PARAMETERS
    OUTPUT_OPTIONS       = ST_OUTPUT_OPTIONS
  IMPORTING
    DOCUMENT_OUTPUT_INFO = ST_DOCUMENT_OUTPUT_INFO
    JOB_OUTPUT_INFO      = ST_JOB_OUTPUT_INFO
    JOB_OUTPUT_OPTIONS   = ST_JOB_OUTPUT_OPTIONS
   TABLES
    T_OUT                      = it_zfi011adxs2_2
  EXCEPTIONS
    FORMATTING_ERROR     = 1
    INTERNAL_ERROR       = 2
    SEND_ERROR           = 3
    USER_CANCELED        = 4
    OTHERS               = 5.

*…………………….CONVERT TO OTF TO PDF…………………..*

CALL FUNCTION ‘CONVERT_OTF_2_PDF’
  IMPORTING
    BIN_FILESIZE           = V_BIN_FILESIZE
  TABLES
    OTF                    = ST_JOB_OUTPUT_INFO-OTFDATA
    DOCTAB_ARCHIVE         = IT_DOCS
    LINES                  = IT_LINES
  EXCEPTIONS
    ERR_CONV_NOT_POSSIBLE  = 1
    ERR_OTF_MC_NOENDMARKER = 2
    OTHERS                 = 3.


CONCATENATE ‘smrt’ ‘.pdf’ INTO V_NAME.

CREATE OBJECT V_GUIOBJ.

CALL METHOD V_GUIOBJ->FILE_SAVE_DIALOG
  EXPORTING
    DEFAULT_EXTENSION = ‘pdf’
    DEFAULT_FILE_NAME = V_NAME
    FILE_FILTER       = V_FILTER
  CHANGING
    FILENAME          = V_NAME
    PATH              = V_PATH
    FULLPATH          = V_FULLPATH
    USER_ACTION       = V_UACT.

IF V_UACT = V_GUIOBJ->ACTION_CANCEL.

  EXIT.

ENDIF.

*…………………………….DOWNLOAD AS FILE………………..*

MOVE V_FULLPATH TO V_FILENAME.

CALL FUNCTION ‘GUI_DOWNLOAD’
  EXPORTING
    BIN_FILESIZE            = V_BIN_FILESIZE
    FILENAME                = V_FILENAME
    FILETYPE                = ‘BIN’
  TABLES
    DATA_TAB                = IT_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.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ᝰ随心ꦿེএ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值