#2
|
|||
|
|||
Aqui te pongo un ejemplo
Con dos opciones:
- Con un boton que muestre los datos marcados - Haciendo doble click sobre un registro. Lo primero es la funcion que muestra el alv create un form 'user_command'. Y creas el siguiente form. FORM alv_user_command USING p_r_ucomm LIKE sy-ucomm p_rs_selfield TYPE slis_selfield. DATA: d_contador TYPE i. CASE p_r_ucomm. WHEN '&IC1'. -> Esto es para el doble click READ TABLE i_salida INDEX p_rs_selfield-tabindex. -> itab del ALV SELECT * FROM ziber_ta_np02 WHERE kblnr = i_salida-belnr AND refbukrs = i_salida-bukrs AND kblpos = i_salida-blpos AND refgjahr = i_salida-gjahr. IF sy-subrc = 0. MOVE-CORRESPONDING ziber_ta_np02 TO i_detalle. i_detalle-gjahr = i_salida-gjahr. i_detalle-belnr = i_salida-belnr. i_detalle-blpos = i_salida-blpos. i_detalle-pspnr = i_salida-pspnr. i_detalle-fistl = i_salida-fistl. i_detalle-fipos = i_salida-fipos. i_detalle-geber = i_salida-geber. i_detalle-lifnr = i_salida-lifnr. i_detalle-wtges = i_salida-wtges. i_detalle-belnro = ziber_ta_np02-belnr. IF NOT ziber_ta_np02-augdt IS INITIAL. i_detalle-ejerp = ziber_ta_np02-augdt. ELSE. i_detalle-ejerp = ''. ENDIF. i_detalle-importp = ziber_ta_np02-dmbtr. APPEND i_detalle. ENDIF. ENDSELECT. PERFORM alv_detalle. WHEN '&VER'. -> Este seria tu caso. Todos los registros seleccionados CLEAR i_detalle. REFRESH i_detalle. READ TABLE i_salida INDEX p_rs_selfield-tabindex. * recorremos todos los registros que esten marcados LOOP AT i_salida WHERE marca = 'X'. ** cada vez que entre contamos para saber si al menos hay uno pinchado d_contador = d_contador + 1. SELECT * FROM ziber_ta_np02 WHERE kblnr = i_salida-belnr AND refbukrs = i_salida-bukrs AND kblpos = i_salida-blpos AND refgjahr = i_salida-gjahr. IF sy-subrc = 0. MOVE-CORRESPONDING ziber_ta_np02 TO i_detalle. i_detalle-gjahr = i_salida-gjahr. i_detalle-belnr = i_salida-belnr. i_detalle-blpos = i_salida-blpos. i_detalle-pspnr = i_salida-pspnr. i_detalle-fistl = i_salida-fistl. i_detalle-fipos = i_salida-fipos. i_detalle-geber = i_salida-geber. i_detalle-lifnr = i_salida-lifnr. i_detalle-wtges = i_salida-wtges. i_detalle-belnro = ziber_ta_np02-belnr. IF NOT ziber_ta_np02-augdt IS INITIAL. i_detalle-ejerp = ziber_ta_np02-augdt. ELSE. i_detalle-ejerp = ''. ENDIF. i_detalle-importp = ziber_ta_np02-dmbtr. APPEND i_detalle. ENDIF. ENDSELECT. ENDLOOP. *si no hay ningun reg seleccionado para visualizar, mensaje! IF ( d_contador = 0 ). MESSAGE i002(z_mensa). * sino al ALV para visualizar el detalle. ELSE. PERFORM alv_detalle. ENDIF. ENDCASE. ENDFORM. " alv_user_command |
Herramientas | Buscar en Tema |
Desplegado | |
|
|