PDA

Ver la Versión Completa : Search Help en Table Control


zonanet
12/09/08, 18:06:32
Saludos!!

Tengo un problema con un search help en un columna de un table control, la cosa es que tengo que filtrar el contenido del search help de una columna según el dato que contenga la columna anterior, logro hacerlo para la primera fila pero para la segunda y siguientes me filtra según el valor de la primer fila.

Alguién tendrá una solución a mi problema.

gracias a todos.

DavidXD_XD
12/09/08, 19:05:05
Hola ... hasle un READ TABLE a la tabla interna segun la linea en la que se encuentra tu table control ... tctrl-current_line y ahi aplicas el search help

zonanet
12/09/08, 23:12:00
Hola David!!

así lo estoy haciendo pero me toma el primer registro de la tabla interna, te paso el código por si le puedes echar un ojo y orientarme en lo que tengo mal


Flow Logic:


PROCESS BEFORE OUTPUT.

MODULE STATUS_0200.

MODULE INIT_200.
LOOP AT IT_PRINTER2 INTO WA_PRINTERS2 WITH CONTROL TC200
CURSOR TC200-CURRENT_LINE.

MODULE TC200_MOVE.
ENDLOOP.

PROCESS AFTER INPUT.

MODULE EXIT2 AT EXIT-COMMAND.

LOOP AT IT_PRINTER2.
CHAIN.
FIELD: ZPRINTERS-BUKRS MODULE BUKRS_CHK,
ZPRINTERS-VKORG MODULE VKORG_CHK,
ZPRINTERS-VSTEL MODULE VSTEL_CHK,
ZPRINTERS-PTYPE MODULE PTYPE_CHK,
ZPRINTERS-KSCHL MODULE KSCHL_CHK.

MODULE PRINTERS_MODIFY ON CHAIN-REQUEST.
ENDCHAIN.

MODULE DELETE200.
ENDLOOP.

MODULE USER_COMMAND_0200.

PROCESS ON VALUE-REQUEST.
FIELD ZVENTAS_PRINTERS-VSTEL MODULE VSTEL_HELP.
FIELD ZVENTAS_PRINTERS-PTYPE MODULE PTYPE_HELP.
FIELD ZVENTAS_PRINTERS-KSCHL MODULE KSCHL_HELP.
FIELD ZVENTAS_PRINTERS-PARVW MODULE PARVW_HELP.



MODULE KSCHL_HELP.

*&---------------------------------------------------------------------*
*& Module KSCHL_HELP INPUT
*&---------------------------------------------------------------------*
MODULE KSCHL_HELP INPUT.

CLEAR: I_RETURN_TAB, IT_T685T, IT_PRINTER2.
REFRESH: I_RETURN_TAB, IT_T685T.

FIELD_VALUE-FIELDNAME = 'ZPRINTERS-KSCHL'.
APPEND FIELD_VALUE TO DYNPRO_VALUES.

CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = PROGNAME
DYNUMB = DYNNUM
TRANSLATE_TO_UPPER = 'X'
TABLES
DYNPFIELDS = DYNPRO_VALUES.

READ TABLE DYNPRO_VALUES INDEX 1 INTO FIELD_VALUE.
READ TABLE IT_PRINTER2 INDEX TC200-CURRENT_LINE.

SELECT
VTEXT
KAPPL
KSCHL
INTO CORRESPONDING FIELDS OF WA_T685T
FROM T685T
WHERE SPRAS = 'EN'
AND KAPPL = IT_PRINTER2-PTYPE.
APPEND WA_T685T TO IT_T685T.
ENDSELECT.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'ZPRINTERS-KSCHL'
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'CONDITION TYPE'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = IT_T685T
RETURN_TAB = I_RETURN_TAB.

READ TABLE I_RETURN_TAB INDEX 1.
ZPRINTERS-KSCHL = I_RETURN_TAB = I_RETURN_TAB-FIELDVAL.

ENDMODULE. " KSCHL_HELP INPUT


Saludos y gracias por la ayuda!

DavidXD_XD
12/09/08, 23:37:33
Hola ... la primera recomendacion es con esta sentencia

SELECT
VTEXT
KAPPL
KSCHL
INTO CORRESPONDING FIELDS OF TABLE IT_T685T
FROM T685T
WHERE SPRAS = 'EN'
AND KAPPL = IT_PRINTER2-PTYPE.

La segunda es: has logrado debugear el codigo??? ... como tu mencionas siempre agarra la primer campo en toda fila y columna, la idea es hacerle un debugg y ver xq no agarra si estas realizando el READ TABLE con el current_line, como te digo .... tal vez el current_line no esta haciendo bien su trabajo, el caso extremo es agregar dentro de la tabla interna crear un campo que sirva de contador: 1 2 3 4 5 6 ... n, y asi leer el READ TABLE itab INDEX cont., me comentas como te fue sino para realizar un programa que realize esa aplicacion y pasartela :D

zonanet
17/09/08, 15:05:23
Qué tal David!

Te comento que debuggeando el Search Help en la parte del READ TABLE me obtiene el primer registro de la tabla interna usando el TC-Current_line, lo que más extraño me parece es que si me pone el resultado en el registro en el presiono el search help (2do. 3ero, etc.).


Si tienes tiempo y me puedes ayudar con la parte para generar la tabla interna con el index para posicionarme an base a eso te agradeceré mucho.


Saludos.

DavidXD_XD
17/09/08, 19:32:17
Listo ... voy a realizarlo en la noche aver como me va y t paso el codigo ^^

zonanet
23/09/08, 21:47:56
David!!

Se me pasó comentarte que ya solucioné el problema del Search Help, lo logré usando la sentencia GET CURSOR LINE vl_line, y se la agregué al read table de esta manera: READ TABLE ti_tabla INDEX vl_line y funciona correctamente.


De nuevo gracias por el tiempo e interés por ayudar!!! :) :D

DavidXD_XD
24/09/08, 16:50:31
Pucha Zonanet ... taba a medio codigo por la disponibilidad q tengo en el horario, pero q bueno q solucionaste el problema ... un saludo :D