andresf02
22/12/10, 20:25:15
Buenos tardes.
Quiero aprender a usar FILED_SYMBOLS y tablas dinamicas en ABAP. La verdad no soy experto en ABAP y mucho menos conozco sobre los terminos que acabo de mencionar.
Tengo que trasponer una tabla interna que tengo ya creada y llena de datos; es decir cambiar las filas por columnas.
Mi caso concreto es la tabla AUSP (transaccion CL30n)
|-OBJETO-|-Caracteristica-|---Valor---|
|-100001-|-caracterist_01-|-Valor_01-|
|-100001-|-caracterist_02-|-Valor_02-|
|-100001-|-caracterist_03-|-Valor_03-|
|-100002-|-caracterist_01-|-Valor_04-|
|-100002-|-caracterist_02-|-Valor_05-|
|-100002-|-caracterist_03-|-Valor_06-|
y la idea es tener:
|-OBJETO-|-caracterist_01-|-caracterist_02-|-caracterist_03-|
|-100001-|----Valor_01----|----Valor_02----|----Valor_03---|
|-100002-|----Valor_04----|----Valor_05----|----Valor_06---|
Como pueden ver, esta no es una transposicion de filas x columnas normal, sino que los valores de la columna CARACTERISTICA en la tabla original, van a ser los nombres de las columnas en la tabla transpuesta.
Gracias a este foro, me dieron una solucion muy buena que implemente al 100% y es la siguiente:
LOOP AT ti.
wa_ti = ti.
CASE wa_ti-caracteristica.
WHEN 'caract1'.
ti_alv-caract1 = wa_ti-valor.
WHEN 'caract2'.
ti_alv-caract2 = wa_ti-valor.
... etc
ENDCASE.
AT END OF objeto.
APPEND ti_alv.
CLEAR ti_alv.
ENDAT.
ENDLOOP.
Pero ahora quiero aprender a hacerlo con tablas dinamicas ya que ahora me enfrento a un objeto que tiene 101 caracteristicas, y si lo hago con la solucion anterior, el CASE tendria que tener 101 WHENs.
Estuve viendo ejemplos que me recomendaron pero no he logrado entenderlos al 100% ni mucho menos adaptarlos a mi codigo.
Por favor si alguien pudiera ayudarme con un ejemplo bien detallado (ojala como el codigo de mi solucion). Recuerden que la transposicion no se hace con todas las filas y columnas , por eso utilizé el "AT NEW OBJEK".
Mil Gracias!
Quiero aprender a usar FILED_SYMBOLS y tablas dinamicas en ABAP. La verdad no soy experto en ABAP y mucho menos conozco sobre los terminos que acabo de mencionar.
Tengo que trasponer una tabla interna que tengo ya creada y llena de datos; es decir cambiar las filas por columnas.
Mi caso concreto es la tabla AUSP (transaccion CL30n)
|-OBJETO-|-Caracteristica-|---Valor---|
|-100001-|-caracterist_01-|-Valor_01-|
|-100001-|-caracterist_02-|-Valor_02-|
|-100001-|-caracterist_03-|-Valor_03-|
|-100002-|-caracterist_01-|-Valor_04-|
|-100002-|-caracterist_02-|-Valor_05-|
|-100002-|-caracterist_03-|-Valor_06-|
y la idea es tener:
|-OBJETO-|-caracterist_01-|-caracterist_02-|-caracterist_03-|
|-100001-|----Valor_01----|----Valor_02----|----Valor_03---|
|-100002-|----Valor_04----|----Valor_05----|----Valor_06---|
Como pueden ver, esta no es una transposicion de filas x columnas normal, sino que los valores de la columna CARACTERISTICA en la tabla original, van a ser los nombres de las columnas en la tabla transpuesta.
Gracias a este foro, me dieron una solucion muy buena que implemente al 100% y es la siguiente:
LOOP AT ti.
wa_ti = ti.
CASE wa_ti-caracteristica.
WHEN 'caract1'.
ti_alv-caract1 = wa_ti-valor.
WHEN 'caract2'.
ti_alv-caract2 = wa_ti-valor.
... etc
ENDCASE.
AT END OF objeto.
APPEND ti_alv.
CLEAR ti_alv.
ENDAT.
ENDLOOP.
Pero ahora quiero aprender a hacerlo con tablas dinamicas ya que ahora me enfrento a un objeto que tiene 101 caracteristicas, y si lo hago con la solucion anterior, el CASE tendria que tener 101 WHENs.
Estuve viendo ejemplos que me recomendaron pero no he logrado entenderlos al 100% ni mucho menos adaptarlos a mi codigo.
Por favor si alguien pudiera ayudarme con un ejemplo bien detallado (ojala como el codigo de mi solucion). Recuerden que la transposicion no se hace con todas las filas y columnas , por eso utilizé el "AT NEW OBJEK".
Mil Gracias!