zoukankan      html  css  js  c++  java
  • ABAP:Smartform生成PDF

    注意:生成PDF时,Smartform中的参数  control_parameters-getotf = 'X'. 必须
     
     
    *&---------------------------------------------------------------------*
    *& REPORT       ZHARPO_010
    *&
    *&---------------------------------------------------------------------*
    *&
    *& Smartform生成PDF,可设置不显示Smartform打印窗口
    *&---------------------------------------------------------------------*
     
    REPORT zharpo_010 NO STANDARD PAGE HEADING.
     
    TABLES rlgrap.
    DATA fm_name TYPE rs38l_fnam.
    DATA control_parameters TYPE ssfctrlop.
    DATA job_output_info    TYPE ssfcrescl.
    DATA job_output_options TYPE ssfcresop.
    DATA itab TYPE TABLE OF bkpf.
    DATA BEGIN OF pdf OCCURS 10.
            INCLUDE STRUCTURE tline.
    DATA END OF pdf.
    DATA len TYPE i.  "PDF文件大小
     
    PARAMETERS filename TYPE rlgrap-filename.
     
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename.
      PERFORM f4_file_save CHANGING filename.
     
     
    START-OF-SELECTION.
      SELECT bukrs belnr bldat
        UP TO 300 ROWS
        INTO CORRESPONDING FIELDS OF TABLE itab
        FROM bkpf.
     
      control_parameters-getotf    = 'X'.   "此参数必须,否则不会导出PDF而直接显示smartform
      control_parameters-no_close  = ' '.
      control_parameters-no_dialog = 'X'.   "不显示打印对话框
     
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          formname           = 'ZHARPO_001'
        IMPORTING
          fm_name            = fm_name
        EXCEPTIONS
          no_form            = 1
          no_function_module = 2
          OTHERS             = 3.
     
      CHECK: sy-subrc = 0.
     
      CALL FUNCTION fm_name
        EXPORTING
          control_parameters = control_parameters
        IMPORTING
          job_output_info    = job_output_info
          job_output_options = job_output_options
        TABLES
          itab2              = itab
        EXCEPTIONS
          formatting_error   = 1
          internal_error     = 2
          send_error         = 3
          user_canceled      = 4
          OTHERS             = 5.
     
      CHECK: sy-subrc = 0.
     
    * convert smartforms to PDF
      CALL FUNCTION 'CONVERT_OTF'
        EXPORTING
          format                = 'PDF'
        IMPORTING
          bin_filesize          = len
        TABLES
          otf                   = job_output_info-otfdata
          lines                 = pdf
        EXCEPTIONS
          err_max_linewidth     = 1
          err_format            = 2
          err_conv_not_possible = 3
          OTHERS                = 4.
     
      CHECK: sy-subrc = 0.
     
      CALL FUNCTION 'WS_DOWNLOAD'
        EXPORTING
          filename            = filename
          filetype            = 'BIN'
          bin_filesize        = len
        TABLES
          data_tab            = pdf
        EXCEPTIONS
          file_open_error     = 1
          file_write_error    = 2
          invalid_filesize    = 3
          invalid_table_width = 4
          invalid_type        = 5
          no_batch            = 6
          unknown_error       = 7
          OTHERS              = 8.
     
      IF sy-subrc <> 0.
        MESSAGE 'ERROR!' TYPE 'E'.
      ENDIF.
    *&---------------------------------------------------------------------*
    *&      Form  F4_FILE_SAVE
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      <--P_FILENAME  text
    *----------------------------------------------------------------------*
    FORM f4_file_save  CHANGING p_file.
      DATA: l_file TYPE string.
      DATA: l_path TYPE string.
      DATA: l_fullpath TYPE string.
     
      l_file = p_file.
      CALL METHOD cl_gui_frontend_services=>file_save_dialog
        EXPORTING
          default_file_name    = l_file
          initial_directory    = l_path
        CHANGING
          filename             = l_file
          path                 = l_path
          fullpath             = l_fullpath
        EXCEPTIONS
          cntl_error           = 1
          error_no_gui         = 2
          not_supported_by_gui = 3
          OTHERS               = 4.
     
      IF sy-subrc = 0.
        p_file = l_fullpath.
      ELSE.
     
      ENDIF.
    ENDFORM.                    " F4_FILE_OPEN
  • 相关阅读:
    海伦公式
    简单的博弈
    Hello World 代码
    Hello world
    99999999海岛帝国后传:算法大会
    判断质数
    idea plantUML配置
    测试用例评审
    如何编写有效测试用例
    测试用例设计——场景分析法
  • 原文地址:https://www.cnblogs.com/liaojunbo/p/2196250.html
Copyright © 2011-2022 走看看