Lección 4: Archivos en Servidor: las sentencias OPEN y READ
1. Tratamiento de archivos en el servidor.
ABAP provee una serie de sentencias para trabajar con archivos ubicados en el servidor de aplicaciones:
• OPEN DATASET: Para la apertura de archivos del servidor.
• READ DATASET: Para la lectura de archivos del servidor.
• TRANSFER: Para transferir datos de archivos del servidor.
• DELETE: Para borrar archivos del servidor.
• CLOSE: Para cerrar archivos del servidor.
A través de la transacción AL11, podemos acceder los directorios de SAP del servidor, y abrir archivos.
Si hacemos doble-click en cualquiera de estos directorios, podemos ver los archivos que contiene dicho directorio.
Si los archivos son de texto, podemos ver su contenido haciendo doble click sobre el archivo. Para crear directorios debemos tener los privilegios necesarios. Estos son normalmente proporcionados por los administradores del sistema.
Veamos cada una de estas sentencias en detalle.
2. Apertura de archivos en el servidor.
Para abrir archivos del servidor en ABAP, se usa la sentencia OPEN_DATASET.
OPEN DATASET <archivo> FOR <ACCESS> IN <MODE>
Si el archivo fue abierto sin problemas, el SY-SUBRC será 0. Si no, será 8.
<ACCESS> indica el tipo de acceso.
<MODE> indica si es tipo texto o binario.
En lugar de <archivo> se puede poner un literal con el directorio y el archivo (ej: C:/Temp/archivo.dat) o una variable que contenga este valor. Si no se indica el directorio sino solo el archivo, el sistema intentará abrir éste en el directorio donde corre el servidor de aplicaciones.
----0----
Para abrir un archivo para lectura, utilizamos la cláusula FOR INPUT:
OPEN DATASET <archivo> FOR INPUT IN TEXT IN <MODE>
Notas sobre el FOR INPUT: Si no existe el archivo a abrir, el SY-SUBRC devuelve 8. Si el archivo existe, el sistema se posicionará al comienzo del archivo.
Nota: Es recomendable cerrar todos los archivos que estén abiertos antes de hacer una re-apertura con OPEN DATASET.
----0----
Para abrir un archivo para la escritura, debemos utilizar la cláusula FOR OUTPUT:
OPEN DATASET <archivo> FOR OUTPUT IN TEXT IN <MODE>
Notas sobre el FOR OUTPUT:
• 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 posicionará al final del mismo.
• Si la apertura se realiza correctamente, entonces el SY-SUBRC será 0. Si no, será 8.
----0----
Si queremos abrir un archivo para agregar información, se utiliza la cláusula FOR APPENDING.
OPEN DATASET <archivo> FOR APPENDING IN TEXT IN <MODE>
Notas sobre el FOR APPENDING:
• Si el archivo no existe, se creará 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.
• El SY-SUBRC siempre será 0.
-----0----
Existen dos modos de apertura de un archivo:
• Modo Texto:
Para abrir un archivo en modo texto se utiliza la cláusula IN TEXT MODE:
Cuando trabajamos con un archivo abierto en modo texto, la información es transferida línea a línea. Si utilizamos el modo texto, debemos agregar la palabra reservada ENCODING DEFAULT.
• Modo Binario:
Para abrir un archivo en modo texto se utiliza la cláusula IN BINARY MODE:
Cuando trabajamos con un archivo abierto en modo binario, la información es transferida byte a byte.
3. Lectura de archivos del servidor.
Para leer archivos del servidor, utilizamos la sentencia READ DATASET.
Para determinar en qué variable debemos almacenar los datos del archivo leído, es necesario conocer la estructura del archivo que leeremos. Si la lectura se realizó correctamente, el
SY-SUBRC es 0.