Ayuda de búsqueda con Exit Function

¿Cómo crear una Ayuda de búsqueda con Exit Function en SAP?
Las funciones EXIT de la ayuda para búsqueda se utilizan para restringir los datos que devuelve la ayuda de búsqueda devolviendo valores de acuerdo a los requerimientos del usuario.
En este tutorial creamos la ayuda para búsqueda elemental ZABE_LOGALI que utilizará como método de selección la vista de base de datos estándar M_MAT1T. Para restringir los datos que devuelve la vista creamos una función EXIT que va devolver sólo los materiales que tienen asignado el tipo de material MTART = ERSA (Piezas de recambio). Para cumplir con la nomenclatura que aconseja SAP nombramos la exit Z_F4_TIPO_MAT_LOGALI.
 

  1. En la transacción del diccionario de datos SE11 creamos la ayuda para búsqueda elemental ZABE_LOGALI.
  2. Rellenamos el campo obligatorio Descripción breve y asignamos la vista de base de datos estándar M_MAT1T como método de selección. Como parámetros de la ayuda añadimos los campos MTART y MATNR.
  3. Si ejecutamos la ayuda podemos ver que devuelve todos los tipos de materiales.
  4. Para restringir los datos que devuelve la vista creamos la función exit Z_F4_TIPO_MAT_LOGALI en la transacción SE37, que es un módulo de funciones, que devolverá sólo los materiales que tienen asignado el tipo de material MTART = ERSA (Piezas de recambio).
  5. Asignamos el grupo de funciones y rellenamos el campo Texto breve.
  6. El módulo de funciones que representa la función EXIT de la ayuda para búsqueda tiene que seguir unas normas requeridas por el sistema SAP. Es el estándar que va llamar a la EXIT, por lo tanto, tiene que utilizar como parámetros CHANGING las siguientes estructuras estándar:
    • SHLP_DESCR – Descripción de Ayuda para búsqueda
    • DDSHF4CTRL – Estructura de control p.proceso F4 con exit de Ayuda p.búsq.

    Los nombres de los parámetros tienen que ser SHLP para la estructura de tipo SHLP_DESCR y CALLCONTROL para la estructura de tipo DDSHF4CTRL. También es obligatorio activar la opción Traspaso por valor para los dos parámetros.
    En la pestaña CHANGING añadimos los dos parámetros:
    Aparte de los parámetros CHANGING estamos obligados a definir otros dos parámetros en la pestaña TABLAS para utilizar el módulo de funciones como una EXIT en las ayudas para búsqueda. Los parámetros se tienen que nombrar SHLP_TAB y RECORD_TAB y deben utilizar los siguientes tipos de datos:

    • SHLP_TAB TYPE SHLP_DESCT – Lista de Ayudas p.búsqueda alternativas y elementales
    • RECORD_TAB LIKE    SEAHLPRES – Ayuda búsqueda Estructura de resultado

    Sabiendo los tipos y los nombres añadimos los dos parámetros en la pestaña TABLAS ignorando los mensajes de advertencia Los parámetros TABLES son obsoletos pulsando la tecla INTRO.

  7. Activamos el módulo de funciones y lo añadimos a la ayuda para búsqueda elemental como EXIT Ayuda para búsqueda. Una vez añadido activamos la ayuda con las nuevas modificaciones.
  8. Falta implementar el código fuente de la función EXIT para restringir los datos que devuelve la vista de base de datos que tenemos como método de selección. Las funciones EXIT son llamadas por el estándar en puntos concretos de la ejecución de la ayuda para búsqueda. Estos puntos o eventos son representados por pasos que el estándar lo traspasa en el campo STEP del parámetro CALLCONTROL que hemos creado en la pestaña CHANGING que es de tipo estructura DDSHF4CTRL. Para entenderlo mejor establecemos un punto de interrupción (BREAK-POINT) dentro del módulo de funciones y ejecutamos la ayuda para búsqueda.
  9. Cuando se llega con la ejecución en el punto de interrupción añadimos en el modo DEBUGG el parámetro CALLCONTROL-STEP para ver el paso. Como se puede ver el paso es SELONE.
  10. Seguimos con el modo DEBUG utilizando la tecla F8 y llegamos al siguiente paso PRESEL1. Lo importante es no perder de vista el propósito de la función EXIT – restringir los datos que devuelve el método de selección. En este caso queremos devolver sólo los materiales que tienen asignado el tipo de material MTART = ERSA. Los datos que devuelve la vista están en el parámetro RECORD_TAB que es una tabla interna. Añadimos en el modo DEBUG la tabla interna RECORD_TAB[]. Podemos ver que en este paso todavía no tenemos los datos.
  11. De nuevo seguimos con la tecla F8 para llegar al siguiente paso de la ejecución, al SELECT donde tampoco tenemos los datos que devuelve la ayuda para búsqueda.
  12. En el siguiente paso DISP si tenemos los datos que devuelve la ayuda. Aquí es nuestro punto donde tenemos que restringir los datos y devolver sólo los registros con el tipo de material ERSDA.
  13. Con doble clic sobre RECORD_TAB[] analizamos la estructura de los datos. Podemos ver que la columna STRING contiene toda la información y que el valor del tipo de material empieza en la posición 4 (existen tres espacios en las primeras posiciones) y tiene una longitud de 4 caracteres.
  14. Teniendo claro en que paso tenemos los datos y como están estructurados procedemos con la implementación del código fuente que va eliminar todos los registros con el tipo de material distinto al ERSA para devolver en la ayuda sólo los materiales con el tipo requerido.
  15. Ejecutando de nuevo la Ayuda para búsqueda podemos ver que devuelve sólo los registros con el tipo de material ERSA (Piezas de recambio). Recomiendo salir de la transacción SE11 y entrar de nuevo para que el sistema ejecute la función EXIT con los últimos cambios aplicados.

Un comentario de “Ayuda de búsqueda con Exit Function

  1. Christian Rivas dice:

    Hola,

    Excelente post, pero tengo un problema. Cuando puse el break point solo pasó por el Exit una vez, ya intenté de todo y no pasa mas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *