seleccionar - Obtener los contenidos de un directorio del lado del servidor en SAP ABAP
rzl_read_dir_local example (5)
Necesito obtener una lista de un directorio del lado del servidor dentro de SAP. ¿Cómo logro esto en ABAP? ¿Hay alguna función SAP integrada a la que pueda llamar?
Idealmente, quiero una función que pueda pasar una ruta como entrada, y que devolverá una lista de nombres de archivos en una tabla interna.
Función de llamada RZL_READ_DIR_LOCAL:
FUNCTION RZL_READ_DIR_LOCAL.
*"----------------------------------------------------------------------
*"Lokale Schnittstelle:
*" IMPORTING
*" NAME LIKE SALFILE-LONGNAME
*" TABLES
*" FILE_TBL STRUCTURE SALFLDIR
*" EXCEPTIONS
*" ARGUMENT_ERROR
*" NOT_FOUND
*"----------------------------------------------------------------------
Coloque la ruta de acceso en el parámetro de importación NAME y luego lea el listado del directorio de FILE_TBL después de que regrese.
RZL_READ_DIR_LOCAL puede manejar rutas locales normales así como rutas UNC.
El único inconveniente es que solo le da acceso a los primeros 32 caracteres de cada nombre de archivo. Sin embargo, puede crear fácilmente una nueva función basada en el código RZL_READ_DIR_LOCAL y cambiar la forma en que se lee el resultado del programa C, ya que los primeros 187 caracteres de cada nombre de archivo están realmente disponibles.
Eche un vistazo a la transacción AL11 código fuente: RSWATCH0 formulario fill_file_list
Allí puede obtener toda la información sobre los archivos.
¡Espero que esto ayude!
Después de leer las respuestas de Chris Carrthers y tomdemuyt, diría:
1) Use RZL_READ_DIR_LOCAL si necesita una lista simple de nombres de archivos.
2) EPS_GET_DIRECTORY_LISTING es más potente: también puede mostrar subdirectorios.
Gracias a los dos!
Con mis mejores deseos, Niki Galanov
EPS2_GET_DIRECTORY_LISTING
hace lo mismo que EPS_GET_DIRECTORY_LISTING
PERO repone los nombres de archivo hasta 200 caracteres!
la respuesta es llamar al módulo de funciones EPS_GET_DIRECTORY_LISTING. DIR_NAME -> Nombre del directorio FILE_MASK -> Pase ''*'' para obtener todos los archivos.
Nota: Esto no trata con nombres de archivo realmente grandes (80 caracteres +), trunca el nombre.