si sr el programa no es estandar, como se necesitan todas las interfaces y ademas este programa esta anclado a 24 programas mas lo mas facil es crear un exit z para que no devuelve valores repetidos o no se si alguien sepa como hacerlo mejor. Gracias por atender
En el programa Z, antes del start of selection, pones la sentencia:
AT SELECTION-SCREEN ON VALUE-REQUEST FOR (TU SELECT-OPTIONS)-LOW
*perform para ayuda de busqueda
PERFORM f_help CHANGING (TU SELECT-OPTIONS)-low.
Dentro del perform....
FORM f_help changing p_value.
* Variables locales
DATA: lw_shlp_descr TYPE shlp_descr,
lv_value TYPE char17,
lv_vbeln TYPE vbeln,
lv_posnr TYPE posnr.
FIELD-SYMBOLS: <lw_interfaces> TYPE ddshiface.
REFRESH gt_match.
* Ayuda de búsqueda
CALL FUNCTION 'F4IF_GET_SHLP_DESCR'
EXPORTING
shlpname = (NOMBRE DEL AYUDA DE BUSQUEDA)
shlptype = 'SH'
IMPORTING
shlp = lw_shlp_descr.
LOOP AT lw_shlp_descr-interface ASSIGNING <lw_interfaces>.
<lw_interfaces>-valfield = 'X'.
ENDLOOP.
IF sy-subrc EQ 0.
* Elegir pedido posicion
CALL FUNCTION 'F4IF_START_VALUE_REQUEST'
EXPORTING
shlp = lw_shlp_descr
TABLES
return_values = gt_match.
* Pasar a pantalla
IF sy-subrc EQ 0.
* Acá borramos los duplicados
DELETE ADJACENTS DUPLICATED FROM gt_match COMPARING ALL FIELDS (o el campo que quieras que no salga duplicado)
READ TABLE gt_match INDEX 1.
lv_value = gt_match-fieldval.
MOVE lv_value TO p_value (valor devuelto).
ENDIF.
ENDIF.
ENDFORM.