MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Ayuda loop. (foro/showthread.php?t=31109)

miguel.esteban.martin 08/07/09 16:19:58

Ayuda loop.
 
Hola.

Tengo un problema en un loop.

Yo estoy metiendo datos de una tabla interna a otra, y me sale un problema a ver si logro esplicarme.

Ejemplo.

Tabla i_a.

linea | cant1 | fecha1|
-----------------------
1 | | 12.02.2002
---------------------------
1 | 1 |
-------------------------
2
.
.
.


Lo que quiero es que pasar cada linea a la otra tabla, osea que qeude la linea 1 que en esta tabla tiene 2 registros, quede en un solo registro en la otra tabla.

estoy haciendo un loop y supongo que para el append a la otra tabla hay que usar un :
loop at i_a.
....
at new linea.
append
end at.
endloop.

Mi pregunta es: cual de los at....endat que hay debo usar, o si no es asi, como lo prodria hacer.

Muchas gracias.

ic_man_777 08/07/09 23:42:54

o sea que en tu otra tabla quieres que te quede mas o menos así?:

Tabla i_a.

linea | cant1 | fecha1|
-----------------------
1 | 1 | 12.02.2002
---------------------------
2
.
.
.

o como?

miguel.esteban.martin 09/07/09 06:55:29

perdona la tardanza en responder, si eso es lo que quiero.

como podria hacerlo???

muchas gracias

jtristan 09/07/09 08:33:31

Podrías usar COLLECT.
De esta forma, te agruparía todos los valores de tipo cadena y te sumaría los numéricos, porque supongo que si hay necesitas tener el total de ellos.
Si, simplemente quieres quedarte con un único registro puedes usar el DELETE ADJUNT DUPLICATE que te eliminará todos los registros que estén duplicados.

Un saludo.

miguel.esteban.martin 09/07/09 11:06:48

gracias pero lo del collect y delete adjacent duplicates no me vale, es con el at...endat pero no se como.

muchhas gracias

Abaunus 13/07/09 12:59:58

Yo haría lo siguiente:
Una vez la tabla ordenada ascendente por el campo "línea", hacés un loop. Vaz chequeando con "IF" si los otros campos están vacíos. Si no, los vas copiando a otra work área. Dentro del LOOP que haya un "AT END OF línea". Ahí, appendeás esa work área que vas armando a otra tabla interna. Y borrás la WA.

Una cosa así sería. Corríjanme si me equivoco:


ibecerra 13/07/09 13:27:51




Hola , a ver si te entiendo.
tienes asi

linea | cant1 | fecha1|
-----------------------
1 | 1 | 12.02.2002
---------------------------
1 | 1 | xx.xx.xxxx
-------------------------
2 | 2 | xx.xx.xxxxx
2 | 2 | xx.xx.xxxxx

y quieres tomar una linea del registro por cada linea
entonces has lo siguiente
data fl .
loop at wtabla.
at new linea.
fl = '1'.
endat.
if fl = '1'.
move-corresponding wtabla to xtabla.
append xtabla.
fl = '0'.
endat.

endloop.

Abaunus 13/07/09 18:11:46



Según lo que yo entendí, lo que Miguel necesita es "acumular" o "juntar" en uno solo los datos que están en dos o más registros para el mismo número de "línea", no tomar una línea sola y descartar las siguientes... Creo que con At END OF es la forma...

miguel.esteban.martin 14/07/09 06:54:54

muchas gracias funciona con at end ..... endat


Husos Horarios son GMT. La hora en este momento es 21:57:06.

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