Navegación en queries

domingo, 19 de junio de 2011

Ship Painting

Una de las peculiaridades de SAP es que estemos donde estemos el sistema suele permitirnos saltar entre transacciones. Simplemente debemos situarnos encima de un campo, hacer doble click y el sistema navegará a otra transacción relacionada con ese campo. Por ejemplo, si en la transacción en la que estamos hay un campo con el código de un material, si hacemos doble click sobre éste SAP navega hacia la transacción del maestro de materiales de ese código en concreto.

En otros artículos ya había explicado cómo crear queries. En esta ocasión voy a ampliar estos posts con esta sencilla funcionalidad de SAP, la navegación.


Caso

Tenemos una query que nos permite listar posiciones de pedidos de venta donde nos muestra las posiciones de pedidos con el código de material. Queremos que al hacer doble click sobre un registro en concreto SAP nos muestre el stock disponible en almacén de ese material y el pedido de ventas completo asociado ¿Cómo lo hacemos?

Solución

  • Modificamos nuestra query.
Herramientas / Workbench ABAP / Utilidades / Query SAP / SQ01 – Queries
  • Vamos al menú Pasar a / Asignación del informe.
  • Indicamos que nuestro tipo de informe será una transacción. Igual que una transacción podríamos indicar un report ABAP, una query, etc.
  • Introducimos el nombre de nuestra transacción (VA03 para visualizar el pedido de ventas completo)
  • Repetimos de nuevo para la otra transacción (MB52 para visualizar el stock del material).
  • Grabamos.
Ahora cuando lancemos la query y hagamos doble click sobre un registro del listado vamos a tener la opción de escoger entre navegar a la transacción VA03 o a la MB52.

En el siguiente vídeo explicativo se muestran todos los pasos:






La navegación se realiza al hacer doble click sobre cualquier punto de un registro, independientemente del campo sobre el que se pulse. Entonce, ¿cómo determina SAP cuál es el campo que tiene que utilizar para navegar? Pues lo hace en base al ID del parámetro. SAP recorre todos los campos del registro y enlaza el ID del registro correcto con el ID del parámetro de entrada de la transacción. Entonces para verificar que la navegación funcionará correctamente debemos determinar cuál es el ID del parámetro. Eso lo hacemos mediante los siguientes pasos:
  • Vamos al campo de entrada de nuestra transacción, por ejemplo el de la VA03
Logística / Comercial / Ventas / Pedido / VA03 – Visualizar
  • Pulsamos F1.
  • Marcamos ‘Datos técnicos’ o el icono ‘Martillo’.
  • Verificamos que existe un valor dentro de ‘ID parámetro’.

    ID parámetro

Hacemos lo mismo para el campo de nuestra query, pero desde la transacción SE11

Herramientas / Workbench ABAP / Desarrollo / SE11 – Dictionary ABAP
  • Introducimos el elemento de datos (VBELN_VA) en el campo ‘tipo de datos’.
  • Visualizar.
  • Y en la pestaña propiedades adicionales el valor del ID del parámetro debería ser el mismo que hemos obtenido anteriormente.
Así podemos estar seguros que la navegación se hará correctamente desde nuestra query.

Imagen | Svadilfari

3 comentarios:

  1. Hola.
    He logrado la navegación de una query hasta la transacción VA02 pero el problema es que siempre abre el mismo pedido de ventas aunque haga doble click en cualquier otro registro. Me puedes decir como lo soluciono?
    Gracias

    ResponderEliminar
  2. Hola Juan Carlos:
    Has de tener en cuenta que en tu query estés recogiendo el parámetro ID 'AUN' de tu pedido de ventas, es decir, que estás mostrando el pedido de ventas en tu query y que es el único que muestras. No vale mostrar en el mismo registro dos pedidos de venta (o un pedido de ventas y otro documento de ventas que también tiene el parámetro ID 'AUN') diferentes porque SAP no entendería cuál es el ID que debe tomar y se quedaría con el último que tuviese en memoria. Espero que te sirva de ayuda.

    ResponderEliminar
  3. Hola Oscar.
    Gracias por tu respuesta.
    He revisado lo que comentas y no encuentro ningún error. La query hace uso de una estructura que he creado con los mismos tipos de datos. seguiré investigando a ver si logro que funcione.

    ResponderEliminar