Ir al contenido
Programación ABAP

Cargar un fichero del servidor (UNIX)

Obtener la lista de ficheros de un directorio del servidor ejecutando un comando del sistema operativo.

Si solo necesitas los nombres de los ficheros, es más sencillo y seguro usar la función EPS2_GET_DIRECTORY_LISTING, que no necesita definir comandos del sistema operativo.

Trucos
3 de 7

Si lo que quieres es una carga directa de los ficheros que existan
en una ruta en un servidor UNIX puedes probar con esto:

ABAP
DATA: ld_ruta LIKE sxpgcolist-parameters.            " Ruta de los ficheros 
DATA: gt_tabl LIKE btcxpm OCCURS 0 WITH HEADER LINE. " Tabla

CALL FUNCTION 'SXPG_COMMAND_EXECUTE'

EXPORTING 
        commandname                     = 'ZLL' 
        additional_parameters           = ld_ruta 
TABLES 
        exec_protocol                   = gt_tabl 
EXCEPTIONS 
        no_permission                   = 1 
        command_not_found               = 2 
        parameters_too_long             = 3 
        security_risk                   = 4 
        wrong_check_call_interface      = 5 
        program_start_error             = 6 
        program_termination_error       = 7 
        x_error                         = 8 
        parameter_expected              = 9 
        too_many_parameters             = 10 
        illegal_command                 = 11 
        wrong_asynchronous_parameters   = 12 
        cant_enq_tbtco_entry            = 13 
        jobcount_generation_error       = 14 
        OTHERS                          = 15.

El comando 'ZLL' se define en la transacción SM69:
Por ejemplo, uno definido con el comando de sistema 'ls' y parámetro '-l'.

De este modo carga en la tabla interna gt_tabl todos los ficheros y directorios
del servidor UNIX que existen en el directorio ld_ruta.
Los directorios vienen indicados con una d y los ficheros con un guión.

Después de esto, sólo quedaría pegarte un poco con el formato para ver
la posición exacta en la que viene el nombre del fichero.