Desactivar campo en pantalla

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Angela27
    Senior Member
    • ene
    • 121

    #1

    Desactivar campo en pantalla

    Hola a todos,
    Estoy haciendo un informe, y cuando selecciono parametros, necesito que segun un check bock se active un campo y se desactive otro, lo hago con un loop a screen y modify de ese grupo de campo según check box, pero no me hace ni caso
    seguro que es una chorrada, pero soy nueva en ABAP, y algo estaré haciendo mal, por fi necesito una manita.

    Muchas gracias,
  • hugoa77
    Senior Member
    • may
    • 130

    #2
    Hola Angela, el código del loop at screen lo pusiste en la PBO, no?
    El atributo que debes utilizar es "active = 1." o "active = 0."

    Saludos,
    Hugo

    Comentario

    • Angela27
      Senior Member
      • ene
      • 121

      #3
      Hola Hugo,
      muchas gracias,
      Lo pongo en at selection-screen output. ¿que es la PBO?
      no utilizo active, sino input, para que no deje entrar en ese campo o si.
      if screen-group1 = zon.
      if pzo1 = 'X'.
      screen-input = '1'.
      else.
      screen-input = '0'.
      endif.
      endif.
      probaré con active.

      muchas gracias

      Comentario

      • hugoa77
        Senior Member
        • may
        • 130

        #4
        PBO -> Módulo PBO (Process Before Output)
        En la SE80 encontraras los Módulos PBO. Aquí van los códigos que se ejecutan antes de mostrar las pantallas o que modifican las pantallas.
        Prueba con esto:

        if screen-group1 = zon.
        if pzo1 = 'X'.
        screen-input = 1. "sin comillas
        else.
        screen-input = 0. "sin comillas
        endif.
        endif.
        MODIFY SCREEN "modifica finalmente la pantalla

        Me cuentas como te fue...

        Comentario

        • kiboqac
          Member
          • mar
          • 55

          #5
          El problema para mi consiste en que debes realizar un LOOP de la SCREEN para que puedas encontras el Grupo que deseas activar; tambien veo como error esta sentencia:

          if screen-group1 = zon.

          No deberia ser:

          if screen-group1 = 'ZON'.

          ???
          Kibo

          Comentario

          • Angela27
            Senior Member
            • ene
            • 121

            #6
            Muchas gracias a los dos.
            kiboqac , creo que es así, lo vi en un manualillo.

            Hugo, le he quitado las comillas, y sigue sin funcionarme, lo que tengo una duda, dices que esto se ejecuta antes de visualizar la pantalla, pero es que antes de visualizarla, todavia no se lo que tengo que activar o desactivar, ya que depende de un campo de la misma pantalla. ¿será que lo tengo que poner en diferente pantalla.? sniff
            Yo activo unos campos, dependiendo del primer campo que acepto, que es un check box.
            Dime algo por fi..
            muchas gracias........................

            Comentario

            • hugoa77
              Senior Member
              • may
              • 130

              #7
              Bueno, te sugeriría que copies todo el código para chequear que puede estar fallando... pero en principio el código debería estar así...

              at selection-screen output.
              loop at screen.
              if screen-group1 = 'ZON'. "con comillas
              if pzo1 = 'X'.
              screen-input = 1. "sin comillas
              else.
              screen-input = 0. "sin comillas
              endif.
              endif.
              MODIFY SCREEN.
              endloop.

              Espero tus comentarios.

              Comentario

              • Angela27
                Senior Member
                • ene
                • 121

                #8
                no me va sniff... ¿alguna sugerencia?

                gracias y Sdos

                Comentario

                • FBrazon
                  Member
                  • feb
                  • 57

                  #9
                  Hola Angela, ya resolviste tu problema? Tengo algo que te podría servir
                  Saludos

                  Comentario

                  • jarabas
                    Senior Member
                    • ene
                    • 109

                    #10
                    A ver si esto te sirve:

                    el PBO es el proccess Before output
                    PAI es el proccess after intut

                    Cuando se carga la pantalla incialmente entra por el PBO, cuando realizas algun evento sobre ella(pulsar un botón, activar un checbox,...) entra por el PAI y despues pasa por el PBO que es donde se deben hacer las validaciones pertinentes.

                    yo creo que tu lo necesitas para la pantalla de inicio Selection-Screen.
                    si es así tendrás que poner en el report control,

                    AT SELECTION-SCREEN OUTPUT.

                    <metes el código con su loop y su MODIFY SCREEN>

                    Efectivamente para que sea o no editable(admita/no admita introducir valores) es con SCREEN-INPUT.

                    Al cargar la pantalla si no está activo el checkbox no hará nada ya qeu lo pones como input = 1 y es el atributo por defecto.

                    ¿cuando pulsas sobre el checkbox no hace mada?
                    Una pregunta tonta (lo tendrás hecho seguro), has metido en el mismo grupo lo que quieres que no sea editable?

                    el codigo nos simplificaria la labor de ayudarte

                    un saludo.

                    Comentario

                    Trabajando...