Está claro que SAP ha apostado bien fuerte por usar su Web IDE como aplicación para desarrollar aplicaciones SAPUI5 y, aunque se siga manteniendo el desarrollo de SAP UI5 en Eclipse, hay una cosa con la que aún no podemos contar en esta herramienta: Con las plantillas predefinidas.
En su momento, en la antigua version Eclipse Juno, existía un add-on que podíamos añadir, el Fiori Toolkit, para hacer una aplicación de tipo Master-Detail. Pero se le dejó de dar soporte hace años. Hoy por hoy, no contamos con algo específico y con soporte que cuente con plantillas predefinidas.
Pero eso no quiere decir que no podamos usar Eclipse para SAPUI5. Podemos hacer desarrollos e incluso ampliaciones y probarlod en un sandbox local que cuenta con un Fiori Launchpad.
Así que, aunque siempre hemos hablado del Web IDE, en este artículo vamos a ver cómo instalar Eclipse y el software necesario para trabajar con SAPUI5 y Fiori. Vamos a ver los siguientes puntos:
- Cómo instalar Eclipse en nuestro ordenador.
- Añadir en Eclipse las ABAP Development Tools y la librería de SAPUI5.
- Instalar localmente un servidor web para poder probar nuestros desarrollos.
- Crear una aplicación SAPUI5 sencilla para probar (un Hola Mundo).
- Configurar el Fiori Launchpad en nuestro sandbox (localmente).
Instalar Eclipse
Lo primero, por supuesto, es bajarse el Eclipse. Hasta hace poco, cada nueva versión se identificaba con un nombre de un planeta o satélite o elemento de la tabla periódica, que comenzaba por la siguiente letra del alfabeto (vamos, como las versiones de Android con las chuches). Después del mencionado anteriormente Juno vino Kepler, Luna, Mars, Neon, Oxygen y Photon.
Ahora, parece que han cambiado la nomenclatura para hacerlo por año y mes. Menos didáctico, pero más claro.
Nos podemos bajar el eclipse en:
https://www.eclipse.org/downloads/
Atentos, que tenemos que comprobar nuestra versión de Java, ya que si es anterior a la 8, lo mismo tenemos que instalarnos una versión más antigua del Eclipse. Yo estuve un tiempo largo trabajando con la Kepler por tener la versión 7 de Java. En el artículo en el que veíamos cómo instalar el sap cloud connector podemos ver cómo saber qué versión de Java tenemos.
Como no creo que sea necesario explicar cómo se instala un programa, podemos pasar a la gestión de errores. Si nos da errores la instalación, ¡recurrimos a Google! Lo siento, se pueden dar tantos problemas, que yo aquí no puedo resolver nada. Soy un triste usuario de nivel usuario que cuentas sus experiencias como usuario. Pero si hay problemas, lo primero que podemos comprobar es la versión de Java... ah, que eso ya lo he dicho antes :P.
Al abrirlo, tenemos la página de bienvenida, que rápidamente cerraremos porque eso de leer tutoriales y ayudas no es lo nuestro.
¿Ah, que esto se lee? |
Ya está, ya tenemos Eclipse. Si ya hemos trasteado con él, podemos configurar la perspectiva que queramos usar y, si no, pues nos conformaremos con la que venga por defecto. Aquí no vamos a entrar más en detalle en ese aspecto.
Ya tenemos el Eclipse funcionando |
Añadir el software específico para ABAP y SAP UI5
Una vez instalado, vamos a añadir el software de SAP que nos permitirá desarrollar aplicaciones SAPUI5. Para eso, podemos ir a https://tools.hana.ondemand.com/ donde nos resumen el software que podemos instalar y las URLs que tenemos que usar en Eclipse para descargarlo.
Generalmente, la URL a usar es https://tools.hana.ondemand.com/version_de_eclipse. Por ejemplo, si hubiésemos instalado proton, sería https://tools.hana.ondemand.com/photon.
Como en el momento de instalarme este Eclipse (la 2018-12) no había una versión específica para hana.ondemmand, he usado la de photon. Espero que no me dé problemas despues :O.
Así que comenzamos: abrimos Eclipse, accedemos a Help -> Install New Software y añadimos (Add) una nueva URL, si no la tuviésemos ya, con el link mencionado antes.
Cuando accedamos a ese link, nos mostrará el software disponible y podremos elegir qué descargamos. En nuestro caso, nos interesa:
- ABAP Development Tools for SAP NetWeaver - Quizá hayamos oído ya las famosas ADT, que para nuestro caso nos permitirá conectarnos a SAP para subir y bajar aplicaciones, e incluso programar en ABAP directamente dentro del Eclipse en lugar de hacerlo mediante la SE80 (aunque para este caso no nos interesa).
- UI Development Toolkit for HTML5, que a lo mejor lo conocéis más por SAPUI5 ;).
Tendremos que aceptar las condiciones e instalar. Las condiciones son esas cosas en las que vendemos nuestra alma al diablo pero nunca leemos. Pues eso, aceptamos.
Instalar un servidor web para nuestras pruebas
Una vez hecho esto, vamos a instalar un servidor web, para que se puedan ejecutar nuestras aplicaciones localmente. Para ello, vamos a la pestaña Servers y pulsamos el enlace para crear uno nuevo.
Si ya tenemos uno instalado, nos valdrá con decirle donde está ubicado. Si no lo tenemos, podemos elegir algún servidor web que se nos instale automáticamente sin necesidad de pegarnos demasiado, como ocurre con algunas versiones del Tomcat.
Yo voy a instalar el Tomcat v8.0 porque se instala automáticamente y yo soy más perezoso que Garfield en lunes. |
Le asignamos un nombre y pulsamos sobre Download and install...
Nos pedirá que aceptemos las condiciones y, después, una ubicación donde instalarlo.
Tenemos que esperar un rato a que se acabe de instalar. Mientras no lo haga, nos mostrará un error en la pantalla, así que tenemos que esperar a que la instalación llegue al 100%. Eso lo podemos ver en la barra inferior.
Paciencia debes tener, mi joven padawan. |
Tras instalarlo, nos pedirá las aplicaciones que queremos añadir al servidor. De momento no tenemos ninguna, así que finalizamos el proceso.
Y fin |
Ya está, tenemos instalado el servidor.
Crear el Sandbox del Fiori Launchpad
Tras tener instalado el servidor, vamos a la siguiente tarea, ¡crear nuestro Sandbox de Fiori! Gracias a él, podremos probar aplicaciones como si estuviesen integradas en Fiori. Si nos creásemos una aplicación con un index.html, esto no nos haría falta, pero si la queremos crear con el formato Fiori (usando el Component.js) o queremos ampliar una estándar, necesitaremos este Sandbox.
Bueno, realmente no es crear, es ampliar el que nos viene con el software de SAPUI5 que hemos añadido. Pero digamos que lo estamos creando.
¿Y cómo lo creamos? Esto es fácil, sólo tenemos que recurrir a la documentación de SAP. Pero venga, también podemos hacerlo desde aquí.
Creamos un nuevo proyecto, de tipo Dynamic Web Project:
A ese proyecto lo llamamos appconfig y finalizamos el proceso.
Una vez creado, en la carpeta de WebContent, nos creamos un fichero llamado fioriSandboxConfig.json.
En dicho fichero añadiremos los tiles que se van a mostrar. Podemos ver la configuración del mismo en la documentación de SAP, aunque en la siguiente captura podemos ver un ejemplo.
Crear una aplicación para probar
Está bien, ya tenemos montado todo, ahora nos vamos a crear una aplicación de ejemplo para acceder al Fiori Launchpad. Podríamos seguir el siguiente artículo para crearlo,
https://blogs.sap.com/2017/11/19/sap-fiori-ui5-application-creation/ , pero como va a ser un ejemplo sencillo, no vamos a crear nada de código, sólo una aplicación pelona.
Nos creamos un nuevo proyecto.
Lo crearemos de tipo SAPUI5 Application Development.
Le asignamos un nombre y que cree una vista inicial.
Elegimos el tipo de vista que usaremos (yo voy a optar por el clásico XML).
Y ya está, eso nos creará una aplicación vacía. No nos vamos a preocupar en desarrollar nada, sólo queremos ver el Fiori Launchpad.
En el fioriSandboxConfig.json, podemos configurar un tile para nuestra nueva aplicación. El nombre de la aplicación viene con el formato de la navegación semántica (nombre semántico y acción), y la url será el nombre del proyecto.
Ahora tenemos que añadir la aplicación al servidor. También añadiremos el appconfig, que hasta ahora no lo habíamos hecho. Vamos a la pestaña de Servers, elegimos el servidor, botón derecho y escogemos Add and Remove.
Y pasamos las aplicaciones de la sección Available a la sección Configured. Después, finalizamos.
Hala, ya están añadidos los proyectos |
Ahora sólo nos falta iniciar el servidor para poder ejecutar la aplicación sobre el Fiori Launchpad. Seleccionamos el servidor, botón derecho y pulsamos Start. Esperamos un poco a que se inicie el servidor. Si vemos en el log muchos mensajes en rojo (es más, todos los mensajes en rojo), no nos alarmemos demasiado rápido. En buen momento se les ocurre usar el rojo para todo el log y no sólo para los errores.
Ejecutar el Fiori Launchpad
Venga, vamos a lo divertido de verdad, ejecutar el Fiori Launchpad. ¿Cómo sabemos cuál es la URL que tenemos que cargar? Pues lo primero es saber el puerto que tenemos configurado, que por defecto es el 8080 pero podría cambiar. Lo podemos ver en las propiedades del servidor (haz doble click sobre su nombre, pestaña Overview y te aparecerán).
Pues con ese dato, cargamos la siguiente url (mi aplicación se llama initial_app y el puerto era el 8080, así que en cada caso tendríamos que poner la aplicación que hayamos ejecutado).
http://localhost:8080/initial_app/test-resources/sap/ushell/shells/sandbox/fioriSandbox.html
¡Ya lo tenemos! Sí, hay muchas más aplicaciones que las que hemos añadido. Recordad que realmente hemos ampliado el sandbox que nos viene con el software. Nuestras aplicaciones son las de arriba.
Qué más podemos aprender
Bueno, pues con esto ya aprendido, nos quedan cosas como subir y bajar aplicaciones a SAP o configurar el proxy de Eclipse para poder conectarnos a un servicio oData sin que el navegador nos bloquee el acceso. Pero todo eso lo veremos en próximos artículos.
Muy bien explicado, ¡hasta yo he podido hacerlo! ;-)
ResponderEliminarComo si te hiciese falta esta explicación ;)
Eliminar¡Muchas gracias!
Menuda currada de artículo, enhorabuena!!
ResponderEliminarMuchas gracias, espero que sea útil.
EliminarHe seguido todos tus paso, y salvo algún sobresalto, ha funcionado todo.
ResponderEliminarGracias por tu trabajo y tu tiempo.
De nada, ¿alguna cosa en particular que merezca ser contada para otros lectores?
EliminarUn posible buen tema seria las tablas internas con varios indices y como se usan.
Eliminar¿A qué te refieres con tablas internas? ¿En ABAP?
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarHola, excelente tutorial, he seguido todos los pasos religiosamente pero no al correr el ultimo paso no logro que funcione, si alguien pudiera ayudarme estaría muy agradecida. Saludos!
ResponderEliminar¿Te refieres al intentar ejecutar la aplicación? ¿Puede que ya tengas el puerto 8080 en uso en otra aplicación, o que hayas configurado otro puerto distinto en Eclipse?
EliminarHola de nuevo, gracias por responder, no tengo problemas con el puerto, realmente es que la aplicacion no me corre, creo que tengo algun error en el archivo de conectividad o en el json, si pudieras ayudarme estaria muy agradecida
Eliminarcuando corro la app tengo esta ruta http://localhost:8080/initial_app/fioriSandbox.html, me estaria faltando /test-resources/sap/ushell/shells/
ResponderEliminarEso es, a la ruta siempre hay que añadirle el test-resources...
Eliminarhttp://localhost:8080/nombre_del_proyecto_en_eclipse/test-resources/sap/ushell/shells/sandbox/fioriSandbox.html
La mejor guía de Internet!! No tengo problemas al desplegar una app creada por mi, pero importe una app Fiori estándar pero no logro que corra la app correctamente. No se si alguien podría ayudarme, gracias de antemano-
ResponderEliminarHola Ingelshin,
EliminarSi te has descargado una app estándar, deberías crear una carpeta WebContent a la que mover las propias carpetas del proyecto de la estándar. Además, deberías configurar el proxy servlet para poder conectar con el correspondiente servicio oData.
https://help.sap.com/saphelp_tm92/helpdata/en/2d/3f5fb63a2f4090942375df80abc39f/frameset.htm
Tengo pendiente de hacer unos artículos relacionados con ampliaciones del estándar en el que iba a contar cómo hacerlo :(
Muy buen tutorial , te podría preguntar que tengo un error al correr la aplicación.
ResponderEliminarcoloco esta ruta :http://localhost:8080/initial_app/test-resources/sap/ushell/shells/sandbox/fioriSandbox.html
y no me carga ninguna aplicación.
si coloco hasta initial_app si me muestra la app:
http://localhost:8080/initial_app/
en el log de la consola del servidor me aparece lo siguiente :
may 30, 2019 9:43:54 AM com.sap.ui5.resource.ResourceServlet serveResource
ADVERTENCIA: [404] "/resources/sap/ui/integration/services/Navigation.js": Service=3ms, Find=3ms
Reason: Resource could not be found!
Hola, Rubén,
Eliminar¿Añadiste la aplicación appconfig a la lista de recursos disponibles en el servidor?
Hola,
EliminarA mi me pasa lo mismo, tengo la appconfig en el servidor, pero al ejecutar la url ( http://localhost:8080/JBM02/test-resources/sap/ushell/shells/sandbox/fioriSandbox.html ) se queda la pantalla en blanco y en la consola sales estos errores
de jul. 26, 2019 12:15:37 PM com.sap.ui5.resource.ResourceServlet serveResource
WARNING: [404] "/resources/sap/ushell/themes/base/IconFonts.css": Service=12ms, Find=12ms
Reason: Resource could not be found!
de jul. 26, 2019 12:15:37 PM com.sap.ui5.resource.ResourceServlet serveResource
WARNING: [404] "/resources/sap/ushell/themes/base/flower-standalone.css": Service=0ms, Find=0ms
Reason: Resource could not be found!
de jul. 26, 2019 12:15:37 PM com.sap.ui5.resource.ResourceServlet serveResource
WARNING: [404] "/resources/sap/ui/integration/services/Navigation.js": Service=0ms, Find=0ms
Reason: Resource could not be found!
Si ejecuto la Aplicación funciona correctamente
( http://localhost:8080/JBM02/ )
¿Puedes ayudarme?
En la consola del navegador sale este error.
Eliminarui5loader-dbg.js:1173 GET http://localhost:8080/JBM02/resources/sap/ui/integration/services/Navigation.js 404
loadSyncXHR @ ui5loader-dbg.js:1173
requireModule @ ui5loader-dbg.js:1401
requireAll @ ui5loader-dbg.js:1600
executeModuleDefinition @ ui5loader-dbg.js:1669
ui5Define @ ui5loader-dbg.js:1800
(anonymous) @ Ui5ServiceFactory.js?eval:2
execModule @ ui5loader-dbg.js:1522
requireModule @ ui5loader-dbg.js:1410
requireAll @ ui5loader-dbg.js:1600
executeModuleDefinition @ ui5loader-dbg.js:1669
ui5Define @ ui5loader-dbg.js:1800
(anonymous) @ Container.js?eval:2
execModule @ ui5loader-dbg.js:1522
requireModule @ ui5loader-dbg.js:1410
requireSync @ ui5loader-dbg.js:1922
jQuery.sap.require @ jquery.sap.global-dbg.js:1930
bootstrap @ sandbox.js:211
constructor @ Core-dbg.js:546
(anonymous) @ Core-dbg.js:4034
(anonymous) @ ui5loader-dbg.js:1694
requireAll @ ui5loader-dbg.js:1618
executeModuleDefinition @ ui5loader-dbg.js:1669
ui5Define @ ui5loader-dbg.js:1800
execModule @ ui5loader-dbg.js:1479
requireModule @ ui5loader-dbg.js:1327
requireSync @ ui5loader-dbg.js:1922
(anonymous) @ jquery-mobile-custom-dbg.js:2106
ui5loader-dbg.js:930 Uncaught Error: failed to load 'sap/ui/integration/services/Navigation.js' from ../../../../../resources/sap/ui/integration/services/Navigation.js: 404 -
at makeNestedError (http://localhost:8080/JBM02/resources/sap-ui-core.js:86:37)
at requireModule (http://localhost:8080/JBM02/resources/sap-ui-core.js:94:2197)
at requireAll (http://localhost:8080/JBM02/resources/sap-ui-core.js:96:557)
at executeModuleDefinition (http://localhost:8080/JBM02/resources/sap-ui-core.js:97:818)
at Object.ui5Define [as define] (http://localhost:8080/JBM02/resources/sap-ui-core.js:98:1094)
at eval (http://localhost:8080/JBM02/resources/sap/ushell/Ui5ServiceFactory.js?eval:2:8)
at eval ()
at execModule (http://localhost:8080/JBM02/resources/sap-ui-core.js:95:1406)
at requireModule (http://localhost:8080/JBM02/resources/sap-ui-core.js:94:2287)
at requireAll (http://localhost:8080/JBM02/resources/sap-ui-core.js:96:557)
Caused by: Error: 404 -
at a (http://localhost:8080/JBM02/resources/sap-ui-core.js:90:88)
at XMLHttpRequest. (http://localhost:8080/JBM02/resources/sap-ui-core.js:90:321)
at loadSyncXHR (http://localhost:8080/JBM02/resources/sap-ui-core.js:90:415)
at requireModule (http://localhost:8080/JBM02/resources/sap-ui-core.js:94:2152)
at requireAll (http://localhost:8080/JBM02/resources/sap-ui-core.js:96:557)
at executeModuleDefinition (http://localhost:8080/JBM02/resources/sap-ui-core.js:97:818)
at Object.ui5Define [as define] (http://localhost:8080/JBM02/resources/sap-ui-core.js:98:1094)
at eval (http://localhost:8080/JBM02/resources/sap/ushell/Ui5ServiceFactory.js?eval:2:8)
at eval ()
at execModule (http://localhost:8080/JBM02/resources/sap-ui-core.js:95:1406)
makeNestedError @ ui5loader-dbg.js:930
requireModule @ ui5loader-dbg.js:1407
requireAll @ ui5loader-dbg.js:1600
executeModuleDefinition @ ui5loader-dbg.js:1669
ui5Define @ ui5loader-dbg.js:1800
(anonymous) @ Ui5ServiceFactory.js?eval:2
execModule @ ui5loader-dbg.js:1522
requireModule @ ui5loader-dbg.js:1410
requireAll @ ui5loader-dbg.js:1600
executeModuleDefinition @ ui5loader-dbg.js:1669
ui5Define @ ui5loader-dbg.js:1800
(anonymous) @ Container.js?eval:2
execModule @ ui5loader-dbg.js:1522
requireModule @ ui5loader-dbg.js:1410
requireSync @ ui5loader-dbg.js:1922
jQuery.sap.require @ jquery.sap.global-dbg.js:1930
bootstrap @ sandbox.js:211
constructor @ Core-dbg.js:546
(anonymous) @ Core-dbg.js:4034
(anonymous) @ ui5loader-dbg.js:1694
requireAll @ ui5loader-dbg.js:1618
executeModuleDefinition @ ui5loader-dbg.js:1669
ui5Define @ ui5loader-dbg.js:1800
execModule @ ui5loader-dbg.js:1479
requireModule @ ui5loader-dbg.js:1327
requireSync @ ui5loader-dbg.js:1922
(anonymous) @ jquery-mobile-custom-dbg.js:2106
contentscript.js:506 [NoPlugin] Searching for plugin objects...
Hola,
EliminarA bote pronto, no puedo decirte porque no me ha pasado ni he podido reproducirlo :( . ¿Has probado a desinstalar, volver a instalar el software de SAP UI5 y a crear de nuevo la aplicación? A ver si con la última librería que te descargaste había algún error.
Hace ya algún tiempo, descubrí (o eso creo) el problema. Parece que, desde la actualización de la librería de sapui5 de junio de 2019, faltan librerías básicas que hacen que dé el error. El problema es que SAP ha finalizado el soporte de SAPUI5 para Eclipse en diciembre de 2019 y aquello sigue fallando. He intentado hacer un poco de trapicheo para ver si se podía hacer algo (como descargarse manualmente la librería en lugar de hacerlo por la descarga de software) pero de momento no he tenido ni tiempo ni éxito 😫.
EliminarPudieron resolver el problema de la pantalla en Blanco? Me pasa lo mismo y ya probe reinstalando y nada
ResponderEliminarConsulta, sé que no tiene que ver pero podrías hacer un tutorial de promesas. Digo esto porque se me presento el caso donde tengo un ciclo for y dentro debo llamar un servicio pero que se ejecute de forma sincrona las llamadas y las respuestas de manera que entre al for , haga la consulta, relaice lo que tenga que realizar y luego continue con el resto del codigo del for para esa iteración
ResponderEliminarFor {
realiza promesa y hace lo que tenga que hacer al resolver.
resto del codigo for
}
Lo tendré en cuenta, es una cosa que yo tengo que terminar de aprender bien, así que es un buen motivo para trastear 😀, gracias por la sugerencia.
EliminarHola, me será de mucha utilidad, solo me queda una duda por resolver, como conecto mi aplicación a mi front-end??? he hecho algunas aplicaciones con WEB-ID y mediante destinos en SCP/HCP hago esta comunicación, pero desde eclipse como sería??? Cabe mensionar que el ciente no tiene nada de SCP/HCP
ResponderEliminarHay que configurar una cosa que llaman servlet proxy, que está en un fichero de configuración de cada aplicación, el web.xml
Eliminarhttps://help.sap.com/saphelp_uiaddon20/helpdata/en/2d/3f5fb63a2f4090942375df80abc39f/frameset.htm
Hola Jorge,
ResponderEliminarLo primero felicitarte por el blog.
Me surge la siguiente duda a la hora de querer migrar mis apps desarrolladas con el WebIDE, que están almacenadas en el repositorio de R3 (aplicaciones BSP), una vez que me las traigo a eclipse,¿como puedo editarlas?, he visto que las trae pero no veo los ficheros por ningún lado. No se si alguna vez se te ha planteado esta situación...
Muchas gracias de antemano.
Hola, Álvaro, para descargarte el contenido de la app tienes que crearte una app en Eclipse de tipo SAPUI5 y, después, enlazarla con la del frontend (file-team-share project, si no recuerdo mal de memoria). Después, tendrías que elegir file-team-retrieve para bajar el contenido al eclipse. En cualquier caso, hay algunos pasos más, crear la carpeta webcontent dentro de la app y mover el contenido, configurar el servlet proxy para hacer las llamadas odata al frontend...
EliminarPero aquí viene lo malo, Eclipse dejó de recibir soporte en diciembre para desarrollar con sapui5 y la última librería que te bajas ¡no funciona bien! Le faltan librerías básicas. Si tu última versión de sapui5 descargada es anterior a junio de 2019 (creo, porque parece que es cuando a la gente me empezó a fallar), entonces no deberías tener problemas para trabajar. Si no, si puedes, de momento yo te aconsejaría seguir con el web ide.