PDA

Ver la Versión Completa : Función para ejecutar comandos unix


cramr
29/05/08, 07:39:58
Muy buenas,

Tengo que ejecutar unos comandos en unix para copiar, borrar, etc. ficheros que están en determinadas rutas.

Otras veces he utilizado:

CALL FUNCTION 'RZL_START_PROGRAM_REMOTE'
EXPORTING
cmd = fichero_origen
cmd_arguments = fichero_destino
EXCEPTIONS
argument_error = 1
send_error = 2
OTHERS = 3.

Donde por ejemplo si quiero mover un fichero a otra ruta, en fichero_origen pongo mv seguido de la ruta del fichero origen, y en fichero_destino la ruta destino y el nombre del fichero.

La cuestión es que esta función internamente almacena el fichero_origen en una variable de 100 caracteres, y debido a que la ruta esta dentro de muchas carpetas y que el nombre de fichero es muy largo, pues la corta y no me lo hace.

Alguien sabe otra función que pueda utilizar para ejecutar comandos unix???

Y si no, al menos, alguna forma de poder borrar un fichero de una ruta unix, sin tener que utilizar esta función??? Asi intentaría copiar el fichero con un loop, y escribirlo en la ruta destino, y luego tendría que borrarlo de la ruta original.


muchas gracias

ballan
29/05/08, 08:26:19
Desde la transaccion SM49 puedes crear comandos externos para interactuar con el SO, create los comandos para mover, eliminar o lo que quieras hacer y luego esos comandos puedes ejecutarlos con la funcion
SXPG_COMMAND_EXECUTE o SXPG_COMMAND_EXECUTE_LONG que te permite mas longtud en los parametros

cramr
29/05/08, 09:30:34
Al final hice esto:

DATA: BEGIN OF itab OCCURS 0,
line(255),
END OF itab.

DATA: l_unix_command(500).

CALL 'SYSTEM' ID 'COMMAND' FIELD l_unix_command
ID 'ITAB' FIELD itab-*sys*.


Y en l_unix_command he puesto el comando que quiero, por ejemplo:

'mv ruta1/fich1 ruta2/fich2'

Gracias.