PDA

Ver la Versión Completa : problemas con loop at screen


raulpalacios
05/12/07, 15:56:18
Hola,
Tengo un problema cuando hago un loop at screen, el tema es que el loop at screen recorre campo a campo los campos del table control, y lo que quiero hacer es que me modifique el estado por lineas, si se puede hacer, me explico, tengo que mirar si en una linea hay un campo especifico que esta informado, tengo que marcar esa linea (ponerla en gris) para que no se pueda modificar, en cambio si ese mismo campo no esta informado dejar esa linea para que se pueda modificar, alguien me puede ayudar?, gracias de antemano.

Saludos,
palacios.

Julio Sánchez
07/12/07, 13:44:16
1.- En la definición del table control, para cada campo que necesites cambiar la edición, ponerle en el atributo GRUPOS un valor idéntico ejemplo A1.

2.- Ya en el código, dentro del loop at screen y después de la condición que requieras poner el siguiente código:

IF SCREEN-GROUP1 EQ 'A1'. **Group1 si usaste el 1er campo de GRUPOS
SCREEN-INPUT = 1. **Abre a edición ese campo
MODIFY SCREEN.
ELSE.
SCREEN-INPUT = 0. **No permite edición
MODIFY SCREEN.
ENDIF.

raulpalacios
13/12/07, 10:58:38
Grácias por la respuesta,

Peró no es exactamente lo que necesito, si tengo el campo informado, solo tengo que poner en gris esa linea, no toda las columnas, si pongo el grupo en el table control me pone toda la columna, y lo que necesito es solo una linea en concreto ( dependiendo si el campo esta informado o no), de todas formas grácias por la respuesta.

Saludos,
Raul.

willito38
20/12/07, 19:29:53
aver es una idea .... se supone q cuando muestras la tabla de control, en el PBO colocas un LOOP verdad?, entonces supon q tienes un campo llamado "Nombres"



PBO.

LOOP AT tablita WITH CONTROL tctrl_tablita CURSOR tctrl_tablita-current_line.

MODULE unedit_field.

ENDLOOP.

MODULE unedit_field.

IF Apellido = 'VELIZ'.

loop at screen.

if screen-name = 'tablita-apellido'.

SCREEN-INPUT = 0.

MODIFY SCREEN.

endif.

endloop.

ENDIF.

ENDMODULE

Con esto no se deshabilita la columna si el registro con Apellido 'VELIZ', tal vez te ayude es una idea

Julio Sánchez
20/12/07, 23:43:15
El ejemplo que expone willito38 es lo que intenté proponerte en el punto 2 de mi respuesta anterior.

"Ya en el código, dentro del loop at screen y después de la condición que requieras poner el siguiente código:"

Dependiendo de la condición, estarías poniendo en gris o no la linea que esta leyendo el LOOP.

Lo que propuse en el código es para manejar la línea completa (siempre y cuando todos los campos tengan el mismo grupo) y el ejemplo de willito38 (muy bueno) es para una celda en especial.

Saludos.