Esta user exit hace que en el formato de salida de la Query aparezca una nueva opción llamada "Archivo personal". Cuando marcamos este formato de salida se ejecuta el código de la user exit.
En la exit disponemos de los datos seleccionados por la Query de forma que podemos poner nuestro código para grabar esta tabla en un fichero (local o en el servidor de aplicaciones). Aquí os dejo el código para grabar la tabla en un fichero del servidor de aplicaciones utilizando la función Z_CREAERFICHERO publicada en una entrada anterior.
Los datos de la Query se encuentran en la tabla datatab.
CONSTANTS: c_zhr_contr_ns TYPE string VALUE 'ZHR_CONTR_NS',
c_zhr_contr_supl TYPE string VALUE 'ZHR_CONTR_SUPL',
c_interfaces TYPE string VALUE '/INTERFACES/GESTPRES/SALIDA',
c_extension TYPE string VALUE '.csv'.
IF sy-cprog CS c_zhr_contr_ns OR sy-cprog CS c_zhr_contr_supl.
DATA: ld_directory TYPE dxfile-filename,
ld_filename TYPE dxfile-filename.
* Construimos el nombre del fichero con el nombre de la query.
IF sy-cprog CS c_zhr_contr_ns.
CONCATENATE c_zhr_contr_ns '_' sy-datum c_extension INTO ld_filename.
ELSEIF sy-cprog CS c_zhr_contr_supl.
CONCATENATE c_zhr_contr_supl '_' sy-datum c_extension INTO ld_filename.
ENDIF.
ld_directory = c_interfaces.
* Generamos el fichero
CALL FUNCTION 'ZHR_CREARFICHERO'
EXPORTING
i_directory = ld_directory
i_filename = ld_filename
i_separator = ';'
i_overwrite = 'X'
it_data = datatab[]
EXCEPTIONS
ex_errordirectory = 1
ex_fileexists = 2
OTHERS = 3.
* Escribimos el log
IF sy-subrc NE 0.
* Mensaje de error
ENDIF.