MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Suma por varios campos iguales (foro/showthread.php?t=68847)

JoNhNaTaN 08/08/13 21:43:10

Suma por varios campos iguales
 
sEÑORES TENGO EL SIGUIENTE DILEMA, LA TABLA SIGUIENTE
TABLA VIRGEN

Campo1 | Campo2 | Campo3 | Campo4
-----------------------------------------------------
AAA | G111 | SSS1 | 1.20
AAA | G111 | SSS1 | 2.30
AAA | G111 | SSS1 | 1.50
AAA | H555 | SSS1 | 1.30
BBB | F333 | GG1 | 1.80
BBB | F333 | GG1 | 1.40
BBB | F333 | GG1 | 1.60
CCC | R444 | KK2 | 1.30
CCC | R444 | KK2 | 1.70
CCC | R444 | KK2 | 1.60
CCC | R444 | KK2 | 2.30


lo que quiero es que se sume el Campo4, mientras el Campo1, el Campo2 y el Campo3 sean iguales; es decir tiene que resultar lo siguiente

TABLA PROCESADA - RESULTADO

Campo1 | Campo2 | Campo3 | Campo4
-------------------------------------------------------
AAA | G111 | SSS1 | 5.00
AAA | H555 | SSS1 | 1.30
BBB | F333 | GGG1 | 4.80
CCC | R444 | KK2 | 6.90

he hecho el loop siguiente:


Pero no funciona, luego hice esto:


Espero puedan ayudarme.

Saludos cordiales.

vanesamacri 09/08/13 14:37:07

Hola.

Dentro del bucle, el cambio controlalo con un:

AT END OF Campo3.

lógica

ENDAT.

Tomando como referencia el Campo3, al variar este campo o alguno de los otros dos anteriores (Campo1 o Campo2), se disparará la acción dentro del AT END.

Saludos.

Kope 09/08/13 17:22:08

Hola,

a mi entender tienes que hacer lo que indican en el otro foro que has consultado:



Aunque puede probar ambas opciones. :D

joau_fedipe 09/08/13 17:30:17

solo agregar esta parte de código
 
Estimado, con estas lineas se soluciona tu inconveniente.

DATA: lsvez TYPE c,
kmpo1 LIKE gtd-campo1,
kmpo2 LIKE gtd-campo2,
kmpo3 LIKE gtd-campo3,
gstot LIKE gtd-campo4.
CLEAR gstot.
LOOP AT gtd.
IF lsvez IS INITIAL.
kmpo1 = gtd-campo1.
kmpo2 = gtd-campo2.
kmpo3 = gtd-campo3.
lsvez = 'X'.
ENDIF.
IF gtd-campo1 EQ kmpo1 AND gtd-campo2 EQ kmpo2
AND kmpo3 EQ gtd-campo3.
gstot = gstot + gtd-campo4.
ELSE.
WRITE: /1 gtd-campo1, gtd-campo2, gtd-campo3, gstot.
CLEAR gstot.
kmpo1 = gtd-campo1.
kmpo2 = gtd-campo2.
kmpo3 = gtd-campo3.
gstot = gstot + gtd-campo4.
ENDIF.
ENDLOOP.
WRITE: /1 gtd-campo1, gtd-campo2, gtd-campo3, gstot.

Avisas como te fué.
Saludos.:)

JoNhNaTaN 12/08/13 21:04:27


Perfecto gracias a los dos.

Saludos

crisaegrim 14/08/13 23:43:10

Usar COLLECT
 
Creo que hubiera sido mas fácil si simplemente usaras la sentencia COLLECT .
En automático realizaba lo que estabas buscando.

Saludos!


Husos Horarios son GMT. La hora en este momento es 21:04:19.

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