Quantcast
Channel: SAP archivos - Blog de SAP: Actualidad SAP, Business Intelligence, SAP HCM, Abap...
Viewing all articles
Browse latest Browse all 598

Web Dynpro Abap Tutorial: Object Value Selector

$
0
0

En Web Dynpro Abap se pueden utilizar cualquier ayuda de búsqueda que se cree en el diccionario de datos, pero también es posible crear ayudas específicas en los controladores. Las ayudas de búsqueda en Web Dynpro Abap son una de las utilidades que se pueden encontrar en cualquier programa de SAP que muestran al usuario una serie de posibles valores a introducir.

El desarrollador puede definir la ayuda de búsqueda que se va a utilizar, para un atributo en concreto, usando la propiedad Input Help Mode a la hora de definir el contexto. Existen cinco diferentes posibilidades:

  • Desactivada. No se muestra la ayuda de búsqueda.
  • Automática. La ayuda la determina Web Dynpro automáticamente de entre las posibles opciones que existan asociadas al tipo del atributo.
  • Ayuda de búsqueda del diccionario. El desarrollador puede elegir la ayuda de búsqueda definida en el diccionario de datos
  • Objeto Selector de Valores (OVS). Componente Web Dynpro predefinido, que implementa una ayuda de búsqueda definida por un diálogo.
  • Programado por usuario. Componente Web Dynpro definido por usuario que implementa la ayuda de búsqueda.

1

A continuación se describen los pasos para poder crear una ayuda de tipo OVS.

Web Dynpro Abap Tutorial: Object Value Selector (OVS)

Existen situaciones en las que las ayudas del diccionario no son suficientes. Por ejemplo, la ayuda de búsqueda debería tener en cuenta campos de una vista o rellanar varios de estos. Sin embargo, los diferentes inputFields están relacionados con valores diferentes de nodos, los cuales hacen referencia a diferentes estructuras del diccionario. Esta ayuda de búsqueda compleja se puede implementar como parte de un componente Web Dynpro. El tipo de ayuda de búsqueda se denomina OVS.

Existe un componente reutilizable de Web Dynpro que permite la visualización de una pantalla de selección, consintiendo introducir restricciones para la recogida y visualización de datos. La información debe ser intercambiada entre dos componentes, por eso el OVS tiene que ofrecer un interfaz que:

  • Reciba información sobre qué inputFields deben ser visualizados en la pantalla de selección.
  • Reciba información sobre los valores iniciales de estos inputFields.
  • Devuelva las entradas del usuario en estos inputFields.
  • Reciba el resultado de la recogida de datos para mostrar la lista.
  • Devuelva el conjunto de datos seleccionado al programa consumidor.

Cada vez que la ayuda requiera información del componente consumidor, el evento OVS es desencadenado por el otro componente. Además se manda un parámetro adicional, el phase_indicator, que indica el tipo de información que se solicita.

Un método event handler  tiene que subscribirse al evento del OVS. Dependiendo del valor del indicador de fase (phase_indicator), se pueden implementar diferentes secciones de código para recoger la información requerida y devolverla al componente OVS. A continuación se detallan las distintas fases:

Fase 0 (phase_indicator = 0)

Esta fase se denominada fase de configuración. Aquí, el consumidor puede definir qué textos van a ser visualizados por el componente OVS: la caja de diálogo del selection screen ó la lista de ayuda de búsqueda. Además, pueden ser definidas el número de columnas usadas de la estructura. Es una fase opcional, ya que si las estructuras definidas están relacionadas a elementos del diccionario, los textos serán recogidos del elemento de datos.

Fase 1 (phase_indicator = 1)

En esta fase, el consumidor puede definir qué inputFields van a ser visualizados en la caja de diálogo como filtro previo a los valores a mostrar en la ayuda de búsqueda. Estos se realizan exportando una estructura arbitraria que contiene estos campos. Se pueden suministrar valores por defecto para estos campos dando valores a los mismos.

Fase 2 (phase_indicaror = 2)

Esta fase es procesada después que el usuario haya apretado el botón en la caja de diálogo del OVS, o se ejecuta directamente si se omite la caja de diálogo. En esta fase el consumidor tiene que recoger los datos que serán mostrados en la lista de ayuda de búsqueda por el componente OVS.

Si se ha implementado la Fase 1, el consumidor necesita conocer lo que el usuario ha introducido en los campos de la caja de selección. La referencia a esta información está disponible en el parámetro query_parameters del objeto recibido (OVS_CALLBACK_OBJECT).

Si se ha omitido la Fase 1, se pueden utilizar los datos del propio contexto del controlador para filtrar los datos a mostrar.

Para exportar la lista de valores al componente OVS, el método set_output_table( ) tiene que ser llamado, pasándole una tabla interna con los posibles valores. Entonces la lista de valores es visualizada.

Fase 3 (phase_indicator = 3)

Después de haber seleccionado un valor de la lista, esta selección tiene que ser devuelta al componente consumidor. Por lo tanto, el evento OVS es desencadenado por cuarta vez. La referencia a la selección del usuario está disponible en la variable selection del objeto devuelto. En la sección de código seleccionada del event handler del componente consumidor, estos valores tienen que ser escritos en el contexto. Los datos seleccionados son mostrados como valores de los inputFields de la vista del consumidor.

Hasta aquí la teoría sobre el componente OVS. En los siguientes pasos se muestra como se puede definir el método a implementar las distintas fases antes mencionadas.

Receta para usar OVS

  • Se declara el usage del componente WDR_OVS en el componente WD consumidor.

2

  • El usage del interfaz del controlador del OVS tiene que ser declarado en la pestaña properties del controlador dónde se quiera implementar la ayuda de búsqueda, por ejemplo el component controller o un view controller.

3

  • En la propiedad Input Help Mode del atributo al que asociar la ayuda de búsqueda, se debe indicar Object Value Selector. Después, en la propiedad OVS Component Usage que aparece debemos indicar el nombre que le hemos puesto al usage, OVS en el ejmplo de arriba.

4

  • Lo siguiente es definir un Handler Method par el evento OVS del usage del componente OVS. Al crear este método, elegimos como evento el componente OVS, para que escriba parte del código que vamos a utilizar.

5

  • Por último se debe implementar el Handler Method creado. Una vez realizada la implementación, al pulsar el botón de ayuda de búsqueda del atributo relacionado, aparecerá en un pop-up la ayuda de búsqueda creada.

Viewing all articles
Browse latest Browse all 598

Trending Articles