MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Problema con AT NEW y AT END OF - Urgente pls (foro/showthread.php?t=37109)

andresf02 03/06/10 16:03:06

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!

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!


Husos Horarios son GMT. La hora en este momento es 23:20:29.

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