Ver Mensaje Individual
  #3  
Viejo 27/07/10, 14:00:20
Cristiana Cristiana is offline
Member
 
Fecha de Ingreso: may 2007
Localización: culiacan sin
Mensajes: 46
Smile Query

Si los registros los tienes en una tabla interna, puedes loopear la tabla y dentro del loop usar usar un colect y pasarlos a otra tabla interna. el collect te va a agrupar los registros tomando como llave los campos no numericos. te paso la definicion y un ejemplo espero y te sirva.

COLLECT
Definición
Para rellenar líneas en una tabla interna con la comprobación por parte del sistema de que la clave estándar de la tabla
será única.
Sintaxis:
COLLECT [ <área-trabajo> INTO ]<tabla> [ SORTED BY <campo> ].
Para especificar un área de trabajo distinta al área de trabajo de la tabla interna se utiliza la cláusula
<área-trabajo> INTO.

El sistema comprueba si existe alguna línea en la tabla interna con la misma clave estándar. Recordemos que la
clave estándar esta compuesta de todos los campos no numéricos. De no existir una línea con la misma clave, el
fecto de esta sentencia es el mismo que el de la sentencia APPEND, añade una entrada en la tabla. Si existe ya
una línea con la misma clave estándar, no se inserta ninguna línea a la tabla interna; si hay campos numéricos,
se sumarán.

La cláusula SORTED BY <campo> no debe utilizarse. En futuras versiones esta cláusula desaparecerá. En su
lugar se puede utilizar la sentencia APPEND.

Ejemplo:
DATA: BEGIN OF COMPANIES OCCURS 10,
NAME(20),
SALES TYPE I,
END OF COMPANIES.
COMPANIES-NAME = 'Duck'. COMPANIES-SALES = 10.
COLLECT COMPANIES.
COMPANIES-NAME = 'Tiger'. COMPANIES-SALES = 20.
COLLECT COMPANIES.
COMPANIES-NAME = 'Duck'. COMPANIES-SALES = 30.
COLLECT COMPANIES.
El resultado en la tabla companies sería el siguiente:
NAME SALES
Duck 40
Tiger 20
__________________
Lo correcto no siempre es lo mas facil, Pero siempre es lo Mejor.
Dios te Bendiga.
Crysty
Responder Con Cita