PDA

Ver la Versión Completa : Contenido de una tabla Z


jbermejo
04/12/08, 13:33:31
Hola a todos,

tengo que hacer una pantalla de selección con dos campos, Obra y Site.
El valor del campo Obra se enviará a otro sistema para que nos devuelva los posibles valores del campo Site. Estos valores, se guardarán en una tabla Z del sistema. Es decir, que dependiendo del valor que tenga el campo Obra, la tabla se machará y se rellenará con Sites correspondientes a esa Obra.
He aqui el problema. Imaginando que pueden entrar varios usuarios a esta pantalla de selección, y elegir distintas Obras, ¿cómo puedo hacer la tabla para que contenga valores distintos?. ¿Es posible que se pueda hacer mediante un chequeo por usuario?.

La verdad, es que no se por donde cogerlo. ¿Se le ocurre a alguien una solución?.


Un saludo y muchas gracias.

francesc
04/12/08, 13:42:59
Puedes establecer un bloqueo sobre esa tabla mientras un usuario esté modificando una obra de modo que si otro intenta acceder a esa tabla con la misma clave (obra) el sistema le dirá que la tabla se encuentra bloqueada por el usuario xxxxx.

tunante
05/12/08, 10:01:07
Aqui tienes la funcion para bloquear una tabla por usuario igual te ayuda

CONCATENATE gv_pernr gv_fecha_parte INTO varkey.

CALL FUNCTION 'ENQUEUE_E_TABLE'
EXPORTING
mode_rstable = 'E'
tabname = 'ZCOCPPACK'
varkey = varkey
x_tabname = 'X'
x_varkey = 'X'
_scope = '3'
* _WAIT = ' '
* _COLLECT = ' '
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.

CASE sy-subrc.
WHEN 1.
IF sy-msgty = 'E' AND sy-msgno = 601.
MESSAGE e055(zpco) WITH sy-msgv1.
ELSE.
MESSAGE e055(zpco) WITH 'de otro usuario'.
ENDIF.
WHEN 2.
MESSAGE e055(zpco) WITH 'por fallo en el sistema'.
WHEN 0.

WHEN OTHERS.
MESSAGE e055(zpco) WITH 'sin determinar'.
ENDCASE.

y esta para desbloquear

CALL FUNCTION 'DEQUEUE_E_TABLE'
EXPORTING
mode_rstable = 'E'
tabname = 'ZCOCPPACK'
varkey = varkey
x_tabname = 'X'
x_varkey = 'X'
_scope = '3'
* _SYNCHRON = ' '
* _COLLECT = ' '
.

jbermejo
29/12/08, 08:26:07
Muchas gracias!,

probaré lo que me propones.