Sei sulla pagina 1di 9

15/8/2014 Ejemplos de sentencias para trabajar con tablas internas.

| ABAP: Fcil para mi


http://abap.facilparami.com/2014/01/ejemplos-de-sentencias-para-trabajar-con-tablas-internas/ 1/9
ABAP: Fcil para mi
Buscar dentro del blog...
Ejemplos de sentencias para trabajar
con tablas internas
Ahora veremos por medio de ejemplos como trabajar con las tablas internas
en ABAP, en esta leccin 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:
"Declarar una tabla interna con Header line
15/8/2014 Ejemplos de sentencias para trabajar con tablas internas. | ABAP: Fcil para mi
http://abap.facilparami.com/2014/01/ejemplos-de-sentencias-para-trabajar-con-tablas-internas/ 2/9
DATA: BEGIN OF it_bkpf OCCURS 0,
bukrs TYPE bukrs,
belnr TYPE belnr_d,
gjahr TYPE gjahr,
END OF it_bkpf.
"Cargar tabla bkpf en una tabla interna
SELECT bukrs belnr gjahr
INTO TABLE it_bkpf
FROM bkpf.
Si por alguna razn 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 servirn para realizar otros clculos, podemos utilizar la
sentencia INTO CORRESPONDING FIELDS OF TABLE, esta sentencia carga
los campos ledos 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:
"Cargar tabla bkpf en una tabla interna
SELECT gjahr bukrs
INTO CORRESPONDING FIELDS OF TABLE it_bkpf
FROM bkpf.
Si ya tenemos datos en una tabla interna pero queremos agregar otro conjunto de
15/8/2014 Ejemplos de sentencias para trabajar con tablas internas. | ABAP: Fcil para mi
http://abap.facilparami.com/2014/01/ejemplos-de-sentencias-para-trabajar-con-tablas-internas/ 3/9
datos de forma similar a como trabaja la sentencia UNION de SQL, podemos
utilizar las sentencias APPENDING TABLE
o APPENDING CORRESPONDING FIELDS OF TABLE, dependiendo de si los
campos de la sentencia SELECT y la tabla interna coincidan.
"Si la tabla interna solo tiene estos 3 campos
"y fueron declarados en este mismo orden
SELECT bukrs belnr gjahr
APPENDING TABLE it_bkpf
FROM bkpf.
"Si la tabla interna tiene otros campos adicionales
"o estan en otro orden
SELECT gjahr bukrs
APPENDING CORRESPONDING FIELDS OF TABLE it_bkpf
FROM bkpf.
Adems de cargar datos desde una sentencia SQL tambin podemos cargar
datos manualmente, utilizando la tabla interna que ya definimos podemos usar
estas sentencias para cargar datos.
"Agrega una linea con datos
it_bkpf-bukrs = '1000'.
it_bkpf-belnr = '000001'.
it_bkpf-gjahr = '2013'.
APPEND it_bkpf.
"Agrega una linea en blanco
APPEND INITIAL LINE TO it_bkpf.
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:
"Declarar un tipo de datos complejo
TYPES: BEGIN OF t_bkpf,
bukrs TYPE bukrs,
belnr TYPE belnr_d,
15/8/2014 Ejemplos de sentencias para trabajar con tablas internas. | ABAP: Fcil para mi
http://abap.facilparami.com/2014/01/ejemplos-de-sentencias-para-trabajar-con-tablas-internas/ 4/9
gjahr TYPE gjahr,
END OF t_bkpf.
"Declarar una tabla interna sin header line
data it_t_bkpf TYPE TABLE OF t_bkpf.
"Declarar un work area
data wa_t_bkpf TYPE t_bkpf.
"Agregar una linea con datos
wa_t_bkpf-bukrs = '1000'.
wa_t_bkpf-belnr = '000001'.
wa_t_bkpf-gjahr = '2013'.
APPEND wa_t_bkpf to it_t_bkpf.
APPEND INITIAL LINE TO it_t_bkpf.
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.
"Ordena la tabla por el campo1 y luego por
"el campo2 en forma ascedente (predeterminado)
SORT it_tabla BY campo1 campo2.
"Orden la tabla por el campo1 en forma ascedente
"y por el campo2 en forma descendente
SORT it_tabla BY campo1 campo2 DESCENDING.
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.
"Primero ordenamos
SORT it_tabla BY campo1 campo2.
15/8/2014 Ejemplos de sentencias para trabajar con tablas internas. | ABAP: Fcil para mi
http://abap.facilparami.com/2014/01/ejemplos-de-sentencias-para-trabajar-con-tablas-internas/ 5/9
"Podemos borrar los registros que esten duplicados
"comparando todos los campos
DELETE ADJACENT DUPLICATES FROM it_tabla COMPARING ALL FIELDS.
"... o podemos borrar comparando solo uno o mas
"campos separados por un espacio en blanco
DELETE ADJACENT DUPLICATES FROM it_tabla COMPARING campo1 campo2.
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 condicin
"Recorre toda la tabla
LOOP AT it_tabla.
"Codigo
ENDLOOP.
"Recorre la tabla para los registros que cumplan con la condicin
LOOP AT it_tabla WHERE campo1 = 'valor' AND campo2 = 'valor'.
"Codigo
ENDLOOP.
"Utilizando una variable como work area
LOOP AT it_tabla into wa_tabla.
"Para acceder a los datos usamos el work area
"wa_tabla-campo1
ENDLOOP.
Si lo que deseamos el leer el valor de una fila en especial podemos utilizar la
sentencia READ
"Para leer algn registro que cumpla una condicin
READ TABLE it_tabla WITH KEY campo1 = 'valor'.
"Verificamos si se encontr algn registro
IF sy-subrc = 0.
"Ahora podemos acceder al registros como it_tabla-campo1
ENDIF.
15/8/2014 Ejemplos de sentencias para trabajar con tablas internas. | ABAP: Fcil para mi
http://abap.facilparami.com/2014/01/ejemplos-de-sentencias-para-trabajar-con-tablas-internas/ 6/9
"Si la tabla no tiene Header line, usamos un work area
READ TABLE it_tabla WITH KEY campo1 = 'valor' into wa_tabla1.
"Verificamos si se encontr algn registro
IF sy-subrc = 0.
"Ahora podemos acceder al registros como wa_tabla1-campo1
ENDIF.
"Para leer algn registro por numero de fila
READ TABLE it_tabla index 1.
"Verificamos si se encontr algn registro
IF sy-subrc = 0.
"Ahora podemos acceder al registros como it_tabla-campo1
ENDIF.
Si deseamos eliminar uno o ms registros de nuestra tabla interna, podemos
utilizar la sentencia DELETE, de forma similar a como se hace con OPEN SQL
DELETE it_tabla WHERE campo1 = 'valor'.
Para reinicializar las tablas internas, podemos utilizar la sentencia CLEAR
para limpiar el header line y REFRESH para limpiar los datos
"Limpia el header line de la tabla, pero
"no borra las filas de la tabla
CLEAR it_tabla.
"Borra las filas de la tabla, pero no limpia el header line
REFRESH it_tabla.
Para copiar datos de una tabla interna a otra, podemos utilizar alguno de estos
mtodos, recordando que todo loop puede utilizar tambin la clausula WHERE:
"Copia en la tabla1, el contenido de la tabla2
"Ambas deben de tener la misma estructura
it_tabla1[] = it_tabla2[].
"Si las tablas no tienen la misma estructura
"podemos utilizar este codigo
LOOP AT it_tabla2.
"En este caso ambas tablas se deben declarar con header line
15/8/2014 Ejemplos de sentencias para trabajar con tablas internas. | ABAP: Fcil para mi
http://abap.facilparami.com/2014/01/ejemplos-de-sentencias-para-trabajar-con-tablas-internas/ 7/9
Compartir
0
"y se hace una copia del header line de una tabla a la otra
"para los campos que tengan el mismo nombre en ambas tablas
MOVE-CORRESPONDING it_tabla2 to it_tabla1.
"Se agrega el registro
APPEND it_tabla1.
ENDLOOP.
"Si no tenemos header line en ambas tablas
LOOP AT it_tabla2 into wa_tabla2.
MOVE-CORRESPONDING wa_tabla2 to wa_tabla1.
APPEND wa_tabla1 to it_tabla1.
ENDLOOP.
Comprtelo con tus amigos:
Etiquetas: curso, programas
Tienes algn comentario sobre este artculo?
Nombre(campo obligatorio)
Email (no ser publicado)(campo obligatorio)
Sitio web
Comentario
Enviar Comentario
Correo electrnico

15/8/2014 Ejemplos de sentencias para trabajar con tablas internas. | ABAP: Fcil para mi
http://abap.facilparami.com/2014/01/ejemplos-de-sentencias-para-trabajar-con-tablas-internas/ 8/9
siete + 8 =
Recibir un email con los siguientes comentarios a esta entrada.
Recibir un email con cada nuevo post.
Lo ms visto
Modificar tablas en SAP (ingresar, borrar y modificar filas)
Ejemplos de sentencias para trabajar con tablas internas
Descargar archivo separado por comas (CSV) para usar en Excel
Debugging en SAP
Obtener el primer y ultimo dia del mes en ABAP
Consultas a la base de datos desde SAP (sin usar ABAP)
Smart Forms: Trabajar con subtotales y grupos
Como utilizar match code o ayudas de bsqueda en dynpros
Programacion orientada a objetos en ABAP (POO) Part I
Smart Forms: Trabajando con pginas y ventanas
Categoras
ALV
Ampliaciones a mdulos de SAP
Copy&Paste
Base de datos
Fechas
Curso ABAP
Creacin de Dynpros
Creacin de programas y funciones
Creacin de Smartforms
Introduccin a ABAP
OPEN SQL Bases de datos
General
Optimizar
SD
Etiquetas
ALV Archivos Bases de datos Buenas practicas control tabla Conversiones Copy Paste
curso Debug Dump dynpro Fecha Funciones match code Memoria Notificacin Numeros Optimizar
Personalizacin Programacin orientada a objetos programas Pruebas smartforms tabstrip Transacciones
15/8/2014 Ejemplos de sentencias para trabajar con tablas internas. | ABAP: Fcil para mi
http://abap.facilparami.com/2014/01/ejemplos-de-sentencias-para-trabajar-con-tablas-internas/ 9/9
Trucos Validaciones
Recursos
Community Network
Mundo SAP
Foro sobre ABAP

Fcil Para M
Somos una red de blogs diseados para explicar de forma sencilla (cosas que podran ser
complicadas) paso a paso y con imgenes para que no solo los expertos puedan lograr grandes
cosas.
El hosting y diseo web ha sido proporcionado por Inteligencia Empresarial .
Red de blogs
Excel
Abap
2014 ABAP: Fcil para mi

Potrebbero piacerti anche