selection screen dynamico

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • damlaplata
    Member
    • sep
    • 41

    #1

    selection screen dynamico

    Que tal Gente! como estan? de seguro mejor que yo jeje..
    Les consulto a uds por este problema que me aqueja. Tengo una pantalla de seleccion en la cual tengo dos radiobuttons, en el cual 'una parametro', se afectado por los mismos.
    Es decir cuando un radiobutton este seleccionado esta 'variable' tiene que estar deshabilitada o desaparecer, y cuando este seleccionado el otro radiobutton, tiene que aparcer la variable. Por lo que encontre, tengo que usar el loop at screen y luego activar y desactivar, pero no lo consigo. Este es mi intento:

    Código:
    SELECT-OPTIONS:
                    s_bukrs   FOR T001-BUKRS NO-EXTENSION OBLIGATORY NO INTERVALS ,
                    s_gjahr   FOR BKPF-GJAHR NO-EXTENSION OBLIGATORY NO INTERVALS,
                    s_monat   FOR BKPF-MONAT NO-EXTENSION OBLIGATORY NO INTERVALS.
    
    SELECTION-SCREEN BEGIN OF BLOCK eje_1 WITH FRAME TITLE text-001.
    
    PARAMETERS:
                  p_file          TYPE ibipparms-path OBLIGATORY,"Directorio
                  rb_gen1         TYPE c RADIOBUTTON GROUP a1 DEFAULT 'X',
                  rb_gen2         TYPE c RADIOBUTTON GROUP a1.
    
    SELECT-OPTIONS s_salida       FOR BKPF-GJAHR NO-EXTENSION NO INTERVALS MODIF ID F1.
    
    SELECTION-SCREEN END OF BLOCK EJE_1.
    
    Luego en el evento at selection...
    
    **********************************************************************
    AT SELECTION-SCREEN OUTPUT.
    **********************************************************************
    LOOP AT SCREEN.
      CASE screen-group1.
        WHEN 'F1'.
    
          IF rb_gen1 IS INITIAL.
    
              screen-active = '0'.
          ELSE.
    
              screen-active = '1'.
    
          ENDIF.
    
        WHEN OTHERS.
              screen-active = '1'.
    
      ENDCASE.
      MODIFY SCREEN.
     ENDLOOP.
    
    **********************************************
    Y saque un ejemplo de un chino XD...en el cual lo hace con dos radiobutton y dos parametros, lo cual esta perfecto y anda joya. Pero en mi caso tengo en el mismo bloque los parametros ...y no le encuentro la vuelta.
    Este es el ejemplo:
    Código:
    PARAMETERS: p1 TYPE c RADIOBUTTON GROUP g1 USER-COMMAND uc,
                p2 TYPE c RADIOBUTTON GROUP g1 DEFAULT 'X'.
    PARAMETERS: p_werks TYPE werks MODIF ID ty1,
                p_matnr TYPE matnr MODIF ID ty2.
     
    AT SELECTION-SCREEN OUTPUT.
      LOOP AT SCREEN.
        CASE screen-group1.
          WHEN 'TY1'.
            IF p1 IS INITIAL.
              screen-active = '0'.
            ELSE.
              screen-active = '1'.
            ENDIF.
          WHEN 'TY2'.
            IF p2 IS INITIAL.
              screen-active = '0'.
            ELSE.
              screen-active = '1'.
            ENDIF.
        ENDCASE.
        MODIFY SCREEN.
      ENDLOOP.
     
    AT SELECTION-SCREEN.
      CLEAR sy-ucomm.
    Desde antemano muchas gracias por su ayuda.

    saludos!
  • Mauricio Hidalgo
    Senior Member
    • may
    • 481

    #2
    Solo te falta poner un user-command para que se active el PBO
    Código:
    report zms1.
    tables:
       t001, bkpf.
    
    select-options:
    s_bukrs for t001-bukrs no-extension obligatory no intervals ,
    s_gjahr for bkpf-gjahr no-extension obligatory no intervals,
    s_monat for bkpf-monat no-extension obligatory no intervals.
    
    selection-screen begin of block eje_1 with frame title text-001.
    
    parameters:
    p_file type ibipparms-path obligatory,"Directorio
    rb_gen1 type c radiobutton group a1 default 'X' user-command MM,
    rb_gen2 type c radiobutton group a1.
    
    select-options s_salida for bkpf-gjahr no-extension no intervals modif id f1.
    
    selection-screen end of block eje_1.
    
    *luego en el evento at selection...
    
    ************************************************** ********************
    at selection-screen output.
    ************************************************** ********************
      loop at screen.
        case screen-group1.
          when 'F1'.
    
            if rb_gen1 is initial.
    
              screen-active = '0'.
            else.
    
              screen-active = '1'.
    
            endif.
    
          when others.
            screen-active = '1'.
    
        endcase.
        modify screen.
      endloop.

    Comentario

    • damlaplata
      Member
      • sep
      • 41

      #3
      selection-screen

      Originalmente publicado por Mauricio Hidalgo
      Solo te falta poner un user-command para que se active el PBO
      Código:
      report zms1.
      tables:
         t001, bkpf.
      
      select-options:
      s_bukrs for t001-bukrs no-extension obligatory no intervals ,
      s_gjahr for bkpf-gjahr no-extension obligatory no intervals,
      s_monat for bkpf-monat no-extension obligatory no intervals.
      
      selection-screen begin of block eje_1 with frame title text-001.
      
      parameters:
      p_file type ibipparms-path obligatory,"Directorio
      rb_gen1 type c radiobutton group a1 default 'X' user-command MM,
      rb_gen2 type c radiobutton group a1.
      
      select-options s_salida for bkpf-gjahr no-extension no intervals modif id f1.
      
      selection-screen end of block eje_1.
      
      *luego en el evento at selection...
      
      ************************************************** ********************
      at selection-screen output.
      ************************************************** ********************
        loop at screen.
          case screen-group1.
            when 'F1'.
      
              if rb_gen1 is initial.
      
                screen-active = '0'.
              else.
      
                screen-active = '1'.
      
              endif.
      
            when others.
              screen-active = '1'.
      
          endcase.
          modify screen.
        endloop.
      Hola Mauricio Hidalgo.
      Muchas Gracias por responder.
      Pero aparecio un problemas, resulta que con los OBLIGATORY no funciona y no cambia para nada. Pero sin la propiedad OBLIGATORY funciona joya.
      Yo necesito que sean obligatorios esos parametros, con esa propiedad mejor.
      Sino me quedaria trabajar en el at-seleccion para hacerlo manual dicha comprobacion.
      Te consulto si es posible que pueda funcionar con OBLIGATORY en los parametros?

      Saludos,

      Comentario

      • damlaplata
        Member
        • sep
        • 41

        #4
        selection-screen dynamico

        Otra cosa. Si en vez de desaparecer el campo. Se puede dejar deshabilitado?

        Comentario

        • Mauricio Hidalgo
          Senior Member
          • may
          • 481

          #5
          En ese caso saca los obligatory...y valida sus entrada en el evento at selection-screen o bien at selection-screen on <parametro>.

          Las validaciones no deben aplicarse en tanto estes jugando con los radio button en el ejemplo que yo te envie sería algo asi como

          Código:
          at selection-screen.
            if sy-ucomm ne 'MM'.
               if s_bukrs is initial.
                message e010(00) with 'Ingrese sociedad'.
               endif.
            endif.
          Campo inhibidoi para entrada modificar atributo input dejarlo con '0'.

          Saludos

          Comentario

          • nayita
            Member
            • jun
            • 48

            #6
            Generar Pantalla de Seleccion desde una tabla

            Hola,

            Disculpa sepuede generar la pantalla de seleccion desde una tabla interna?, si es afirmativo puedes ayudarme a saber como se puede hacer eso?.

            Gracias.

            Comentario

            • jarabas
              Senior Member
              • ene
              • 109

              #7
              Originalmente publicado por nayita
              Hola,

              Disculpa sepuede generar la pantalla de seleccion desde una tabla interna?, si es afirmativo puedes ayudarme a saber como se puede hacer eso?.

              Gracias.
              Podrías explicarte mejor? te refieres a una tabla que contiene que campos quieres que salgan, o el contenido de los input del check box?

              Creo recordar que hay funciones especificas para ello.

              Lamento la generalidad de la respuesta pero no tengo un sistema delante.

              Un saludo.

              Comentario

              • nayita
                Member
                • jun
                • 48

                #8
                Pantalla de seleccion

                Me refiero a que si la pantalla de seleccion la puedoo tomar desde lainformacion que se contiene en una tabla Ejemplo:

                Tabla Z

                campo1 - campo2
                Tarea1
                Tarea2
                Tarea3
                Tarea4

                Que antes de que se ejecute la pantalla de seleccion se tome los datos de esta tabla no se puede ser mediante un select yse coloque en la pantalla de seleccion como opciones de CASILLAS DE SELECCION (check box)es decir si hay 4 tareas que aparescan 4 check box

                Saludos.
                Editado por última vez por nayita; 06/03/2013, 00:26:47.

                Comentario

                • Zamichiei_24
                  Junior Member
                  • mar
                  • 14

                  #9
                  Selection-screen

                  Originalmente publicado por damlaplata
                  Que tal Gente! como estan? de seguro mejor que yo jeje..
                  Les consulto a uds por este problema que me aqueja. Tengo una pantalla de seleccion en la cual tengo dos radiobuttons, en el cual 'una parametro', se afectado por los mismos.
                  Es decir cuando un radiobutton este seleccionado esta 'variable' tiene que estar deshabilitada o desaparecer, y cuando este seleccionado el otro radiobutton, tiene que aparcer la variable. Por lo que encontre, tengo que usar el loop at screen y luego activar y desactivar, pero no lo consigo. Este es mi intento:

                  Código:
                  SELECT-OPTIONS:
                                  s_bukrs   FOR T001-BUKRS NO-EXTENSION OBLIGATORY NO INTERVALS ,
                                  s_gjahr   FOR BKPF-GJAHR NO-EXTENSION OBLIGATORY NO INTERVALS,
                                  s_monat   FOR BKPF-MONAT NO-EXTENSION OBLIGATORY NO INTERVALS.
                  
                  SELECTION-SCREEN BEGIN OF BLOCK eje_1 WITH FRAME TITLE text-001.
                  
                  PARAMETERS:
                                p_file          TYPE ibipparms-path OBLIGATORY,"Directorio
                                rb_gen1         TYPE c RADIOBUTTON GROUP a1 DEFAULT 'X',
                                rb_gen2         TYPE c RADIOBUTTON GROUP a1.
                  
                  SELECT-OPTIONS s_salida       FOR BKPF-GJAHR NO-EXTENSION NO INTERVALS MODIF ID F1.
                  
                  SELECTION-SCREEN END OF BLOCK EJE_1.
                  
                  Luego en el evento at selection...
                  
                  **********************************************************************
                  AT SELECTION-SCREEN OUTPUT.
                  **********************************************************************
                  LOOP AT SCREEN.
                    CASE screen-group1.
                      WHEN 'F1'.
                  
                        IF rb_gen1 IS INITIAL.
                  
                            screen-active = '0'.
                        ELSE.
                  
                            screen-active = '1'.
                  
                        ENDIF.
                  
                      WHEN OTHERS.
                            screen-active = '1'.
                  
                    ENDCASE.
                    MODIFY SCREEN.
                   ENDLOOP.
                  
                  **********************************************
                  Y saque un ejemplo de un chino XD...en el cual lo hace con dos radiobutton y dos parametros, lo cual esta perfecto y anda joya. Pero en mi caso tengo en el mismo bloque los parametros ...y no le encuentro la vuelta.
                  Este es el ejemplo:
                  Código:
                  PARAMETERS: p1 TYPE c RADIOBUTTON GROUP g1 USER-COMMAND uc,
                              p2 TYPE c RADIOBUTTON GROUP g1 DEFAULT 'X'.
                  PARAMETERS: p_werks TYPE werks MODIF ID ty1,
                              p_matnr TYPE matnr MODIF ID ty2.
                   
                  AT SELECTION-SCREEN OUTPUT.
                    LOOP AT SCREEN.
                      CASE screen-group1.
                        WHEN 'TY1'.
                          IF p1 IS INITIAL.
                            screen-active = '0'.
                          ELSE.
                            screen-active = '1'.
                          ENDIF.
                        WHEN 'TY2'.
                          IF p2 IS INITIAL.
                            screen-active = '0'.
                          ELSE.
                            screen-active = '1'.
                          ENDIF.
                      ENDCASE.
                      MODIFY SCREEN.
                    ENDLOOP.
                   
                  AT SELECTION-SCREEN.
                    CLEAR sy-ucomm.
                  Desde antemano muchas gracias por su ayuda.

                  saludos!

                  Hola
                  te paso un ejemplo paso a paso de las opciones en el selection-screen super claro



                  saludos
                  Zami

                  Comentario

                  Trabajando...