terça-feira, 30 de agosto de 2016

Convertendo smartforms para PDF - arquivo local ou servidor

  Rotina de conversão de relatório SMARTFORMS para arquivo PDF.

Antes de chamar a função do SMARTFORMS, ajustar os parâmetros de impressão.

DATA: w_out_opt  TYPE ssfcompop,
      w_out_info TYPE  ssfcrescl,
      w_ctr_par  TYPE ssfctrlop.

 
    w_out_opt-tdprinter 'SWIN'.
    w_ctr_par-no_dialog abap_true.
    w_ctr_par-getotf abap_true.


"Chamar o smartforms
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname           'ZTESTE_PDF'
    IMPORTING
      fm_name            l_fnam
    EXCEPTIONS
      no_form            1
      no_function_module 2
      OTHERS             3.

  IF sy-subrc <> 0.
    RAISE sem_dados.
  ENDIF.


"Colocar o parâmetro de retorno JOB_OUTPUT_INFO
  CALL FUNCTION l_fnam
    EXPORTING
      control_parameters iw_ctr_par
      output_options     iw_out_opt
      user_settings      space
    IMPORTING
      job_output_info    = W_OUT_INFO
    EXCEPTIONS
      formatting_error   1
      internal_error     2
      send_error         3
      user_canceled      4
      OTHERS             5.
 


 "No caso de saída para arquivo local usando o GUI_DOWNLOAD, remover o parâmetro BIN_FILE

      CALL FUNCTION 'CONVERT_OTF'
        EXPORTING
          format                'PDF'
        IMPORTING
          bin_filesize          bin_size
          bin_file              bin_file
        TABLES
          otf                   w_out_info-otfdata
          lines                 t_lines
        EXCEPTIONS
          err_max_linewidth     1
          err_format            2
          err_conv_not_possible 3
          err_bad_otf           4
          OTHERS                5.



"Para geração de arquivo local
      CALL FUNCTION 'GUI_DOWNLOAD'
        EXPORTING
          filename                file_loc
          filetype                'BIN'
        TABLES
          data_tab                t_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.



"Para geração de arquivo no servidor.

      OPEN DATASET p_filen FOR OUTPUT IN BINARY MODE.
      TRANSFER bin_file TO p_filen.
      CLOSE DATASET p_filen.

Nenhum comentário:

Postar um comentário