PDA

Ver la Versión Completa : Campos de entrada / salida en un table control


xani
01/06/06, 09:52:10
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.:eek:

Vique
01/06/06, 10:33:41
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.

xani
01/06/06, 10:59:05
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.

Vique
01/06/06, 13:29:56
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

xani
02/06/06, 06:54:22
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

sap2006
02/06/06, 07:09:56
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

xani
02/06/06, 07:29:11
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.

sap2006
02/06/06, 07:37:46
Prueba con screen-input = 1.
Que raro...yo creo que si deberia hacerlo.. y en la dynpro como lo tienes definido??

sap2006
02/06/06, 07:59:11
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!!!

xani
05/06/06, 07:31:18
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.

Vique
05/06/06, 08:47:15
Buenas,
echale un vistazo al ejemplo que viene en la página de ayuda de SAP (está en ingles :P )

http://help.sap.com/saphelp_47x200/helpdata/en/9f/dbac1d35c111d1829f0000e829fbfe/frameset.htm

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

Un saludo

adritobb
15/02/07, 14:15:11
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.