MANUAL DE QUERYS
Introduccin
Un query es una herramienta del sistema que nos permite la posibilidad de
extraer informacin de SAP mediante un sistema de Drag & Drog, de entre los
tipos de Query que SAP nos ofrece podemos optar por
Lista bsica
Estadsticas
Lista ranking
!ambi"n se puede hacer una combinacin de estos tipos de report, es decir,
hacer que en un mismo listado podamos obtener los tres al mismo tiempo
haciendolo mucho m#s profesional y completo$
Lista de Componentes
Para poder finali% con exito un Query primero hemos de completar cuatro pasos,
pero al final de la instalacin de un proyecto de SAP, el usuario final slo tendr"
que reali%ar los dos <imos pasos, siendo tarea de los programadores de
manteniemiento, o del consultor o del propio administrador del sistema la
constitucin de los dos primeros pasos$
Grupo de usuarios
rea funcional
Query
Comparacin de Idiomas (erramientas ! Entorno ! "raduccin ! #$#% Query&
'l #rea funcional define el con(unto de datos sobre el que se e(ecutan los queries
y mediante los grupos de usuarios, definimos a qu" con(unto de datos pueden
acceder los usuarios$A partir de este punto, culaquier usuario del grupo podr#
crear un query sobre el #rea funcional$
Grupo de usuarios
Un grupo de usuarios es un con(unto de usuarios que traba(an sobre los mismos
datos a la hora de e(ecutar el query$ Un usuario que pertene%ca al grupo podr#
e(ecutar cualquier query creado por otro elemento del grupo de usuarios, y los
cambios que realice sobre el query ser#n )isibles para todos los usuarios del
grupo$
Para definir un grupo de usuarios hay que seguir los siguientes pasos
'( Entrar en ABAP/4 Workbench (men) Herramientas&(
*( %or Utilidades Query ABAP/4 Grupos de usuarios se entra en la pantalla de
definicin de grupos de usuarios( +e puede acceder directamente con la
transaccin SQ03.
,( En el campo Grupo usuarios se introduce el nombre del grupo -ue se -uiere
definir y se elige la accin crear( El sistema pide )nicamente una descripcin larga
del grupo(
.( %ara agregar usuarios al grupo /ay dos posibilidades0 uno a uno1 entrando el
usuario en el campo usuario y accionando Asignar usuario1 o en la pantalla de
asignacin de usuarios1 -ue aparece al /acer click sobre Asignar usuarios y
grupos funcionales(
reas funcionales
*as #reas funcionales nos permiten hacer una preseleccin de los datos que
aparecer#n en los queries$ 'n la dnicin del #rea funcional especificamos qu"
tablas inter)endr#n en el query y qu" campos$ 's deber del funcional o del
propio cliente crear estas areas funcionales$ Se deben crear las area con
suficiente )isin de futuro para hacerlas lo m#s ampliadas posibles$
Para acceder a la pantalla de definicin de #reas funcionales, hay que seguir los
siguientes pasos
'( Entrar en ABAP/4 Workbench (men) Herramientas&(
*( %or Utilidades Query ABAP/4 reas funcionales se entra en la pantalla de
definicin de reas funcionales( +e puede acceder directamente con la
transaccin SQ02(
Para definir un #rea funcional, se introduce en el campo rea funcional el
nombre que se le quiere dar y se acciona el botn crear$ Aparece una primera
pantalla en la que se asocia al #rea una denominacin , un grupo de
autori%acin y una clase de #rea funcional$
Base de datos lgica0 El rea funcional traba2a sobre una base de datos lgica(
Unin directa de tablas 0 3na unin de tablas abarca siempre 4arias tablas -ue
se leern con ayuda de una forma especial de la instruccin +ELEC"( La primera
tabla en la unin es la tabla citada arriba en el campo !abla( Las dems tablas
pueden indicarse cuando se llama las funciones Continuar (al crear un rea
funcional nue4a& o 3nir( +i bien una unin de tablas abarca siempre 4arias tablas1
el resultado es una secuencia de registros con estructura plana( La estructura de
estos registros es una barra de campos1 en los -ue se constan de modo seguido los
campos implicados en la cone5in de las tablas(
Lectura directa 0 "odos los datos estn contenidos en la tabla indicada en el
campo !abla"
Obtencin de datos mediante programa0 La lectura de los datos se describe a
partir de un programa separado(
Datos secuenciales 0 Los datos se leen de un pool de datos secuencial(
Al crear un #rea funcional con unin directa de tablas, aparece una pantalla en la
que se deben indicar las tablas implicadas en la unin y las condiciones de la
unin$ Para definir una condicin, marcamos dos tablas de la lista de tablas y
hacemos clic+ sobre definir condicin$ Aparece en el panel de la derecha
,condiciones de enlace- una nue)a entrada$ Si acti)amos el botn de especificar
condiciones , a la derecha de la nue)a entrada, )eremos una pantalla con todos
los campos de las dos tablas implicadas en la unin$ 'n esta pantalla se definen
los campos que han de ser iguales para la unin de las tablas$
A continuacin, se especifican los campos de las tablas que ser#n )isibles en el
#rea funcional$ Aparece un nue)o concepto el grupo funcional$ Un grupo
funcional no es m#s que un con(unto de campos de las tablas implicadas en el
#rea funcional$
Por un lado, est#n los grupos funcionales y por otro, las tablas del #rea
funcional$ 'l procedimiento a seguir es el siguiente
'( 6efinir los grupos funcionales( %ara esto1 /acemos click sobre el icono de crear y
entramos el nombre del rea funcional(
*( 3n grupo funcional combina diferentes campos en una misma unidad( +e utili7a
para presentar al usuario una preseleccin de los campos( Esto /ace -ue el usuario
no tenga -ue pasar por toda la $ase de 6atos Lgica o por todos los campos de
una tabla para crear un -uery(
,( #signar a los campos de las tablas un grupo funcional( Los campos -ue no tengan
un grupo funcional asignado1 no sern 4isibles a la /ora de definir el -uery( %ara
asignar el grupo funcional1 se marca el grupo funcional en la parte superior de la
pantalla y despu8s se /ace click sobre el icono -ue /ay a la derec/a del nombre
del campo de la tabla(
'xiste una opcin que nos permite incluir codigo fuente dentro de los query
,Coding...- con ello podremos incluir codigo antes y despu"s de la seleccin de
datos, colocar authority.chec+ o acceder a otras tablas, etc$
Query
Una )e% que tenemos el grupo de usuario definido y pertenecemos a "l, que el
area funcional ya ha sido creada y los campos ya estan disponibles para extraer
nuestros listados, (usto en este momento ya somos capaces de crear nuestros
query$ Para entrar en el entorno de definicin de queries, se debe seguir el
siguiente procedimiento
'( Entrar en ABAP/4 Workbench (men) Herramientas&(
*( +eguir la ruta de men) Utilidades Query ABAP/4 Queries( +e puede
acceder directamente con la transaccin SQ01(
'n la pantalla se listar#n las queries asociadas a un grupo de usuarios$ Si el
usuario pertenece a mas de un grupo, con la opcin cambiar grupo de usuario
(shift + F7) en la barra de iconos, puede acceder a las queries de otro grupo al
que pertene%ca$ /on los botones de crear y modificar accedemos a las pantallas
de actuali%acin de queries$ Al crear un query, si el grupo de usuarios tiene m#s
de un #rea funcional asignada, el sistema pide una preseleccin del #rea
funcional en la que se quiere definir el query$ *a primera pantalla que aparece es
la de datos generales$
'n ella se define el t0tulo del query y una explicacin del mismo$ Por otro lado, se
define el formato de salida ,n&mero de filas y columnas-$ !ambi"n se le puede
asignar una )ariante est#ndar y bloquear el query para que los dem#s usuarios
del grupo no puedan modificarlo$ Por ultimo, se puede determinar si se quiere un
traspaso de informacin a alg&n otro sistema ,1ord, excel, '2S,$$$-$ Para pasar a
la siguiente pantalla, hacemos clic+ sobre el icono que aparece en la barra de
status$
'n la siguiente pantalla se elige qu" grupos funcionales inter)endr#n en el query$
'sta pantalla determinar# la posibilidad de traba(ar con m#s o menos campos$
'n la siguiente se seleccionan los campos de dichas #reas funcionales que
aparecer#n$
Para finali%ar con la definicin de par#metros generales, la <ima pantalla nos
permite definir si queremos que en el query se haga seleccin por campos
mediante select options$
Nota: 'n el caso de 3ases de Datos *gicas, para que realice correctamente la
seleccin de datos de una tabla secundaria, como m0nimo tenemos que
)isuali%ar un campo de esa tabla en el listado$ Si no es as0, la query no accede a
esa tabla y, por lo tanto, no reali%a la seleccin correspondiente$ *a tabla
primaria est# relacionada directamente con la secundaria mediante uno o )arios
campos en com&n$ Si en lugar de listar el campo de la tabla primaria listamos el
de la secundaria, la seleccin del resto de campos de esa tabla la har#
correctamente$ Sino, ignorar# lo que le hayamos informado en la pantalla de
seleccin$ *a finalidad de una query es hacer un listado, por lo tanto, el
seleccionar una tabla para luego no listar ninguno de sus campos puede ser el
factor que haga que esta seleccin de la tabla secundaria no funcione ,es decir,
sea ignorada-$
A parte de los campos de seleccin, las queries tambi"n nos permiten crear
campos locales 'sto nos permite generar nue)a informacin a partir de los
campos del #rea funcional sin tener que incluir un campo adicional$
Para definir un campo local tenemos que ir por !ratar /ampo *ocal /rear,
en la pantalla de Seleccin de campos$
Norma de clculo
Puedes determinar el )alor de un campo de las siguientes
maneras
3sando una frmula(
%ara crearla se utili7an las reglas matemticas usuales -ue
contienen operandos y operadores( +i apretamos el botn de
Clculo comple2o podremos 4er todas las opciones -ue nos permite
utili7ar a la /ora de /acer una frmula(
Entrando un 4alor en la pantalla de seleccin (Entrada en imagen
de seleccin&
'n este caso, el campo local es tratado como un parametro cuyo
)alor est# determinado por una entrada en la pantalla de seleccin$
'sto no se puede reali%ar con s0mbolos o iconos$ Para for%ar un
)alor en la pantalla de seleccin tendremos que acti)ar la opcin
de Obligatorio.
Lista !"sica
Una )e% que hemos seleccionado los grupos funcionales y los campos que
)amos a tratar en simplemente bastar# con pulsar sobre elbotn de lista b#sica
para obtener un Query$ *a lista b#sica no es m#s que una forma de obtener un
listado de forma lineal de forma r#pida y sencilla$ Para comen%ar a definir un
query deberemos empe%ar por
Lnea 0 En -u8 lnea fsica situamos el campo(
Secuencia0 9arca un orden entre los campos de una misma lnea( La informacin
es num8rica1 y no tiene -ue 4er con la posicin fsica del campo dentro de la lnea(
#s1 si tenemos dos campos en una misma lnea con secuencias : y '*1 sabremos
-ue el campo con secuencia : ir antes del '*1 pero no ocuparn las posiciones :
y '* de la lnea(
Clasificacin0 Con este campo1 especificamos un orden en las lneas de salida1
una clasificacin( #s1 en el e2emplo1 tendremos un listado clasificado por c#digo
de tr$mite a un primer ni4el y 1 a continuacin1 por c#digo de circuito( Es decir1
primero saldrn las lneas ordenadas por c#digo de tr$mite1 y todas a-uellas -ue
tengan el mismo c#digo de tr$mite aparecern ordenadas por c#digo de circuito(
Recuento% Indicador con el cual se cuentan las 4eces -ue son ledos los campos
durante la obtencin de datos( +e da salida al n)mero total al final de la lista
bsica( #dems1 en el caso de -ue e5ista clasificacin1 se puede dar salida al final
del ni4el de grupo del n)mero de 4eces -ue se /a ledo un campo dentro del ni4el
de grupo (recuento intermedio&(
# ni4el global1 se le especifica si la lista debe ir enmarcada1 si se -uieren insertar
lneas separadoras entre las diferentes columnas del listado o si se -uiere una
representacin compactada de la informacin( +i decidimos clasificar la lista por
alg)n campo1 es decir1 creamos niveles de grupos la siguiente pantalla -ue nos
aparecer /ar referencia )nicamente a estos campos (
Dist" 0 +i no est acti4ado1 se /ar una clasificacin ascendente( En caso
contrario1 ser descendente(
Txt" 0 Con este checkbo& acti4ado1 se 4isuali7a un te5to al principio de cada ni4el
de grupo1 es decir al cambiar los conceptos de clasificacin(
Suma % %ara obtener una suma parcial de los campos a sumari7ar a cada cambio
de grupo(
Cont % +i se marca este campo se dar salida en el cambio de grupo a los 4alores
intermedios del recuento (recuento intermedio& para todos los campos en los -ue
se /a acti4ado el checkbo& 'ecuen"de la pantalla anterior(
Marc" 0 %ara enmarcar a ni4el de grupo(
LinBla" 0 Inserta una lnea en blanco antes de la 4isuali7acin de un nue4o grupo(
Pg.nv" 0 Inserta un salto de pgina antes de cada nue4o grupo(
+i se /a acti4ado el checkbo& !&t"1 la siguiente pantalla ser la de !e&tos de
ni(eles de grupo1 en la -ue se especifica el te5to -ue /a de aparecer al principio
de cada nue4o grupo( Es como asociar una mscara al campo1 por e2emplo1 -ue
cada 4e7 -ue nos salga un cdigo de circuito nue4o1 en la cabecera del listado (o
subcabecera de totales& nos salga escrito 0 Cdigo de Cliente0 ;;;;;;;(
Color 0 color de la lnea(
Condic 0 +i se indica el n)mero de otra lnea1 la lnea actual slo ser 4isuali7ada
se la otra lnea tambi8n es 4isuali7ada( En caso de dependencias entre lneas es
necesario respetar la estructura de la base de datos correspondiente( 3na lnea
(dependiente& slo deber depender de otra lnea (lnea condicionada& si la lnea
condicionada slo contiene campos asignados a una base de datos de una tabla
2err-uicamente inferior a la tabla de los campos a 4isuali7ar en la lnea
dependiente
Lin. Blanco nt % <)mero de lneas en blanco a 4isuali7ar antes de la lnea
actual(
Lin. Blanco % <)mero de lneas a 4isuali7ar despu8s de la lnea actual(
Ca!ec. Pg" % 9arcar este campo para 4isuali7ar la lnea correspondiente en la
cabecera de la pgina en un cambio de pgina1 siempre y cuando una de las lneas
a continuacin ocasione el cambio de pgina(
"va.Pg" 0 +i se -uiere insertar un salto de pgina antes de esta lnea(
# continuacin est la pantalla #$ciones de salida cam$o(%ara cada campo -ue
aparece en el -uery1 se pueden fi2ar los siguientes parmetros0
o Long 0 Longitud de 4isuali7acin del campo1 es decir1 cuantos caracteres
del campo se -uieren 4isuali7ar(
o Pos 0 %osicin absoluta del campo en la lnea( +i no se especifica ning)n
4alor1 toma el final del campo anterior(
o Color 0 Color del campo dentro de la lnea(
o Masc0 +i se -uiere especificar una mscara de salida para el campo1 /ay
-ue acti4ar este checkbo&"
o %& ' 0 +i este checkbo& est acti4ado1 si el 4alor es igual a cero no se
4isuali7a(
La siguiente pantalla es la pantalla de definicin de mscaras para campos1 si se
/a seleccionado alg)n campo en el -uery con mscara de salida(Con ayuda de una
mscara es posible fi2ar una representacin distinta a la representacin estndar en
la salida de un campo( 6entro de la mscara ser suplida cada lnea de subrayado
( = & por una posicin del 4alor del campo1 siendo efectuada la asignacin de
i7-uierda a derec/a( Los par8ntesis (>1?& -ue encierran la mscara no sern
4isuali7ados( %or e2emplo1 si el campo E2ercicio es de cuatro posiciones1 sin
mscara se 4isuali7ar )*+++)1 pero si se especifica la mscara ,-.ercicio%////01
en cada lnea del -uery en la -ue apare7ca el campo e2ercicio se 4isuali7ar
@-.ercicio%*+++) (
Ainalmente est la pantalla de Ca!ecera de lista !sica(En ella se define0
Cabecera de la pgina 0 Cabecera de las pginas del -uery(
Ca!eceras de columna 0 Busto deba2o de la cabecera de pgina1
aparecen los te5tos -ue se 4isuali7arn en las cabeceras de
columna( +i se desea modificarlos1 basta con /acer doble click
sobre el te5to y aparecer un recuadro para cambiarlo(
Pies de $gina 0 %ies de pgina del -uery(
Estad#sticas
*as estad0sticas permiten operar con los campos num"ricos de las grupos
funcionales utili%ados en el query$ *a estad0stica se a4ade, normalmente, a
continuacin del query b#sico$ Para acceder a las pantallas de definicin de
estad0sticas, basta con accionar el botn Estadsticas. 'n la primera pantalla se
seleccionan los campos que se quieren en la estad0stica$ 's necesario que
hayan campos alfanum"ricos y num"ricos$ Slo se podr# hacer nue)e listados
de tipo 'stad0sticos en un mismo Query$ /omo puede haber )arias estad0sticas,
cada una de ellas debe tener su propio t0tulo$ Podemos especificar la secuencia
en la que queremos que nos apare%can los datos y si tendr0an que estar
ordenados de forma ascendente o descendente$
*os totales son siempre calculados para campos num"ricos$ Por esto mismo
tambi"n puedes determinar )alores medios, porcenta(es y total de entradas
seleccionadas$
Para cada campo num"rico seleccionado, se debe determinar los siguientes
par#metros
"( 0 Este parmetro marca el orden de los campos -ue aparecen en la estadstica(
Cla 0 Crden de clasificacin( Crdena los resultados de salida de la estadstica en
funcin del orden de clasificacin(
Di 0 +i se -uiere -ue el orden de salida sea ascendente o descendente(
Rf 0 #l marcar este parmetro se generarn automticamente sumas parciales para
ese campo( La estadstica se puede ir plegando y desplegando con sumas parciales
de los campos num8ricos1 tantas 4eces como campos num8ricos con este
indicador acti4o /aya(
Ctd0 +e aplica a los campos num8ricos( +i el indicador est acti4ado1 en la
estadstica aparece la cantidad de entradas contempladas en la lnea1 es decir1 si
una lnea es una suma parcial1 se podr 4er cuantos registros se /an considerado
en la suma(
Pr0 %ara -ue se calcule el promedio del campo num8rico(
)0 Este campo se utili7a para 4isuali7ar el D -ue representa una lnea respecto al
total(
Lg 0 Longitud de salida(
Red 0 Aactor de redondeo(
'n el caso de campos num"ricos, tambi"n se deben se4alar
Unidad! en la -ue -ueremos los resultados (moneda&(
"e#to0 te5to a 4isuali7ar en la estadstica(
5tra opcin que nos permiten las estad0sticas es la de ordenarlas seg&n el
criterio que queramos$
Lista ran$in%
Adem#s de la lista b#sica y las estad0sticas, en el query se pueden introducir
hasta die% listas ran+ing$ Una lista ran$in% es un listado ordenado por un
campo num"rico$ Se especifican los campos alfanum"ricos por los que se quiere
agregar el campo num"rico$ Si indicamos, por e(emplo, un campo producto
alfanum"rico y un campo uds. vendidas num"rico, el resultado ser# un listado
ordenado de los productos m#s )endidos, en los que )eremos las unidades
)endidas agregadas por producto$
Para cada campo num"rico se define
"( % %osicin -ue ocupa en la fila(
Cr % +i es el criterio por el -ue se desea ordenar(
sc% +i la lista ranking debe ser ordenada en criterio ascendente o descendente(
Lg % Longitud de 4isuali7acin(
Red % Aactor de redondeo(
'n los campos alfanum"ricos, se determina
"( % %osicin -ue ocupa en la fila(
Lg % Longitud de 4isuali7acin(
'n los campos num"ricos se determina
Unidad! moneda en la -ue est e5presado el resultado(
&tras opciones
Una )e% tenemos ya creada la query, al reali%ar el listado otras posibilidades se
nos ofrecen$
Llamar informe
Una query la podemos enla%ar con otros reports, otras querys,$$$ Si
estando en la pantalla inicial de modificacin de query nos
colocamos en Pasar a Asignar informe, Si lo que queremos es
conectar esta query con otra query, debemos informar el grupo de
usuarios y la query a la que queremos llamar$
Si lo que queremos hacer no es asignar una query sino otro tipo de
informe, apretamos la opcin de Otro tipo informe y nos saldr#n las
distintas opciones que tenemos$
Una query se puede comunicar con otros informes$ Si nos
colocamos en una l0nea del query final y apretamos la opcin de
Llamar informe, el query nos pasar# la informacion de la l0nea al
siguiente informe que llamemos, de manera que si el informe
llamado tiene una pantalla de seleccin con campos que se
)isuali%an en la query, los )alores se4alados se traspasar#n de un
informe a otro ,drill.do1n-$
*os diferentes informes a los que podemos llamar son
'ortafolio de informes
A continuacin deberemos informar el informe al que
queremos acceder a tra)"s de la query$
(n)esti%aciones
Debemos informar la clase de aplicacin a la que )a
destinado el query$ Aqu0 tenemos la opcin de
comunicar la query con un informe del report 1riter
entre otros ,tambi"n con informes de bienes
inmuebles,$$$-$ 'sta opcin la podemos hacer desde
aqu0 o directamente desde el punto 6$
(nformes report *riter
/omunicamos la query con un report 1riter$ Para ello
debemos informar el grupo de informes que
queremos e(ecutar$ 'n el caso de que slo hubiera un
report 1riter o report painter en ese grupo de
informes, en el caso de que e(ecutaramos esta
opcin, de la pantalla resultado de la query
pasar0amos a la del report painter71riter,
e(ecut#ndose directamente el report se4alado$
+ransacciones
2nformamos el cdigo de la transaccin y pasar# a
"sta los datos recogidos por la l0nea de la query
se4alada, y e(ecutar# la transaccin directamente$ Si
"sta da como resultado un informe, )isuali%aremos el
informe, si da de alta datos, pues los grabar#, etc$
(nforme A,A'-.
2nformamos el nombre de un report y "ste, al igual
que la transaccin, se e(ecutar# con los datos que le
en)iamos desde el query$ !anto en el caso de
transacciones como en el de 2nformes de A3AP78 hay
que )igilar que se pasen todos los par#metros
necesarios, sino se nos e(ecutar#n de forma errnea$
A,A'-./Query
De una query podemos pasar a otra query de
diferente grupo de usuarios, simplemente indicando
el nombre el grupo de usuarios y el nombre del query$
0odi%o
3na de las 4enta2as de /acer un Query es -ue de forma automtica tienes el cdigo fuente del
programa1 con lo cual1 con unas pe-ueEas modificaciones podemos disponer de 8l( <o obstante1
su compli2idad es tan endiablada -ue meterse en su cdigo resulta una batalla perdida(