En el mundo real que hay fuera de los preciosos vídeos de SAP, es frecuente la necesidad de ir más allá de los límites que ofrecen sus productos.
Extender una aplicación FIORI puede que sea algo complicado en algunos casos pero desde luego es el camino recomendable cuando se quiere adaptar el funcionamiento de una aplicación a las necesidades de negocio. Parece obvio, ¿no? Sin embargo sigo viendo como se sigue copiando aplicaciones estándares para modificar el código a machete (código que además suele estar minimizado al ser desplegado en SAP y almacenado como una BSP). Ese no es el camino!
¿Extender la aplicación es siempre el camino correcto? Hombre pues tampoco… llega un momento en que la adaptación es demasiado grande y se puede valorar la opción de realizar el desarrollo desde cero siguiendo la filosofía y arquitectura de la aplicación inicial. Hay aplicaciones que parecen complejas pero en realidad su construcción es muy sencilla. Siempre hay varios caminos, pero solo cuando el proyecto está mal vendido o mal ejecutado es cuando está sobre la mesa la opción de copiar el estándar para modificarlo.Seguiré insistiendo con mi idea aunque tengo la sensación de que no me escuchan…

Desde el servicio WebIDE Full-Stack de SAP Cloud Platform tenemos un asistente que nos ayuda a realizar algunas ampliaciones. Este asistente va cambiando con el tiempo y cada vez nos proporciona más opciones, aunque aún le queda bastante que mejorar.
Tengo pendiente ver hasta donde llega el nuevo SAP Business Application Studio en estas tareas de ampliación. Además de la programación CAP, si que he comprobado que soporta Fiori Elements y la creación de aplicaciones Fiori con algunas plantillas así que imagino que estará a la par que el WebIDE.Vamos al lío.Una vez que hemos creado el proyecto de ampliación (aquí tienes un ejemplo de cómo hacerlo), estás son las opciones que nos ofrece el SAP WebIDE:


Tenemos opciones que no nos interesan ahora mismo: extender un controlador, reemplazar un servicio, ocultar un control, reemplazar textos por idioma o implementar un manejo específico de los eventos.
Y remarcado vemos las opciones para extender una vista o un fragmento (opción que estará solo disponible si SAP (o el creador) ha preparado el punto de extensión). Y por último tenemos la opción de reemplazar una vista (por una copa de la original o partiendo de cero).
¿Pero y cómo podemos reemplazar un fragmento? Por ahora esta operación no se puede hacer con el asistente. Sin embargo en muchas ocasiones esto es necesario porque las vistas están casi vacías estando todo el contenido dentro de fragmentos. Una forma de conseguirlo (no se si la mejor) es seguir estos pasos:
- Reemplazar la vista desde donde se llame a ese fragmento por una propia.
- Copiar el fragmento original a nuestro proyecto.
- Incluir nuestro fragmento en la vista extendida.
- Extender el controlador de la vista.
Vamos a ello.
Paso 1: Creamos una extensión para reemplazar la vista donde se llama al fragmento por una copia suya.




Con esto sería suficiente pero al ejecutarlo obtengo un error. No se carga corrrectamente el fragmento.

Esto es porque puse mal la ruta del controlador dentro de la vista. Se soluciona rápido.

Y con esto ya tenemos funcionando la aplicación cargando correctamente nuestro fragmento.

Un gran ejemplo y totalmente de acuerdo: sí a extender las aplicaciones estándar, no a copiarlas; para eso, te creas una de cero.