MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Unir tablas internas sumando campos iguales (foro/showthread.php?t=15137)

crisgil79 22/07/08 07:31:32

Unir tablas internas sumando campos iguales
 
Hola a todos,

Necesitaría unir dos tablas internas en una de manera que en los registros que obtendría repetidos, sumase un campo.

Pongo un ejemplo:

Tengo dos tablas internas:

1) it_prev con los siguientes campos:

| Año | Unidad Prevision | Servicio | Cantidad | Proveedor |
----------------------------------------------------------
| 2007 | 0000000000001 | 300 | 2 | 500 |
| 2007 | 0000000000001 | 301 | 3 | 500 |
| 2007 | 0000000000001 | 300 | 1 | 250 |


En esta tabla para cada proveedor tengo dos servicios diferentes cada uno con su cantidad

2) it_deleg con los siguientes campos:

| Distribuidora | Delegacion | Proveedor | Unidad prevision |
----------------------------------------------------------
| CEG | CC1 | 500 | 0000000000001 |

Para mi ejemplo con un registro tengo suficiente, es el que necesito.

Bien pues necesito unir it_prev y it_deleg en la tabla interna it_pro_del de manera que los registros que estén repetidos en la it_pro_del se sume su campo Cantidad. Así debería quedar la tabla it_pro_del:

| Proveedor | Delegación | Total |
---------------------------------
| 500 | CC1 | 5 |
| 250 | CC1 | 1 |

Si fuese con un select no habria problema, pero claro al ser tablas internas y tenerlo que hacer con un loop pues me supone tener que recorrer la misma tabla dos veces. ¿Sabeis si hay alguna manera de hacerlo más elegante?

Muchas gracias.

Saludos,

Cris.

bisonye 22/07/08 08:52:03

¿Con un COLLECT no puedes hacerlo?

Saludos

crisgil79 22/07/08 09:05:35

Hola,

Perfecto!! era justo lo que estaba buscando.

Muchas gracias bisonye.

Saludos.

crisgil79 22/07/08 10:43:42

He probado el collect y funciona, pero solo cuando el campo cantidad es diferente a 0. Me interesaría que aunque Cantidad sea 0 también se añada a la nueva tabla interna.

Hay alguna manera de hacer eso?

Gracias.

Saludos.

bisonye 22/07/08 10:49:46

¿Quieres decir que si el campo es 0 con el collect no te crea una entrada con el valor a 0?

Pues creo que debería hacerte la entrada, siempre que no exista una entrada ya con lo que lo suma y como es 0 pues eso, 0 más.

Si es nueva y no lo añade pues controla si el valor es 0 luego controla si la entrada existe y si no existe haces un append.

Saludos

crisgil79 22/07/08 11:13:08

Hola bisonye

si que crea las entradas cuando la cantidad es 0, perdona, mi compañera me habia dicho que no, lo he comprovado y funciona perfectamente.

Muchas gracias!!!!

Saludos.


Husos Horarios son GMT. La hora en este momento es 13:12:33.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web