✒️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 archivo en el servidor:
En el 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 son:
OPEN DATASET: para la apertura de archivos del servidor.
READ DATASET: para la lectura de archivo del servidor.
TRANSFER: para transferir datos de archivo del servidor.
DELETE: para borrar archivo del servidor.
CLOSE: para cerrar archivo del servidor.
Con la transacción AL11 podemos acceder a los directorios de SAP del servidor eh incluso abrir los archivos.
2. Apertura de archivos en el servidor
Utilizaremos la sentencia OPEN DATASET para la apertura de archivos. La sintaxis de la sentencia es la siguiente:
OPEN DATASET <archivo> FOR <ACCESS> IN <MODE>.
El nombre del archivo junto con el directorio donde se encuentra, pueden ingresarse como un literal entre comillas o una variable. Si no ingresamos el directorio y solo ingresamos el nombre, entonces el sistema intentara abrir el archivo en el directorio en el que corre el servidor de aplicaciones.
Si queremos abrir el archivo para lectura debemos utilizar la cláusula FOR INPUT
OPEN DATASET <archivo> FOR INPUT IN TEXT <MODE>.
* 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 un parámetro de la pantalla de selección en donde el usuario ingresa el directorio y nombre del archivo. Si queremos abrir un archivo para escritura debemos utilizar la cláusula FOR OUTPUT, la sentencia sería la siguiente:
OPEN DATASET <archivo> FOR OUTPUT IN TEXT <MODE>.
Nota: Si el archivo no existe se creara automáticamente. Si existe pero eta cerrada el contenido será sobrescrito. Si existe y está abierto el sistema se posicionara al comienzo del archivo. Si la apertura se realiza correctamente, entonces el SY_SUBRC será 0. Caso contrario, será 8.
Ejemplo.
* 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.
Si queremos abrir un archivo para agregar información, debemos utilizar la cláusula FOR APPENDING, tal como vemos a continuación. OPEN DATASET <archivo> FOR APPENDING IN TEXT <MODE>.
* 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.
Exiten dos modos de aperturar archivos:
MODO TEXTO
Para abrir un archivo modo texto, debemos utilizar la cláusula IN TEXT MODE, tal como vemos a continuación:
OPEN DATASET <archivo> FOR <ACCESS> IN TEXT ENCODING DEFAULT. Ejemplo
* 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.
MODO BINARIO
Para abrir un archivo en modo binario, debemos utilizar la cláusula IN BINARY MODE, tal como vemos a continuación:
OPEN DATASET <archivo> FOR <ACCESS> IN BINARY MODE.
* 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 archivo del servidor.
Utilizamos la sentencia READ DATASET para la lectura de archivo del servidor. La sintaxis de la sentencia es la siguiente:
READ DATASET <archivo> INTO <escritura>.
* Leo 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 Edward Henry Rosario Piezal, en su ámbito de estudios para la Carrera Consultor ABAP.
Edward Henry Rosario Piezal
Profesión: Ingeniero en Sistema - Republica Dominicana - Legajo: FM99R
✒️Autor de: 68 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Certificación Académica de Edward Rosario