Anuncio

Colapsar
No hay anuncio todavía.

Popup ALV con checkbox de seleccion simple

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • Popup ALV con checkbox de seleccion simple

    Hola a todos,

    soy nueva en esto de SAP y no tengo demasiada experiencia y menos con ALV...

    En el trabajo una compañera me ha pedido el favor de investigar sobre esto, en concreto lo que hay que hacer es lanzar un ALV en POPUP y conseguir que los checkbox que salen solo permitan seleccionar una opción, es decir, que se comporte como si fuesen radiobuttons.

    Para que sea popup exigen que se utilice la función REUSE_ALV_POPUP_TO_SELECT, lo que no sabemos es si hay alguna manera de hacer que el checkbox no permita una selección múltiple.

    Muchas gracias de antemano a todos.

    Saludos.

    Cris.

  • #2
    Saludos,


    Si no me equivoco, no existe la posibilidad de utilizar los check box, como radio buttons... si bien, puedes generar un evento a la hora de marcar un check box, de modo que si hay otro marcado, este se desmarque y se marque el nuevo registro pulsado... es decir.... utilizas un campo al cual en el catalogo le asignas el HOTSPOT = 'X'. Y cuando se cliquee sobre el registro, se lanza un evento, que al recogerlo, lo que haces es buscar en la tabla de ALV, si alguno de los check box ha sido marcado con anterioridad... en este caso, desmarcamos el marcado, y marcamos el que el usuario ha clicado. Si por el contrario, no hubiese ninguno marcado, simplemente marcamos el que clicó el usuario.


    Prueba esto... en algunos foros hay mñas información referente a los check box y los alv...


    Suerte.
    Un Cordial Saludo,
    Francisco Javier Carrillo Maldonado.

    Comentario


    • #3
      Hola Francisco Javier,

      muchas gracias, si bueno ya lo había consultado en otros foros y me habían dicho que no se podía hacer de la forma que quería hacerlo. Probaré como me has dicho tú, muchas gracias!!!!

      Saludos,


      Originalmente publicado por Francisco Javier Ver Mensaje
      Saludos,


      Si no me equivoco, no existe la posibilidad de utilizar los check box, como radio buttons... si bien, puedes generar un evento a la hora de marcar un check box, de modo que si hay otro marcado, este se desmarque y se marque el nuevo registro pulsado... es decir.... utilizas un campo al cual en el catalogo le asignas el HOTSPOT = 'X'. Y cuando se cliquee sobre el registro, se lanza un evento, que al recogerlo, lo que haces es buscar en la tabla de ALV, si alguno de los check box ha sido marcado con anterioridad... en este caso, desmarcamos el marcado, y marcamos el que el usuario ha clicado. Si por el contrario, no hubiese ninguno marcado, simplemente marcamos el que clicó el usuario.


      Prueba esto... en algunos foros hay mñas información referente a los check box y los alv...


      Suerte.

      Comentario


      • #4
        Hola de nuevo, Francisco Javier

        un compañero (uno de los que se encargan del proyecto, yo solo les habia ayudado esporádicamente) me ha comentado que ha probado lo que has explicado anteriormente. Lo que él ha hecho es en la funcion reuse_alv_popup_to_select ha puesto hotspot = 'X' tal y como habías dicho y en callback le ha dado el nombre de un form de manera que cuando se clickase en un checkbox lanza ese form. El problema que me ha comentado es que no entra en el form para allí tratarlo.

        Siento no ser demasiado explícita pero al no haberlo hecho yo pues es más complicado.

        De todas maneras para saberlo, cómo se podría lanzar un evento?

        Muchas gracias por todo

        Saludos

        Comentario


        • #5
          ojala te sirva

          Originalmente publicado por crisgil79 Ver Mensaje
          Hola de nuevo, Francisco Javier

          un compañero (uno de los que se encargan del proyecto, yo solo les habia ayudado esporádicamente) me ha comentado que ha probado lo que has explicado anteriormente. Lo que él ha hecho es en la funcion reuse_alv_popup_to_select ha puesto hotspot = 'X' tal y como habías dicho y en callback le ha dado el nombre de un form de manera que cuando se clickase en un checkbox lanza ese form. El problema que me ha comentado es que no entra en el form para allí tratarlo.

          Siento no ser demasiado explícita pero al no haberlo hecho yo pues es más complicado.

          De todas maneras para saberlo, cómo se podría lanzar un evento?

          Muchas gracias por todo

          Saludos
          type-pools: slis. " ALV Global types

          data: l_exit.
          data: ls_private type slis_data_caller_exit.
          data: ls_fieldcat type slis_fieldcat_alv.
          data: lt_fieldcat type slis_t_fieldcat_alv.

          data: cuenta type i.

          define m_fieldcat.
          add 1 to ls_fieldcat-col_pos.
          ls_fieldcat-fieldname = &1.
          ls_fieldcat-ref_tabname = &2.
          ls_fieldcat-outputlen = &3.
          ls_fieldcat-seltext_l = &4.
          append ls_fieldcat to lt_fieldcat.
          end-of-definition.

          m_fieldcat 'WERKS' 't_archisalida' '6' 'Tienda'.
          m_fieldcat 'BALID' 't_archisalida' '14' 'Código Balanza'.
          m_fieldcat 'NOMBRE' 't_archisalida' '14' 'Nombre Balanza'.

          data: begin of t_archisalida occurs 0,
          werks like zbalanza-werks,
          balid like zbalanza-balid,
          nombre like zbalanza-nombre,
          checkbox,
          end of t_archisalida.

          *** Luego de las definiciones cargo datos en tabla interna

          refresh t_archisalida2.
          clear t_archisalida2.

          select a~werks a~gruid a~balid b~nombre
          into corresponding fields of table t_archisalida2

          from zgrupobalanza as a inner join zgrupobal as b on
          a~mandt = b~mandt and
          a~gruid = b~gruid .


          *Llamo funcion

          call function 'REUSE_ALV_POPUP_TO_SELECT'
          exporting
          i_selection = 'X'
          i_zebra = 'X'
          it_fieldcat = lt_fieldcat
          i_tabname = 't_archisalida'
          i_checkbox_fieldname = 'CHECKBOX'
          is_private = ls_private
          importing
          e_exit = l_exit
          tables
          t_outtab = t_archisalida.


          *Luego que seleccionan puedo chequear el o los registros seleccionados y saber si
          *se seleccionó tambien mas de uno

          clear cuenta.
          loop at t_archisalida2 where checkbox = 'X'.
          cuenta = cuenta + 1.
          endloop.

          if cuenta > 1. ""seleccionaron mas de 1 registro
          call function 'POPUP_TO_INFORM'
          exporting
          titel = 'TITULO'
          txt1 = 'SOLO DEBE SELECCIONAR 1 REGISTRO BLA BLA'
          txt2 = ' '
          txt3 = ' '
          txt4 = ' '
          exceptions
          others = 1.

          else.


          loop at t_archisalida2 where checkbox = 'X'.

          MI_CAMPO_DYNPRO O VARIABLE = t_archisalida2-gruid.

          endloop.

          endif.


          ESPERO AYUDAR NO OLVIDES CAMBIAR LAS TABLAS, PUES SON TABLAS Z CREADAS POR MI.

          SALUDOS MI CORREO ES

          JAVIER.RUIZ82@YAHOO.COM

          Comentario

          Trabajando...
          X