Vous êtes sur la page 1sur 5

Ejercicios Programacin para WF (I)

Objeto BOR (Business Object Repository):


1. Entra en la Transaccin SU01 (Actualizacin Usuario) con tu usuario y ponle tu
direccin de correo electrnico en el campo Correo elec. del bloque Comunicacin
de la pestaa Direccin.
2. OBJETO BOR: Entra en la Transaccin SWO1 (Business Object Builder) y crea tu primer
Objeto BOR con el nombre Z_BOR_XX, donde XX sea el nmero de tu usuario:

3. CAMPO CLAVE: Crea un campo clave en el objeto BOR de tipo EKKO-EBELN (Nmero
del documento de compras).
4. Cambia el status de liberacin del objeto, desde el men superior Tratar->Modificar
status de liberacin->Tipo de objeto->En implementado. Verifica que el status tanto
del objeto BOR como de la clave cambian de modelado a implementado.
5. ATRIBUTO: Crea una atributo simple para obtener el nombre de la empresa a la que
pertenece el nmero del documento de compras de la clave de nuestro objeto. El tipo
del atributo es LFA1-NAME1. Una vez creado, ir al programa para definir la lgica con
la que se obtendr su valor al instanciar el objeto BOR con un nmero de documento
de compras. Si elegimos que se autogenere el cdigo de forma automtica, debemos
revisarlo para verificar que obtiene el nombre de la empresa de forma correcta: campo
LFA1-NAME1 donde el LFA1-LIFNR = EKKO-LIFNR.
Para comprobar lo creado hasta el momento, guarda, verifica y genera tu objeto BOR.
A continuacin, ejectalo instancindolo con el nmero de documento de compras
3000000004, cuya empresa 0000005550 tiene como nombre IDES Consumer
Products.
6. MTODO: Crea un mtodo que reciba por parmetro de entrada el nombre de un
usuario y devuelva su correo electrnico en un parmetro de salida de tipo ADR6-
SMTP_ADDR. Para obtener la direccin de correo electrnico lo haremos del siguiente
modo: seleccionar USR21-PERSNUMBER (Nmero de persona) y USR21-ADDRNUMBER
(N direccin) de la tabla USR21 para el usuario recibido (USR21-BNAME = usuario).
Seleccionar el correo electrnico ADR6-SMTP_ADDR (Direccin de correo electrnico)
para el ADDRNUMBER = USR21-ADDRNUMBER y el PERSNUMBER = USR21-
PERSNUMBER recuperados anteriormente.
7. MTODO: Crea un mtodo que sirva para recuperar las direcciones de correo
electrnico de los usuarios de todos los alumnos y los devuelva en un parmetro de
varias lneas (estructura) de tipo ADR6-SMTP_ADDR. Para obtener las direcciones de
correo electrnico lo haremos del siguiente modo: seleccionar el listado de los
usuarios SAP de los alumnos de la tabla ZLISTADO_USR, con ellos seleccionar USR21-
PERSNUMBER (Nmero de persona) y USR21-ADDRNUMBER (N direccin) a la tabla
USR21 para cada usuario (USR21-BNAME = usuario). Seleccionar el correo electrnico
ADR6-SMTP_ADDR (Direccin de correo electrnico) para cada ADDRNUMBER =
USR21-ADDRNUMBER y PERSNUMBER = USR21-PERSNUMBER recuperados
anteriormente.
8. EVENTO: Crea un evento en tu objeto BOR que sirva para desencadenar una ejecucin
del flujo de tu WorkFlow cuando dicho evento sea disparado.

Modelo de WorkFlow:
1. Entra en la Transaccin PFTC y crea un nuevo modelo de WorkFlow asignndole la sigla
Z_WF_XX donde XX sea el nmero de tu usuario. Ponle una denominacin, un texto de
work tem (precedido de tu nombre de usuario ALUMNOXX:), defnele un parmetro
de entrada en el container del tipo de datos de tu objeto BOR y establcele como
evento desencadenante el evento que le creaste a tu objeto BOR.
Nota: No te olvides de activar el evento para que tu WorkFlow quede a la escucha de
que dicho evento sea disparado.
2. Ahora, antes de entrar a implementar tu modelo de WorkFlow, crea una tarea
estndar desde la Transaccin PFTC que llame al primer mtodo que has
implementado en tu objeto BOR que recupera el correo electrnico de un alumno.
Para ello, establcele una sigla a la tarea con el nombre Z_TS_XX donde XX sea el
nmero de tu usuario. Ponle una denominacin, un texto de work tem, marca el flag
de Ejecucin en proceso de fondo, defnele un parmetro de entrada en el container
del tipo de datod USR21-BNAME y un parmetro de salida en el container del tipo de
datos ADR6-SMTP_ADDR que almacene el correo recuperad. Una vez definidos los
parmetros en el container, debes mapear los parmetros de la propia tarea con los
parmetros del mtodo que ejecuta la misma, lo que comnmente se denomina
binding de parmetros.
3. Una vez que tengas creada la Tarea Estndar y definido sin errores tu modelo de
WorkFlow, accede a la implementacin del modelo a travs del botn WorkFlow
Builder en la PFTC bien a travs de la Transaccin SWDD. Crea un primer paso de
tipo Actividad que ejecute tu Tarea Estndar creada en el ejercicio anterior y define
el flujo de datos (binding) entre el paso del WorkFlow y la tarea. Para esto ltimo, ser
necesario que crees un elemento de nombre CORREO en el container del WF de tipo
de datos ADR6-SMTP_ADDR para recoger el resultado del correo que nos devolver la
Tarea Estndar. En el parmetro de entrada P_USUARIO establcele el elemento
estndar del container _WF_INITIATOR para que tome el usuario que lance el
WorkFlow.
4. A continuacin en el flujo de tu Modelo de WorkFlow, crea un paso de tipo
Condicin que valide que el parmetro CORREO no vaya vaco.
5. Crea en la rama en la que el parmetro CORREOS vaya vaco un paso de tipo Control
de proceso cuya funcin sea finalizar el WorkFlow, ya que no se han obtenido
destinatarios de correos.
6. Crea en la rama en la que el parmetro CORREO vaya relleno un paso de tipo Enviar
correo electrnico y defnele como destinatario el parmetro CORREO de tu
container. Define el asunto y cuerpo del correo a enviar usando como variables
elementos del container como el documento de compras y nombre de la empresa. En
este caso nos generar automticamente una nueva Tarea Estndar para este paso a la
que le asignars la sigla Z_TS_XX donde XX sea el nmero de tu usuario.
Nota: Antepn tu nombre de usuario en el asunto del correo para una fcil localizacin
futura.
7. Tras el envo del correo, crea un paso de tipo Decisin del usuario definindole un
ttulo con una variable con el nmero del documento de compras y pon como
responsable receptor de la decisin al usuario que lance el WorkFlow con la expresin
&_WF_INITIATOR&. Aade las alternativas de decisin Aprobar y Rechazar.
8. Copia el bloque (paso) creado en el ejercicio 5 de tipo Control de proceso y pgalo
en la rama de Rechazo del paso de tipo Decisin del usuario.
9. Es el momento de probar una primera ejecucin de tu WorkFlow. Para ello, depralo,
actvalo y ejectalo (F8) indicndole como parmetro de entrada el documento de
compras nmero 3000000004. Para ver el flujo y log de tu ejecucin, ve a la
transaccin SWIA. Comprueba el envo de correos en la transaccin SOST. Verifica la
recepcin de la tarea de decisin en tu bandeja de entrada de tu WorkPlace y procede
a la aprobacin o rechazo de la misma.

Nota: Recuerda cambiar el status de liberacin del modelo de WorkFlow y de todas las Tareas
Estndar que hayas creado avanzndolas por el flujo:
No definido Modelado Implementado Liberado


Ejercicios no guiados:
1. Ampla tu modelo de WorkFlow aadindole un segundo nivel de aprobacin que
determine los responsables asignados de la aprobacin a travs de una regla de
responsables basada en roles y a cuyos responsables se les realice previamente el
envo de un correo de aviso de que tiene una tarea pendiente de aprobar.
Para llevar a cabo el ejercicio, necesitaras crear una regla de responsables a travs de
la Transaccin PFAC. Asgnale la sigla Z_AC_XX donde XX sea el nmero de tu usuario,
una descripcin y el tipo Determinacin Responsable: Competencias. Crea un
parmetro ALUMNOS en el container de la regla de tipo de datos CHAR01 que sea
obligatorio y que servir para devolver como responsables los alumnos pares los
impares. Por ltimo, en la pestaa Responsabilid. crea 2 competencias (PARES
[ALUMNOS=P] e IMPARES [ALUMNOS=I]) e inserta los alumnos pertinentes en cada
caso.
Intenta realizar este ejercicio sin mirar los pasos guiados que se detallan a continuacin
por si encuentras demasiada dificultad. Pasos guiados:
Ahora, antes de entrar a implementar tu modelo de WorkFlow, crea una tarea
estndar desde la Transaccin PFTC que llame al mtodo que has implementado
anteriormente en tu objeto BOR para recuperar los correos electrnicos de los
diferentes alumnos. Para ello, establcele una sigla a la tarea con el nombre
Z_TS_XX donde XX sea el nmero de tu usuario. Ponle una denominacin, un texto
de work tem, marca el flag de Ejecucin en proceso de fondo, defnele un
parmetro de salida en el container del tipo de datos ADR6-SMTP_ADDR que
soporte varias lneas para que funcione como tabla y pueda almacenar todos los
correos recuperados. Una vez definidos los parmetros en el container, debes
mapear los parmetros de la propia tarea con los parmetros del mtodo que
ejecuta la misma, lo que comnmente se denomina binding de parmetros.
Una vez que tengas creada la Tarea Estndar y definido sin errores tu modelo de
WorkFlow, accede a la implementacin del modelo a travs del botn WorkFlow
Builder en la PFTC bien a travs de la Transaccin SWDD. Crea un primer paso
de tipo Actividad que ejecute tu Tarea Estndar creada en el ejercicio anterior y
define el flujo de datos (binding) entre el paso del WorkFlow y la tarea. Para esto
ltimo, ser necesario que crees un elemento de nombre CORREOS en el container
del WF de tipo de datos ADR6-SMTP_ADDR para recoger el resultado de correos
que nos devolver la Tarea Estndar.
A continuacin en el flujo de tu Modelo de WorkFlow, crea un paso de tipo
Condicin que valide que el parmetro CORREOS no vaya vaco.
Crea en la rama en la que el parmetro CORREOS vaya vaco un paso de tipo
Control de proceso cuya funcin sea finalizar el WorkFlow, ya que no se han
obtenido destinatarios de correos.
Crea en la rama en la que el parmetro CORREOS vaya relleno un paso de tipo
Enviar correo electrnico y defnele como destinatarios el parmetro CORREOS
de tu container. Define el asunto y cuerpo del correo a enviar usando como
variables elementos del container como el documento de compras y nombre de la
empresa. En este caso nos generar automticamente una nueva Tarea Estndar
para este paso a la que le asignars la sigla Z_TS_XX donde XX sea el nmero de tu
usuario.
Nota: Antepn tu nombre de usuario en el asunto del correo para una fcil
localizacin futura.
Tras el envo de los correos, crea un paso de tipo Decisin del usuario
definindole un ttulo con una variable con el nmero del documento de compras
y pon tu propio usuario como responsable receptor de la decisin. Aade las
alternativas de decisin Aprobar y Rechazar.
Copia el bloque (paso) creado en el ejercicio 5 de tipo Control de proceso y
pgalo en la rama de Rechazo del paso de tipo Decisin del usuario.
Es el momento de probar una primera ejecucin de tu WorkFlow. Para ello,
depralo, actvalo y ejectalo (F8) indicndole como parmetro de entrada el
documento de compras nmero 3000000004. Para ver el flujo y log de tu
ejecucin, ve a la transaccin SWIA. Comprueba el envo de correos en la
transaccin SOST. Verifica la recepcin de la tarea de decisin en tu bandeja de
entrada de tu WorkPlace y procede a la aprobacin o rechazo de la misma.