miércoles, 20 de diciembre de 2017

ESS: Migrando el recibo de nómina de WD ABAP a Fiori (y II)

Hace unos pocos post, contaba las anécdotas ocurridas, hace algún tiempo, al implementar la aplicación del recibo de nómina para Fiori. El resumen era que la aplicación de Fiori (versión 1 y 2) utilizaba la BAdI antigua del recibo de nómina, XSS_REM_INTERFACE, en lugar de la nueva, HRESS_PAYSLIP_BADI_DEF, ya que no estaba disponible para todas las EHPs, sólo hasta la 5 (en alguna nota dicen que hasta la 6).  La solución, implementar la vieja para que llame al mismo código que la nueva.


Bueno, pues resulta que, por "culpa" de la aplicación de una nota, descubrí otra nota (que ya tiene casi un año, pero para cuando se implementó la primera todavía no debía existir) que hace que esto cambie... y podamos usar cualquiera de las dos BAdIs.

Todo ocurrió cuando la aplicación comenzó a fallar al incorporar una nueva división de personal, que usaría un formulario distinto, así que había que actualizar la característica HRFOR para indicarle cual. Al ir a visualizar el PDF, la aplicación se quedaba pensando eternamente.

El error se debía a que, a la hora de leer la característica, en el código sólo le pasaba el MOLGA y el tipo de formulario, pero ninguna información más del empleado. La división de personal (y otros campos) se enviaban en blanco. Genial, una funcionalidad tan útil como pedirle a un vulcano que hable de emociones.

Ese error se corrige aplicando la nota 2512291 - "Incorrect HRFORMS being picked up by Fiori app My Paystubs". De esta manera, se le pasarán todos los datos necesarios para leer la característica.

Pero esa nota, como suele pasar, implicaba aplicar notas anteriores que aún no se habían aplicado... incluyendo la nota que nos atañe, la 2343229 - "My remuneration statements V2 (ODATA): Filter payroll results using the BAdI HRESS_PAYSLIP_BADI_DEF [2]".

Tras aplicar esta última nota, el sistema ya se comporta con una lógica más interesante para leer los recibos de nómina. Primero, mira si existe la BAdI más moderna y, en caso de no existir, mira si existe la más antigua.


Con la nota aplicada, primero lee la BAdI moderna.
Si no existe, lv_use_old será TRUE y leerá la BAdI vieja.

Así que con esto ya sí que podemos migrar de la aplicación de Web Dynpro (ya sea la de Java o la de ABAP) a Fiori sin tener que reimplementar la BAdI, ya que usará aquella que hayamos implementado.

No hay comentarios:

Publicar un comentario