Ver Mensaje Individual
  #2  
Viejo 28/01/09, 11:29:59
Bmamba Bmamba is offline
Member
 
Fecha de Ingreso: jun 2008
Mensajes: 91
Tienes que declararte en el catálogo un campo checkbox:
CLEAR wa_catalogo.
wa_catalogo-fieldname = 'CHECK'.
wa_catalogo-col_pos = l_lin.
wa_catalogo-checkbox = 'X'.
wa_catalogo-outputlen = 2.
wa_catalogo-edit = 'X'.
APPEND wa_catalogo TO catalogo.
ADD 1 TO l_lin.

Además en el layout tienes que marcar lo siguiente:
layout-no_rowmark = 'X'.

Y luego para saber cuales están marcados o no después del set_table_for_first_display añades:
CALL METHOD alv->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.

* Evento que captura los cambios realizados
CALL METHOD alv->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.

* Instanciando el objeto que enlaza eventos y el grid
CREATE OBJECT g_event_receiver.
SET HANDLER g_event_receiver->handle_data_changed
FOR alv.

La clase lcl_event_handler es:
**----------------------------------------------------------------------
*-
CLASS lcl_event_handler DEFINITION.
***---------------------------------------------------------------------

PUBLIC SECTION.
METHODS: handle_data_changed FOR EVENT data_changed OF
cl_gui_alv_grid IMPORTING er_data_changed.

ENDCLASS.

**----------------------------------------------------------------------
*-
CLASS lcl_event_handler IMPLEMENTATION.
***---------------------------------------------------------------------

METHOD handle_data_changed.
DATA: lv_changed TYPE lvc_s_modi.

LOOP AT er_data_changed->mt_good_cells INTO lv_changed
WHERE fieldname = 'CHECK'.

clear wa_etiquetas.

READ TABLE it_etiquetas INTO wa_etiquetas INDEX lv_changed-row_id.

IF sy-subrc = 0.
MOVE lv_changed-value TO wa_etiquetas-check.
MODIFY it_etiquetas FROM wa_etiquetas INDEX lv_changed-row_id.
ENDIF.

ENDLOOP.
ENDMETHOD.

ENDCLASS.


Espero que te sirva de algo.
Saludos
Responder Con Cita