✒️ABAP Los archivos en el servidor y las sentencias OPEN y READ
ABAP Los archivos en el servidor y las sentencias OPEN y READ
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.
ABAP dispone de una serie de sentencias para el tratamiento de archivos en el servidor de aplicaciones.
Las principales sentencias para el anejo de archivos en el servidor de aplicaciones son:
- 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 crear archivos del servidor.
2.- Apertura de archivos en el servidor.
OPEN_DATASET.- para la apertura de archivos.
OPEN DATASET <archivo> FOR <ACCESS> IN <MODE>
"Si la apertura del archivo se realizó correctamente, entonces el SY-SUBRC SERÁ 0, CASO CONTRARIO SERÁ 8".
El nombre del archivo junto con el directorio en donde se encuentra, pueden ingresarse como un iteral 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 que corre el servidor de aplicaciones.
Si se desea abrir un archivo para lectura, debemos utilizar la cláusula FOR INPUT, tal como veremos a continuación.
OPEN DATASET <archivo> FOR INPUT IN TEXT <MODE>
"El archivo que se intenta abrir debe existir. Caso contrario el SY-SUBRC = 8. Si el archivo existe y está abierto, se posicionará al comienzo del archivo."
* 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 e000(z_prueba) WITH text-001.
ENDIF.
En el ejemplo anterior, p_path es un parámetro del la pantalla de selección en donde el usuario ingresa el directorio y nombre del archivo.
"Es recomendable cerrar todos los archivos que ya están abiertos antes de realizar una re-apertura con la sentencia OPEN DATASET"
Para abrir un archivo para escritura, debemos utilizar la cláusula FOR OUTPUT, tal como lo vemos a continuación.
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á sobreescrito.
. Si existe y está abierto, el sistema se posicionará al comienzo del archivo.
. Si la apertura se realiza correctamente, entonces el SY-SUBRC será 0. Caso contrario será 8.
* Abrir archivo para escritura.
OPEN DATASET p_path FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc NE 0.
* Error al abrir el archivo
MESSAGE e000(z_prueba) WITH text-001.
ENDIF.
Si queremos abrir un archivo para agregar información, debemos utilizar la cláusula FOR APPENDING, tal como lo vemos a continuació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 mismo,
. Siempre el sy.subrc será 0
Existen dos modos de apertura de archivos.
. TODO TEXTO.- Para abrir un archivo en modo text, debemos utilizar la cláusula IN TEXT MODE.ejemplo:
OPEN DATASET <archivo> FOR <access> IN TEXT MODE ENCODING DEFAULT.
"Si leemos o escribimos en un archivo que ha sido abierto en modo texto, la información es transferida línea a línea.
Si utilizamos el modo text debemos agregar la palabra reservada ENCODING DEFAULT".
Ejemplo:
*Abrir ficheros para lectura.
OPEN DATASET p_path FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc = 0.
* Error al abrir el archivo
MESSAGE e000(z_prueba) WITH text-001.
ENDIF.
. MODO BINARIO.- Se utiliza la cláusula IN BINARY MODE.
OPEN DATASET <archivo> FOR <Access> IN MODE BINARY.
"Si leemos o escribimos en un archivo que ha sido abierto en modo binario, la información es transferida byte a byte."
* Abrir archivo para lectura
OPEN DATASET p_path FORM INPUT IN BINARY MODE.
IF sy-subrc BE 0.
* Error al abrir archivo
MESSAGE e0001(z_prueba) WITH text-001.
ENDIF.
3.- Lectura de archivos del servidor.
Utilizaremos la sentencia READ DATASET para la lectura de archivos del servidor. La sintaxis de la sentencia es la siguiente.
READ DATASET <archivo> INTO <estructura>
"Para determinar en que variables debemos almacenar los datos que leeremos del archivo, debemos conocer la estructura del archivo que leeremos.
Si la lectura se realizó correctamente entonces el SY-SUBRC será 0. Caso contrario será 8 ".
Ejemplo:
* Leer 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 Miguel Angel Acosta Acosta, en su ámbito de estudios para la Carrera Consultor ABAP.
Miguel Angel Acosta Acosta
Profesión: Ingeniero de Sistemas - Ecuador - Legajo: TF64C
✒️Autor de: 238 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP SD Nivel Avanzado
- Carrera Consultor en SAP SD Nivel Inicial
- Máster ABAP for HANA
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
Disponibilidad Laboral: FullTime
Presentación:
Profesional de ingeniería de sistemas en computación e informática, con experiencia en la implantación y soporte de proyectos informáticos para empresas del sector industrial y financiero.
Certificación Académica de Miguel Acosta