Inicial > Dicas & Truques > Como gerar Arquivo TXT

Como gerar Arquivo TXT

Abaixo estou dando alguns exemplos de geração de arquivos TXT a partir de uma tabela interna.

Declaração de variáveis e seleção de dados para exemplos:

 TYPES: BEGIN OF ty_mara,
         matnr TYPE char18,
         mtart TYPE char4,
         matkl TYPE char9,
         meins TYPE char3,
       END OF ty_mara.

 TYPES truxs_t_text_data(4096) TYPE c OCCURS 0.
 DATA: it_mara TYPE STANDARD TABLE OF ty_mara WITH HEADER LINE.
 DATA: it_txt TYPE truxs_t_text_data.
 DATA: ls_txt LIKE LINE OF it_txt.

 START-OF-SELECTION.

   SELECT matnr mtart matkl meins UP TO 200 ROWS
     INTO TABLE it_mara
     FROM mara.

Exemplo 1:

LOOP AT it_mara.

     WRITE it_mara TO ls_txt.
     APPEND ls_txt TO it_txt.

   ENDLOOP.

Exemplo 2:
– Este exemplo utilizo a função  SAP_CONVERT_TO_TEX_FORMAT, aproveitem para dar uma olhadinha no grupo de funções TRUX. Neste grupo existem outras funções interessantes inclusive uma função para converter de TXT para Tabela interna, que também utilizo no exemplo apenas para demonstração de seu funcionamento.

   CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'
     EXPORTING
       i_field_seperator          = ';'
 *   I_LINE_HEADER              =
 *   I_FILENAME                 =
 *   I_APPL_KEEP                = ' '
     TABLES
       i_tab_sap_data             = it_mara
    CHANGING
      i_tab_converted_data       = it_txt
 * EXCEPTIONS
 *   CONVERSION_FAILED          = 1
 *   OTHERS                     = 2
             .
   IF sy-subrc <> 0.
 * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
 *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
   ENDIF.

* Utilizando a função  TEXT_CONVERT_TEX_TO_SAP somente para demonstração do processo inverso TXT -> tabela interna.
* Não é necessário utilizar esta função para a geração do TXT.

CALL FUNCTION 'TEXT_CONVERT_TEX_TO_SAP'
     EXPORTING
      i_field_seperator          = ';'
 *   I_LINE_HEADER              =
       i_tab_raw_data             = it_txt
 *   I_FILENAME                 =
     TABLES
       i_tab_converted_data       = it_mara
 * EXCEPTIONS
 *   CONVERSION_FAILED          = 1
 *   OTHERS                     = 2
             .
   IF sy-subrc <> 0.
 * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
 *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
   ENDIF.

Após este procedimento você terá a tabela interna IT_TXT convertida e prontinha para geração do arquivo.
Segue abaixo exemplo de geração de arquivo Local e no Servidor.

DATA: v_arquivo TYPE STRING.

  v_arquivo = <Caminho completoonde deseja salvar o arquivo>.
* Ex: v_arquivo = 'C:\temp\teste.txt'.
* Gerando arquivo localmente...
   CALL FUNCTION 'GUI_DOWNLOAD'
     EXPORTING
       filename                = v_arquivo
       filetype                = 'ASC'
     TABLES
       data_tab                = it_txt
     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.
   IF sy-subrc <> 0.
     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
   ENDIF.

 * Gerando o arquivo no servidor.
   OPEN DATASET v_arquivo FOR OUTPUT IN TEXT MODE.
   IF sy-subrc = 0.

     LOOP AT it_txt INTO ls_txt.
       TRANSFER ls_txt TO v_arquivo.
     ENDLOOP.

     CLOSE DATASET v_arquivo.
   ENDIF.

Se você tiver uma forma diferente, compartilhe seu conhecimento conosco ! Deixe um comentário…

Categorias:Dicas & Truques Tags:, , ,
  1. raoni
    14/12/2012 às 09:36

    Quebrou um puta galho!
    muito bom o post.

  2. 03/09/2015 às 09:44

    Bom Dia! Sou novo em ABAP, copiei todo o codigo para fazer um teste, porem o campo V_ARQUIVO nao foi declarado. Qual tipo devo usar? CHAR ?

    • 10/09/2015 às 09:20

      Bom dia Fernando.
      Este campo v_arquivo deve ser do mesmo tipo do parâmetro FILENAME na função GUI_DOWNLOAD, ou seja, V_ARQUIVO TYPE STRING.
      Obrigado por seu comentário, post atualizado.

  3. Alessandro
    08/05/2018 às 12:12

    Olá… se quiser um separador de campos , por exemplo ‘,’ como proceder ?

    • 01/03/2019 às 11:05

      Alessandro informar o separador no parametro i_field_separator.
      CALL FUNCTION ‘SAP_CONVERT_TO_TEX_FORMAT’
      EXPORTING
      i_field_seperator = ‘,’
      Obrigado por seu comentário

  1. No trackbacks yet.

Deixe um comentário