✒️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
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 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 del archivo al servidor.
DELETE. para borrar archivos del servidor.
CLOSE. para cerrar archivos del servidor.
Con la transaccion AL11 podemos acceder a los directorios de SAP del servidor, e incluso abrir los archivos.
APERTURA DE ARCHIVOS EN EL SERVIDOR.
Utilizaremos la sentencia OPEN DATASET para la apertura de archivos.
Sintaxis.
OPEN DATASET <archivo>FOR<ACCESS>IN<MODE>.
Si la apertura del archivo se realizo correctamente, entonces el SY-SUBRC sera 0. Caso contrario, sera 8.
El nombre del acrchivo 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, etonces 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 FOR INPUT(clausula ABAP que se utiliza para la apertura de archivos para la lectura).
Sintaxis.
OPEN DATASET<archivo>FOR INPUT IN TEXT<MODE>.
El archivo que se intenta abrir debe existir. Caso contrario, el SY-SUBRC sera 8.
ejemplo:
*abrir fichero para lectura
OPEN DATASET p_patch 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_patch es un parametro de la pantalla de seleccion en donde el usuario ingresa al directorio y nombre del archivo.
Es recomendable cerrar todos los archivos que ya estan abiertos antes de realizar una re-apertura con la sentencia OPEN DATASET.
SI queremos abrir un archivo para escritura , debemos utilizar la clausula FOR OUTPUT,
SIntaxis.
OPEN DATASET <archivo>FOR OUTPUT IN TEXT <MODE>.
Si el achivo no existe, se cerrara automaticamente. Si existe y esta abierto , el sistema se posicionara al comienzo del archivo.
Si la apertura se realiza correctamente, entonces el SY-SUBRC sera 0. Caso contrario, sera 8.
ejemplo
*Abrir un fichero para escritura.
OPEN DATASET p_patch 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.
-------------------------------------------------
Si queremos abrir un archivo para agregar informacion, debemos utilizar la clausula FOR APPENDING,
SIntaxis.
OPEN DATASET<archivo> FOR APPENDING IN TEXT<MODE>
Si el archivo no existe, se creara automaitcamente. Si existe pero esta cerraro, el sistema lo abrira y se posicionara al final del mismo.
Si existe y esta abierto, el sistema se posicionara al final del archivo. Siempre el SY-SUBRC sera 0.
ejemplo:
*Abrir un fichero para agregar datos.
OPEN DATASET p_patch 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.
-------------------------------------------------
Existen dos modos de apertura de archivos.
MODO TEXTO.
Para abrir un archivo en modo texto, debemos utilizar la clausula IN TEXT MODE
sintaxis.
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 informacion es transferida linea a linea. Si utilizamos el modo texto debemos agregar la palabra reservada ENCODING DEFAULT.
*Abrir un fichero para lectura.
OPEN DATASET p_patch FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc NE 0.
*error al abrir el archivo
MESSAGE s000 (z_prueba) WITH text-004.
ENDIF.
-------------------------------------------------
MODO BINARIO.
Para abrir un archivo en modo binario, debemos utilizar la clausula IN BINARY MODE
Sintaxis
OPEN DATASET <archivo>FOR<ACCESS> IN BINARY MODE.
Si leemos o escribimos en un archivo que ha sido abierto en modo binario, la informacion es transferida byte a byte.
ejemplo.
*Abrir un fichero para lectura.
OPEN DATASET p_patch FOR INPUT IN BINARY MODE .
IF sy-subrc NE 0.
*error al abrir el archivo
MESSAGE s000 (z_prueba) WITH text-004.
ENDIF.
-------------------------------------------------
LECTURA DE ARCHIVOS DEL SERVIDOR.
Utilizaremos la sentencia READ DATASET para la lectura de archivos del servidor.
Sintaxis.
READ DATASET<archivo>INTO<estructura>.
Para determinar en que variable debemos alacenar los datos que leeremos del archivo, debemos conocer la estructura del archivo que leeremos.
Si la lectura se realizo correctamente, entonces el SY-SUBRC sera 0. Caso contrario, sera 8.
ejemplo.
*leo el fichero
DO.
READ DATASET p_patch 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 Marco Antonio Vazquez Gonzalez, en su ámbito de estudios para la Carrera Consultor ABAP.
Marco Antonio Vazquez Gonzalez
Mexico - Legajo: RB98L
✒️Autor de: 60 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Marco Vazquez