Vous êtes sur la page 1sur 19

Leccin 1: Archivos Locales : Upload de datos

1|

Tratamiento de archivos locales

ABAP nos proporciona una serie de mtodos muy tiles para el tratamiento de
archivos
locales
ubicados
en
nuestra
PC
mediante
la
clase CL_GUI_FRONTEND_SERVICES. Los conceptos de clases y mtodos los
veremos en detalle en el "Curso Programador ABAP Nivel Avanzado". Por ahora,
nos basta con entender que los mtodos se ejecutan como si fueran funciones.
Para visualizar todos los mtodos disponibles en la clase, editamos un
programa ABAP y presionamos el botnPattern o Patrones. Aqu marcamos la
opcin "ABAP Object Patterns" y presionamos continuar. En la siguiente pantalla
escribimos lo siguiente:

Y luego presionamos F4 en Method y veremos la siguiente pantalla con todos los


mtodos de la clase:

Veremos en detalle los siguientes mtodos:


FILE_OPEN_DIALOG: para mostrar la pantalla de navegacin que permita al
usuario poder seleccionar el archivo del directorio de su PC.
GUI_DOWNLOAD: para descargar datos de los programas a archivos en la PC.
GUI_UPLOAD: para bajar datos de los archivos de la PC a nuestros programas.
Otra
forma
de
visualizar
el
contenido
de
la
claseCL_GUI_FRONTEND_SERVICES es ingresando al Class Builder que
es la transaccin SE24.

2|

Bsqueda de archivos en la PC

Para buscar archivos locales en el directorio de nuestra PC, utilizaremos el


mtodoCL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG. Veamos un ejemplo
de su utilizacin:

Analicemos los parmetros ms importantes del mtodo:


WINDOW_TITLE: asigna un ttulo a la ventana de bsqueda.
DEFAULT_FILENAME: contiene el nombre del archivo que buscamos en nuestra
PC. Si colocamos el literal astersco podremos ver todos los archivos que se
encuentren en los directorios.
FILE_TABLE: contiene la ruta y nombre del archivo seleccionado.
Al
igual
que
las
funciones,
el mtodo CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG tiene
definidas
excepciones. Cada excepcin tiene asociada una descripcin que contempla cada
uno de los errores posibles que pueden ocurrir al ejecutar dicho mtodo.
Si ejecutamos el cdigo anterior veremos la siguiente ventana de dilogo:

Es recomendable la utilizacin del mtodo FILE_OPEN_DIALOG, en los


programas ABAP que trabajan con archivos locales, ya que facilita
ampliamente la interaccin entre el usuario y el programa y evita errores
de tipeo de datos.

3|

Lectura de datos de los archivos locales

Para leer datos de los archivos locales en las tablas internas de nuestros
programas, utilizaremos el mtodoCL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD.

Analicemos los parmetros ms importantes del mtodo:


FILENAME: contiene el directorio y nombre del archivo local con el que estamos
trabajando.
FILETYPE: contiene el tipo o extensin del archivo local.
Los tipos admitidos son:
BIN: para archivos binarios.
ASC: para archivos ASCII.
DAT: para archivos excel. Las columnas son separadas utilizando tabs. Las
lneas son separadas con saltos de lnea.
WK1: para archivos excel y de lotus.
HAS_FIELD_SEPARATOR: indica que el archivo local tiene separadores.
DATA_TAB: es la tabla interna donde almacenaremos los datos del archivo local.

En este mtodo estn definidas excepciones con descripciones que contemplan


cada uno de los errores que se pueden producir al ejecutar el mtodo.
En algunos programas ABAP, podemos ver que se utilizan las
funciones WS_UPLOAD y UPLOAD. No es recomendable la utilizacin de
estas funciones debido a que actualmente son considerados objetos
obsoletos por SAP.

Leccin 2 : Archivos Locales : Download de datos


1|

Grabacin de datos en archivos locales

Para grabar datos existentes en las tablas internas de nuestros programas a


archivos
ubicados
en la
PC,
utilizaremos
el
mtodo CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD. Veamos un ejemplo de
su utilizacin:

Analicemos algunos de los parmetros del mtodo:


FILENAME: contiene el directorio y nombre del archivo a descargar a la
PC.
FILETYPE: contiene el tipo o extensin del archivo que descargamos a la
PC.
Los tipos o extensiones admitidas son:

BIN: para archivos binarios. Se debe especificar la longitud del archivo


en el parmetro BIN_FILESIZE. Latabla interna que se utiliza debe tener un solo
campo del tipo X.
ASC: para archivos ASCII.
DAT: para archivos excel. Las columnas son separadas utilizando tabs.
Las lneas son separadas con saltos de lnea.
WK1: para archivos excel y de lotus.

WRITE_FIELD_SEPARATOR: indica si se generar un separador de


archivo o no y cual ser.
DATA_TAB: aqu se almacena el contenido del archivo. Esta tabla debe tener la
misma estructura del archivo.
En este mtodo tambin estn definidas excepciones con descripciones que
contemplan cada uno de los errores que se pueden producir al ejecutar el
mtodo.
Luego si ejecutamos el cdigo veremos el mensaje que dice que la transferencia
de datos se realiz correctamente y se especifica la cantidad de bytes transferida.

En algunos programas ABAP, podemos ver que se utilizan las


funciones DOWNLOAD y WS_DOWNLOAD. No es recomendable la
utilizacin de estas funciones debido a que actualmente son consideradas
objetos obsoletos por SAP.

Leccin 4: Archivos en Servidor: las sentencias OPEN y READ


1|

Tratamiento de archivos en el servidor

En un ambiente real de trabajo, es comn la utilizacin de un servidor de


aplicaciones, para el trabajar con archivos.
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 de archivos al servidor.
DELETE: para borrar archivos del servidor.
CLOSE: para cerrar archivos del servidor.
A continuacin veremos en detalle cada una de estas sentencias.

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:

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 literal 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 queremos abrir un archivo para lectura, debemos utilizar la clusula FOR
INPUT, tal como vemos a continuacin:

El archivo que se intenta abrir debe existir. Caso contrario, el SY-SUBRC


ser 8.
Si el archivo existe y est abierto, el sistema se posicionar al comienzo
del archivo.

Veamos un ejemplo:

En el ejemplo anterior, p_path es una parmetro de la pantalla de seleccin en


donde el usuario ingresa el directorio y nombre del archivo.
Es recomendable cerrar todos los archivos que ya estn abiertos antes de
realizar una reapertura con la sentencia OPEN DATASET.
Si queremos abrir un archivo para escritura, debemos utilizar la clusula FOR
OUTPUT, tal como vemos a continuacin:

Si el archivo no existe, se crear automticamente.


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.

Veamos un ejemplo:

Si queremos abrir un archivo para agregar informacin, debemos utilizar la


clusula FOR APPENDING, tal como vemos a continuacin.

Si el archivo no existe, se crear automticamente.


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.

Veamos un ejemplo:

Existen dos modos de apertura de archivos:


MODO TEXTO
Para abrir un archivo en modo texto, debemos utilizar la clusula IN TEXT MODE,
tal como vemos a continuacin:

Si leemos o escribimos en un archivo que ha sido abierto en modo texto,


la informacin es transferida lnea a lnea.
Si
utilizamos
el
modo
texto
reservada ENCODING DEFAULT

debemos

agregar

la

palabra

Veamos un ejemplo:

MODO BINARIO
Para abrir un archivo en modo binario, debemos utilizar la clusula IN BINARY
MODE, tal como vemos a continuacin:

Si leemos o escribimos en un archivo que ha sido abierto en modo binario,


la informacin es transferida byte a byte.
Veamos un ejemplo:

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:

Para determinar en que variable 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.

Veamos un ejemplo:

Leccin 5: Archivos en Servidor : Las sentencias Transfer,


Delete y Close
1|

Transferencia de archivos al servidor

Utilizaremos la sentencia TRANSFER para transferir datos desde nuestros


programas ABAP a los archivos ubicados en el servidor de aplicaciones. La
sintaxis de la sentencia es la siguiente:

El modo en que se realiza la transferencia de informacin se corresponde


con el modo de apertura del archivo.
Si el archivo no est abierto para escritura, el sistema intentar abrirlo
en BINARY MODE o utilizando la ltima ejecucin de la sentencia OPEN
DATASET.

Veamos un ejemplo:

2|

Borrado de archivos del servidor

Utilizaremos la sentencia DELETE DATASET para borrar archivos del servidor de


aplicaciones. La sintaxis de la sentencia es la siguiente:

Para borrar un archivo, previamente debemos abrirlo.


Si el borrado se realiza correctamente, entonces el SY-SUBRC ser 0. Caso
contrario, ser 4.

Veamos un ejemplo:

3|

Cierre de archivos del servidor

Utilizaremos la sentencia CLOSE DATASET para cerrar archivos del servidor de


aplicaciones. La sintaxis de la sentencia es la siguiente:

Es ampliamente recomendable realizar siempre el cierre de los archivos.


Veamos un ejemplo:

4|

Bsqueda de archivos en el servidor

Utilizando la funcin /SAPDMC/LSM_F4_SERVER_FILE podemos crear una ventana


de navegacin en el servidor de aplicaciones para poder seleccionar el archivo
que deseamos. Veamos un ejemplo de su utilizacin:

Si ejecutamos el cdigo anterior veremos el siguiente mensaje ya que no


disponemos de un servidor de aplicaciones para probar.

Si lo tuviramos, visualizaramos una ventana de dilogo donde podremos buscar


los archivos en el servidor.

Leccin 7: Field Symbols


1|

Qu son los Field Symbols?

FIELD SYMBOL: Es un tipo de sentencia ABAP que nos permite trabajar


con los datos de los programas en forma dinmica en tiempo de
ejecucin.
Al contrario de lo que sucede con el acceso esttico de los datos, donde
necesitamos especificar el nombre de un objeto para poder hacer algo con el,
los Field Symbol nos permiten acceder y pasar datos cuyos nombres y atributos no
conocemos hasta el momento de la ejecucin.
Se puede considerar a los Field Symbol como nombres simblicos de los datos, ya
que cuando se utilizan, el sistema trabaja con el contenido de los datos asignados
y no con el contenido del field symbol.
Los Field Symbol nos proveen de gran flexibilidad debido a que:
Si queremos procesar partes de campos, nos permiten especificar
el offset y el desplazamiento de un campo en forma dinmica.
Se puede forzar a un Field Symbol para que tome diferentes atributos
tcnicos que los del campo asignado a l.
La mayora de los errores que cometamos en la utilizacin de Field
Symbols los detectaremos recin en tiempo de ejecucin. Esto hace que
sean bastante ms difciles de detectar. Por lo tanto solo debemos utilizar
Field Symbol si no podemos llegar al mismo resultado con las sentencias
ABAP convencionales.

2|

Declaracin de un Field Symbol

Para declarar un Field Symbol vamos a utilizar la siguiente sintaxis:

Si no especificamos un tipo a un Field Symbol, este puede contener


cualquier dato. Cuando asignamos un dato al Field Symbol, este hereda
los atributos tcnicos del dato.
Los tipos de datos genricos posibles para un Field Symbol son:
Tipo de
especificacin

Objeto de datos

TYPE ANY o sin


especificacin

Todos los tipos de objetos de datos


son aceptados. El field symbol adopta los
atributos del dato.

TYPE C, N, P o X

Solo los tipos de datos C, N, P y X son


aceptados. El field symbol adopta la
longitud y decimales del dato.

TYPE TABLE

El sistema chequea si la tabla es


estndar.

TYPE ANY TABLE

El sistema chequea si el campo es una


tabla interna. El field symbol hereda
todos los atributos de la tabla.

El sistema chequea si el campo es


TYPE INDEX TABLE una tabla indexada. El field symbol
hereda todos los atributos de la tabla.
TYPE STANDARD
TABLE

El sistema chequea si el campo es


una tabla estndar. El field symbol
hereda todos los atributos de la tabla.

TYPE SORTED
TABLE

El sistema chequea si el campo es


una tabla sorted. El field symbol hereda
todos los atributos de la tabla.

TYPE HASHED
TABLE

El sistema chequea si el campo es


una tabla hashed. El field symbol hereda
todos los atributos de la tabla.

Veamos un ejemplo de la utilizacin de un Field-symbol:

3|

Asignacin de datos a un Field Symbol

Para asignar datos a un Field Symbol utilizamos la sentencia ASSIGN.


La asignacin que utilizamos es esttica ya que sabemos el nombre del campo
que queremos asignar al Field Symbol.

La sintaxis utilizada sera la siguiente:

Veamos un ejemplo: