✒️ABAP Los archivos en el servidor y las sentencias OPEN y READ
ABAP Los archivos en el servidor y las sentencias OPEN y READ
Lección 4. Archivos en Servidor: Las sentencias OPEN y READ.
1.- Tratamiento de archivos en el servidor.
En una ambiente real de trabajo, es común la utilización de un servidor de aplicaciones, para trabajar con archivos.
ABAP dispone de una serie de sentencias para el tratamiento de archivos ubicados en el servidor de aplicaciones.
Las principales sentencias para el manejo de archivos del servidor de aplicaciones son:
· OPEN DATASET: para la apertura de archivos de servidor.
· READ DATASET: para la lectura de archivos de servidor.
· TRANSFER: para transferir datos de archivos al servidor.
· DELETE: para borrar archivos del servidor.
· CLOSE: para cerrar archivos del servidor.
La transacción AL11 sirve para acceder a los directorios disponibles de SAP del servidor, e incluso abrir
los archivos. Si son de texto, se puede ver su contenido. Para crear nuevos directorios, se necesita permisos de los administradores de SAP.
2.-Apertura de archivos en el servidor.
Utilizaremos la sentencia OPEN DATASET para la apertura de archivos.
OPEN DATASET <archivo> FOR <ACCESS> IN <MODE>.
Si la apertura se realizó correctamente, el SY-SUBRC será 0, si no, será 8.
El nombre del archivo junto con el directorio en donde se encuentra, pueden ingresarse como un literal entre comillas o en una variable. Si no ingresamos el directorio y solo ingresamos el nombre, entonces el sistema intentara abrir el archivo en el directorio en el que corre el servidor de aplicaciones.
.-Si queremos abrir un archivo para lectura, debemos utilizar la clausula:
OPEN DATASET <archivo> FOR INPUT IN TEXT <MODE>.
El archivo que se intenta abrir debe existir. En caso contrario SY-SYBRC será 8. Si el archivo existe y está abierto, el sistema se posicionara al comienzo del archivo.
*Abrir Fichero para lectura
OPEN DATASET p_path FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc NE 0.
MESSAGE s000(z_prueba) WITH text-004.
ELSE.
Es recomendable cerrar todos los archives que ya están abiertos antes de realizar una reapertura con la sentencia OPEN DATASET.
.- Si queremos abrir un archivo para escritura, debemos utilizar la clausula FOR OUTPUT:
OPEN DATASET <archivo> FOR OUTPUT IN TEXT <MODE>
Si el archivo no existe, se creará automáticamente.
Si existe, pero está cerrado, el contenido será sobrescrito.
Si existe y está abierto, el sistema se posicionara al comienzo del archivo.
Si la apertura se realiza correctamente, entonces sy-subrc será 0. En caso contrario será 8.
OPEN DATASET p_path FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc NE 0.
MESSAGE s000(z_prueba) WITH text-004.
ELSE.
.- Si queremos abrir un archiva para agregar información, debemos utilizar la clausula FOR APPENDING:
OPEN DATASET <archivo> FOR APPENDING IN TEXT <MODE>
Si el archive no existe, se creara automáticamente.
Si existe pero está cerrado, el sistema lo abrirá y se posicionará al final del mismo.
Si existe y está abierto, el sistema se posicionará al final del mismo.
Siempre el SY-SUBRC será 0
OPEN DATASET p_path FOR APPENDING IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc NE 0.
MESSAGE s000(z_prueba) WITH text-004.
ELSE.
Existen dos modos de apertura de los archivos.
A.- MODO TEXTO,
OPEN DATASET <archivo> FOR <ACCESS> IN TEXT MODE ENCODING DEFAULT.
Si leemos o escribimos en un archive que ha sido abierto en modo texto, la información es transferida línea a línea.
modo texto debemos agregar la palabra reservada ENCODING DEFAULT
OPEN DATASET p_path FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc NE 0.
MESSAGE s000(z_prueba) WITH text-004.
ELSE.
B.- MODO BINARIO
Para abrir un archive en modo binario debemos utilizar la clausula IN BINARY MODE, tal como vemos:
OPEN DATASET <archivo> FOR <ACCESS> IN BINARY MODE.
Si leemos o escribimos en un archive que ha sido abierto en modo binario, la información es transferida byte a byte.
OPEN DATASET p_path FOR INPUT IN BINARY MODE.
IF sy-subrc NE 0.
MESSAGE s000(z_prueba) WITH text-004.
ELSE.
2.- Lectura de archivos del servidor.
Utilizaremos la sentencia READ DATASET para la lectura de archivos del servidor.
READ DATASET <archivo> INTO <estructura>.
Para determinar en que variable debemos almacenar los datos que leeremos del archivo, debemos conocer la estructura del archivo que leeremos.
*Leo el fichero
DO
READ DATASET p_path INTO st_archivo.
IF sy-subrc = 0.
MOVE-CORRESPONDING st_archivo TO ti_archivo.
APPEND ti_archivo.
CLEAR: ti_archivo, st_archivo.
ELSE.
EXIT.
ENDIF.
ENDDO.
 
 
 
Sobre el autor
Publicación académica de Juan Hernández, en su ámbito de estudios para la Carrera Consultor ABAP.
Juan Hernández
Profesión: Programador Informático - España - Legajo: XQ15K
✒️Autor de: 125 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: PartTime
Certificación Académica de Juan Hernández