#1
|
|||
|
|||
TOP-OF-PAGE dinamico
Hola gente de Mundosap,
El inconveniente por el que les escribo es el siguiente. Tengo 2 alv oo los cuales uno deriba del otro. Es decir, tengo el alv 1, en el cual tengo agregado el evento doble clic, entonces al hacer doble clic sobre una de las lineas del alv 1, me abre el alv 2 en forma de popup con el detalle de la linea seleccionada. Esto funciona perfectamente. Pero lo que no logro hacer es que el TOP_OF_PAGE del alv 2 sea dinamico. Es decir, que me muestre en el TOP_OF_PAGE la sucursal que se selecciono en el alv 1. En este momento no puedo hacer que actualice el TOP_OF_PAGE del alv 2 mostrandome siempre la sucursal del primer registro que le hago doble clic. O sea, si la primera vez que hice doble clic sobre el alv 1 en la sucursal AAA, por mas que haga doble clic sobre el alv 1 en la sucursal BBB, me sigue mostrando AAA en el TOP_OF_PAGE del alv 2. Le di miles de vueltas y ya no se como hacer para poder actualizar el TOP_OF_PAGE de esta manera. Espero haber sido lo mas claro posible para que me puedan ayudar en el tema. Desde ya muchas gracias. Saludos, |
#2
|
|||
|
|||
tienes que inicializar el encabezado:
CALL METHOD OBJETO_CL_DD_DOCUMENT->INITIALIZE_DOCUMENT. CALL METHOD OBJETO_CL_GUI_ALV_GRID->LIST_PROCESSING_EVENTS EXPORTING I_EVENT_NAME = 'TOP_OF_PAGE' I_DYNDOC_ID = OBJETO_CL_DD_DOCUMENT. |
#3
|
|||
|
|||
Jossnet, Muchas gracias por el aporte, pero esto lo probe de la siguiente manera, y no me funciono: DATA: LCL_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT. " Declarado globalmente * initializing document CALL METHOD LCL_DYNDOC_ID->INITIALIZE_DOCUMENT. * force top_of_page event CALL METHOD gr_alvgrid2->LIST_PROCESSING_EVENTS EXPORTING I_EVENT_NAME = 'TOP_OF_PAGE' I_DYNDOC_ID = LCL_DYNDOC_ID. Y dentro del perform del metodo top_of_page: READ TABLE gt_plan INTO gs_plan INDEX gv_row. CALL METHOD E_DYNDOC_ID->NEW_LINE. * Sucursal WRITE gs_plan-i_vkbur TO LV_TEXT. ADD_TEXT: 'Sucursal:' SPACE CL_DD_AREA=>STRONG, LV_TEXT SPACE CL_DD_AREA=>SMALL. Pero esto no me lo actualiza. Sinceramente creo que me esta faltando algo, ya que logicamente asi deberia funcionar, pero en la practica no es asi. Siempre mantiene la sucursal del primer registro que se visualizo. Es mas, incluso probe con agregarle el metodo initialization dentro del perform (CALL METHOD E_DYNDOC_ID->INITIALIZE_DOCUMENT) lo cual tampoco me funciono. Alguien que me sugiera alguna otra cosa o me indique como hacer para subir el codigo asi pueden visualizar como lo estoy haciendo y asi quizas me puedan ayudar con una solucion? Desde ya muchas gracias. |
#4
|
|||
|
|||
Estimados,
El tema fue solucionado de la siguientes manera. El ALV OO y el TOP_OF_PAGE forman parte de un mismo contenedor el cual es dividido en 2 por medio de un SPLITTER, como el SPLITTER no posee un metodo refresh o initialize, elimine el contenedor del TOP_OF_PAGE y lo cree de nuevo, lo cual me actualiza los datos del TOP_OF_PAGE como necesitaba. * Se elimina el contenedor del TOP_OF_PAGE CALL METHOD GV_SPLITTER2->REMOVE_CONTROL EXPORTING ROW = 1 COLUMN = 1 EXCEPTIONS CNTL_ERROR = 1 CNTL_SYSTEM_ERROR = 2 others = 3. * Se instancia el contenedor del TOP_OF_PAGE CALL METHOD GV_SPLITTER2->GET_CONTAINER EXPORTING ROW = 1 COLUMN = 1 RECEIVING CONTAINER = gr_tcontainer2. * Se setea la dimension del contenedor del TOP_OF_PAGE CALL METHOD GV_SPLITTER2->SET_ROW_HEIGHT EXPORTING ID = 1 HEIGHT = 20. * initializing document CALL METHOD LCL_DYNDOC_ID->INITIALIZE_DOCUMENT. * force top_of_page event CALL METHOD gr_alvgrid2->LIST_PROCESSING_EVENTS EXPORTING I_EVENT_NAME = 'TOP_OF_PAGE' I_DYNDOC_ID = LCL_DYNDOC_ID. Espero a alguien le sirva. Saludos, |
Herramientas | Buscar en Tema |
Desplegado | |
|
|