Campos de entrada / salida en un table control

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • xani
    Junior Member
    • may
    • 22

    #1

    Campos de entrada / salida en un table control

    Hola,

    Yo podría tener un campo en un table control como solo de salida y después de darle a un botón que sea también de entrada?????

    Cómo sería????

    Muchas gracias.
  • Vique
    Pregúntame por las Bolas Vique
    • mar
    • 146

    #2
    Buenas,
    tienes que modificar la tabla SCREEN que es donde está definida la configuración de la pantalla.

    Para ello, en el PAI y el módulo USER_COMMAND tienes que hacer un LOOP AT SCREEN...ENDLOOP.
    Cuando SCREEN-NAME = 'El campo que quieras modificar', cambia los valores de los campos SCREEN-INPUT o SCREEN-OUTPUT, estos pueden ser 0 o 1 dependiendo de si quieres que sean de entrada o de salida.
    No olvides de hacer MODIFY SCREEN.

    Espero que te sirva de ayuda.
    Un saludo.
    ¿Pero nadie me va a preguntar por las bolas Vique?

    Comentario

    • xani
      Junior Member
      • may
      • 22

      #3
      Por alguna razon (me estoy equivocando en algo) no me funciona tu solución. ¿Podrías poner un pequeño ejemplo?.

      Lo que quiero modificar es un campo del control table. Lo que pasa es que cuando estoy dandole a un botón de "Editar" donde estoy poniendo que cambie de input a output y viecersa, si me permite eliminar, pero no añadir.

      Comentario

      • Vique
        Pregúntame por las Bolas Vique
        • mar
        • 146

        #4
        No entiendo: estás intentando modificar un elemento del Table-Control en el Screen Painter?
        Si es asi, lo que tienes es que modificar los atributos del elemento. Tienes que pulsar el boton ATRIBUTOS.

        Un saludo
        Vique
        ¿Pero nadie me va a preguntar por las bolas Vique?

        Comentario

        • xani
          Junior Member
          • may
          • 22

          #5
          Lo que estoy intentando hacer es lo siguiente: tengo en mi pantalla un control table y lo que quiero es que no se puedan modificar los datos que contenga hasta que yo se le de a un botoncito que he puesto en la pantalla. Es decir, que ese campo del control table sea solo de salida hasta que se le indique lo contrario.

          Me entiendes mejor ahora?

          Un saludo,

          Xani

          Comentario

          • sap2006
            Senior Member
            • mar
            • 134

            #6
            has mirado la tabla interna que tiene el table control en tiempo de ejecucion?
            Quiza haya una opcion ahi tipo visible, activate como en la del screen., aunque creo que haciendo un

            loop at screen.
            if screen-name = tab_control.
            screen-input = 0.
            modify screen.
            endloop.

            creo que esto deberia poder hacerse....
            Salu2
            Editado por última vez por sap2006; 02/06/2006, 07:17:00.

            Comentario

            • xani
              Junior Member
              • may
              • 22

              #7
              Hola sap2006.

              El código que tengo en mi programa es similar al tuyo y si hago un debugg veo que lo hace correctamente y me pone los valores correctos, pero aún así no puedo hacer luego nada (insertar texto) en el campo del table control.

              Comentario

              • sap2006
                Senior Member
                • mar
                • 134

                #8
                Prueba con screen-input = 1.
                Que raro...yo creo que si deberia hacerlo.. y en la dynpro como lo tienes definido??

                Comentario

                • sap2006
                  Senior Member
                  • mar
                  • 134

                  #9
                  Creo que ya se cual es el problema......
                  en la tabla interna del table control en tiempo de ejecucion busca esta

                  tab_control-COLS. Si pinchas te aparecera otra tabla con mas campos:
                  screen.
                  selectec.
                  ....
                  asi entonces tendrias que hacer esto:

                  loop at screen.
                  if screen-name = tab_control-col-XxX-XxX(tu campo que este asociado ).
                  screen-input = 1.
                  modify screen.
                  endif.

                  Nota: Puedes crearte grupos para ahorrarte tener que poner todos los campos.....

                  Salu2 espero que sea esto!!!

                  Comentario

                  • xani
                    Junior Member
                    • may
                    • 22

                    #10
                    Hola, debo de estar haciendo algo mal porque no hay forma de que me funcione. Este es el código donde controlo el tema:

                    when 'EDITAR'.
                    loop at screen.
                    if screen-name = 'PARTIDAS-PART_NOMBRE'.
                    screen-input = '1'.
                    MODIFY SCREEN.
                    endif.
                    endloop.


                    A ver si con esto arrojo un poco más de luz .

                    Muchas gracias.

                    Comentario

                    • Vique
                      Pregúntame por las Bolas Vique
                      • mar
                      • 146

                      #11
                      Buenas,
                      echale un vistazo al ejemplo que viene en la página de ayuda de SAP (está en ingles :P )



                      Tal vez el LOOP tengas que hacerlo no a la tabla SCREEN sino a tu tabla del table-control.

                      Un saludo
                      ¿Pero nadie me va a preguntar por las bolas Vique?

                      Comentario

                      • adritobb
                        Junior Member
                        • oct
                        • 16

                        #12
                        ya debe ser muy tarde, pero igual fijate si te sirve esto. Cuando apreto un boton y hay un chk activo me habilita 3 campos de mi tc para editarlos.
                        saluydetes
                        Adr!

                        IF t_data-xsel EQ 'X'.
                        IF chk_edit EQ 'X'.
                        LOOP AT SCREEN.
                        IF screen-name EQ 'T_DATA-STATU' OR
                        screen-name EQ 'T_DATA-AEDAT' OR
                        screen-name EQ 'T_DATA-MATNR'.
                        screen-input = 1.
                        MODIFY SCREEN.
                        w_flag22 = 'X'.
                        CLEAR t_data-xsel.
                        ENDIF.
                        ENDLOOP.
                        ELSE.

                        Comentario

                        Trabajando...