
ARCHIVOS EN SERVIDOR: LAS SENTENCIAS TRANSFER, DELETE y CLOSE.
1.- Transferencias de archivos al servidor.
Para transferir los datos desde nuestros programas ABAP a los archivos ubicados en el servidor de aplicaciones se utiliza la sentencia TRANSFER.
TRANSFER <estructura> TO <archivo>.
"El modo en que se realiza la transferencia de información se corresponde con el modo de apertura del archivo.
Si el archivo no está abierto para escritura, el sistema intentará abrirlo en BINARY MODE o uTilizando la última ejecución de la sentencia OPEN DATASET".
Ejemplo:
* abrir archivo
OPEN DATASET p_path FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc NE 0.
MESSAGE E000(z_prueba) WITH text-004.
ELSE.
* Transfiero los datos al fichero
st_archivo-dni = '27654315'.
st_archivo-nombre_ape = 'Miguel Acosta'.
st_archivo-estado_usu = 'A'.
st_archivo-direccion = 'Av. na'.
st_archivo-codigo_postal= '1568'.
st_archivo-fecha-nac = '19781097'.
st_archivo-estado_civil = 'S'.
TRANSFER st_archivo TO p_path.
ENDIF.
2.- Borrado de archivos del servidor.
Con la sentencia DELETE DATASET se borra los archivos del servidor de aplicaciones. Ejemplo:
DELETE DATASET <archivo>.
"Para borrar un archivo, previamente debemos abrirlo
Si el borrado se realiza correctamente, entonces el SY-SUBRC será 0, caso contrario será 4".
* Borra el archivo.
IF NOT p_borrar IS INITIAL.
DELETE DATASET p_path.
ENDIF.
3.- Cierre de archivos del servidor.
Para cerrar archivos en el servidor de aplicaciones, utilizamos COSE DATASET.
CLOSE DATASET <archivo>
"Es ampliamente recomendado realizar siempre el cierre de los archivos". Ejemplo:
* Cierre de ficheros
CLOSE DATASET p_path.
IF sy-subrc NE 0.
MESSAAGE e000(z_prueba) WITH text-004.
ENDIF.
4.- Búsqueda de archivos en el servidor.
Utilizando la función /SAPDMC/LSM_F4_SERVER_FILE, podemos crear un a ventana de navegación en el servidor de aplicaciones para poder seleccionar el archivo que deseamos.
DATA: vl_file(500) TYPE c.
CALL FUNCTION '/SAPDMC/LSM_F4_SERVER_FILE'
EXPORTING
directory = p_path
filemask = '*'
IMPORTING
serverfile = vl_file
EXCEPTIONS
canceled-by-user = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
MOVE vl_file TO p_path.
ENDIF.
Al ejecutar, si no se dispone de un servidor de aplicaciones; se desplegaría el mensaje en un aventana: "Operating system message opendir"
En caso contrario, se visualiza una ventana de diálogo en donde se puede buscar los archivos en el servidor.