Aquí les dejo un report que permite seleccionar archivos desde el servidor de aplicación o presentación.
Espero les sea de utilidad.
REPORT Z_GET_ARCHIVO_SRV_LOCAL.
*-----------------------------------------------------------------------------------------------------------------------------------------*
DATA : ld_rc(10) TYPE c.
DATA : ld_filename TYPE string.
*-----------------------------------------------------------------------------------------------------------------------------------------*
DATA : ld_location_flag TYPE dxlocation. " Indicador: Servidor de aplicación o presentación : A = Server SAP // P = PC Local
DATA : ld_server TYPE msname2. " Nombre del servidor de aplicación (SOLO PARA SERVER SAP)
DATA : ld_path TYPE dxlpath. " Vía acceso más larga
DATA : ld_filemask TYPE dxfilemask. " Máscara p.nom.fichero
DATA : ld_fileoperation TYPE dxfileoper. " Tipo de Operacion con el Archivo : R = Leer // W = Escribir
*-----------------------------------------------------------------------------------------------------------------------------------------*
*
PARAMETERS : p_srv RADIOBUTTON GROUP gr1.
PARAMETERS : p_loc RADIOBUTTON GROUP gr1.
*
*-----------------------------------------------------------------------------------------------------------------------------------------*
*
*--->> PARA SELECIONAR ARCHIVOS DESDE EL SERVER SAP
IF ( p_srv EQ 'X' ).
ld_location_flag = 'A'.
ld_path = '/usr/sap/tmp'.
ld_filemask = '*.*'.
ld_fileoperation = 'R'.
ENDIF.
*
*--->> PARA SELECIONAR ARCHIVOS DESDE LOCAL PC
IF ( p_loc EQ 'X' ).
ld_location_flag = 'P'.
ld_path = 'C:\TEMP\'.
ld_filemask = '*.*'.
ld_fileoperation = 'R'.
ENDIF.
*-----------------------------------------------------------------------------------------------------------------------------------------*
START-OF-SELECTION.
*
PERFORM get_filename_pc_sev USING ld_location_flag
ld_path
ld_filemask
ld_fileoperation
CHANGING ld_rc
ld_filename.
*
WRITE : / 'RC : ', ld_rc.
WRITE : / 'ARCHIVO : ', ld_filename.
*
END-OF-SELECTION.
*-----------------------------------------------------------------------------------------------------------------------------------------*
*
*
*-----------------------------------------------------------------------------------------------------------------------------------------*
* FORM : GET_FILENAME_PC_SEV
*-----------------------------------------------------------------------------------------------------------------------------------------*
* Leer Nombre de un archivo desde el servidor SAP o LOCAL
*-----------------------------------------------------------------------------------------------------------------------------------------*
* -->P_LD_LOCATION_FLAG Indicador: Servidor de aplicación o presentación : A = Server SAP // P = PC Local
* -->P_LD_PATH Vía acceso más larga
* -->P_LD_FILEMASK Máscara p.nom.fichero
* -->P_LD_FILEOPERATION Tipo de Operacion con el Archivo : R = Leer // W = Escribir
* <--P_LD_RC
* <--P_LD_FILENAME
*-----------------------------------------------------------------------------------------------------------------------------------------*
FORM get_filename_pc_sev USING p_location_flag
p_path
p_filemask
p_fileoperation
CHANGING p_rc
p_filename.
*
* ----->>> DECLARACION DE VARIABLES
DATA : ld_o_location_flag TYPE dxlocation. " Indicador: Servidor de aplicación o presentación
DATA : ld_o_server TYPE msname2. " Nombre del servidor de aplicación
DATA : ld_o_path TYPE dxlpath. " Vía acceso más larga
DATA : ld_abend_flag TYPE dxxabend. " Indicador: Cancelación del proceso
DATA : ld_filesys TYPE filesys_d. " Grupo de sintaxis para nombres de ficheros y vías de acceso
DATA : lw_rfcsi_export TYPE rfcsi. " RFC Versión log
DATA : ld_server TYPE msname2. " Nombre del servidor de aplicación
*
DATA : ld_path TYPE string. " Path para Archivos PC
DATA : ld_mascara TYPE string. " Marcara para Archivos PC
DATA : lt_file_table TYPE STANDARD TABLE OF file_table. " Tabla Interna para guardar archivo seleccionado desde el PC
DATA : lw_file_table LIKE LINE OF lt_file_table. "
DATA : ld_subrc TYPE i. " Para retorno de la funcion de seleccion de archivos del PC
IF ( p_location_flag EQ 'A' ).
ENDIF.
CASE p_location_flag.
*
* ----->>> EJECUTAR FUNCION PARA SELECCIONAR ARCHIVO DESDE SERVIDOR DE APLICACION : 'SAP'
WHEN 'A'.
*
* ----->>> RECUPERAR EL SISTEMA OPERATIVO DEL LOS SERVIDORES DE APLICACIONES : APLICACION Y PRESENTACION
SELECT SINGLE filesys
FROM opsystem INTO ld_filesys
WHERE opsys EQ sy-opsys.
*
* ----->>> RECUPERAR DESTINO LOGICO DEL SISTEMA
CALL FUNCTION 'RFC_SYSTEM_INFO'
IMPORTING
rfcsi_export = lw_rfcsi_export.
*
* ----->>> RECUPERAR NOMBER DEL SERVER SAP
ld_server = lw_rfcsi_export-rfcdest.
*
* ----->>> SI RUTA ES VACIO : UTILIZAR '?'
IF ( ld_server IS INITIAL ).
ld_server = '?'.
ENDIF.
*
* ----->>> SI MASCARA PARA SELECCION DE TIPO DE ARCHIVOS ES VACIA : UTILIZAR '*.*'
IF ( p_filemask IS INITIAL ).
p_filemask = '*.*'.
ENDIF.
*
* ----->>> LLAMADA A LA FUNCION DE SELECCION DE ARCHIVOS EN SERVER SAP
CALL FUNCTION 'F4_DXFILENAME_TOPRECURSION'
EXPORTING
i_location_flag = p_location_flag " Indicador: Servidor de aplicación o presentación : A = Server SAP // P = PC Local
i_server = ld_server " Nombre del servidor de aplicación
i_path = p_path " Vía acceso más larga
filemask = p_filemask " Máscara p.nom.fichero
fileoperation = p_fileoperation " Tipo de Operacion con el Archivo : R = Leer // W = Escribir
IMPORTING
o_location_flag = ld_o_location_flag
o_server = ld_o_server
o_path = ld_o_path
abend_flag = ld_abend_flag
EXCEPTIONS
rfc_error = 1
error_with_gui = 2
OTHERS = 3.
*
* ----->>> EJECUTAR FUNCION PARA SELECCIONAR ARCHIVO DESDE SERVIDOR DE PRESENTACION : 'LOCAL PC'
WHEN 'P'.
*
IF ( p_path IS INITIAL ).
ld_path = 'C:\'.
ELSE.
ld_path = p_path.
ENDIF.
*
IF ( p_filemask IS INITIAL ).
ld_mascara = '*.*'.
ELSE.
ld_mascara = p_filemask.
ENDIF.
*
* ----->>> LLAMADA AL METODO DE SELECCION DE ARCHIVOS DESDE PC
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Seleccione Archivo'
default_extension = ld_mascara
initial_directory = ld_path
CHANGING
file_table = lt_file_table
rc = ld_subrc
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
*
* ----->>> VALIDA LA EJECUCION Y HOMOLOGA VALORES DE RETORNO DE LA RUTINA
IF NOT ( lt_file_table IS INITIAL ).
READ TABLE lt_file_table INTO lw_file_table INDEX 1.
ld_o_path = lw_file_table-filename.
sy-subrc = 0.
ELSEIF ( ld_subrc GT 1 ).
sy-subrc = ld_subrc.
ELSEIF ( lt_file_table IS INITIAL ).
sy-subrc = 0.
ld_abend_flag = 'X'.
ld_o_path = ''.
ENDIF.
ENDCASE.
*
* ----->>> VALIDA LA EJECUCION Y RETORNA VALORES
IF ( sy-subrc EQ 0 ) AND ( ld_o_path NE '' ).
p_filename = ld_o_path.
p_rc = 'OK'.
ELSEIF ( ld_abend_flag EQ 'X' ) OR ( ld_o_path EQ '' ).
p_rc = 'CANCEL'.
ELSE.
p_rc = 'ERROR'.
ENDIF.
*
ENDFORM. "
*-----------------------------------------------------------------------------------------------------------------------------------------*