
ARCHIVOS EN SERVIDOR: LAS SENTENCIAS OPEN Y READ
1. TRATAMIENTO DE ARCHIVOS EN EL SERVIDOR.
En un ambiente real de trabajo, es común la utilización de un servidor de aplicaciones, para trabajar con archivos.
PRINCIPALES SENTENCIAS PARA EL MANEJO DE ARCHIVOS 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 al servidor.
- DELETE: para borrar archivos del servidor.
- CLOSE: para cerrar archivos del servidor.
Con la transacción AL11 podremos acceder a los directorios de SAP del servidor e incluso abrir los archivos.
Ingresando a la transacción veremos todos los directorios disponibles, haciendo doble clic sobre cualquiera de ellos podremos ver los archivos q hay adentro y si los archivos son de texto incluso podremos ver su contenido haciendo nuevamente doble clic.
Si deseamos crear un nuevo directorio seguramente vamos a necesitar q los administradores del sistema SAP nos otorgue los permisos necesarios.
2. APERTURA DE ARCHIVOS EN EL SERVIDOR
- Sentencia OPEN DATASET.
Ej:
OPEN DATASET <archivo> FOR <ACCESS> IN <MODE>.
IMPORTANTE: Si la apertura del archivo se realizó correctamente, entonces el SY-SUBRC será 0. Else será 8.
El nombre del archivo junto con el directorio en dde se encuentra, puede ingresarse como un literal entre comillas o en una variable.
Si no ingresamos el directorio y solo ingresamos el nombre, entonces el sistema intentará abrir el archivo en el directorio en el q corre el servidor de aplicaciones.
- Cláusula FOR INPUT: abrir un archivo para lectura.
Ej: Apertura de archivos para lectura.
OPEN DATASET <archivo> FOR INPUT IN TEXT <MODE>.
IMPORTANTE: El archivo q se intenta abrir debe existir. Caso contrario, el SY-SUBRC será 8.
Si el archivo existe y está abierto, el sistema se posicionará al comienzo del archivo.
Ej: Apertura de archivo para lectura.
* Abrir Fichero para lectura
OPEN DATASET p_path FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc NE 0.
* Error al abrir el archivo.
MESSAGE s000(z_prueba) WITH text-004.
ELSE.
En el ejemplo anterior, p_path es una parámetro de la pantalla de selección en dde el usuario ingresa el directorio y nombre del archivo.
NOTA: Es recomendable cerrar todos los archivos q ya están abiertos antes de realizar una re-apertura con la sentencia OPEN DATASET.
- Cláusula FOR OUTPUT: abrir un archivo para escritura.
Ej: Apertura de archivos para escritura
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 posicionará al comienzo del archivo.
Si la apertura se realiza correctamente, entonces el SY-SUBRC=0 else será 8.
Ej: Apertura de archivo para escritura.
* Abrir Fichero para escritura
OPEN DATASET p_path FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc NE 0.
* Error al abrir el archivo.
MESSAGE s000(z_prueba) WITH text-004.
ENDIF.
- Cláusula FOR APPENDING: abrir un archivo para agregar información.
Ej: Apertura de archivos para agregar información
OPEN DATASET <archivo> FOR APPENDING IN TEXT <MODE>.
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 archivo.
Siempre el SY-SUBRC=0.
Ej: Apertura de archivos para agregar información
* Abrir Fichero para agregar datos
OPEN DATASET p_path FOR APPENDING IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc NE 0.
* Error al abrir el archivo.
MESSAGE s000(z_prueba) WITH text-004.
ENDIF.
MODOS DE APERTURA DE ARCHIVOS:
- MODO TEXTO:
Para abrir un archivo en modo texto, debemos utilizar la cláusula IN TEXT MODE.
Ej: Apertura de archivos en modo texto
OPEN DATASET <archivo> FOR <ACCESS> IN TEXT MODE ENCODING DEFAULT.
NOTA: Si leemos o escribimos en un archivo q ha sido 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.
Ej: Apertura de archivo en modo texto.
* Abrir Fichero para lectura
OPEN DATASET p_path FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc NE 0.
* Error al abrir el archivo.
MESSAGE s000(z_prueba) WITH text-004.
ELSE.
- MODO BINARIO:
Para abrir un archivo en modo binario, debemos utilizar la cláusula IN BINARY MODE
Ej: Apertura de archivos en modo binario
OPEN DATASET <archivo> FOR <ACCESS> IN BINARY MODE.
Si leemos o escribimos en un archivo q ha sido abierto en modo binario, la información es transferida byte a byte.
Ej: Apertura de archivo en modo binario.
* Abrir Fichero para lectura
OPEN DATASET p_path FOR INPUT IN BINARY MODE.
IF sy-subrc NE 0.
* Error al abrir el archivo.
MESSAGE s000(z_prueba) WITH text-004.
ENDIF.
3. LECTURA DE ARCHIVOS DEL SERVIDOR
- Sentencia READ DATASET: para la lectura de archivos del servidor.
Ej:
READ DATASET <archivo> INTO <estructura>.
NOTA: Para determinar en que variable debemos almacenar los datos q leeremos del archivo, debemos conocer la
estructura del archivo que leeremos.
Si la lectura se realizó correctamente, entonces el SY-SUBRC=0 else 8.
Ej: Lectura de archivos con READ DATASET
* Leo el fichero
DO.
READ DATASET p_path 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.