JoNhNaTaN
08/08/13, 21:43:10
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:
LOOP AT gtd_TABLA0 ASSIGNING <fs_TABLA0>.
AT FIRST.ENDAT.
AT NEW CAMPO1.
WA_1-CAMPO1 = <fs_TABLA0>-CAMPO1.
ENDAT.
AT NEW CAMPO2.
WA_1-CAMPO2 = <fs_TABLA0>-CAMPO2.
ENDAT.
AT NEW CAMPO3.
WA_1-CAMPO3 = <fs_TABLA0>-CAMPO3.
ENDAT.
SUMAT = SUMAT + <fs_TABLA0>-CAMPO4.
AT END OF CAMPO3. ENDAT.
AT END OF CAMPO2. ENDAT.
AT END OF CAMPO1. ENDAT.
AT LAST.
WA_1-CAMPO4 = SUMAT.
APPEND WA_1 TO GTD_TRESULTADO.
CLEAR SUMAT.
ENDAT.
ENDLOOP.
Pero no funciona, luego hice esto:
gtd_TABLA0 = gtd_TABLA0.
gtd_TABLA1 = gtd_TABLA0.
gtd_TABLA2 = gtd_TABLA0.
gtd_TABLA3 = gtd_TABLA0.
SORT gtd_TABLA0 BY CAMPO1 CAMPO2 CAMPO3.
SORT gtd_TABLA1 BY CAMPO1 CAMPO2 CAMPO3.
SORT gtd_TABLA2 BY CAMPO1 CAMPO2 CAMPO3.
SORT gtd_TABLA3 BY CAMPO1 CAMPO2 CAMPO3.
LOOP AT gtd_TABLA0 ASSIGNING <fs_TABLA0>.
LOOP AT gtd_TABLA1 ASSIGNING <fs_TABLA1> WHERE CAMPO1 = <fs_TABLA0>-CAMPO1.
LOOP AT gtd_TABLA1 ASSIGNING <fs_TABLA2> WHERE CAMPO2 = <fs_TABLA1>-CAMPO2.
LOOP AT gtd_TABLA1 ASSIGNING <fs_TABLA3> WHERE CAMPO3 = <fs_TABLA2>-CAMPO3.
SUMAT_1 = SUMAT_1 + <fs_TABLA3>-CAMPO4.
ENDLOOP.
WA_1-BUKRS = <fs_TABLA3>-BUKRS.
WA_1-CAMPO1 = <fs_TABLA3>-CAMPO1.
WA_1-CAMPO2 = <fs_TABLA3>-CAMPO2.
WA_1-CAMPO3 = <fs_TABLA3>-CAMPO3.
WA_1-CAMPO4 = SUMAT.
CLEAR SUMAT.
APPEND WA_1 TO GTD_TRESULTADO.
ENDLOOP.
ENDLOOP.
ENDLOOP.
Espero puedan ayudarme.
Saludos cordiales.
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:
LOOP AT gtd_TABLA0 ASSIGNING <fs_TABLA0>.
AT FIRST.ENDAT.
AT NEW CAMPO1.
WA_1-CAMPO1 = <fs_TABLA0>-CAMPO1.
ENDAT.
AT NEW CAMPO2.
WA_1-CAMPO2 = <fs_TABLA0>-CAMPO2.
ENDAT.
AT NEW CAMPO3.
WA_1-CAMPO3 = <fs_TABLA0>-CAMPO3.
ENDAT.
SUMAT = SUMAT + <fs_TABLA0>-CAMPO4.
AT END OF CAMPO3. ENDAT.
AT END OF CAMPO2. ENDAT.
AT END OF CAMPO1. ENDAT.
AT LAST.
WA_1-CAMPO4 = SUMAT.
APPEND WA_1 TO GTD_TRESULTADO.
CLEAR SUMAT.
ENDAT.
ENDLOOP.
Pero no funciona, luego hice esto:
gtd_TABLA0 = gtd_TABLA0.
gtd_TABLA1 = gtd_TABLA0.
gtd_TABLA2 = gtd_TABLA0.
gtd_TABLA3 = gtd_TABLA0.
SORT gtd_TABLA0 BY CAMPO1 CAMPO2 CAMPO3.
SORT gtd_TABLA1 BY CAMPO1 CAMPO2 CAMPO3.
SORT gtd_TABLA2 BY CAMPO1 CAMPO2 CAMPO3.
SORT gtd_TABLA3 BY CAMPO1 CAMPO2 CAMPO3.
LOOP AT gtd_TABLA0 ASSIGNING <fs_TABLA0>.
LOOP AT gtd_TABLA1 ASSIGNING <fs_TABLA1> WHERE CAMPO1 = <fs_TABLA0>-CAMPO1.
LOOP AT gtd_TABLA1 ASSIGNING <fs_TABLA2> WHERE CAMPO2 = <fs_TABLA1>-CAMPO2.
LOOP AT gtd_TABLA1 ASSIGNING <fs_TABLA3> WHERE CAMPO3 = <fs_TABLA2>-CAMPO3.
SUMAT_1 = SUMAT_1 + <fs_TABLA3>-CAMPO4.
ENDLOOP.
WA_1-BUKRS = <fs_TABLA3>-BUKRS.
WA_1-CAMPO1 = <fs_TABLA3>-CAMPO1.
WA_1-CAMPO2 = <fs_TABLA3>-CAMPO2.
WA_1-CAMPO3 = <fs_TABLA3>-CAMPO3.
WA_1-CAMPO4 = SUMAT.
CLEAR SUMAT.
APPEND WA_1 TO GTD_TRESULTADO.
ENDLOOP.
ENDLOOP.
ENDLOOP.
Espero puedan ayudarme.
Saludos cordiales.