✒️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 servidor
- Se da en server de aplicaciones el trabajo de archivos
- Sentencias para manejo de archivos
-> OPEN DATASET: Apertura de archivos en server.
-> READ DATASET: Lectura de archivos en server.
-> TRANSFER: Transferir datos de archivos del server.
-> DELETE: Borrar archivos del server.
-> CLOSE: Cerrar archivos del server.
- Trx AL11 => acceder a directorios de SAP del servidor, incluso abrir archivos. Podemos ver archivos, si es de texto,
puede visualizarse. Si se requiere agregar directorio, requerimos de permisos necesarios por parte del admin del
sistema SAP.
2. Apertura de archivos en servidor
- Uso de sentencia OPEN DATASET.
- Sintaxis de sentencia: OPEN DATASET <archivo> FOR <ACCESS> IN <MODE>
- Si se realizó apertura satisfactoriamente, SY-SUBRC = 0. Caso contrario, 8.
- Nombre de archivo y directorio pueden ingresarse como literal entre comillas o en variable.
- Si sólo se ingresa nombre, el sistema intentará abrir archivo en directorio en que se ejecuta server de aplicaciones.
- Abrir archivo para lectura => uso de cláusula FOR INPUT.
- Sentencia => OPEN DATASET <archivo> FOR INPUT IN TEXT <mode>
- Si archivo que se intenta abrir existe, SY-SUBRC = 0. En caso contrario, 8.
- Si archivo está abierto, sistema se ubicará al comienzo de archivo.
- Ejm.:
OPEN DATASET p_path FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc NE 0.
MESSAGE s000(z_prueba) WITH text-004.
ENDIF.
Para este caso, p_path es un parámetro de la pantalla de selección
Nota: Recomendación, cerrar archivos antes de realizar una re-apertura con sentencia OPEN DATASET.
- Abrir archivo para escritura => uso de cláusula FOR OUTPUT.
- Sentencia: OPEN DATASET <archivo> FOR OUTPUT IN TEXT <MODE>.
- Si archivo no existe, se creará. Si existe pero está cerrado, el contenido será sobrescrito. Si existe y está abierto, sistema se posicionará al inicio de archivo. Si apertura se realiza satisfactoriamente, sy-subrc = 0. Caso contrario será 8.
- Ejm.:
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 requiere abrir para agregar información, se debe usar cláusula FOR APPENDING.
Sentencia: OPEN DATASET <archivo> FOR APPENDING IN TEXT <MODE>.
- Si archivo no existe, se creará. Si existe pero está cerrado, sistema lo abrirá y se posicionará al final del archivo.
Si existe y está abierto, sistema se posicionará al final del mismo. Siempre sy-subrc=0.
Ejm.:
OPEN DATASET p_path FOR APPENDING IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc NE 0.
MESSAGE s000(z_prueba) WITH text-004.
ENDIF.
- Modos para apertura de archivo:
-> Modo texto: Uso de cláusula IN TEXT MODE.
Sentencia: OPEN DATASET <archivo> FOR <ACCESS> IN TEXT MODE ENCODING DEFAULT.
Nota: Si leemos o escribimos en archivo abierto en este modo, la info es transferida línea a línea. Además,
debemos usar palabras reservadas ENCODING DEFAULT.
Ejm.:
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: Uso de la cláusula IN BINARY MODE.
Sentencia: OPEN DATASET <archivo> FOR <ACCESS> IN BINARY MODE.
Si leemos o escribimos en archivo abierto en este modo, la info es transferida byte a byte.
Ejm.:
OPEN DATASET p_path FOR INPUT IN BINARY MODE.
IF sy-subrc NE 0.
MESSAGE s000(z_prueba) WITH text-004.
ENDIF.
3. Lectura de archivos del servidor
- Uso de sentencia READ DATASET para la lectura. Sentencia: READ DATASET <archivo> INTO <estructura>.
Ejm.:
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.
 
 
 
Agradecimiento:
Ha agradecido este aporte: Francisco Compte Sanchez
Sobre el autor
Publicación académica de Darwin Enrique Terraza Berdugo, en su ámbito de estudios para la Carrera Consultor ABAP.
Darwin Enrique Terraza Berdugo
Colombia - Legajo: MM57E
✒️Autor de: 60 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor Basis NetWeaver Nivel Avanzado
- Carrera Consultor Basis NetWeaver Nivel Inicial
Disponibilidad Laboral: PartTime
Certificación Académica de Darwin Terraza