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