Ver Mensaje Individual
  #1  
Viejo 03/06/10, 16:03:06
andresf02 andresf02 is offline
Senior Member
 
Fecha de Ingreso: nov 2009
Mensajes: 190
Problema con AT NEW y AT END OF - Urgente pls

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!
Responder Con Cita