Ver Mensaje Individual
  #3  
Viejo 04/08/09, 13:43:15
fenix28 fenix28 is offline
Member
 
Fecha de Ingreso: may 2007
Mensajes: 39
Hola Bmamba hago exactamente lo que dices y no hay manera me sale el cuadradito para poder marcar la línea pero después de sale un campo checkbox editable en el ALV. Me estoy volviendo loco....... no tendrás por ahi un ejemplo completo para echarle un vistazo desde el principio...... Yo lo que he hecho es lo siguiente:

REPORT ZBIG_LIB_RESP_PDA.

tables: ZBIG_LA_PDACLI,
ZBIG_BZCAMPANIAS.

data: g_zbig_la_pdacli like standard table of zbig_la_pdacli with header line.

data: begin of g_datos occurs 0,
check type c,
kunnr like zbig_la_pdacli-kunnr,
zcodcampania like zbig_la_pdacli-zcodcampania,
zcodcomunicacion like zbig_la_pdacli-zcodcomunicacion,
zcodcosecha like zbig_la_pdacli-zcodcosecha,
zbig_clave_buzon like zbig_la_pdacli-zbig_clave_buzon,
descripcion like zbig_bzcampanias-zdesccampania,
end of g_datos.

data: g_nombre like kna1-name1,
g_wa_datos like g_datos.

* Declare reference variables to the ALV grid and the container

data: go_grid type ref to cl_gui_alv_grid, "ALV GRID
go_custom_container type ref to cl_gui_custom_container, "Contenedor
g_fieldcatalog type lvc_t_fcat, "Catálogo de campos
l_layout type lvc_s_layo, "Layout
lt_fcodes type ui_functions.

***************************** SELECTION SCREEN ******************************
selection-screen begin of block bl1 with frame.
parameters: pa_kunnr like zbig_la_pdacli-kunnr obligatory.
selection-screen end of block bl1.


**----------------------------------------------------------------------
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 g_wa_datos.
READ TABLE g_datos INTO g_wa_datos INDEX lv_changed-row_id.

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

ENDLOOP.

ENDMETHOD.

ENDCLASS.

DATA g_event_receiver type ref to lcl_event_handler.


***************************** START-OF-SELECTION ****************************
START-OF-SELECTION.

perform seleccion_datos.
perform build_fieldcat.
call screen 2000.

END-OF-SELECTION.
***************************** END-OF-SELECTION ****************************

*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCAT
*&---------------------------------------------------------------------*
* Creamos el formato del ALV
*----------------------------------------------------------------------*
form build_fieldcat.

* Importante hay que añadir "WITH HEADER LINE
data: l_fieldcatalog type lvc_t_fcat with header line.

clear: l_fieldcatalog, g_fieldcatalog.
refresh: l_fieldcatalog.

l_fieldcatalog-fieldname = 'CHECK'. "Código Campaña
l_fieldcatalog-col_pos = 1.
l_fieldcatalog-outputlen = 2.
l_fieldcatalog-checkbox = 'X'.
l_fieldcatalog-edit = 'X'.

append l_fieldcatalog to g_fieldcatalog.
clear: l_fieldcatalog.

l_fieldcatalog-fieldname = 'ZCODCAMPANIA'. "Código Campaña
l_fieldcatalog-scrtext_l = 'Campaña'.
l_fieldcatalog-col_pos = 2.
l_fieldcatalog-key = 'X'.
l_fieldcatalog-outputlen = 10.
l_fieldcatalog-just = 'X'.
append l_fieldcatalog to g_fieldcatalog.
clear: l_fieldcatalog.

l_fieldcatalog-fieldname = 'ZCODCOMUNICACION'. "Código Comunicación
l_fieldcatalog-scrtext_l = 'Comunicación'.
l_fieldcatalog-col_pos = 3.
l_fieldcatalog-key = 'X'.
l_fieldcatalog-outputlen = 12.
l_fieldcatalog-just = 'X'.
append l_fieldcatalog to g_fieldcatalog.
clear: l_fieldcatalog.

l_fieldcatalog-fieldname = 'ZCODCOSECHA'. "Código Cosecha
l_fieldcatalog-scrtext_l = 'Cosecha'.
l_fieldcatalog-col_pos = 4.
l_fieldcatalog-key = 'X'.
l_fieldcatalog-outputlen = 10.
l_fieldcatalog-just = 'X'.
append l_fieldcatalog to g_fieldcatalog.
clear: l_fieldcatalog.

l_fieldcatalog-fieldname = 'ZBIG_CLAVE_BUZON'. "Clave del Buzón
l_fieldcatalog-scrtext_l = 'Clave Buzón'.
l_fieldcatalog-col_pos = 5.
l_fieldcatalog-key = 'X'.
l_fieldcatalog-outputlen = 16.
l_fieldcatalog-just = 'X'.
append l_fieldcatalog to g_fieldcatalog.
clear: l_fieldcatalog.

l_fieldcatalog-fieldname = 'DESCRIPCION'.
l_fieldcatalog-scrtext_l = 'Descripción'.
l_fieldcatalog-col_pos = 6.
l_fieldcatalog-outputlen = 150.
l_fieldcatalog-just = 'X'.
append l_fieldcatalog to g_fieldcatalog.
clear: l_fieldcatalog.

endform. " BUILD_FIELDCAT

*&---------------------------------------------------------------------*
*& Form load_data_into_grid
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form load_data_into_grid.

call method go_grid->set_table_for_first_display
exporting
is_layout = l_layout
changing
it_outtab = g_datos[]
it_fieldcatalog = g_fieldcatalog[].

* Para saber si se han marcado la líneas.
CALL METHOD go_grid->register_edit_event EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_enter.

* Evento que captura los cambios realizados
CALL METHOD go_grid->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 go_grid.


endform. " load_data_into_grid
*&---------------------------------------------------------------------*
*& Module STATUS_2000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
module status_2000 output.

if not go_custom_container is initial.

* Limpiar referencia al objeto

call method go_grid->free.
call method go_custom_container->free.

* Limpiar variables

clear go_grid.
clear go_custom_container.

endif.

case sy-ucomm.

when 'BACK'. perform clear_variables.
clear g_datos. refresh g_datos.
leave to screen 0. exit.
when 'CANC'. perform clear_variables.
clear g_datos. refresh g_datos.
leave to screen 0. exit.
when 'EXIT'. perform clear_variables.
clear g_datos. refresh g_datos.
leave to screen 0. exit.
endcase.

set pf-status 'STATUS_2000'.
* SET TITLEBAR 'xxx'.

* Creamos el contenedor del ALV y llamamos al ALV
if go_custom_container is initial.

create object go_custom_container
exporting container_name = 'ZTABLA'.

create object go_grid
exporting
i_parent = go_custom_container.

perform load_data_into_grid.

* Layout

* l_layout-cwidth_opt = 'X'.
l_layout-zebra = 'X'.
l_layout-cwidth_opt = 'X'.
l_layout-no_rowmark = 'X'.

else.

* Refrescar la tabla ALV

* l_layout-cwidth_opt = 'X'.
l_layout-zebra = 'X'.
l_layout-cwidth_opt = 'X'.
l_layout-no_rowmark = 'X'.

call method go_grid->refresh_table_display.
perform load_data_into_grid.

endif.

endmodule. " STATUS_2000 OUTPUT

*&---------------------------------------------------------------------*
*& Module USER_COMMAND_2000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
module user_command_2000 input.

endmodule. " USER_COMMAND_2000 INPUT

*&---------------------------------------------------------------------*
*& Form CLEAR_VARIABLES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form clear_variables.

if not go_custom_container is initial.

* Limpiar referencia al objeto

call method go_grid->free.
call method go_custom_container->free.

* Limpiar variables

* clear gv_event_receiver.
clear go_grid.
clear go_custom_container.

endif.

endform. " CLEAR_VARIABLES


Y el resultado que obtengo es que mando en la foto adjunta....
No sé que tengo que hacer para quitar ese checkbox y sólo dejar el cuadradito para poder seleccionar la línea entera o no..........

Gracias por leer este mensaje y un saludo a todo el mundo....... La verdad que tú líneas de código me han servido de mucho....... Muchas gracias.....
Imágenes Adjuntas
Tipo de Archivo: jpg ALVOO.jpg (33.8 KB, 114 visitas)
Responder Con Cita