Close

enero 14, 2014

Ejemplos de sentencias para trabajar con tablas internas

Ahora veremos por medio de ejemplos como trabajar con las tablas internas en ABAP, en esta lección aprenderemos a cargar valores desde una base de datos, cargar datos manualmente, eliminar valores duplicados, ordenar datos y copiar valores entre tablas.

Cargar datos en una tabla interna

Podemos cargar datos ya sea registro por registro o podemos hacer una carga desde la base de datos usando sentencias OPEN SQL, veamos algunos ejemplos: En este ejemplo se cargan datos en una tabla interna mediante una sentencia SELECT, usando INTO TABLE, en este caso el orden y cantidad de campos de la sentencia SELECT deben de coincidir con el orden y campos de la tabla interna, en este caso la carga de datos se realiza como de muestra en esta imagen:

into-table

Si por alguna razón nuestra tabla interna no puede coincidir con los campos en la sentencia SELECT, por ejemplo si en la tabla interna hemos declarado algunas columnas que servirán para realizar otros cálculos, podemos utilizar la sentencia INTO CORRESPONDING FIELDS OF TABLE, esta sentencia carga los campos leídos en la sentencia SELECT en los campos de la tabla interna que coincidan con el mismo nombre, sin importar el orden de los campos, como se ve en esta imagen:

into-corresponding-fields

Si ya tenemos datos en una tabla interna pero queremos agregar otro conjunto de datos de forma similar a como trabaja la sentencia UNION de SQL, podemos utilizar las sentencias APPENDING TABLEAPPENDING CORRESPONDING FIELDS OF TABLE, dependiendo de si los campos de la sentencia SELECT y la tabla interna coincidan.

Además de cargar datos desde una sentencia SQL también podemos cargar datos manualmente, utilizando la tabla interna que ya definimos podemos usar estas sentencias para cargar datos.

Si queremos agregar filas de datos a tablas internas sin header line, debemos primero declarar un tipo de datos con las columnas que deseemos, luego declarar una tabla interna de ese mismo tipo y una variable que nos sirva como work area, para luego insertar los datos, aquí tenemos un ejemplo completo:

Operaciones con datos de una tabla interna

Ahora que tenemos datos en nuestra tabla interna podemos realizar una serie de operaciones, veremos ahora algunos ejemplos Si queremos ordenar los datos podemos hacerlo mediante la sentencia SORT, esta ordena la tabla por uno o mas campos separados por un espacio en blanco, el orden predeterminado es ascendente.

Para eliminar valores duplicados utilizamos la sentencia DELETE ADJACENT DUPLICATES, podemos eliminar los registros duplicados comparando todos los campos o solo comparando por medio de uno o mas campos separados por un espacio en blanco.

En algunas ocasiones necesitamos realizar operaciones sobre los datos, para hacer esto podemos recorrer los registros con la sentencia LOOP, está permite utilizar la clausula WHERE para recorrer solo registros que cumplan con alguna condición

Si lo que deseamos el leer el valor de una fila en especial podemos utilizar la sentencia READ

Si deseamos eliminar uno o más registros de nuestra tabla interna, podemos utilizar la sentencia DELETE, de forma similar a como se hace con OPEN SQL

Para reinicializar las tablas internas, podemos utilizar la sentencia CLEAR para limpiar el header line y REFRESH para limpiar los datos

Para copiar datos de una tabla interna a otra, podemos utilizar alguno de estos métodos, recordando que todo loop puede utilizar también la clausula WHERE: