Ver Mensaje Individual
  #4  
Viejo 13/11/06, 07:18:55
Avatar de davidsap
davidsap davidsap is offline
Member
 
Fecha de Ingreso: abr 2006
Mensajes: 85
Te pongo una pequeña guía que creé para crear (valga la redundancia) un TC, aunque lo mejor ciertamente es hacerlo con el asistente, pero para que veas un poco como funciona:

1º Crear la dynpro: Por ejemplo 0100
En “-> Dispos” vamos al editor gráfico y creamos el table control.
Se pincha en entrada y salida y lo metemos dentro, como nombre se pone tabla-campo
Vamos creando todos los necesarios
Elegimos Texto (T) y vamos creando las cabeceras (se autoajusta)

2º En el Top
Definimos la tabla interna: it_tabla.
Definimos el table control: Controls: nombre_tc type tableview using screen ‘0100’.

3º Volvemos a la dynpro
Process Before Output.
Module Status_0100.
Loop at it_tabla with control nombre_tc cursor Nombre_tc-current_line.
Module pasar_datos.
Endloop.

Process After Input.
Loop at it_tabla.
Module grabar_datos. Siempre es igual
Endloop.

Module user_command_0100.

4º Hay que volver al include para declarar la tabla.

5º Creamos todos los modules (status, pasar_datos, grabar_datos, user_command).

6º Escribimos el código de los modules:
- En el status hacemos la select:
Select * into corresponding fields of table it_tabla from tabla_bd.

- En user_command hacemos el case con los botones:
Case sy-ucomm.
When ‘Salir’.
Leave program.
……………….
Endcase.

- En pasar_datos se pasan los valores de la tabla interna al table control:
Move-corresponding it_tabla to tabla_bd.

- En grabar_datos se pasan los datos del table control a la tabla interna:
Read table it_tabla index nombre_tc-current_line.
If sy-subrc = 0.
Move-corresponding tabla_bd to it_tabla.
Modify it_tabla index nombre_tc-current_line. (Modifica la tabla interna,
pero como se carga otravez, no se ve)
Endif.

Hay que tener cuidado con los tipos de campos, ya que a veces el table control los asigna mal.

Se pueden incluir checkbuttons dentro de un table control.

Para que se pueda saber la ficha seleccionada, hay que crear una variable tipo Char(1) dentro de la tabla interna y asignársela a la selección de línea del TC.
Responder Con Cita