|
#1
|
|||
|
|||
![]() 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 |
#2
|
||||
|
||||
Holas, pues debe aver algúna variable en memoria guardada ahi, prueba colocandole en el PBO un REFRESH al TABLE CONTROL, algo asi:
Donde TCRTL_VIEW es la tabla de control y 0xxx es el dynpro al que pertenece el table control, espero te pueda ayudar ![]()
__________________
David Carballido Córdova ![]() |
#3
|
|||
|
|||
![]() 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 |
#4
|
||||
|
||||
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:
__________________
David Carballido Córdova ![]() |
#5
|
|||
|
|||
![]() 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 |
#6
|
||||
|
||||
Waaaa me confundi
![]() ![]() 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.
__________________
David Carballido Córdova ![]() |
![]() |
Herramientas | Buscar en Tema |
Desplegado | |
|
|