PDA

Ver la Versión Completa : No mostrar los registros repetidos en un ALV


melerogalan
05/09/07, 07:42:44
Tengo un alv , lo ordeno por unos campos y le digo que me lo agrupe por registros iguales, lo que pasa que cuando pongo un campo editable(fieldcat-edit= marca ) , que no es ninguno de los campos por lo que ordeno, no me los agrupa... ¿alguien puede ayudarme?

darona
05/09/07, 14:42:47
¿Los registros repetidos los necesitas?
Si no los necesitas, bórralos antes de mostrar el ALV.

miguel.cogolludo
06/09/07, 08:54:05
Quizas tambien puedas hacer:

Cuando cargas los datos a la tabla interna en la select pones en los campos que quieras que sean distintos con distinct.

Select distinct(campo)...

melerogalan
07/09/07, 10:39:38
Creo que me he explicado mal, no so nregistros enteros los que estan repetidos, solo determinados campos, que no quiero que me salgan repetidos sino que se agrupen en uno solo, se ve una sole vez y debajo un tantos espacios como registros con ese campo repetido alla, el problema que si pongo un campo editable no me lo hace, gracias.

darona
07/09/07, 11:41:27
Ahh, pues utilizando las funciones de totales y subtotales de la barra de herramientas del ALV.
Primero totalizas un campo numérico (el que quieras) y luego haces subtotales por los campos en los que quieres que no se repitan los valores.

melerogalan
07/09/07, 12:37:29
Pero no quiero mostrar ni totales ni subtotales. :confused:

miguelig
07/09/07, 15:01:14
hola, lo q tienes q hacer es un sort... si no estas trabjando con objetos tienes q hacer algo asi...


*Ordenamiento de datos y Subtotales
DATA: gs_sort TYPE slis_sortinfo_alv.

CLEAR gs_sort.
gs_sort-fieldname = 'KTEXT'.
APPEND gs_sort TO gt_sort.

donde KTEXT es tu campo... y si quieres mas columnas solo las agregas.. tienes q mandar gs_sort en tu funcion... lo mismo haces con OO pero con otros tipos... ojala te sirva

melerogalan
07/09/07, 18:19:41
Eso lo tengo echo ya :( , lo que pasa que cuando algún campo del listado es editable, pierde la propiedad de agrupar a los campos de aquellos registros que coinciden en dichos campos. Para mas información, ninguno de los campos con los que ordeno el listado ALV es el campo que tiene la propiedad de ser editable.

Gracias a todos por el tiempo, haber si alguno ha echo algo parecido y me cuenta como.

azua14
10/09/07, 13:52:44
ahh..deja ver si entendí...tu tienes por ej:

nombre 1 --> dir1 -> valor1
nombre 1 --> dir1 -> valor2
nombre 1 --> dir1 -> valor3
nombre 2 --> dir2 -> valor1
nombre 2 --> dir2 -> valor2

y quieres

nombre 1 --> dir1 -> suma( valor1, valor2, valor3)
nombre 2 --> dir2 -> suma( valor1, valor2)

si es así, lo que tienes que hacer es:

1) Crearte dos tablas internas donde vas a a guardar los nombres y las direcciones,

2) Cuando vayas llenando la tabla de resultados, le haces un clear a los campos nombre y direccion y en vez de hacer un append, haces un collect...

3)Obviamente debe quedar con los campos llave para saber que nombre y direccion le corresponden. usando estas llaves y las tablas que te creaste llenas los datos faltantes y listo.

Ojala haya sido de ayuda.

melerogalan
10/09/07, 17:36:26
Hola los siento pero no es eso, no quiero mostrar ni totales ni nada parecido, intento exponer el caso con dibujos, es mas simple que todo eso, lo que pasa que sap tiene muchas tonterias, me explico mejor con un ejemplo.

ALV inicial
campo1-> campo2-> campo3-> campo4-> campo5

valor1 -> valor2-> valor3-> valor4-> valor5
valor1 -> valor2-> valor3-> valor6-> valor7
valor1 -> valor3-> valor3-> valor8-> valor9

* El valor 1 el 2 y el 3 se repiten en los registros 1, 2 y 3.

Mi idea es que el ALV salga asi

valor1-> valor2-> valor3-> valor4-> valor5
<vacio>-> <vacio>-> <vacio>-> valor6-> valor7
<vacio>-> <vacio>-> <vacio>-> valor8-> valor9

¡¡¡ Eso lo se hacer !!! se marca con space el campo cell-merge y se ordena el listado alv por los campos campo1, campo2 y campo3, el resultado es el que muestro y estoy encantado.
¿ Cual es el problema ? que cuando algún campo, en mi caso unos de los campos con lo cuales no ordeno el alv(campo4 o campo5) lo pongo editable( en la estructura fieldcat marco el campo edit con 'X'), no se me pone como yo quiero y el alv vuelve a su forma inicial. Parece muy simple y no es un problema nada rebuscado, pero nadie sabe como hacerlo, sera marcar algún campo de alguna tabla que le pasamos a la función que muestra el ALV(REUSE_ALV_GRID), pero ni idea, he buscado y buscado y ningun campo hace referencia a eso.
Espero que ahora este todo claro.
Saludos a todos y gracias por vuestro interés, sois gente de puta madre, jejeje.

azua14
10/09/07, 19:22:40
chuta.... si con el field catalog no has podido pues yo me iría por el lado de recorrer la tabla original , ir guardando los valores en una tabla auxiliar, si se repiten, colocar SPACE en la tabla de resumen, y sino, que coloque el valor que corresponda en la tabla de resumen y lo ingrese a la tabla auxiliar.....:P..a veces hay que cortar por lo sano...aunque no sea lo mas elegante.

caparase
11/09/07, 04:07:28
estoy de acuerdo con la solución de azua14, ya que si nada te funciona, y ninguno de nosotros tiene una solución directa, me parece que la mencionada es la más acertada.

De todas maneras revisa las opciones del layout, ya que tiene alguna utilizades bastante buenas que muchas veces no consideramos.

Suerte.

melerogalan
12/09/07, 11:57:55
Gracias por la opcion ,pero es demasiado complejo y luego controlar que registro se rellena .

Estoy viendo las opciones pero no doy con la adecuada, si existe claro, por ahora, lo estoy poniendo de un mismo color los iguales, para distinguirlos a simple vista por lo menos con el color, y a quien se lo este preguntando, esto es solamente por visualizacion mas comoda por parte del cliente, no es nada funcional para el programa. :)

Haber si alguien ha echo algo igual y me lo comenta.


Saludos.