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:
- 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.
- 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”.
ABAP: Descargar archivo separado por comas (CSV) para usar en Excel
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.
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 ‘;’.