#1
|
|||
|
|||
Puede el COLLECT agrupar promediando?
Buenas Tardes
Tengo una tabla interna como la siguiente: IT_VALORES ----------------------------------------------- |....ORDEN....|....KILOGRAMOS....|....TIEMPO....| ----------------------------------------------- |....500001...|.........400,0..........|........4,5.....| |....500001...|.........200,0..........|........5,5.....| |....500001...|.........300,0..........|........2,0.....| |....500002...|.........100,0..........|........2,5.....| |....500002...|.........500,0..........|........3,5.....| y necesito agruparla por ORDEN pero con las condiciones siguientes: *-La columna KILOGRAMOS debe sumarse *-La columna TIEMPO debe promediarse De tal manera que debe quedar: IT_VALORES ----------------------------------------------- |....ORDEN....|....KILOGRAMOS....|....TIEMPO....| ----------------------------------------------- |....500001...|.........900,0..........|........4,0.....| |....500002...|.........600,0..........|........3,0.....| Se que con el Collect podria agruparla facilmente si ambas columnas se debieran SUMAR, pero como necesito que la columna TIEMPO se PROMEDIE, entonces solicito ayuda porque desconozco como realizar este proceso. No se si con el mismo COLLECT se pueda realizar esto, o si exista alguna otra funciones que permita agrupar datos sumando y promediando a la vez. Si me pueden ayudar con algun codigo se los agradeceria ya que no soy experto en ABAP. Gracias! |
#2
|
|||
|
|||
Podrias hacer un corte de control por el campo ORDEN, pero tene en cuenta 2 cosas, primero pasar la wa a una auxiliar y que el campo ORDEN sea el primero en tu tabla interna. Suerte. |
#3
|
|||
|
|||
Efectivamente el collect solo suma, no promedia pero con un sencillo truco puedes simularlo
1.- Añade a tu tabla un campo al final que sea de tipo I, la idea es que ese campo valga 1 siempre, te quedaria algo asi IT_VALORES -------------------------------------------------------------- |....ORDEN....|....KILOGRAMOS....|....TIEMPO....|......LINEAS....| --------------------------------------------------------------- |....500001...|.........400,0..........|........4, 5.....|.......1..........| |....500001...|.........200,0..........|........5, 5.....|.......1..........| |....500001...|.........300,0..........|........2, 0.....|.......1..........| |....500002...|.........100,0..........|........2, 5.....|.......1..........| |....500002...|.........500,0..........|........3, 5.....|.......1..........| 2.- Harias un collect normal con los kilos y el tiempo y en el campo lineas tendrias el numero de lineas que habia de cada orden por lo tanto si divides el valor del campo tiempo (suma de los tiempos) entre el valor del campo lineas (numero de registros) obtendras el promedio IT_VALORES -------------------------------------------------------------- |....ORDEN....|....KILOGRAMOS....|....TIEMPO....|......LINEAS....| --------------------------------------------------------------- |....500001...|.........900,0..........|........12.......|.......3..........| |....500002...|.........600,0..........|........6.........|.......2..........| 3.- Al final podrias hacer algo asi loop at tabla assigning <linea>. <linea>-tiempo = <linea>-tiempo / <linea>-lineas. endloop. |
#4
|
||||
|
||||
Un ole por BALLAN, me ha gustado!
|
#5
|
|||
|
|||
jaja, gracias
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|