![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️SAP WorkFlow
SAP WorkFlow
![SAP WorkFlow SAP WorkFlow](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/477.jpg)
WORK FLOW
- Que es un Workflow
Es una herramienta que permite la implementación técnica de procesos de negocio complejos independientemente del tiempo y del lugar.
El flujo de trabajo es controlado y coordinado activamente por el sistema workflow. El control incluye la monitorización de pasos de trabajo individuales y el inicio de procesos para escalar las tareas que lleguen a su fecha de vencimiento.
El sistema workflow se integra completamente con las funciones de negocio del sistema R/3 a través de su Business Object Repository BOR en la transacción SWO1.
Adicionalmente el sistema Workflow permite su integración con la gestión de la organización, lo que permite relacionar personas o estructuras organizativas a las tareas del workflow.
Creación de un WorkflowA continuación se indican los pasos que se tienen que realizar para la creación de un workflow y comprede la siguiente arquitectura.
Definición e implementación del Business Object RepositoryLo primero que se tiene que hacer es la creación del BOR, que se realiza en la transacción SWO1.
- Vamos a la transacción SWO1
Conforme lo creamos sale de la siguiente forma.
Estado de un tipo de objeto
A continuación se indican los estados de un tipo de objeto:
- Modelado : En este estado el tipo de objeto no se puede instanciar, es decir no se pueden generar objetos de este tipo.
- Implementado : Solo para pruebas, uso interno o posiblemente inestable.
- Liberado : Liberado para ser utilizado por el cliente, solo se podrán realizar ampliaciones pero no modificar radicalmente el tipo.
- Obsoleto : El tipo de objeto ha sido reemplazado por otro.
A continuación vamos a indicar que el BOR está como tipo de objeto “Implementado” y luego vamos a Grabar y generar y luego en “Liberado”.
Desarrollo de un tipo de objeto campo claveA continuación lo que se tendrá que generar los campos claves del objeto que acabamos de crear.
A continuación grabaremos y generaremos el objeto, una vez grabado pondremos el campo clave primero en “Implementado” y luego en “Liberado”.
Desarrollo de un tipo de objeto atributoA continuación lo que se tendrá que generar los atributos del objeto que acabamos de crear.
Los atributos pueden ser o de base de datos o virtuales, en este ejemplo crearemos un atributo virtual.
Atributo virtualAl generar un atributo virtual el sistema no generará el código automáticamente pero si nos presentará donde debemos colocar el programa (entre las clausulas GET_PROPERTY y END_PROPERTY).
El atributo se crea mediante el programa (como una variable) y luego se coloca como resultado en el container del objeto mediante la macro SWC_SET_ELEMENT.
En el caso que el atributo virtual sea un objeto deberemos instanciar un objeto mediante la macro SWC_CREATE_OBJECT.
A continuación grabaremos y generaremos el objeto, una vez grabado pondremos el atributo primero en “Implementado” y luego en “Liberado”.
Ahora se tendrá que implementar el código del atributo.
get_property estado changing container.
SELECT SINGLE estado INTO object-estado
FROM zprocesowf
WHERE identificador EQ object-key-identificador.
swc_set_element container ‘estado’ object-estado.
end_property.
Los métodos son las actividades que podemos llevar a cabo sobre un objeto, pueden ser de dos tipos:
- Asincronos: El resultado siempre es enviado de vuelta al programa llamador en la forma de un evento
- Sincronos: El resultado es enviado directamente al programa que lo ejecuto.
Ambos tipos de métodos pueden recibir datos a través de parámetros (parámetros de importanción) .
A continuación grabaremos y generaremos el objeto, una vez grabado pondremos el método, primero en “Implementado” y luego en “Liberado”.
Después se tendrá que realizar la implementación del método.
begin_method cambiarestado changing container.
DATA: lv_identificador TYPE numc10,
lv_estado TYPE cms_re_dte_obj_cond.
DATA: ls_proceso TYPE zprocesowf.
swc_get_element container ‘IDENTIFICADOR’ lv_identificador.” Dato de entrada de la tarea
swc_get_element container ‘ESTADO’ lv_estado.” Dato de entrada de la tarea
UPDATE zprocesowf
SET estado = lv_estado
WHERE identificador = lv_identificador.
COMMIT WORK AND WAIT.
swc_set_element container ‘ESTADO’ lv_estado.” Dato de salida de la tarea.
end_method.” Cambiar estado
Después de realizar la implementación se tendrán que declarar los parámetros.
Desarrollo de un tipo de objeto eventoPara lanzar el workflow se tendrá que definir un evento de lanzamiento.
A continuación grabaremos y generaremos el objeto, una vez grabado pondremos el evento primero en “Implementado” y luego en “Liberado”.
Definición e implementación del WorkflowPara realizar la implementación del workflow vamos a la transacción PFTC,
- Datos del container
Lo primero que se tiene que hacer es incluir en el container el BOR que hemos creado.
- Datos básicos
- Workflow Builder
A continuación se definirá el proceso de negocio mediante el workflow builder y el evento desencadenante del workflow.
- Definición del evento desencadenante
Primero se tiene que crear una tarea en la Transacción PFTC para luego asociarla a una actividad del workflow.
Ahora se tiene que crear la actividad
Ponemos la tarea antes creada
Tarea de decisión de usuarioA continuación vamos hacer una tarea de decisión de usuario, para enviar una tarea al Workitem de un un usuario.
Después vamos a la transacción SE37, para crear la función que determinará el responsable
ACTOR_TAB LIKE SWHACTOR
AC_CONTAINER LIKE SWCONT
FUNCTION zwf_usuario_tarea.
*”———————————————————————-
*”*”Interfase local
*” TABLES
*” ACTOR_TAB STRUCTURE SWHACTOR
*” AC_CONTAINER STRUCTURE SWCONT
*”———————————————————————-
INCLUDE <cntain>.” Incluimos el container del BOR
DATA: lv_identificador TYPE numc10,
lv_estado TYPE cms_re_dte_obj_cond.
DATA: ls_log TYPE zlog_procesowf.
swc_get_element ac_container ‘IDENTIFICADOR’ lv_identificador.
swc_get_element ac_container ‘ESTADO’ lv_estado.
actor_tab-otype = ‘US’.
actor_tab-objid = sy-uname.
APPEND actor_tab.
actor_tab-otype = ‘US’.
actor_tab-objid = ‘AJIMENEZ’.
APPEND actor_tab.
ls_log-identificador = lv_identificador.
ls_log-estado = lv_estado.
CONCATENATE ‘US’ ‘AJIMENEZ’ INTO ls_log-usuario.
ls_log-fecha = sy-datum.
ls_log-hora = sy-uzeit.
INSERT zlog_procesowf FROM ls_log.
COMMIT WORK AND WAIT.
ENDFUNCTION
Después vamos a la transacción PFAC.
Creamos la actividad en el workflow
Se pone el número de la regla que acabamos de crear.
A continuación se pone la tarea que hemos creado
Cuando se lanza el workflow tiene que salir lo siguiente.
A continuación muestro como se ve el Worflow.
 
 
 
Sobre el autor
Publicación académica de Agustín Sebastián Van Dick, en su ámbito de estudios para el Carrera Consultor Basis NetWeaver.
Agustín Sebastián Van Dick
Profesión: Estudiante - Argentina - Legajo: QA56E
✒️Autor de: 38 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Presentación:
Actualmente soy estudiante de la carrera de lic. administración y, quiero formarme como consultor de sap.
Certificación Académica de Agustín Van