Necesito un exit en una ayuda de busqueda abap

Buenas tardes creo que tengo que hacer un exit en una ayuda de busqueda
para mejorarla, hay un reporte

al sacar la ayuda de busqueda sobre el campo numero de interface

sale repetido y no es problema de parametrizacion
la ayuda de busqueda es Z

esta seria la definicino de la yuda de busqueda

este campo es donde va el exit

sera que creando un exit z para que no devuelva valores repetidos ???

Gracias por la atencion

El programa entero no es estandar verdad?
Por qué poner un exit?
Es un programa zeta? Debería filtrar bien el marchcode, debe haber un FM calculo.

si sale repetido, es por la ayuda de busqueda…revisa y verifica si hay te los trae repetidos, si es asi, es la ayuda de busqueda !!

aqui en la comunidad hay un aporte, espero te sirva o te guie

Ayuda exit

1 me gusta

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

Muchas gracias muy amable por interesarse en ayudar muy agradecido

Hola,

No hace falta una exit.

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.

Espero que te sirva !

Saludos,
Sebastián

5 Me gusta

lo intentare muchas gracias Sebastian :slight_smile:

1 me gusta

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.