SMARTFORMS生成PDF

TABLESsflight.
TYPE-POOLSslis.
DATAgt_spfli TYPE TABLE OF sFLIGHT." WITH HEADER LINE.
DATAg_repid  TYPE sy-repid.

DATA gt_otf TYPE itcoo OCCURS WITH HEADER LINE.
DATA:bin_file TYPE xstring.

DATA:w_bin_filesize TYPE i,
    gt_pdf_tab LIKE tline OCCURS WITH HEADER LINE.

DATA tline TYPE TABLE OF  tline WITH HEADER LINE..


DATA document_output_info TYPE ssfcrespd.
DATA job_output_info TYPE ssfcrescl.
DATA job_output_options TYPE ssfcresop.

DATAbinfilesize TYPE i,
file_name TYPE string,
file_path TYPE string,
full_path TYPE string.


START-OF-SELECTION.
  PERFORM frm_get_data.

END-OF-SELECTION.
  PERFORM frm_display.
*&---------------------------------------------------------------------*
*&      Form  frm_get_data
*&---------------------------------------------------------------------*
*       把数据查询出来放到内表中
*----------------------------------------------------------------------*
FORM frm_get_data .
  SELECT INTO TABLE gt_spfli FROM sflight.
ENDFORM.                    " frm_get_data
*&---------------------------------------------------------------------*
*&      Form  frm_display
*&---------------------------------------------------------------------*
*       使用ALV显示数据
*----------------------------------------------------------------------*
FORM frm_display .
  g_repid sy-repid.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       g_repid
      i_structure_name         'SFLIGHT'
      i_callback_pf_status_set 'FRM_SET_MENU'
      i_callback_user_command  'FRM_USER_COMMAND'
      i_save                   'A'
    TABLES
      t_outtab                 gt_spfli.
ENDFORM.                    " frm_display
*&---------------------------------------------------------------------*
*&      Form  frm_show_status
*&---------------------------------------------------------------------*
*       调用状态栏
*----------------------------------------------------------------------*
FORM frm_set_menu USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'STANDARD'.
ENDFORM.                    "frm_set_menu
*&---------------------------------------------------------------------*
*&      Form  frm_user_command
*&---------------------------------------------------------------------*
*       用户按钮事件
*----------------------------------------------------------------------*
*      -->P_UCOMM    text
*      -->SELFIELD   text
*----------------------------------------------------------------------*
FORM frm_user_command USING p_ucomm LIKE sy-ucomm selfield TYPE slis_selfield.
  CASE p_ucomm.
    WHEN 'PRTTABLE'.
      PERFORM frm_print_table.
    WHEN 'PRTTEMPLET'.
      PERFORM frm_print_templet.
    WHEN 'EXIT' OR 'CANCEL' OR 'BACK'.
      LEAVE TO SCREEN 0.
    WHEN 'SAVE'.
      WRITE:'hello world'.
  ENDCASE.
ENDFORM.                    "FRM_USER_COMMAND
*&---------------------------------------------------------------------*
*&      Form  frm_print_table
*&---------------------------------------------------------------------*
*       调用使用TABLE创建的模板
*----------------------------------------------------------------------*
FORM frm_print_table .
*  WRITE:'HELLO WORLD'.
  DATAfm_name TYPE rs38l_fnam.
  DATA:control_parameters TYPE ssfctrlop,
     w_outoptions TYPE ssfcompop,
     errtab TYPE tsferror.

  CLEAR control_parameters.
  control_parameters-no_dialog 'X'.
  control_parameters-preview   =''"space.
  control_parameters-getotf   'X'.
* control_parameters-no_open   ='X'.
*  control_parameters-no_close  ='X'.
  control_parameters-langu    sy-langu.

  w_outoptions-tddest 'LP01'.
  w_outoptions-tdnoprint 'X'.
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname 'ZYKK004'
    IMPORTING
      fm_name  fm_name.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
* FM_NAME 即 '/1BCDWB/SF00000210'

  CALL FUNCTION fm_name
    EXPORTING
      control_parameters   control_parameters
      output_options       w_outoptions
      user_settings        'X'
    IMPORTING
      document_output_info document_output_info
      job_output_info      job_output_info
      job_output_options   job_output_options
    TABLES
      gt_out                     gt_spfli.
*  CALL FUNCTION fm_name
**   EXPORTING
**     ARCHIVE_INDEX              =
**     ARCHIVE_INDEX_TAB          =
**     ARCHIVE_PARAMETERS         =
**     CONTROL_PARAMETERS         =
**     MAIL_APPL_OBJ              =
**     MAIL_RECIPIENT             =
**     MAIL_SENDER                =
**     OUTPUT_OPTIONS             =
**     USER_SETTINGS              = 'X'
**   IMPORTING
**     DOCUMENT_OUTPUT_INFO       =
**     JOB_OUTPUT_INFO            =
**     JOB_OUTPUT_OPTIONS         =
*    TABLES
*      gt_out                     = gt_spfli
**   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.

  gt_otf[] job_output_info-otfdata[].
  CALL FUNCTION 'CONVERT_OTF'
   EXPORTING
     format 'PDF'
     max_linewidth 132
*     ARCHIVE_INDEX = ' '
*     COPYNUMBER = 0
*     ASCII_BIDI_VIS2LOG = ' '
*     PDF_DELETE_OTFTAB = ''
   IMPORTING
     bin_filesize w_bin_filesize
*     bin_file = bin_file
* BIN_FILE=
   TABLES
    otf gt_otf
    lines tline
   EXCEPTIONS
     err_max_linewidth 1
     err_format 2
     err_conv_not_possible 3
     err_bad_otf 4
     OTHERS 5.
  IF sy-subrc <> 0.
*   MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*    WITHsy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  CALL METHOD cl_gui_frontend_services=>file_save_dialog
   CHANGING
     filename file_name
     path    file_path
     fullpath full_path.


  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      bin_filesize            binfilesize
      filename                full_path
      filetype                'BIN'
    TABLES
      data_tab                tline[]
    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.
ENDFORM.                    " frm_print_table
*&---------------------------------------------------------------------*
*&      Form  FRM_PRINT_TEMPLET
*&---------------------------------------------------------------------*
*       调用使用模板创建的模板
*----------------------------------------------------------------------*
FORM frm_print_templet .
  DATA:   l_fm_name      TYPE rs38l_fnam.
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname 'ZYKK002'
    IMPORTING
      fm_name  l_fm_name.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
  CALL FUNCTION l_fm_name
*   EXPORTING
*     ARCHIVE_INDEX              =
*     ARCHIVE_INDEX_TAB          =
*     ARCHIVE_PARAMETERS         =
*     CONTROL_PARAMETERS         =
*     MAIL_APPL_OBJ              =
*     MAIL_RECIPIENT             =
*     MAIL_SENDER                =
*     OUTPUT_OPTIONS             =
*     USER_SETTINGS              = 'X'
*   IMPORTING
*     DOCUMENT_OUTPUT_INFO       =
*     JOB_OUTPUT_INFO            =
*     JOB_OUTPUT_OPTIONS         =
   TABLES
      gt_out                     gt_spfli
*   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.
ENDFORM.                    " FRM_PRINT_TEMPLET

 

完美生成PDF格式!!!

 

1、SMARTFORM 转PDF文件时,只是用FUNCTION CONVERT_OTF进行了格式转换。

 

2、在SMARTFORM的输出文档中,调用FUNCTION输出时,输出参数control_parameters-no_dialog必须设置成‘X’,同时control_parameters-getotf节设置成'X'。这样调用 FUNCTIONCONVERT_PDF时,才有输入参数。

 

3、调用FUNCTIONCONVERT_PDF时须注意,如果要将PDF文件下载,必须使用转化后的内表数据,将PDF格式的内表下载成PDF的文件。而如果将PDF文件传到一个第三方软件或是提供给接口使用,则可以直接传输转换后的二进制的文件。


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值