✒️ABAP Los archivos en el servidor y las sentencias OPEN y READ
ABAP Los archivos en el servidor y las sentencias OPEN y READ
Tratamiento de archivos en el servidor
ABAP dispone de una serie de sentencias para el tratamiento de archivos ubicados en el servidor de aplicaciones. Las principales sentencias 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 al servidor.
- DELETE: para borrar archivos del servidor.
- CLOSE: para cerrar archivos del servidor.
Nota: Con la transacción AL11 es posible acceder a los directorios de SAP del servidor e inclusive abrir los archivos para ver su contenido (si los archivos son de texto).
Apertura de archivos en el servidor
Se utiliza la sentencia OPEN DATASET para la apertura de archivos. La sintaxis de la sentencia es la siguiente:
OPEN DATASET <archivo> FOR <ACCESS> IN <MODE>.
Nota: Si la apertura del archivo se realizó correctamente, entonces el SY-SUBRC será 0. Caso contrario, será 8.
Se ingresa como un literal entre comillas o en una variables el nombre del archivo junto con el directorio donde se encuentra. Si no se especifica el directorio, el sistema intenta abrir el archivo en el directorio en el que corre el servidor de aplicaciones.
Si se quiere abrir un archivo para lectura, se debe utilizar la cláusula FOR INPUT:
OPEN DATASET <archivo> FOR INPUT IN TEXT <MODE>.
Nota: El archivo que se intenta abrir debe existir. De lo contrario, el SY_SUBRC será 8. Si el archivo existe y está abierto, el sistema se posicionará al comienzo del archivo. Ejemplo:
OPEN DATASET p_path FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc NE 0.
MESSAGE s000(z_prueba) WITH text-004.
ELSE.
En este ejemplo, p_path es un parámetro de la pantalla de selección en donde el usuario ingresa directorio y nombre del archivo.
Nota: Es recomendable cerrar todos los archivos que ya están abiertos antes de realizar una reapertura con la sentencia OPEN DATASET.
Si se quiere abrir un archivo para escritura, se debe utilizar la cláusula FOR OUTPUT:
OPEN DATASET <archivo> FOR OUTPUT IN TEXT <MODE>.
Nota: 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 será 0. Caso contrario, será 8. Ejemplo:
OPEN DATASET p_path FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc NE 0.
MESSAGE s000(z_prueba) WITH text-004.
ENDIF.
Si se quiere abrir un archivo para agregar información, se debe utilizar la cláusula FOR APPENDING:
OPEN DATASET <archivo> FOR APPENDING IN TEXT <MODE>.
Nota: 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 será 0. Ejemplo:
OPEN DATASET p_path FOR APPENDING IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc NE 0.
MESSAGE s000(z_prueba) WITH text-004.
ENDIF.
Existen dos modos de apertura de archivos:
- MODO TEXTO: Para abrir un archivo en modo texto, se debe utilizar la cláusula IN TEXT MODE:
OPEN DATASET <archivo> FOR <ACCESS> IN TEXT MODE ENCODING DEFAULT.
Nota: Si se lee o se escribe en un archivo que ha sido abierto en modo texto, la información es transferida línea a línea. Si se utiliza el modo texto se debe agregar la palabra reservada ENCODING DEFAULT. Ejemplo:
OPEN DATASET p_path FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc NE 0.
MESSAGE s000(z_prueba) WITH text-004.
ENDIF.
- MODO BINARIO: Para abrir en modo binario se debe utilizar la cláusula IN BINARY MODE:
OPEN DATASET <archivo> FOR <ACCESS> IN BINARY MODE.
Nota: Si se lee o se escribe en un archivo que ha sido abierto en modo binario, la información es transferida byte a byte. Ejemplo:
OPEN DATASET p_path FOR INPUT IN BINARY MODE.
IF sy-subrc NE 0.
MESSAGE s000(z_prueba) WITH text-004.
ENDIF.
Lectura de archivos del servidor
Se utiliza la sentencia READ DATASET para la lectura de archivos del servidor. La sintaxis de la sentencia es la siguiente:
READ DATASET <archivo> INTO <estructura>.
Nota: Para determinar en que variables se debe almacenar los datos que se leen del archivo, se debe conocer la estructura del archivo. Si la lectura se realizó correctamente, entonces el SY-SUBRC será 0. Caso contrario, será 8.
Ejemplo:
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 Mauricio Sierra Cardona, en su ámbito de estudios para la Carrera Consultor ABAP.
Miguel Mauricio Sierra Cardona
Profesión: Ingeniero de Desarrollo E Innovación - Colombia - Legajo: GN43E
✒️Autor de: 61 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Miguel Sierra