PDA

Ver la Versión Completa : TABLE CONTROL :confused:


romario2
27/11/09, 08:18:01
Hola Foro,

tengo un table control que muestra datos, pero el problema es que muestra
el mismo registro muchas veces repetidas.He debugado y veo que la tabla interna que lo alimenta está correcta.
Quizás influye que los campos del TC sean definidos como campos solos y no tablainterna-campo?

Gracias de antemano

DavidXD_XD
30/11/09, 16:03:46
Holas, pues debe aver algúna variable en memoria guardada ahi, prueba colocandole en el PBO un REFRESH al TABLE CONTROL, algo asi:

REFRESH CONTROL 'TCTRL_VIEW' FROM SCREEN '0xxx'.

Donde TCRTL_VIEW es la tabla de control y 0xxx es el dynpro al que pertenece el table control, espero te pueda ayudar :D

romario2
01/12/09, 08:49:37
Hola Foro,

gracias David, pero persiste el error. Yo solo quiero informar un registro del Table control y me informa un montón con el mismo valor.

He metido EXITS i añadí CLEARS sin resultado.

Publico el código:


LOGICA PROCESO Dynpro
*******************************************
LOOP AT TAB_ZPS_TC with control TABLA CURSOR TABLA-CURRENT_LINE.

MODULE inserir_taula.

ENDLOOP.


PROCESS AFTER INPUT.

*Primer es fal un LOOP a TAB_ZPS_TC que degut a que està associada a
*TABLE_CONTROL equival a recorre el table control de la pantalla
*recuperant les dades introduides.


LOOP AT TAB_ZPS_TC.
CHAIN.
FIELD: TAB_ZPS_TC-POSID,
TAB_ZPS_TC-POST1,
TAB_ZPS_TC-TXT30.

*La opció ON CHAIN-REQUEST ens determina que només s’executatarà el
*modul si hem modificat un registre.
MODULE validacions ON CHAIN-REQUEST.
ENDCHAIN.

MODULE informar_camps.

ENDLOOP.

*******************************************************


MODULE inserir_taula OUTPUT.

REFRESH CONTROL 'TABLA' FROM SCREEN '9001'.
CLEAR tab_zps_tc.
REFRESH tab_zps_tc.
CLEAR: posid, post1, txt30.


tab_zps_tc-posid = p_posid2.
tab_zps_tc-post1 = p_post12.
tab_zps_tc-txt30 = p_txt302.


posid = tab_zps_tc-posid.
post1 = tab_zps_tc-post1.
txt30 = tab_zps_tc-txt30.


LOOP AT SCREEN.
IF screen-name = 'POSID'.
screen-input = space.
MODIFY SCREEN.
EXIT.
ENDIF.

ENDLOOP.



ENDMODULE.



MODULE informar_camps INPUT.

DATA l_zps_tc TYPE est_zps_tc.
CLEAR l_zps_tc.
CLEAR tab_zps_tc.
REFRESH tab_zps_tc.


tab_zps_tc-posid = posid.
tab_zps_tc-post1 = post1.
tab_zps_tc-txt30 = txt30.

READ TABLE tab_zps_tc INTO l_zps_tc
INDEX tabla-current_line.
IF sy-subrc <> 0.

INSERT table tab_zps_tc.

ELSE.
MODIFY tab_zps_tc INDEX tabla-current_line.

ENDIF.

ENDMODULE. " INFORMAR_CAMPS INPUT

DavidXD_XD
01/12/09, 18:15:58
Holas, como te comente intenta hacerle el REFRESH pero al final de la rutina MODULE del PBO, ahhh y x cierto la tabla que tienes que indicarle es de la tabla de control, algo asi:

REFRESH CONTROL 'TABLA' FROM SCREEN '9001'.

romario2
01/12/09, 18:59:58
Gracias por tu ayuda, lo puse al final, hay que poner nombre de la Table control. Sigue sin funcionar.

Tengo los datos correctos en una tabla interna, no logro traspasarlos a la Table control

DavidXD_XD
01/12/09, 19:06:56
Waaaa me confundi :o , la tabla de control era TABLA, voy a ver el codigo aver si sacamos algun error :D

PD: veo q no estas llenando la tabla interna en el PBO, pues no veo ningun INSERT y tampoco APPEND, esa pantalla 9001 a la que llamas debe tener una pantalla anterior donde seguramente llenas la tabla interna, pero cuando entras al MODULE inserir_taula en el primer LOOP blanqueas la tabla interna

CLEAR tab_zps_tc.
REFRESH tab_zps_tc.

romario2
02/12/09, 07:37:48
Hola David,

agradezco mucho tu ayuda!

Tendrías un código completo de un table control senzillo que funcione?
Le tengo que pasar datos que vienen de una tabla interna.

Los campos del Table control manual los puedo definir como it_tabla-campo?
(campo de tabla interna)

Saludos abaperos!

zonanet
02/12/09, 14:23:39
Hola David,

agradezco mucho tu ayuda!

Tendrías un código completo de un table control senzillo que funcione?
Le tengo que pasar datos que vienen de una tabla interna.

Los campos del Table control manual los puedo definir como it_tabla-campo?
(campo de tabla interna)

Saludos abaperos!


Prueba con este manual, está en la sección de descargas:

http://www.mundosap.com/foro/downloads/dlver-creando-un-table-control.pdf

Saludos