|
#1
|
|||
|
|||
Como recalcular totales en reporte ALV??
Hola a todos de casualidad alguien sabe lo siguiente:
1.- Tengo un reporte ALV que despliega ciertas columnas y la última columna es un checkbox para seleccionar o deseleccionar el renglón. 2.- También al desplegar mi reporte me muestra totales por proveedor (LIFNR) y un total TOTAL. Y lo que sumariza es el importe (WRBTR). Todos los renglones la primer vez aparecen seleccionados o marcados. 3.- Tengo el evento "data_changed" que me detecta si el usuario selecciona o deselecciona el checkbox del renglón. Si el usuario "Deselecciona" entonces se limpia el Checkbox....si el usuario "Selecciona" entonces se marca el checkbox. Y también se actualiza el checkbox en mi tabla de salida. De tal manera que mi tabla de salida es un reflejo del reporte ALV. La duda es??: Como le podría hacer para que me esté recalculando los totales ( proveedor y total total) dependiendo de los renglones que se estén seleccionando? Ejemplo de ALV al principio: lifnr wrbtr checkbox 10 200 x 10 150 x TOTAL 10 350 20 300 x 20 131 x 20 70 x TOTAL 20 501 TOTAL 851 Ahora si yo desmarco el proveedor 10 importe 200 y el proveddor 20 importe 70 poniendole al checkbox blancos, quiero que me quede asi EN LOS TOTALES: lifnr wrbtr checkbox 10 200 10 150 x TOTAL 10 150 20 300 x 20 131 x 20 70 TOTAL 20 431 TOTAL 581 La tabla de salida para el alv tiene estas columnas: lifnr, wrbtr, envio (que es el checkbox). El campo envio se actualiza con espacios o x cada vez que el usuario deselecciona o selecciona. Siempre tengo que mostrar los marcados y no marcados en la tabla de salida para el ALV por lo que no le puedo mandar en una tabla de salida al ALV solo los registros marcados para el recálculo de totales. EN BASE A LO ANTERIOR: Se puede recalcular los totales, DEPENDIENDO DEL CHECKBOX AL MOMENTO QUE SE ESTA SELECCIONANDO O DESELECCIONANDO?? Como?? Y la tabla de salida está así después de seleccionar o deseleccionar por renglón según el evento "Data_Changed": lifnr wrbtr envio 10 200 10 150 x 20 300 x 20 131 x 20 70 ES DECIR QUIERO QUE PARA LOS TOTALES SOLO SUME LOS REGISTROS MARCADOS CON X CUANDO MUESTRO LA TABLA EN ALV YA QUE AHORITA SUMA TODOS LOS RENGLONES DE LA TABLA DE SALIDA AL ALV. Saludos y espero alguien me pueda ayudar. Gracias.
__________________
Saludos Alabado Seas Yhavé. -Hay Un Mundo Mejor Cuando Aprendes a AMAR Úlima edición por Eduesqueda fecha: 26/04/12 a las 19:01:35. |
#2
|
||||
|
||||
La suma la hace de manera std? deberias de hacer la suma manual. Entonces en tu evento de data change, haces los calculos manuales y le "appendias" la linea a tu tabla de salida.
Es medio picapiedra la cosa |
#3
|
|||
|
|||
Si gracias, lo que pasa es que no puedo agregar nada a la tabla de salida porque esto es lo que el usuario está viendo y va a seleccionar para generar un archivo de salida con lo seleccionado y si lo hago como tú dices entonces los botones estandard de SAP en ALV para grupos, cortes y totales me van a incluír en la suma los totales que yo calculé como me estás diciendo y aparte me va a activar el checkbox en estos renglones calculados y el usuario los podría seleccionar cuando no debe ser. Por lo que mejor lo hago de manera estandard con las rutinas ya creadas por sap, pasandole solo la tabla de salida con sus registros a sumarizar y que SAP haga los totales pero solo quiero que no me sume o no me incluya en los totales los que no tienen el checkbox seleccionado. Esto ya está en la tabla a desplegar con los campos: lifnr, wrbtr y checkbox solo que me suma todos los registros.....y solo quiero los marcados en el checkbox. Utilizo las rutinas estandar de SAP como: 1.- * Construction of the Layout. PERFORM f_construction_layout.----> llena estructura con valores de layout 2.- * Build field catalog PERFORM f_build_fieldcatalog---> utiliza la funcion: FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' *Aqui especifico que el importe es el campo que se sumará. WHEN 'WRBTR'. lw_fieldcat-do_sum = c_x. 3.- * Build Events PERFORM f_build_events---> llena evento estatus y data_changed CHANGING i_events. 4.- * Build Sort Criteria PERFORM f_build_sortCat.--->llena estructura para que sume por proveedor como: CLEAR wa_sort. REFRESH it_sortCat. wa_sort-spos = 1. wa_sort-fieldname = 'LIFNR'. wa_sort-up = c_x. wa_sort-subtot = c_x. "subtotals any totals column by this field APPEND wa_sort TO it_sortCat. CLEAR wa_sort. 5.- * Display alv report on output screen PERFORM f_display_alv_report.--->utiliza la funcion: CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
__________________
Saludos Alabado Seas Yhavé. -Hay Un Mundo Mejor Cuando Aprendes a AMAR Úlima edición por Eduesqueda fecha: 27/04/12 a las 14:50:22. |
#4
|
|||
|
|||
TIENES ALGUNA OTRA IDES KIBO? O ALGUIEN MAS?? HELP, PLEASE!!
__________________
Saludos Alabado Seas Yhavé. -Hay Un Mundo Mejor Cuando Aprendes a AMAR |
#5
|
||||
|
||||
No creo que al ALV_GRID puedas hacer de manera std eso... o al menos yo no lo se, si estuviera en Objetos tenes un poco mas de chances.
La UNICA que se me ocurre, es que copies la funcion de sumarizacion e un Z y ahi le puedas metar vos que solo tenga en cuenta los registros marcados. No es muy alentadora la idea porque tendras que debuguear el std un rato pero desde mis pocos conocimientos no se me ocurre mas, tal vez puedas buscar en SDN a ver si saben algo. Y sino la respuesta mas habitual "No, mira... eso SAP no lo contempla, bajalo a Excel y cualquier cosa preguntale a Microsft " |
#6
|
|||
|
|||
OK.....KIBO....MUCHAS GRACIAS....ESO ES LO QUE ESTABA DEBUGUEANDO HACE RATO LA FUNCION: REUSE_ALV_GRID_DISPLAY PERO ME DESESPERE...voy a ver si encuentro el sumarizado para excluír los que no fueron marcados..... y si no les voy a decir que no se puede en SAP.... GRACIAS y te aviso si pude encontrar el punto exacto para cambiar en la funcion. Saludos
__________________
Saludos Alabado Seas Yhavé. -Hay Un Mundo Mejor Cuando Aprendes a AMAR |
Herramientas | Buscar en Tema |
Desplegado | |
|
|