PDA

Ver la Versión Completa : Acción al seleccionar fila en Table Control


mvs
20/01/09, 23:41:13
Reciban todos un Saludo!

Este es mi primer post y espero puedan ayudarme!

Estoy usando un Table control de selección simple, y tengo la necesidad de que al seleccionar un renglón actualice automaticamente el valor a un campo entrada/salida que esta en el mismo dynpro, sin la necesidad de usar un botón o el doble clic.

Existe alguna manera de hacerlo?

Muchas gracias de antemano!

DavidXD_XD
22/01/09, 18:59:29
Hola, queria probar si se podia realizar dicha accion, para comenzar el marcador dentro de un table control no se le puede adicionar el evento con un codigo de funcion, para eso le he creado un radiobuttom, el cual es un campo de un solo caracter y puede tener un codigo de funcion cualquiera, ahi va el codigo

Programa:
*&---------------------------------------------------------------------*
*& Report ZPRUEBA *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*

REPORT zprueba.

TYPES: BEGIN OF ty_t001w,
mark TYPE c,
werks TYPE t001w-werks,
name1 TYPE t001w-name1,
END OF ty_t001w.

DATA: gt_t001w TYPE TABLE OF ty_t001w WITH HEADER LINE.

CONTROLS tctrl_t001w TYPE TABLEVIEW USING SCREEN 100.

START-OF-SELECTION.

SELECT werks name1
INTO CORRESPONDING FIELDS OF TABLE gt_t001w
FROM t001w.

CALL SCREEN 100.

*&---------------------------------------------------------------------*
*& Module PBO OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE PBO OUTPUT.

SET PF-STATUS 'ST_100'.

ENDMODULE. " PBO OUTPUT

*&---------------------------------------------------------------------*
*& Module PAI INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE PAI INPUT.

CASE sy-ucomm.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.

ENDMODULE. " PAI INPUT

*&---------------------------------------------------------------------*
*& Module GET_LINEA INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE GET_LINEA INPUT.

MODIFY gt_t001w INDEX tctrl_t001w-current_line.

ENDMODULE. " GET_LINEA INPUT

*&---------------------------------------------------------------------*
*& Module OCULTAR_FILAS OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE OCULTAR_FILAS OUTPUT.

IF NOT gt_t001w-mark IS INITIAL.
LOOP AT screen.
IF screen-group1 = 'GR1'.
screen-input = 1.
MODIFY screen.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT screen.
IF screen-group1 = 'GR1'.
screen-input = 0.
MODIFY screen.
ENDIF.
ENDLOOP.
ENDIF.

ENDMODULE. " OCULTAR_FILAS OUTPU

Logica de Pantalla:
PROCESS BEFORE OUTPUT.
MODULE pbo.
LOOP AT gt_t001w WITH CONTROL tctrl_t001w.
MODULE ocultar_filas.
ENDLOOP.

PROCESS AFTER INPUT.
LOOP AT gt_t001w.
MODULE get_linea.
ENDLOOP.
MODULE pai.

Y dentro de la pantalla he creado el table control y 3 campos (radiobutton, centro y nombre del centro), le asigne al centro y nombre del centro el grupo1 igual a GR1 y ademas le quite la opcion de "Campo de Entrada", para asi poder cambiarlos a modos editables cuando el radiobutton se posicione en esa linea, y lo mas importante le asigne al campo del radiobutton un codigo de funcion (BOTON), el nombre no importa, lo q importa es q se accione el PAI y PBO al momento de cambiar de fila, ahi estan las imagenes, espero te pueda servir de ayuda :D

mvs
26/01/09, 15:48:03
Muchas gracias DavidXD_XD por tu respuesta!!!

En realidad me sirvió mucho, ya lo probé y si me funcionó.

Comparto además, un intento de modificación extra que trate para hacerle a tu idea, y así evitar dejar el renglón seleccionado como input y en su lugar marcar un campo de seleccion (con el evento que tambien le llame BOTON) que le puse a la tabla.

Me encontré con el detalle de que no encontre como ocultar la columna de selección, para que sigan mostrandose solo los radiobutton, ésto no permite controlar la selección porque por un lado puedes seleccionar un renglón y por otro lado seleccionar un radiobutton de otra fila.

Saludos y nuevamente muchas gracias!