ABAP en queries: programas integrados

domingo, 27 de marzo de 2011

A good bargain - 2011-01-11

Siguiendo con una serie de artículos anteriores donde ya explicaba como crear queries e infosets voy a intentar mostrar otra manera realizar queries. En este caso vamos a integrar programación ABAP en queries SAP. Se trata de utilizar toda la potencia que nos dan las presentaciones vía query para mostrar información, pero haciéndolo sin utilizar los joins gráficos de tablas.


En un principio, las queries SAP se entienden como una forma sencilla de extraer información de la extensa base de datos de SAP. Para obtener esta información, la mejor manera es utilizar la conexión gráfica de tablas en nuestros infosets. Sin embargo, para aquellos que ya tengan conocimientos sencillos de programación ABAP, SAP provee una herramienta de programación integrada en infosets. Con ella, no necesitamos utilizar ninguna conexión gráfica, sino que podemos obtener información a través de sentencias SQL y presentarlas en el formato que nos dan las queries SAP.

¿Qué ventajas puede tener esta forma de crear queries? En principio, la gran ventaja que yo observo es la posibilidad de utilizar todo el “envoltorio” que nos da una query, con sus ALV y layouts. Nos quita trabajo ya que sólo debemos concentrarnos en recuperar la información. De la presentación de ésta ya se ocupa la query. Además, nos da un entorno organizado de listados ya que nos permite tener todas nuestras consultas bajo la apariencia de la transacción de queries SQ01. Nos evita tener un grupo inconexo de transacciones programadas bajo nombres Z* que, en el mejor de los casos, habremos agrupado en menús de usuario o en menús de favoritos. También nos da la posibilidad de crear consultas de información impensables en un join simple de tablas creado mediante la conexión gráfica. Podemos, por ejemplo, unir dos tablas pero manteniendo una como cabecera y la otra debajo de ésta con sus posiciones.

Veamos esto último. Queremos mostrar pedidos de compra, con una línea de cabecera para cada pedido y siguiendo a esta cabecera, toda la serie de posiciones del pedido.
  • Creamos el infoset marcando ‘Obtención de datos mediante programa’ y ‘Programa integrado’.
    Descripción
  • El infoset nos exigirá que introduzcamos una estructura de datos. Por lo tanto, previamente debemos ir al diccionario y crear la estructura que soportará la salida de información. Este paso previo no lo explico pero tenéis un ejemplo en el siguiente enlace.
  • En este punto, los campos disponibles serán los que nos indique nuestra estructura. Arrastraremos estos campos al grupo de campos que tengamos creados. Lo interesante aquí, es que se nos abre un botón que no habíamos visto hasta ahora. Este botón se llama ‘Programa de lectura de datos’ y nos señala el lugar a través del que haremos nuestra programación ABAP. Así que lo marcamos.
    Programa
  • El editor ABAP que se nos abre consta de diversos eventos donde escribimos nuestros comandos ABAP:
    • Declaración de variables.
      Variables
    • Pantalla de selección. Definimos el pedido de compras como parámetro de selección en nuestra query. Podemos indicar una descripción del parámetro para que no aparezca el nombre de la variable al ejecutar la query. Para ello tenemos que ir a la pestaña ‘Delimit’ y haciendo doble click sobre el parámetro cambiamos el texto de selección.
      Pantalla de selección
         
      Delimitaciones
    • Extracción de datos.
      Extracción de datos
    • Salida de información.
      Salida de información
  • Generamos nuestro infoset.
  • Asociamos el infoset a un grupo de usuarios.
  • Creamos nuestra query normalmente.
Y éste es el resultado:

Listado


Un listado de las posiciones de un pedido con una cabecera para el pedido. El ejemplo es muy sencillo y poco significativo pero nos da una idea de la potencia de la herramienta.

Imagen inicial | 4nitsirk

No hay comentarios:

Publicar un comentario