ABAP: Descargar archivo separado por comas (CSV) para usar en Excel

Puedes descargar los datos de una tabla interna de ABAP a un archivo separado por comas (CSV) utilizando la combinación de funciones GUI_DOWNLOAD y SAP_CONVERT_TO_TEX_FORMAT, esto es perfecto para bajarlo a Excel, ya que el formato CSV puede ser abierto en Excel. Para tu conveniencia aquí hay un ejemplo de cómo utilizar las funciones.

Para probarlo, crea un programa en ABAP con el siguiente código:

*&---------------------------------------------------------------------*
*& Report  zexport_csv
*&
*&---------------------------------------------------------------------*
*& Por: Luis Cruz
*& Descarga una tabla a un archivo separado por comas
*&---------------------------------------------------------------------*

REPORT  zexport_csv.

"Para poder declarar mi tabla de salida CSV
TYPE-POOLS: truxs.

"Tabla interna con mis datos a exportar
DATA: BEGIN OF it_usrefus OCCURS 0,
  bname     TYPE  xubname,
  refuser   TYPE  us_refus,
  useralias TYPE  usalias,
END OF it_usrefus.

"Tabla en donde tendremos nuestos datos separados por comas
DATA: it_csv TYPE TRUXS_T_TEXT_DATA.

"Llenar la tabla con hasta 25 filas
SELECT bname
       refuser
       useralias
INTO TABLE it_usrefus
UP TO 25 ROWS
FROM usrefus.

"Importante, aqui le damos formato a los datos
"podemos modificar el separador para que se pueda
"usar cualquier separador etc
CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'
  EXPORTING
    i_field_seperator    = ','
  TABLES
    i_tab_sap_data       = it_usrefus
  CHANGING
    i_tab_converted_data = it_csv
  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.

"Finalmente bajamos nuestro archivo
CALL FUNCTION 'GUI_DOWNLOAD'
  EXPORTING
    filename                = 'C:\prueba.csv'
  TABLES
    data_tab                = it_csv
  EXCEPTIONS
    file_write_error        = 1
    no_batch                = 2
    gui_refuse_filetransfer = 3
    invalid_type            = 4
    no_authority            = 5
    unknown_error           = 6.

Notas:

  1. Puedes descargar un archivo separado por cualquier otro carácter (comas, punto y coma, barra vertical, etc) cambiando el parámetro en la linea 37 del código.
  2. Descargar archivos con algunas extensiones puede solicitar una confirmación, si tienes este problema, descarga el archivo con extensión txt en lugar de csv, o informa a los usuarios que elijan la opción “Permitir siempre para este tipo de fichero”.
Advertencia al descargar archivo csv, separado por comas
ABAP: Descargar archivo separado por comas (CSV) para usar en Excel

2 comentarios en «ABAP: Descargar archivo separado por comas (CSV) para usar en Excel»

  1. Hola!

    En lugar de usar:
    CALL FUNCTION ‘SAP_CONVERT_TO_TEX_FORMAT’
    use esta funcion:
    CALL FUNCTION ‘SAP_CONVERT_TO_CSV_FORMAT’
    ya que la primera me generaba un error:

    Function parameter “I_TAB_CONVERTED_DATA” is unknown.

    Busque y busque en google como solucionar el error y me recomendaron usar esa otra function (aunque no se por que el separador siempre lo pone como ; aunque yo le indique que el separador es un ,).

    Gracias.

    1. Hola, siento responder tan tarde.

      Si entras al código de la función SAP_CONVERT_TO_CSV_FORMAT, veras que lo que hace es llamar a la función SAP_CONVERT_TO_TEX_FORMAT, y a pesar que pide como parámetro I_FIELD_SEPERATOR, SAP se burla de nosotros ignorando el parámetro y usando la constante que definieron: constants: c_field_separator value ‘;’.

Responder a Miguel Enriquez Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll hacia arriba