Está en la página 1de 25

Query SAP (0): crear una query

[SQ00]
Utiliza SQ00

En ámbito funcional elige específico de mandante


Luego en pinchas en entorno grupo de usuarios

Creas un grupo de usuario


Luego asignas grupos de usuarios

Aquí asignas los usuarios que usarán el Query, posteriormente


asignaremos el infoset.

Luego entorno ->infosets


Digitas un nombre y pones Crear
Aquí se levanta esta pestaña, completas los datos

En fuente de datos hay varias opciones unión via tablas, tabla directa o
base de datos lógica (son las que he usado).

Para tu caso usuaria la tercera opción base de datos lógica VLV (de
entregas) , es obligación una denominación, le das al check
Te muestra las tablas y estructuras donde buscará los datos

Selecciónalos todos, siempre es mejor tener todos los datos. le das check
te muestra esto

En mi caso yo borro todos los grupos de campo y dejo solo uno o creo uno
nuevo y borro los demás (a gusto de uno) (carpetas de la derecha).

Aquí seleccionas los campo que ocuparás de las distintas tablas que están
disponibles con botón derecho sobre el campo y pinchar sobre “incluir en
grupo de campos” (tambien agarrar y soltar en el grupo de campos con el
mouse).
Una vez ya incluiste todos los datos en el grupo de campos. Guardas y
generas el infoset. (se puede modificar las veces que quieras).

Una vez creado el infosets lo agregamos a nuestro grupo de usuarios,


creado anteriormente.

Lo asignas a tu grupo de usuarios y grabas


Ahora crearemos nuestra Querie para eso vamos a entorno -> Queries

Si el grupo de usuario mostrado no es el que creaste, pinchas en el botón y


lo seleccionas
le das un nombre y le das crear

inmediatamente aparece una ventana con los infosets asociados al grupo


de usuarios.

Seleccionas el que vas a usar y te muestra la siguiente pantalla


Le pones título, algún comentario y pinchas en lista básica, te muestra lo
siguiente
Imagen pegada1246x552 47 KB

Como te darás cuenta esto es la pantalla normal de la SQVI, cuando aquí


vas seleccionando campos de lista (desplegables) o de selección (vienen
algunos por defectos). Si notas también viene otra carpeta con las
descripciones de los datos (dependiendo del campo que elegiste en el
queries). Grabas y ya está. Puedes crear tus propios campos, aquí en esta
sección, así como tambien puedes modificar la glosa de los datos
predefinidos, eso sí cambiando el texto en el infoset.
Query SAP (I): Grupos de usuarios
[SQ03]

¿Cómo puedo recuperar información almacenada en el sistema acerca de


mis clientes? ¿Y acerca de mis proveedores? ¿Y de mis ventas? En
definitiva, ¿cómo puedo obtener listados de consulta sobre los datos que
anteriormente he entrado en mi SAP?

Éste es el primer post de un grupo de tres sobre queries en SAP. Una query
en SAP es una herramienta que nos permite recuperar información de la
base de datos para generar listados de información en tiempo real.

Es verdad que existen herramientas de programación ABAP que ya nos


permiten hacer listados y recuperar información de las tablas de la base de
datos. Sin embargo, con las quexx ries no tenemos necesidad de saber
programar (aunque puede ser una ayuda) y hace el proceso de
construcción de listados una tarea más rápida e intuitiva.

Siempre que creemos una query debemos seguir tres pasos siempre en el
siguiente orden.
-I: Crear un grupo de usuarios
-II: Crear un infoset.
-III: Crea la query.
Definición de un grupo de
usuarios
Un grupo de usuarios es el primer paso en la creación de una query SAP.
En cada grupo asignamos los nombres de los usuarios que tendrán acceso
final a la query que generaremos. No es más que una autorización para
poder utilizar nuestra query a un grupo ordenado de personas.

Por ejemplo, podemos determinar que las consultas o queries del módulo
SD sólo las podrán consultar aquellas personas de los departamentos de
Ventas y Marketing. En este caso, crearemos un grupo de usarios llamado
VENTAS donde incluiremos el nombre de los usuarios de estos
departamentos.

Funcionalidad
Herramientas / Workbench ABAP / Utilidades / Query SAP /
SQ03 - Grupo de usuarios
 Creamos y asignamos un nombre a nuestro grupo de usuarios:
botón 'Crear'.
 Asignamos los usuarios: botón 'Asignar usuario y Infosets". Para
permitir que un usuario modifique las queries del grupo de usuarios
debemos mantener marcado el flag de autorización junto al nombre
de usuario.

 Guardamos.

Y ya hemos acabado el primer paso en la creación de una query.


Query SAP (II): Grupos de
usuarios (Infoset) [SQ02]
El segundo paso en la creación de una query es la definición del infoset
asociado. Los infosets son vistas especiales de datos donde se agrupan
todos los campos que se utilizarán en una query. En un infoset
enlazaremos diferentes tablas a través de campos comunes y
seleccionaremos qué campos queremos que estén disponibles para
nuestras queries. A su vez, asignaremos el infoset a uno o más grupos de
usuarios (recordad el post anterior sobre grupos de usuarios).

Funcionalidad
Siguiendo con el ejemplo del anterior post vamos a crear un infoset de
información de ventas, en concreto, de las cantidades que nuestros
clientes nos han pedido en un rango de fechas. Para ello debemos saber
que la tabla en la que se almacena la información de pedidos de clientes
en SAP se encuentra en la tabla VBAK. La información de las cantidades
solicitadas se encuentra en la tabla VBAP. También debemos saber que
ambas tablas se relacionan entre sí a través del campo "documento de
ventas" (VBAK-VBELN / VBAP-VBELN). Ahora podemos empezar a construir
nuestro infoset.

 Entramos en la transacción de infosets.

Herramientas / Utilidades / Query SAP / SQ02 - Infosets


 Creamos un infoset, le damos una descripción y una tabla base
sobre la que generaremos nuestro infoset. En nuestro caso sobre la
tabla VBAK. En este apartado existen varias opciones: podemos
crear el infoset realizando la consulta sólo sobre una tabla en
exclusiva, sobre varias tablas, sobre una base de datos lógica o
incluso sobre datos externos. Hay que pensar bien qué opción
escoger ya que una vez se ha creado ya no hay vuelta atrás. Por
ejemplo, si escogemos crear un infoset a través de una tabla, si en el
futuro decidimos añadir una nueva tabla tendremos que borrar el
infoset y crear uno nuevo. Y eso será un problema mayor si ya
hemos creado la query subsiguiente pues en ese caso también
habría que borrar antes la query. Personalmente, siempre creo las
queries vía unión de tablas aunque en el momento que cree el
infoset sólo necesito información de una de las dos. Así me ahorro
problemas en el futuro.

 Creamos el enlace entre ambas tablas añadiendo la nueva tabla


VBAP. Automáticamente, SAP nos propone las conexiones entre
tablas. Sin embargo, podéis borrar el enlace y asociarlo a través de
otros campos (siempre que sean del mismo tipo, de lo contrario SAP
no lo aceptará). Yo voy a aceptar la propuesta que me hace SAP.
Atención, en este punto hay que decir que debemos tener cuidado
con las tablas que utilizamos en nuestro join. SAP no suele tomarse
muy bien las tablas cluster como la BSEG. En este caso es mejor
utilizar tablas transparentes como la BSID, BSAD, BSIK o BSAK.

Tratar / Insertar tabla

 Volvemos hacia atrás y creamos los grupos de campos (Pasar a /


Back). Esto son una especie de carpetas donde asignaremos los
campos de nuestras disponibles para las futuras queries. Yo
escogeré crear 'Grupos de campos vacíos' con lo que me creará dos
carpetas, una para la tabla VBAK y otro para la VBAP sin ningún
campo asignado.
 Arrastramos los campos de las tablas (parte izquierda de la pantalla)
hacia los grupos de campos que hemos creado (parte derecha de la
pantalla). En mi caso, arrastro los campos solicitante y documento
de ventas de la VBAK y cantidad y material de la VBAP. Como veis
sobre los campos solicitante y número de material SAP escribe una
T. Eso significa que asociado a estos códigos SAP internamente
también arrastra sus descripciones, por lo que no hay que hacer
ninguna selección hacia las tablas de descripciones del solicitante
(KNA1) ni del material (MAKT).

 Además, para complicarlo un poco más voy a añadir un campo que


no está en ninguna de las tablas. Por ejemplo, si la posición ha sido
rechazada (lo que se indica en SAP a través del campo VBAP-ABGRU)
le voy a dar la descripción 'Posición rechazada'. Esto sólo lo
podemos hacer mediante programación ABAP, una herramienta
muy interesante que nos permiten los infosets.

Pasar a / Detalles
 Creamos el campo adicional y le damos descripción y tipo.

 Escribimos el coding para el campo. Verificamos el código ABAP


(corregimos si es necesario) y grabamos.
 Volvemos a 'Grupo de campos'. Vemos ahora que en la parte
izquierda de la pantalla nos aparece un nuevo campo de datos
'Campos adicionales' que contiene el campo que hemos creado. Lo
que hay que hacer ahora es crear un nuevo grupo de campos y
arrastrar nuestro campo adicional a este grupo de campos (también
podríamos arrastrarlo a uno de los grupos de campos que ya
tenemos).

 Sólo nos queda grabar, verificar y activar nuestro infoset.

Infoset / Grabar
Infoset / Verificar
Infoset / Generar
 Ya podemos volver a la pantalla inicial y asignar el infoset al grupo
de usuarios que creamos anteriormente a través de la transacción
SQ01 (ver el post anterior).

Pasar a / Asignación a grupo de usuarios


Query SAP (III): crear una query
[SQ01]
Definición de query
El tercer paso en la creación de una query es, precisamente, la creación de
la query propiamente dicha. Esto es un listado de información extraída de
la base de datos. Para ello es necesario que previamente hayamos creado
el grupo de usuarios al que permitiremos extraer la información.
Asimismo, debemos haber creado el infoset donde indicamos las tablas de
información necesaria.

Crear una query consiste en generar una pantalla de selección de la


información y una disposición (layout) de salida de toda esta
documentación.

Funcionalidad
Sigamos con el ejemplo. Creamos una query de información de ventas.
Entramos en la transacción de queries.

Herramientas / Workbench ABAP / Utilidades / Query SAP / SQ01


- Queries
 Podemos crear nuestra query bien en área estándar bien en ámbito
global. Esto significa que podemos crear la query y luego
transportarla (ámbito global) o bien crear la query directamente en
nuestro entorno productivo (área estándar). Mi experiencia
personal me dice que no merece la pena el trabajo de crear una
query en un mandante de desarrollo y luego transportarla hasta
nuestro mandante productivo. Será más rápido y más fácil testear
nuestra query si la creamos directamente en el área estándar. Para
eso vamos a Entorno / Ámbitos funcionales / Área estándar
(específico de mandante).
 Nuestra query la crearemos dentro del grupo de usuarios que
creamos en el paso I. Por eso, iremos a Tratar / Cambiar grupo de
usuarios / Ventas.
 Damos un nombre a nuestra query y la creamos. Automáticamente
nos pedirá que la asignemos a un infoset (recordar el paso II).
Evidentemente, asignaremos el infoset que ya habíamos creado
previamente (SD_VENTAS).

 En la siguiente pantalla, SAP nos pide una descripción de la query.


Podemos también indicar la variante de la pantalla de selección que
queremos que se utilice por defecto al ejecutar la query. Esta
variante la podemos crear cuando ya hayamos generado nuestra
query y añadirla aquí directamente (campo Variante estándar). En
esta pantalla también aparecen datos de 'Formato de salida'. Aquí le
podemos indicar a nuestra query cómo queremos que se muestre.
Por defecto, utilizamos el "List Viewer ABAP", es decir, el ALV típico.
Aunque SAP nos da la posibilidad incluso de lanzar el resultado
directamente hacia un Excel si así se quiere (EXCEL).

 Pasamos a 'Selección de grupos de campos'. Aquí debemos


seleccionar todos nuestros grupos de campos del infoset. O, si
alguno de los grupos de campos no los quisiéramos utilizar en
nuestra query, entonces simplemente no lo seleccionamos.
 En 'Lista básica' nos muestra los campos disponibles en cada uno de
los grupos de campos. Debemos seleccionar aquellos que nos
interesa que se muestren en la query. En el caso del ejemplo,
seleccionaré todos los campos. Como veis los campos de texto,
aunque no los habíamos seleccionado directamente en nuestro
infoset, sí que nos aparecen dentro de los campos disponibles. Eso
es simplemente porque los campos de código solicitante y número
de material siempre llevan asociadas sus descripciones por defecto.
 En la pantalla de 'Selecciones' creamos nuestra pantalla de
selección. Es decir, los criterios a partir de los cuales buscaremos la
información. Yo voy a marcar los campos solicitante, material y
documento de ventas.

 'Lista básica': aquí construimos la disposición de salida donde


indicamos qué campos queremos que se muestren en el listado y en
qué orden. Además, podemos también darle algún formato especial
como colores, guiones de separación, etc. Yo voy a marcar todos los
campos disponibles y además voy a hacer que sea de verde intenso.
Para hacer eso hay que arrastrar el campo ‘Afirmativo (intenso)'
sobre el campo que queremos que sea de otro color.
ABAP en queries: programas
integrados
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’.

 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.

 El editor ABAP que se nos abre consta de diversos eventos donde


escribimos nuestros comandos ABAP:
o Declaración de 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.

Extracción de datos.

Salida de información.

Generamos nuestro infoset.


Asociamos el infoset a un grupo de usuarios.
Creamos nuestra query normalmente.
Y éste es el resultado:
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.

También podría gustarte