miércoles, 29 de junio de 2016

DUMP CONVT_NO_NUMBER

REPORT  zscript.
DATAc_num TYPE char3 VALUE '1,2'.
DATAamount TYPE ekpo-zzpre_asig,
      lv_pos TYPE i,
      lv_char TYPE char15.


END-OF-SELECTION.

* value definition is fixed at 2 decimal places
  REPLACE ALL OCCURRENCES OF '.' IN c_num WITH ' '.
  REPLACE ALL OCCURRENCES OF ',' IN c_num WITH '.'.
  CONDENSE c_num NO-GAPS.
  MOVE c_num TO amount.
  WRITE:/ amount.

miércoles, 15 de junio de 2016

Tablas de índice para evitar buscar en BSEG

Hemos visto a menudo muchos hilos abiertos sobre problemas en la tabla BSEG. Se invierte bastante tiempo en buscar datos directamente en la BSEG si no tenemos los campos clave apropiados. Aqui está la solución para eso. Dado que no es posible crear un índice secundario para tablas de clúster, SAP trajo el nuevo concepto llamado tablas ÍNDICE. 
Todos los documentos contables (abiertos y cerrados) se almacenan en la BKPF y BSEG y consultar estas tablas toma demasiado tiempo. Para ello SAP ha creado las tablas ÍNDICE para la BSEG que se actualizan con datos específicos basados en la clasificación y son más rapidos que la BSEG.
 Por ejemplo: documentos de clientes, documentos de vendedores, etc.

Tablas índices:
BSID - Contabilidad: índice secundario para Clientes (items abiertos).
BSAD - Contabilidad: índice secundario para Clientes (items borrados).
BSIK - Contabilidad: índice secundario para Vendedores (items abiertos).
BSAK - Contabilidad: índice secundario para Vendedores (items borrados).
BSIS - Contabilidad: índice secundario para Cuentas de Mayor (items abiertos).
BSAS - Contabilidad: índice secundario para Cuentas de Mayor (items borrados).

¿Cómo recordar estas tablas?
Recuerda BS*
 3ª letra indica si el item está abierto o cerrado.
I - para items abiertos.
A - para items cerrados.
4ª letra indica la clasificación.
D - Para clientes.
K - Para vendedores.
S - Para cuentas de mayor.

 Estas tablas son algunos ejemplos que se requieren sobre todo en escenarios de tiempo real. Hay unas pocas más de tablas ÍNDICE como estas.

martes, 14 de junio de 2016

Definir customizing para asignar ID de Workflow a un mandante

Cuando creas una tarea o incluso un workflow necesitas definir un ID en el mandante (si no está ya definido) para que todos los objetos comiencen con ese ID. La tabla que contiene estos datos es la T78NR. 

Para ello ejecutamos la SPRO:
Hacemos click en Nuevo he introducimos el prefijo.

Guardar y ya todos nuestros objetos de workflow se almacenarán con esta secuencia letras(WS para workflows, TS para tareas)+prefijo(991)+número. 


Desarrollar una aplicación simple usando los pasos "Decisión de usuario" y "Mail"

Terminología básica usada en workflow:

La deficinión de workflow es el conjunto de reglas que determina la ruta que sigue el proceso. Por ejemplo, cómo se procesa una solicitud de pedido, desde el principio hasta la creación del pedido. 

Una instancia de workflow, que a menudo se refiere simplemente al workflow, es una única ejecución del workflow. Por ejemplo, el procesamiento de una única solicitud de pedido para ordenadores.

Las tareas son los pasos en el proceso, que se tienen que ejecutar por alguien o automáticamente por el software. Por ejemplo, para validar la disponibilidad de repuesto de ordenadores en la compañía.

Los agentes son las personas que procesan las tareas (vía work items). Por ejemplo, el solicitante y un miembro del departamento de compras.

El container es el lugar donde se colecta todos los datos que se usan en el workflow.

El binding es el conjunto de reglas que define qué datos se pasan a qué parte del proceso.


Construir una aplicación simple de workflow

La herramienta central para la creación, visualización y procesamiento de un workflow es el workflow builder (transacción SWDD). Con el workflow builder puedes crear todos los componentes de un workflow, incluyendo todos los containers que necesites para conseguir los datos de un paso a otro. 

Generalmente, la mayoría de workflows se inician por un evento (por ejemplo, cuando se crea un material o cuando cuando llega una nueva solicitud de pedido). Defines qué datos necesitas pasar al workflow para este evento vía binding.

Sin embargo también puedes iniciar cualquier workflow directamente. Vamos a crear un workflow simple e iniciar el workflow directamente, usando las herramientas de test.

LLama a la transacción SWDD. Cuando se llama al workflow builder por primera vez, aparece una nueva creación de workflow. En cuyo caso puedes optar a crear un nuevo workflow pulsando "Crear workflow nuevo" (ctrl + shft + F5). Aparecerá la siguiente pantalla:




La pantalla inicial de workflow tiene las siguentes partes:

  • El principio de la definición del workflow, indicado por 
  • El fin de la definición del workflow, indicado por 
  • El área en la que insertas la nueva definición del workflow se indica por
Selecciona el paso indeterminado y selecciona "Crear..." o doble click en el paso indeterminado. Ahora entre los diferentes pasos elige la Decisión de Usuario haciendo doble click sobre él.
Ahora introduce el título de la decisión "Por favor toma una decisión". Introduce también los textos de decisión como Aprobar y Rechazar. Al pulsar enter, se cargan los valores por defecto de los textos pero puedes especificar tus propios nombres si quieres. Ahora necesitamos seleccionar el agente. El agente es la persona a quien se necesita mandar el work item... Dado que estamos empezando, podríamos hardcodear el nombre de usuario. Selecciona el Usuario de la lista e introduce el nombre de usuario a quien se le envía el work item. En general, este tipo de asignación de agente no se hace. Los agentes generalmente se asignan usando expresiones, reglas de asignación de agentes u objetos de organización (job, posición, etc).

Ahora selecciona  Tomar y al gráfico. Aparecerá la siguiente pantalla:



Ahora necesitamos incluir un paso de mail para enviárselo al solicitante. Ahora selecciona la linea "Aceptar" y haz click derecho. Se muestran diferentes opciones en el menú contextual. Selecciona Crear.

Ahora selecciona "Enviar correo electrónico" de la lista.
Ahora introduce el asunto y el cuerpo del mensaje del mail a enviar.

No cambies el contenido. Nuestro mail está destinado a las personas que lanzaron este workflow. &_WF_INITIATOR& contiene el valor de quien ejecutó el workflow. Dado que esto es un objeto test, estamos usando &_WF_INITIATOR&. Pero no usaríamos esta variable en escenarios reales. Hablaremos sobre esto en otros artículos.

Ahora selecciona  Tomar y al gráfico.
Aparece un popup pidiendo la abreviación y el nombre de esta tarea. Introduce lo mismo y presiona enter. (Si te da el error 5W023, lee el artículo Definir customizing para asignar ID de Workflow a un mandante).

Introduce el paquete local y pulsa enter.
Sigue los pasos del 5 hasta el 9 "Rechazar". Tendremos la siguiente imagen:
Pulsa Guardar para guardar la aplicación workflow. Necesitas introducir una abreviación y un nombre para tu workflow. Puedes cambiar cualquiera de estas cosas en cualquier punto. Después de guardar, se asigna un número empezando por WS, así:
Para ejecutar el workflow, actívalo usando el botón de activar.
Prueba el workflow pulsado verificar. Aparecerá la siguiente imagen:

Ahora elige Ejecutar para iniciar el workflow. Aparecerá la siguiente pantalla:


Elige entre aprobar, rechazar o mantener el work item en su inbox y tomar la decisión más adelante. Si eliges Aprobar o rechazar se enviará un mail al solicitante con el estatus de su solcitud.
En la transacción SBWP podremos ver los work item de nuestra bandeja:

Por Suresh Kumar Parvathaneni.
SAPTechnical

domingo, 12 de junio de 2016

Diferencia entre borrado lógico y físico de un work item en workflow SAP

Para entender de una manera simple, la principal diferencia entre el borrado lógico y físico es la misma diferencia entre las funcionalidades SUPRIMIR y SHIFT+SUPRIMIR respectivamente en el entorno de windows. 

Borrado lógico: Cuando ejecutas el borrado lógico, ´los work item se borrarán del inbox del agente pero no se borrará permanentemente del sistema.

La principal ventaja del borrado lógico es que podemos rastrear el agente (Responsable / Posible) de quien proviene  / quien ha ejecutado el borrado y podemos recuperar el work item borrado.

Después de borrar el work item lógicamente el estatus será CANCELLED.

He encontrado tres maneras posibles de borrar un work item lógicamente.

Primera manera, ejecutar la tx SWIA introduciendo el id del work item que quieres borrar.



Después de eso selecciona el work item, ir a menú TRATAR → Work Item → Borrar lógicamente. Una vez que has hecho esto verás que el estatus del workflow se modifica de STARTED a CANCELLED.


La segunda forma, ejecutar la tx SWIA y dar el ID del work item que quieras borrar.


Ahora verás el work item y su estatus como STARTED.


Selecciona el work item e introduce el comando "ADMC". Tan pronto como ejecutes el comando ADMC el estatus del work item cambiará a CANCELLED.

Podemos usar ADMC (Administrative Cancel) para borrar múltiples work items al mismo tiempo. Para eso sólo tienes que seleccionar múltiples work items y seguir el mismo procedimiento que se explica arriba.


La tercera manera es ejecutar la tx SWIA dando el id del work item.


Ahora doble click en el work item.


Después de eso Menu Pasar a Visualización técnica del work item


Verás la pantalla de a continuación yendo al menú Tratar → Modificar.


Después ejecuta el paso borrar lógicamente.



Borrado físico: Cuando ejecutas el borrado físico, se borrarán los work items del inbox del agente pero también se borrarán permanentemente del sistema. Por lo que no podremos recuperar el work item.

Nota de aviso: ¡¡Nunca intentes ejecutar el borrado físico en el entorno de producción!!

Después de ejecutar el borrado físico del work item su estatus se establecerá en COMPLETED.

Hay múltiples reports con los que podemos hacer el borrado físico:
  • RSWWWIDE (borra el work items incluyendo adjuntos)
  • RSWWWIDE_TOPLEVEL (borra todos los work items dependientes)
  • RSWWHIDE (borra el historial del work item)
Ejecuta la tx SWWL, introduce el id del work item que quieras borrar permanentemente y marca el check box Borrar inmediatamente.


Luego se te preguntará si quieres borrar permanentemente o no, pulsa SI.


Finalmente el work item se borrará fisicamente.

Log de análisis Workflog en SAP

Analizar el log de un Workflow representa un papel muy importante especialmente cuando estás en un proyecto de mantenimiento. El análisis del log Workflow nos ayuda a encontrar la raíz de la causa y realizar un seguimiento del quid de cualquier problema encontrado en el ciclo del Workflow. 

En este blog veremos como proceder cuando se enfrenta un problema relacionado con la factura (MIR4) donde tenemos que realizar un seguimiento de quién es el agente responsable ¿Cuándo el agente responsable aprobó factura? ¿Diferentes reglas para identificar el agente actual? ¿Qué IDocs se desencadena? ¿Qué tipo de notificación se establece? Y así...

1. Ejecuta la tx MIR4 (Visualizar factura). Introduce el número de factura de la que quieres hacer el análisis y click en ver documento.


2. En la factura mostrada click en el objeto GOS (Generic Object Services)  àWorkflow à Resumen Workflow.

3. Tan pronto como hagas click en resumen Workflow aparecerá un popup mostrando los detalles del workflow de la factura. Ahora click  en visualizar log workflow.


4. Ahora verás la pantalla de log del workflow. Supongamos que quieres saber quiénes son exactamente los agentes actuales / posibles / excluidos, haz click en cualquier botón de Agentes que mostrará los respectivos agentes.  Un matiz a recordar aquí es que los Agentes Actuales se determinan la mayoría usando Reglas, Posiciones y Expresiones. El agente Actual debe ser uno de los agentes posibles menos los agentes excluidos. Puedes encontrar qué notificación pertenece al agente en la tx 'PPOSE' y en la tx 'SU01D' puedes encontrar los detalles de los agentes. Algunas veces surgirá la situación en la que tienes que depurar la Regla que se usa para determinar el agente actual a fin de encontrar el agente actual.


5. Si quieres saber el detalle técnico del workflow de la factura, click en el botón del contenido de la tabla.


6. Ahora verás el ID del Workflow que no es más que el id de la tarea que empieza con WS seguida de 8 dígitos y difrentes work items asociados con el workflow. Esta etiqueta Container es sólo un repositorio que guarda la información grabada de varios elementos relacionados con el Workflow. Puedes encontrar quien ha iniciado el workflow, qué objeto de negocio se usa, qué IDoc se crea y todos los elementos del container. Mira que los enlaces existen en todos los elementos del container.


7. Si quieres ver el diseño y configuraciones internas del workflow haz doble click en el ID de la Tarea WS90000117 o ejecuta también la tx 'SWDD' e introduce el ID de la Tarea y verás la deficinión del workflow.


8. Ahora doble click en cualquier paso del workflow para saber que objeto de negocio se usa para la tarea, los eventos que se lanzan y las reglas definidas para encontrar los agentes. En la sub-pantalla de reglas por defecto puedes encontrar las reglas usadas. El objeto de negocio estándar 'BUS2012' se usa comúnmente para las facturas.


9. Supongamos que necesitas ejecutar un work item en particular de un workflow entonces ejecuta la tx 'SWIA' y proporciona el ID del work item y ejecuta.


10. Después de ejecutar, verás la siguiente pantalla que muestra el estatus y el tipo de work item. Ahora puedes realizar las tareas administrativas como Reiniciar / Completar / Cancelar y así sucesivamente, para más información referida a cancelar un work item el artículo Diferencia entre borrado lógico y físico de un work item en workflow SAP.


Hablando sobre el tipo y estatus del work item
  • Hay básicamente 12 tipos de work items y puedes ver sólo 3 tipos de work items: Work Item de Diálogo (W),  Work Item Fecha Tope (D) y Work Item de Pool (A).
  • Hay 11 tipos de estatus de workflow. El estatus SELECTED dice que el work item en particular está reservado por el agente y que no hay otro agente posible que pueda ejecutar ese work item  (una vez que el agente reserva el work item, ese work item en particular desaparece del Inbox de los otros agentes).

Los pasos de arriba sólo son el camino para analizar el log de un workflow. La conclusión del análisis del workflow depende del tipo de problema y lo bien que lo afrontes.