首页 > SAP > ABAP > SAP 生成PDF文件例子
2019
08-29

SAP 生成PDF文件例子

此例子程序使用SMARTFORMS生成PFD文件,

[mw_shl_code=applescript,true]*&———————————————————————*

*& Report  ZTEST001

*&

*&———————————————————————*

*&

*&

*&———————————————————————*

REPORT  ZTEST001 .

* Internal table declaration

DATA: IT_OTF      TYPE STANDARD TABLE OF ITCOO,

      IT_DOCS     TYPE STANDARD TABLE OF DOCS,

      IT_LINES    TYPE STANDARD TABLE OF TLINE.

* Declaration of local variables.

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.

*……………………

*GET THE FILE NAME TO STORE………………..

*

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.[/mw_shl_code]

最后编辑:
作者:yangsen
有需要可在文章留言或者邮件yan252@163.com给我。

留下一个回复

你的email不会被公开。

5 × 5 =