Query SAP (I): grupos de usuarios
DOMINGO, 28 DE MARZO DE 2010
inCompartir
Cmo puedo recuperar informacin almacenada en el sistema acerca de mis clientes?
Y acerca de mis proveedores? Y de mis ventas? En definitiva, cmo 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 informacin de la base de datos para generar
listados de informacin en tiempo real.
Es verdad que existen herramientas de programacin ABAP que ya nos permiten hacer
listados y recuperar informacin de las tablas de la base de datos. Sin embargo, con las
queries no tenemos necesidad de saber programar (aunque puede ser una ayuda) y hace
el proceso de construccin de listados una tarea ms rpida 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.
Definicin
usuarios
de
un
grupo
de
Un grupo de usuarios es el primer paso en la creacin de una query SAP. En cada grupo
asignamos los nombres de los usuarios que tendrn acceso final a la query que
generaremos. No es ms que una autorizacin para poder utilizar nuestra query a un
grupo ordenado de personas.
Por ejemplo, podemos determinar que las consultas o queries del mdulo SD slo las
podrn 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: botn 'Crear'.
Asignamos los usuarios: botn 'Asignar usuario y Infosets". Para permitir que un
usuario modifique las queries del grupo de usuarios debemos mantener marcado
el flag de autorizacin junto al nombre de usuario.
Guardamos.
Y ya hemos acabado el primer paso en la creacin de una query.
Query SAP (II): infosets
DOMINGO, 4 DE ABRIL DE 2010
inCompartir
El segundo paso en la creacin de una query es la definicin del infoset asociado. Los
infosets son vistas especiales de datos donde se agrupan todos los campos que se
utilizarn en una query. En un infoset enlazaremos diferentes tablas a travs de campos
comunes y seleccionaremos qu campos queremos que estn disponibles para nuestras
queries. A su vez, asignaremos el infoset a uno o ms 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 informacin 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 informacin de
pedidos de clientes en SAP se encuentra en la tabla VBAK. La informacin de las
cantidades solicitadas se encuentra en la tabla VBAP. Tambin debemos saber que
ambas tablas se relacionan entre s a travs del campo "documento de ventas" (VBAKVBELN / VBAP-VBELN). Ahora podemos empezar a construir nuestro infoset.
Entramos en la transaccin de infosets.
Herramientas / Utilidades / Query SAP / SQ02 - Infosets
Creamos un infoset, le damos una descripcin 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
slo sobre una tabla en exclusiva, sobre varias tablas, sobre una base de datos
lgica o incluso sobre datos externos. Hay que pensar bien qu opcin escoger
ya que una vez se ha creado ya no hay vuelta atrs. Por ejemplo, si escogemos
crear un infoset a travs de una tabla, si en el futuro decidimos aadir 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 tambin habra
que borrar antes la query. Personalmente, siempre creo las queries va unin de
tablas aunque en el momento que cree el infoset slo necesito informacin de
una de las dos. As me ahorro problemas en el futuro.
Creamos el enlace entre ambas tablas aadiendo la nueva tabla VBAP.
Automticamente, SAP nos propone las conexiones entre tablas. Sin embargo,
podis borrar el enlace y asociarlo a travs 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. Atencin, 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 atrs 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 vacos' con lo que
me crear dos carpetas, una para la tabla VBAK y otro para la VBAP sin ningn
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 nmero de
material SAP escribe una T. Eso significa que asociado a estos cdigos SAP
internamente tambin arrastra sus descripciones, por lo que no hay que hacer
ninguna seleccin hacia las tablas de descripciones del solicitante (KNA1) ni del
material (MAKT).
Adems, para complicarlo un poco ms voy a aadir un campo que no est en
ninguna de las tablas. Por ejemplo, si la posicin ha sido rechazada (lo que se
indica en SAP a travs del campo VBAP-ABGRU) le voy a dar la descripcin
'Posicin rechazada'. Esto slo lo podemos hacer mediante programacin ABAP,
una herramienta muy interesante que nos permiten los infosets.
Pasar a / Detalles
Creamos el campo adicional y le damos descripcin y tipo.
Escribimos el coding para el campo. Verificamos el cdigo 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 (tambin podramos arrastrarlo a uno de los grupos de campos que ya
tenemos).
Slo 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 travs de la transaccin SQ01 (ver el post anterior).
Pasar a / Asignacin a grupo de usuarios
Query SAP (III): crear una query
DOMINGO, 11 DE ABRIL DE 2010
inCompartir
Definicin de query
El tercer paso en la creacin de una query es, precisamente, la creacin de la query
propiamente dicha. Esto es un listado de informacin extrada de la base de datos. Para
ello es necesario que previamente hayamos creado el grupo de usuarios al que
permitiremos extraer la informacin. Asimismo, debemos haber creado el infoset donde
indicamos las tablas de informacin necesaria.
Crear una query consiste en generar una pantalla de seleccin de la informacin y una
disposicin (layout) de salida de toda esta documentacin.
Funcionalidad
Sigamos con el ejemplo. Creamos una query de informacin de ventas.
Entramos en la transaccin de queries.
Herramientas / Workbench ABAP / Utilidades / Query SAP / SQ01 - Queries
Podemos crear nuestra query bien en rea estndar 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 estndar). 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 ms rpido y ms fcil testear nuestra query si la
creamos directamente en el rea estndar. Para eso vamos a Entorno / mbitos
funcionales / rea estndar (especfico 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. Automticamente nos pedir
que la asignemos a un infoset (recordar el paso II). Evidentemente, asignaremos
el infoset que ya habamos creado previamente (SD_VENTAS).
En la siguiente pantalla, SAP nos pide una descripcin de la query. Podemos
tambin indicar la variante de la pantalla de seleccin que queremos que se
utilice por defecto al ejecutar la query. Esta variante la podemos crear cuando ya
hayamos generado nuestra query y aadirla aqu directamente (campo Variante
estndar). En esta pantalla tambin aparecen datos de 'Formato de salida'. Aqu
le podemos indicar a nuestra query cmo queremos que se muestre. Por defecto,
utilizamos el "List Viewer ABAP", es decir, el ALV tpico. Aunque SAP nos da
la posibilidad incluso de lanzar el resultado directamente hacia un Excel si as se
quiere (EXCEL).
Pasamos a 'Seleccin de grupos de campos'. Aqu debemos seleccionar todos
nuestros grupos de campos del infoset. O, si alguno de los grupos de campos no
los quisiramos utilizar en nuestra query, entonces simplemente no lo
seleccionamos.
En 'Lista bsica' 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 habamos seleccionado directamente en nuestro
infoset, s que nos aparecen dentro de los campos disponibles. Eso es
simplemente porque los campos de cdigo solicitante y nmero de material
siempre llevan asociadas sus descripciones por defecto.
En la pantalla de 'Selecciones' creamos nuestra pantalla de seleccin. Es decir,
los criterios a partir de los cuales buscaremos la informacin. Yo voy a marcar
los campos solicitante, material y documento de ventas.
'Lista bsica': aqu construimos la disposicin de salida donde indicamos qu
campos queremos que se muestren en el listado y en qu orden. Adems,
podemos tambin darle algn formato especial como colores, guiones de
separacin, etc. Yo voy a marcar todos los campos disponibles y adems 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.
Grabo.
As queda la pantalla de seleccin.
Y as el layout de salida.
A partir de aqu ya podemos utilizar la funcionalidad propia de los listados ALV como
descargar la informacin en Excel, hacer filtros, sumas, sumas parciales, etc.
ABAP en queries: programas
integrados
DOMINGO, 27 DE MARZO DE 2011
inCompartir
Siguiendo con una serie de artculos anteriores donde ya explicaba como
crearqueries e infosets voy a intentar mostrar otra manera realizar queries. En este caso
vamos a integrar programacin ABAP en queries SAP. Se trata de utilizar toda la
potencia que nos dan las presentaciones va query para mostrar informacin, pero
hacindolo sin utilizar los joins grficos de tablas.
En un principio, las queries SAP se entienden como una forma sencilla de extraer
informacin de la extensa base de datos de SAP. Para obtener esta informacin, la mejor
manera es utilizar la conexin grfica de tablas en nuestros infosets. Sin embargo, para
aquellos que ya tengan conocimientos sencillos de programacin ABAP, SAP provee
una herramienta de programacin integrada en infosets. Con ella, no necesitamos
utilizar ninguna conexin grfica, sino que podemos obtener informacin a travs de
sentenciasSQL 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 slo debemos concentrarnos en recuperar la
informacin. De la presentacin de sta ya se ocupa la query. Adems, nos da un
entorno organizado de listados ya que nos permite tener todas nuestras consultas bajo la
apariencia de la transaccin 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 mens de usuario o en mens de favoritos. Tambin nos da la posibilidad
de crear consultas de informacin impensables en un join simple de tablas creado
mediante la conexin grfica. 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 lnea de cabecera
para cada pedido y siguiendo a esta cabecera, toda la serie de posiciones del pedido.
Creamos el infoset marcando Obtencin 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 informacin. Este paso previo no lo explico pero tenis un ejemplo en
el siguiente enlace.
En este punto, los campos disponibles sern 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 botn que no habamos visto
hasta ahora. Este botn se llama Programa de lectura de datos y nos seala el
lugar a travs del que haremos nuestra programacin ABAP. As que lo
marcamos.
El editor ABAP que se nos abre consta de diversos eventos donde escribimos
nuestros comandos ABAP:
o Declaracin de variables.
o Pantalla de seleccin. Definimos el pedido de compras como parmetro
de seleccin en nuestra query. Podemos indicar una descripcin del
parmetro para que no aparezca el nombre de la variable al ejecutar la
query. Para ello tenemos que ir a la pestaa Delimit y haciendo doble
click sobre el parmetro cambiamos el texto de seleccin.
o Extraccin de datos.
o Salida de informacin.
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.
Cmo encontrar tablas de una
transaccin
LUNES, 2 DE JULIO DE 2012
inCompartir
Quisiera saber qu campos y tablas utiliza este programa... Tengo que encontrar las
tablas de la base de datos donde guarda la informacin esta transaccin... Son preguntas
que seguro que nos hemos hecho ms de una vez. Quiz, solamente para preparar una
query, quiz para utilizar la tabla en un listado o quiz para comparar la informacin en
SAP con la que tenemos en nuestros excels. Sea cual sea la razn, en este artculo voy a
enumerar varias formas de detectar los campos y las tablas que utilizan las transacciones
de SAP.
Imagen de benaball en pixabay
Datos tcnicos (F1-F9)
Es quizs, la forma ms rpida. Supone utilizar la ayuda propia de los campos de las
transaccin SAP directamente. Lo voy a mostrar en un ejemplo con la transaccin
VA02.
Llamamos a nuestra transaccin VA02
Nos situamos sobre el campo.
Apretamos la tecla F1.
Pulsamos el botn Datos tcnicos (F9 o icono del martillo).
Nos fijamos en los datos que aparecen a continuacin de Tabla y Nombre de campo ya
que contienen precisamente la informacin que buscamos, la tabla que almacena la
informacin del campo sobre el cual nos habamos posicionado. En este caso la tabla es
la VBAK y el campo es el VBELN.
Pero tambin tenemos que fijarnos en el valor que aparece a continuacin deClase
tabla. Si el valor que se indica es tabla transparente podemos estar seguros de que es
una tabla que almacena informacin, pero si se indica que laclase de tabla es
una estructura, entonces debemos seguir buscando para encontrar la tabla transparente
que contiene la informacin.
Ayudas de bsqueda o
matchcodes
Consiste en buscar las tablas a partir del matchcode asociado al campo de nuestra
transaccin. Por ejemplo, con la transaccin VF03 seguiramos estos pasos:
Nos posicionamos sobre el campo.
Seguimos los pasos del apartado anterior (F1-F9).
Buscamos el valor que aparece a continuacin de Ayuda de bsqueda. En este
caso encontramos que el valor es VMCF.
Hacemos doble click.
Como hay matchcodes incluidos seguimos haciendo doble click para navegar a
cualquiera de los matchcodes.
Hacemos doble click sobre el valor del apartado Mtodo de seleccin para llegar
finalmente a las tablas incluidas en el matchcode.
Include TOP de programa
Si sabemos leer el cdigo ABAP del programa podemos buscar los nombres de tablas
directamente sobre el cdigo.
Escribimos la transaccin. Por ejemplo, VF03
Seguimos los pasos del primer apartado (F1-F9).
Hacemos doble click sobre el nombre del programa para navegar hasta l.
Buscamos en el programa un include que seguramente acaba con las letras
_TOP.
Buscamos la sentencia TABLES. Tras esta sentencia encontraremos las tablas
que utiliza el programa.
A veces no existe ningn include que contenga las letras _TOP. En ese caso es suficiente
con hacer una bsqueda directa de la sentencia TABLES.
Trace SQL
Consiste en hacer una llamada a la transaccin ST05.
Herramientas / Workbench ABAP / Test / ST05 Trace SQL
Llamamos a la transaccin ST05
Marcamos activate trace.
En otro modo, llamamos a nuestra transaccin problemtica, en este caso
la MM02.
Volvemos a ST05 y marcamos deactivate trace.
Pulsamos Display Trace.
El listado que nos muestra la transaccin ST05 es el conjunto de tablas y llamadas que
hemos realizado cuando hemos ejecutado la transaccin MM02. A partir de aqu
debemos decidir cul de todas las tablas que nos muestra es la nuestra. Admito que esta
forma de buscar informacin es complicada ya que supone navegar entre la gran
cantidad de tablas que en una sola transaccin puede llegar a llamar SAP.
Listados de tablas
Utilizar alguno de los muchos listados que corren por internet con la informacin de
tablas que utiliza SAP. Podis utilizar un listado de tablas de este blog, uno
de mundosap, uno de la sdn, etc.
Referencia de utilizacin
Consiste en hacer las bsqueda de forma inversa. Hasta ahora empezbamos en una
transaccin para llegar a las tablas y campos incluidos en la transaccin. Aqu se trata de
empezar por un campo o tabla para llegar a la transaccin que los utiliza.
Herramientas / Workbench ABAP / Desarrollo / SE11 Diccionario ABAP
Escribimos la tabla de base de datos que queramos. Por ejemplo, la VBAK.
Pulsamos visualizar.
Marcamos el campo VBELN.
Vamos al men Utilidades / Referencia de utilizacin.
Marcamos utilizacin en programas.
Nos mostrar la lista de programas que utilizan ese campo de tabla. Si sabemos cul es
el nombre del programa podemos seguir profundizando hasta llegar a la transaccin.
Transporte de textos estndar
entre sistemas
MARTES, 1 DE OCTUBRE DE 2013
inCompartir1
En SAP la mayora de modificaciones realizadas sobre los entornos de
desarrollo se copian al sistema productivo mediante rdenes de transporte.
Sin embargo, existen objetos que no generan rdenes de transporte. Por
ejemplo, las numeraciones, los formularios SAPscript o los textos estndar.
Imagen propiedad de Geralt
Los textos estndar son textos fijos que creamos en SAP en, sobre todo,
formularios smartforms o sapscripts. Van a contener tantas lneas de
informacin como nosotros queramos.
1. Cmo crear un texto estndar
En este ejemplo voy a crear un texto de direccin.
Herramientas / Imprimir formularios / SAPscript / SO10 - Textos estndar
Entramos en la transaccin SO10
Damos nombre a nuestro texto, le asignamos el tipo direccin (ADRS)
e indicamos que vamos a crearlo en idioma espaol.
Pulsamos el botn 'Crear'.
Escribimos nuestro texto y guardamos.
2. Cmo
estndar
transportar
un
texto
Sin embargo, mientras realizamos todos los pasos nos habremos dado
cuenta que nuestro texto estndar no ha generado ninguna orden de
transporte. Por lo tanto, no lo podremos transportar automticamente. Para
transportarlo tenemos, sin embargo, otras opciones.
Utilizar el programa RSTXTRAN
Herramientas / Workbench ABAP / Desarrollo / SE38 - Editor ABAP
Ejecutamos el programa.
Rellenamos los datos que nos solicita en pantalla.
Seleccionamos nuestro texto y pulsamos 'intro'.
Ahora al pulsar el botn 'Pasar txt. a correc' SAP generar una orden
de transporte. Podemos seleccionar una que ya exista e incluir el
texto en esa orden o crear otra completamente nueva.
Utilizar la funcin grfica
sta es una funcionalidad obsoleta. Se utilizaba antiguamente para subir
imgenes a SAP como texto. Aunque para lo que nos ocupa an se puede
usar.
Herramientas / Imprimir formularios / Gestin / SE78 - Funcin grfica
Ejecutamos la transaccin.
Nos posicionamos sobre nuestro tipo de texto. En nuestro caso el tipo
'ADRS' de direccin.
Escribimos nuestro texto estndar y su idioma.
Pulsamos el botn 'Transportar'.
El sistema nos solicitar la creacin de una nueva orden de
transporte.
Crear la orden de transporte manualmente
La nota 65253 explica la forma de crear rdenes de transporte
manualmente para textos estndar en dos sencillos pasos.
Ejecutar la transaccin SE01.
Aadir bajo la tarea el objeto como TEXT, ZADRS_SIGNATURE, ADRS,
S.
Cmo crear una transaccin
LUNES, 15 DE SEPTIEMBRE DE 2014
inCompartir7
La transaccin es la unidad de trabajo para los usuarios de SAP. En general,
cada transaccin llama a un programa escrito en SAP y realiza una funcin
especfica dentro del ERP. Transacciones estndar existen muchas y ya se
han tratado previamente en el blog.
Transacciones en finanzas
Transacciones en logstica
sobre una imagen de niekverlaand
Sin embargo, en este caso vamos a definir los diferentes tipos de
transacciones que se pueden crear en SAP.
Herramientas / Workbench ABAP / Desarrollo / Otras herramientas / SE93 Transacciones
Transaccin de dilogo
Son transacciones aplicadas a programacin de dilogo o dynpros. Si
nuestra transaccin se compone de diferentes pantallas en una secuencia
determinada mediante la creacin de una transaccin de dilogo deberemos
indicar el programa principal y la primera pantalla o dynpro de la secuencia.
Creando la transaccin con los parmetros indicados podemos conseguir
crear una transaccin que sera rplica de la transaccin XD03 pues llama a
la primera pantalla del programa de visualizar datos maestros de cliente.
Pero cuidado porque eso no significa que sea funcional. Las transacciones
de dilogo se deben utilizar para nuestros programas de dilogo Z.
Transaccin de report
Un tipo de transaccin aplicado a programas de report o listados tpicos. En
este tipo de programas hay tpicamente una entrada de datos a travs de
una pantalla de seleccin, un proceso de datos interno y finalmente una
salida de informacin del resultado del proceso que suele ser en forma de
listado. Slo existe un programa asociado y no se crean dynpros o imgenes
adicionales.
En el ejemplo se ha creado una transaccin de report para listar stocks ya
que llama al mismo programa que la transaccin MB52, aunque en este
caso no es funcional. Para un tutorial detallado de cmo crear reports que
poder utilizar en transacciones de report es interesante revisar los
siguientes artculos.
Tutorial ABAP bsico (I): crear un report
Tutorial ABAP bsico (II): declaracin de datos
Tutorial ABAP bsico (III): pantallas de seleccin
Tutorial ABAP bsico (IV): recuperar datos
Tutorial ABAP bsico (V): hola mundo
Transaccin de variante
Transacciones especiales donde se pueden definir cmo van a mostrarse los
diferentes campos de otra transaccin. Podemos indicar qu campos
mostrar y qu campos no mosrar. Para crear una transaccin de variante
debemos indicar previamente la transaccin estndar de la cual vamos a
crear nueva transaccin; adems la transaccin a modificar debe permitir el
uso de transacciones de variantes pues no todas lo permiten; finalmente ha
de tener una variante previamente creada. Un ejemplo de cmo crear una
transaccin de variante lo tenis en un artculo anterior.
Simplificacin de pantallas con variantes de transaccin
Transaccin con parmetros
En una transaccin con parmetros se utilizan transacciones previas
(estndar o no) para crear una nueva transaccin. En este caso la
transaccin con parmetros permite asignar valores fijos a campos de la
pantalla inicial de la transaccin previa. Con ello se consigue lanzar la
transaccin previa siempre con la misma informacin fija. Es til cuando un
usuario debe introducir la misma informacin siempre para entrar en una
misma transaccin o cuando queremos crear vistas de tablas.
Para la creacin de vistas de tablas mediante transacciones con parmetros
puede ser interesante visitar el artculo
Navegacin en queries
DOMINGO, 19 DE JUNIO DE 2011
inCompartir
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 transaccin relacionada con ese
campo. Por ejemplo, si en la transaccin en la que estamos hay un campo con el cdigo
de un material, si hacemos doble click sobre ste SAP navega hacia la transaccin
del maestro de materiales de ese cdigo en concreto.
En otros artculos ya haba explicado cmo crear queries. En esta ocasin voy a ampliar
estos posts con esta sencilla funcionalidad de SAP, la navegacin.
Caso
Tenemos una query que nos permite listar posiciones de pedidos de ventadonde nos
muestra las posiciones de pedidos con el cdigo de material. Queremos que al hacer
doble click sobre un registro en concreto SAP nos muestre el stock disponible en
almacn de ese material y el pedido de ventas completo asociado Cmo lo hacemos?
Solucin
Modificamos nuestra query.
Herramientas / Workbench ABAP / Utilidades / Query SAP / SQ01 Queries
Vamos al men Pasar a / Asignacin del informe.
Indicamos que nuestro tipo de informe ser una transaccin. Igual que una
transaccin podramos indicar un report ABAP, una query, etc.
Introducimos el nombre de nuestra transaccin (VA03 para visualizar el pedido
de ventas completo)
Repetimos de nuevo para la otra transaccin (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 opcin de escoger entre navegar a la transaccin VA03 o a la MB52.
En el siguiente vdeo explicativo se muestran todos los pasos:
La navegacin se realiza al hacer doble click sobre cualquier punto de un registro,
independientemente del campo sobre el que se pulse. Entonce, cmo determina SAP
cul es el campo que tiene que utilizar para navegar? Pues lo hace en base al ID del
parmetro. SAP recorre todos los campos del registro y enlaza el ID del registro
correcto con el ID del parmetro de entrada de la transaccin. Entonces para verificar
que la navegacin funcionar correctamente debemos determinar cul es el ID del
parmetro. Eso lo hacemos mediante los siguientes pasos:
Vamos al campo de entrada de nuestra transaccin, por ejemplo el de la VA03
Logstica / Comercial / Ventas / Pedido / VA03 Visualizar
Pulsamos F1.
Marcamos Datos tcnicos o el icono Martillo.
Verificamos que existe un valor dentro de ID parmetro.
Hacemos lo mismo para el campo de nuestra query, pero desde la transaccin 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 pestaa propiedades adicionales el valor del ID del parmetro debera ser
el mismo que hemos obtenido anteriormente.
As podemos estar seguros que la navegacin se har correctamente desde nuestra
query.
Crear estrategias de liberacin en pedidos de compras
Publicado el 26 febrero, 2011de Roberto Espinosa
17 Votes
En muchas organizaciones, la gestin de las compras esta restringida por
importes, de forma que cuando se superan unos determinados valores de
compra, se requieren una o varias aprobaciones de personas diferentes a la que
esta gestionando la compra. Esta persona o personas son los que realmente
estan autorizando la compra.
Sap nos permite por estandar configurar estas autorizaciones a travs de
las estrategias de liberacin. En nuestro ejemplo, las vamos a realizar a
nivel de pedido de compra (Importe total del pedido), solo en una organizacin
de compras. Sap tambin lo permite a nivel de solicitudes de pedido.
La estrategia de liberacin a definir va a ser la siguiente:
Importe de la compra
Liberador
Observaciones
Tambin podran liberar
el supervisor de compras
Inferior a 1000 Euros
Comprador
o el controller
Tambin podra liberar
el controller. Aunque
libere el comprador,
siempre se va a quedar
bloqueado hasta que
liberen uno de los otros
Entre 1000 y 3000 Euros
Supervisor de Compras
dos.
Mayor o igual a 3000
Supervisor de Compras
Hasta que no libera el
Euros
(1er nivel)
supervisor, no puede
liberar el controller (es
una especie de visado).El
comprador no puede
Controller (2 nivel)
liberar nada.
Veamos los pasos necesarios para configurar esta funcionalidad en el sistema:
Ruta de customizing: Gestion de Materiales > Compras > Pedido >
Procedimiento de liberacion para pedidos.
1. Creacin de caractersticas.
A travs de las caractersticas definimos los criterios que vamos a poder utilizar
posteriormente para hacer la clasificacin de las liberaciones. Aqu definiremos
aquellos campos del pedido para los que luego vamos a definir una condicin
que determina en que estado se quedan los pedidos y quien va a poder
liberarlos.
Para crear una caracterstica, indicaremos un nombre (es recomendable que
empiezen todas por Z_), y a continuacin una descripcin, y un campo de
referencia (en la pestaa datos adicionales). En la tabla CEKKO (Comunicacin
determinacin-estrategia de liber.docum.comp.) tenemos los campos ms
habituales del pedido que se pueden utilizar en las estrategias de liberacin.
En nuestro ejemplo, vamos a crear tres caractersticas:
Clase de pedido: Z_EKKO_BSART. Por si tuvieramos varios tipos de
documentos de compras y solo quisieramos restringir para una en concreto.
Organizacin de compras: Z_EKKO_EKORG. En cada organizacin de compras
podemos tener unos criterios de importes diferentes, por ejemplo.
Valor neto de pedido: Z_EKKO_GNETW. Con esta caractersticas vamos a
controlar los importes totales de los pedidos.
2. Creacin de clase (agrupacin de caractersticas).
La clase es el agrupador de caractersticas que luego vamos a asignar a los
grupos de liberacin. Todo las caractersticas que incluyamos en la clase estarn
disponibles en la definicin de las estrategia de liberacin. La categora de la
clase siempre ha de ser 032 Estrategia de liberacin.
3. Creacin de grupos de liberacin.
Los grupos de liberacin son el elemento sobre el que vamos a definir las
diferentes estrategias de liberacin. Es el elemento bsico a partir del cual
vamos a ir definiendo el resto. En el grupo de liberacin se indica la Clase que
hemos definido antes, y que determina, como hemos indicado, que campos del
pedido tenemos disponible para nuestra clasificacin y determinacin de los
procedimientos de liberacin.
4.Creacin de cdigos de liberacin.
Para cada grupo de liberacin, crearemos los cdigos que representan los
diferentes roles o personas que van a intervenir en el procedimiento de
liberacin. Es un cdigo de 2 caracteres, con una descripcin asociada.
5. Creacin de indicadores de liberacin.
Los indicadores de liberacin son independientes de los grupos de liberacin. Es
una lista de los diferentes estados en los que vamos a poder tener los pedidos en
el proceso de liberacin.
Adems, se determina cual o cuales de los indicadores de liberacin que
suponen la liberacin del pedido. Adems, con la columna Modific. podemos
indicar como afecta una modificacin en el pedido a una liberacin ya efectuada
(en nuestra caso, he indicado el valor 4, que determina que se tengan que volver
a realizar las liberaciones en el caso de cambio (este valor funciona en
combinacin con el campo Modif. valor en %, que determina el porcentaje de
aumento del importe del pedido para volver a tener que liberar. Si lo dejamos en
blanco, ser siempre que haya un cambio en el pedido).
NOTA IMPORTANTE: Un pedido no se va a poder imprimir ni va a
poder recibir recepciones de mercanca hasta que sea liberado.
6. Definicin de estrategias de liberacin.
Esta es la ltima fase en la configuracin de las estrategias de liberacin. En
nuestro caso, para el grupo de liberacin Z1 vamos a definir 3 estrategas, segn
los importes que hemos apuntado anteriormente.
Compras inferiores a 1000 Euros.
Para ello creamos la estrategia de liberacin 01 Compras < 1000. En la pantalla
principal indicamos los cdigos de liberacin que participan en la estrategia.
En la seccin Estados liberacin indicamos el status del pedido segn las
liberaciones efectuadas sobre l. En nuestro caso:
Si no hay ninguna liberacin (campos Z1, Z2 y Z3 en blanco): el pedido se queda
en estado B Bloqueo General.
En el resto de caso (liberacin de cualquier de los tres posibles liberadores): el
pedido se queda en estado L Liberado y listo para ser gestionado.
En la seccin Clasificacin determinamos los criterios que aplican a esta
estrategia de liberacin: organizacin de compras 1003, clase de pedido NB e
importe de la compra inferior a 1000 Euros (tal y como vemos en la imagen
superior).
Compras entre 1000 euros y 3000 Euros.
En este caso, creamos la estrategia 02 para los importes entre 1000 y 3000
euros. Basicamente, es similar la estrategia a la definida anteriormente. En este
caso, si no ha liberado nadie o el que libera es el comprador, el pedido se queda
en el estado Bloqueo Supervisor Compras. El estado no cambia a liberado hasta
que libera el Supervisor o el Controller.
Compras mayores o iguales a 3000 Euros.
Esta es la ultima estrategia dentro del procedimiento de liberacin definido. En
este caso, ademas hemos definido relaciones de dependencia entre los
diferentes cdigos de liberacin. En este caso, hasta que no haya liberado el
Supervisor de Compras (Cdigo de liberacin Z2), no va apoder liberar el
Controller (Cdigo de liberacin Z3). Esta dependencia la definimos en la
seccin Condiciones liberacin (que en los dos casos anteriores hemos dejado a
blanco).
El funcionamiento es sencillo. En la parte de las
filas tenemos el cdigo del liberacin. Para cada uno de ellos, tenemos en la
parte de las columnas todos los cdigos de liberacin restantes. Los que estan
marcados indican que son requisito para que el cdigo de la fila pueda liberar.
Por ejemplo, para el cdigo Z3 Controller, se requiere una liberacin previa del
Z2 (Supervisor Compras), pues aparece marcada la casilla del cruce del Z3 con
el Z2.
Los estados de
liberacin van cambiando. Cuando no hay ninguna liberacin, se queda en el
estado Bloqueo Supervisor Compras. Cuando libera el Supervisor, pasa al estado
Bloqueo Gerencia. Cuando libera el controller, pasa al estado liberado. Adems,
aqu no hay liberacin si solo liberara el Controller, debido a la condicin
obligatoria que hemos fijado con las condiciones de liberacin.
Una vez concluida la configuracin, podemos verificar que la parametrizacin
este correcta con la opcin Verificar estrategias de liberacin (transaccin
OMGSCK).
NOTA IMPORTANTES: AUTORIZACIONES REQUERIDAS POR LOS USUARIOS
PARA LIBERAR.
A nivel de usuarios, se han de configurar los perfiles de autorizacin (Roles),
incluyendo elobjeto de autorizacin M_EINK_FRG. En el indicamos los
grupos de liberacin, y los cdigos de liberacin que posee el usuario, y que le
van a permitir realizar las liberaciones oportunas segn las estrategas de
liberacin definidas. Por ejemplo, para nuestro usuario comprador, le
pondremos la autorizacin M_EINK_FRG con el grupo de liberacin Z1, cdigo
de liberacin Z1. El supervisor tendra el valor Z2 en este ltimo valor y el
controller el valor Z3. La autorizacin es la que determina realmente lo
que pueden hacer o no los usuarios.
La liberacin de los pedidos se realiza en una transaccin diferente a la de
creacin/modificacin de pedidos. Lo realizaramos desde la transaccin
ME29N para la liberacin individual y desde la ME28 para la validacin
colectiva o por lotes.
EJEMPLOS.
Ahora ya podramos registrar los pedidos y verificar como van variando las
estrategias de liberacin segn los importes introducidos. En un primer
ejemplo, introducimos un pedido con un importe de 90 Euros. Tal y como
vemos en la imagen, en la pestaa Estrategia de Liberacin, a nivel de cabecera
de pedido, nos aparece con un status (indicador de liberacin) de Bloqueo
General, y el sistema nos informa que estamos en el grupo de liberacin Z1, con
la estrategia de liberacin 01 Compras < 1000.
A continuacin, el usuario con la autorizacin de comprador libera el pedido a
travs de la transaccin ME29N. El status pasa a Liberado. Aparece igualmente
marcado el cdigo de liberacin de quien ha realizado la liberacin.
En un segundo ejemplo, utilizamos un pedido con importe superior a 3000
euros. Podemos ver en este caso que se ha creado con status S Bloqueo
Supervisor de Compras, y el sistema ha determina la estrategia de liberacin 03
Compras >= 3000. En este caso, solo nos aparece como posible liberador el
cdigo Z2.
Una vez el supervisor libera desde la ME29N, el status cambia a G Bloqueo
Gerencia, y ya aparece para el Z3 la posiblida de realizar la segunda liberacin
que va a liberar completamente el pedido.
Esto es solo un ejemplo de todas las posibilidades y posibles combinaciones que
podemos configurar en el sistema para la realizacin de estrategias de liberacin
complejas.
ACTUALIZACION 20.01.2013.
Para el caso de que necesiteis incluir nuevos campos para el tratamiento de las
estrategias de liberacion, puede ser necesario utilizar la exit M06E0004
Modif.estructura comunicacin p.liberacin docs.compras. Para ese caso,
podeis guiaros con este interesante documento que habla sobre ello extraido en
el SCN de Sap: Release Strategy Enhancement in Purchase Order. Gracias a
Zafar A.Valsal por su aportacin.