PDA

Ver la Versión Completa : Problema con AT NEW y AT END OF - Urgente pls


andresf02
03/06/10, 16:03:06
buenos Dias

Tengo el siquiente codigo que me esta presentando problemas con el "AT END OF" especificamente:

*****************************************************
SORT it_tabcont BY carac04.
LOOP AT it_tabcont INTO wa_tabcont.

AT NEW carac04.
CLEAR wa_variedad.
sum_prop = 0.
sum_arre = 0.
sum_part = 0.
sum_mdir = 0.
sum_prov = 0.
sum_area = 0.
wa_variedad-varied = wa_tabcont-carac04.
ENDAT.

IF wa_tabcont-carac18 EQ 'PROPIA'.
sum_prop = sum_prop + wa_tabcont-carac02.
ELSEIF wa_tabcont-carac18 EQ 'ARRENDAMIENTO'.
sum_arre = sum_arre + wa_tabcont-carac02.
ELSEIF wa_tabcont-carac18 EQ 'CUENTAS EN PARTICIPACION'.
sum_part = sum_part + wa_tabcont-carac02.
ELSE.
sum_prov = sum_prov + wa_tabcont-carac02.
ENDIF.

AT END OF carac04.
wa_variedad-propia = sum_prop.
wa_variedad-arrend = sum_arre.
wa_variedad-partic = sum_part.
wa_variedad-mdirect = sum_prop + sum_arre + sum_part.
wa_variedad-proveed = sum_prov.
wa_variedad-tot_an = wa_variedad-mdirect + wa_variedad-proveed.
APPEND wa_variedad TO it_variedad.
ENDAT.
ENDLOOP.
****************************************************

La tabla interna it_tabcont tiene datos de esta manera:
--------------------------------------------------------------
Linea..Objeto.........CARAC02...CARAC04........CARAC18
--------------------------------------------------------------
1.......1044-040.......6.58.......CC 84-75.......ARRENDAMIENTO
2.......2050-052.......2.00.......CC 84-75.......ARRENDAMIENTO
3.......1043-011.......1.32.......CC 84-75.......ARRENDAMIENTO
4.......1043-010.......1.16.......CC 84-75.......ARRENDAMIENTO
5.......1040-011.......1.16.......CC 90-00.......PROPIA
6.......1040-010.......6.16.......CC 90-00.......PROPIA
7.......2286-112.......8.63.......CC 90-00.......PROVEEDORES
8.......2053-010.......1.48.......CC 70-02.......ARRENDAMIENTO
***************************************************


El problema esta en que al leer el primer registro, el carac04 = CC 84-75. Por ser el primero, obviamente entra en el AT NEW carac04. Pero, tambien esta entrando al AT END OF carac04 y NO deberia entrar ya que el siguiente registro a leer tendria el mismo valor CC 84-75.


Lo que quiero al final es obtener para cada CARAC04, cual es el valor total (CARAC02) para ARRENDAMIENTO, para PROPIA y para PROVEEDORES


Ojala me puedan ayudar ya que he trabajado con los AT NEW y AT END OF en casos similares pero solo hasta ahora no me sigue la logica.


Gracias!

Mauricio Hidalgo
03/06/10, 18:22:53
Para esos comportamientos extraños, es mejor seguir la recomendación que está la misma ayuda de AT.

Y es que los campos por cuales usas AT deberían ser los primeros de tu tabla interna.

andresf02
03/06/10, 18:59:09
Mauricio,

Muchisimas gracias por "darme la luz" en este problema, efectivamente, era como tu decias, al no ser la columna CARAC04 la pirmera de la tabla, genera comportamientos extraños en el AT NEW y AT END.

Apenas la deje como la primera columna, funcionó perfecto.



De nuevo gracias!