PDA

Ver la Versión Completa : Cambio de propiedades de un table control


javibest
27/06/08, 07:51:17
Quiero cambiar mediante codigo las propiedades de un table control. En concreto , que no se puedan introducir datos.

declaracion del table control :

CONTROLS: tb_imput TYPE TABLEVIEW USING SCREEN 0200.

intento acceder a la tabla que hay en el campo cols del table control tb_imput, pero no soy capaz :

DATA : wa_screen LIKE tb_imput-cols.

loop at tb_imput-cols into wa_screen.
endloop.

me dice que no se puede convertir, y si hago

loop at tb_imput-cols
endloop

me dice que tb_imput-cols no tiene header line.

Estoy jodido

sararodriguez
27/06/08, 09:20:59
A mí me pasa lo mismo, no sé cambiar un table control para q no se puedan cambiar los datos que muestra.

También quería cambiar los textos de un select options.

Si alguien puede hexar una manilla..

Muchas gracias!!

vickxo
27/06/08, 09:35:45
Q tal, he revisado por medio de la wizard y he visto que pueden modificar las propiedades de esta manera:


it_ejemplo es la tabla que contiene los datos
tc_ejemplo es el table control
LOOP AT it_ejemplo
INTO wa_ejemplo
WITH CONTROL tc_ejemplo
CURSOR tc_ejemplo-current_line.
MODULE change_cell_vc.
MODULE tc_ejemplo_get_lines.
*&spwizard:
ENDLOOP.


En ete modulo efectuo el cambio de las propiedades

MODULE change_cell_vc OUTPUT.

IF tc_ejemplo-current_line = 2.
LOOP AT SCREEN.
IF screen-name = 'WA_EJEMPLO-CAMPO1'.
screen-input = 0. "Aqui es donde se definen las propiedades, 1 si quiere bloquear
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
ENDMODULE.

ah este, creo, obtiene los datos ...auq no me hagan mucho caso ajajaaj
MODULE tc_ejemplo_get_lines OUTPUT.
g_tc_ejemplo_lines = sy-loopc.
ENDMODULE.



Espero t sirva

javibest
27/06/08, 10:09:55
Si. efectivamente. yo tambien lo he conseguido modificando los campos que se asignan a cada columna del table control mediante el loop at screen :

FORM desactivar_table_control.

LOOP AT SCREEN.
IF screen-name = 'T_IMPUT-CUENTA'.
screen-input = 0.
ENDIF.
IF screen-name = 'T_IMPUT-DESCRIPCION'.
screen-input = 0.
ENDIF.
IF screen-name = 'T_IMPUT-CECO'.
screen-input = 0.
ENDIF.
IF screen-name = 'T_IMPUT-PROY_ORDEN'.
screen-input = 0.
ENDIF.
IF screen-name = 'T_IMPUT-IMPORTE'.
screen-input = 0.
ENDIF.

MODIFY SCREEN.

ENDLOOP.
ENDFORM.

sararodriguez
27/06/08, 10:26:28
Muchísimas gracias!!

sararodriguez
27/06/08, 11:57:22
Pero t_imput q es xa ti? el nombre del table control? esq he conseguido que se me bloqueen todas las columnas xo kiero q haya una de ellas q no se bloquee.

vickxo
27/06/08, 12:02:41
Intenta asi:

LOOP AT SCREEN.
IF screen-name NE 'TU_TABLECONTROL-COLUMNA_Q_NO_SE_BLOQUIEE'.
screen-input = 1.
Else.
screen-input = 0.
endif.
MODIFY SCREEN.
ENDLOOP.

sararodriguez
27/06/08, 12:05:37
yA, SI ASÍ PROBÉ PERO NO BLOQUEA NINGUNA

sararodriguez
27/06/08, 12:15:04
Ya Está, Muchas Gracias :)