#1
|
|||
|
|||
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. |
#2
|
|||
|
|||
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. |
#3
|
|||
|
|||
Hola,
a mi entender tienes que hacer lo que indican en el otro foro que has consultado: Aunque puede probar ambas opciones. |
#4
|
|||
|
|||
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. |
#5
|
|||
|
|||
Perfecto gracias a los dos. Saludos |
#6
|
|||
|
|||
Usar COLLECT
Creo que hubiera sido mas fácil si simplemente usaras la sentencia COLLECT .
En automático realizaba lo que estabas buscando. Saludos! |
Herramientas | Buscar en Tema |
Desplegado | |
|
|