SAP Netweaver Gateway OData. Bloqueo persistente en llamadas externas. Persistent blocking on external calls. 馃攼馃攦馃敁

Cuando lanzamos peticiones a backend desde Fiori(app personalizada) a trav茅s de odata la llamda entra en la RFC asociada y genera el bloqueo 芦ENQUEUE禄 del objeto correctamente, pero en cuanto sale de la rfc ese bloqueo se libera.

When we launch requests to backend from Fiori(custom app) through odata the call enters the associated RFC and generates the 芦ENQUEUE禄 lock of the object correctly, but as soon as it exits the rfc that lock is released.

La situaci贸n es:
Usuario entra en un objeto en la capa Fiori y pulsa en el bot贸n 芦Edit禄, la app lanza una llamada para bloqueo de objeto, pero en cuanto vuelve el objeto queda liberado pues sap entiende que al salir de la rfc se est谩 saliendo del sistema, es como si en R/3 entras a editar un pedido de venta (se bloquea) pero decides salirte del sistema sin salir previamente de la transacci贸n (/nex) sap al detectar tu salida del sistema desbloquear谩 todo lo bloqueado por tu user.

The situation is:
User enters an object in the Fiori layer and clicks on the 芦Edit禄 button, the app launches an object lock call, but as soon as the object is released as sap understands that when you exit the rfc you are leaving the system, it is as if in R/3 you enter to edit a sales order (it crashes) but you decide to leave the system without leaving the sap transaction (/nex) when detecting your system output will unlock everything blocked by your user.

La problem谩tica es que un usuario en Fiori al dar en Edit no bloquea realmente el objeto, y podr铆a ser editado por otro usuario o desde R/3 directametne. Esto genera un problema de concurrencia.

The problem is that a user in Fiori when giving in Edit does not actually lock the object, and could be edited by another user or from R/3 directmetne. This creates a concurrency problem.

El c贸digo que pongo a continuaci贸n permite realizar el bloqueo de forma persistente, y no se liberar谩 hasta que se realice el desbloqueo (Ususario guarde datos o los descarte).

The code below allows you to persistently lock, and it will not be released until unlocking is performed (Ususer saves data or discards it)

Es muy importante tener un flujo de desbloqueo bien acotado, de lo contrario se podr铆an generar inconsistencias en el sistema.

It is very important to have a well- bound unlock flow, otherwise inconsistencies could be generated in the system.

Con esto generamos un bloqueo en la sm12 y si un user edita un objeto no tendremos acceso a 茅l ni desde fiori ni desde R/3.

With this we generate a lock on the sm12 and if a user edits an object we will not have access to it eer from fiori or from R/3.

Espero que os sea de ayuda.

Saludos.

Para m谩s art铆culos de inter茅s sobre SAP visita:
https://setevalapinsap.com

Etiquetas:,

A帽adir un comentario

Tu direcci贸n de correo electr贸nico no ser谩 publicada.