Search Help dinamico
posted under
MODULE POOL - FUNCIONES
by Luis Rolando

Para hacer filtros en un search help tomando en cuenta otro dato de un campo en la pantalla por ejemplo en mi caso lo use para tomar los pedidos vigentes y solo desplegar los que no han sido terminados, el pedido actual y los que no han sido terminados para capturar la producción de un día y también use este procedimiento para filtrar las maquinas que le corresponden a un empleado
Requerimientos (Flow logic)
PROCESS BEFORE OUTPUT.
PROCESS BEFORE OUTPUT.
PROCESS AFTER INPUT.
PROCESS ON VALUE-REQUEST.
FIELD ZRF_T0017-ID_OT MODULE OTVALID.
DATA: begin of itab occurs 0,
value(70),
end of itab.
DATA: BEGIN OF IT_MATCH OCCURS 0,
SHLPNAME LIKE DDSHRETVAL-SHLPNAME,
FIELDNAME LIKE DDSHRETVAL-FIELDNAME,
RECORDPOS LIKE DDSHRETVAL-RECORDPOS,
FIELDVAL LIKE DDSHRETVAL-FIELDVAL,
RETFIELD LIKE DDSHRETVAL-RETFIELD,
END OF IT_MATCH.
DATA: SCREEN_VALUES TYPE TABLE OF DYNPREAD WITH HEADER LINE .
PROCESS ON VALUE-REQUEST.
FIELD ZRF_T0017-ID_OT MODULE OTVALID.
Requerimientos (top)
DATA: begin of itab occurs 0,
value(70),
end of itab.
DATA: BEGIN OF IT_MATCH OCCURS 0,
SHLPNAME LIKE DDSHRETVAL-SHLPNAME,
FIELDNAME LIKE DDSHRETVAL-FIELDNAME,
RECORDPOS LIKE DDSHRETVAL-RECORDPOS,
FIELDVAL LIKE DDSHRETVAL-FIELDVAL,
RETFIELD LIKE DDSHRETVAL-RETFIELD,
END OF IT_MATCH.
DATA: SCREEN_VALUES TYPE TABLE OF DYNPREAD WITH HEADER LINE .
Dentro del input del value request
Primero leer el dato que se usara para el filtro con la siguiente función
APPEND 'ZRF_T0018-CANT_PDN_X' TO SCREEN_VALUES.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = 'ZRF_0117'
dynumb = '0119'
TABLES
DYNPFIELDS = SCREEN_VALUES.
READ TABLE SCREEN_VALUES INDEX 1 INTO SCREEN_VALUES.
ZRF_T0018-CANT_PDN_X = SCREEN_VALUES-FIELDVALUE .
REFRESH SCREEN_VALUES.
CLEAR SCREEN_VALUES.
se genera el query de itab para desplegarse en el search help
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'ID_CAUSA' el campo a importar
WINDOW_TITLE = 'DEFECTOS DE PRODUCCION' titulo del search help
VALUE_ORG = 'S' s structur c clumn
TABLES
VALUE_TAB = ITAB tabla interna a mostrar
RETURN_TAB = IT_MATCH trae el dato para importar
IF SY-SUBRC EQ 0.
READ TABLE IT_MATCH INDEX 1.
MOVE IT_MATCH-FIELDVAL TO ZRF_T0018-ID_CAUSA. manda el dato a importar
ENDIF.
ENDIF.
si desea que se ejecute una función después de haber traído el dato al campo posiblemente no se despliegue en pantalla para eso es necesario usar la siguiente funcion cargando previamente la informacion necesaria en la tabla dynpfields (véase el tipo de dato del value, posiblemente se necesite transformar el dato que se desea desplegar)
se genera el query que se necesita después del search help dinámico y se manda a una tabla en forma de cola
move 'TOT_OT_MES' to dynpfields-fieldname.
move TOT_OT_MES to dynpfields-fieldvalue.
append dynpfields.
clear dynpfields-fieldname.
clear dynpfields-fieldvalue.
TOT_OT_MES = ZRF_T0030-CANTIDADXPROD.
move 'ZRF_T0030-CANTIDADXPROD' to dynpfields-fieldname.
move TOT_OT_MES to dynpfields-fieldvalue.
append dynpfields.
clear dynpfields-fieldname.
clear dynpfields-fieldvalue.
TOT_OT_MES = RESTAN.
move 'RESTAN' to dynpfields-fieldname.
move TOT_OT_MES to dynpfields-fieldvalue.
append dynpfields.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = dynpfields.
ENDFORM. "TAEMETA INPUT
Comment Form under post in blogger/blogspot