miércoles, 27 de diciembre de 2017

NetWeaver Gateway y OData V4

Hasta ahora, siempre que hemos usado y creado servicios oData a lo largo de este blog, lo hemos hecho en la versión 2, que es la versión que soporta el NetWeaver Gateway 2.0 de SAP. Podemos obtener documentación de esta versión en este enlace.

Pero resulta que OASIS ya hace tiempo que definió la versión 4.0. En general, para nuestras aplicaciones sencillitas, la versión 2.0 nos vale perfectamente. Pero puede que nos encontremos con especificaciones que sólo se cubren con la 4.0.

Pues, por fin, el Gateway ya comienza a dar soporte para esta última versión. En el TechEd, cuando vi que había una sesión al respecto, aproveché para colarme y ponerme un poco al día. Pero como a lo mejor ya nos pilla mal eso de visitar el TechEd, podemos encontrar información en la documentación de SAP y este blog.

Eso sí, tenemos que diferenciar dos formas de programar: Con el nuevo modelo de programación ABAP, basándose en CDS; o de forma tradicional, con lo que parece que llaman el code based implementation. Obligatorio leer la nota 2485370 - "Development of OData V4 services using code based implementation" para saber dónde y cómo podemos desarrollar en cada modelo. 

De momento, sólo he podido ejercer tareas de investigación, no he desarrollado nada porque no he tenido oportunidad, pero bueno, os cuento lo que he ido descubriendo por si a alguno le pica la curiosidad y quiere investigar más, o incluso corregir cualquier tontería que diga.



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.

jueves, 14 de diciembre de 2017

Trasteando con SAP UX durante un año

¡Estamos de cumpleaños! Hoy hace un año que comencé con este blog, cuyo principal objetivo era aprender, tener en un sitio mis "apuntes" (que luego nunca encuentro) y que le pueda ser útil también a otras personas que quieran aprender algo sobre estos temas.

Cumpleaaaañooooos feeeeliiiiiiz

¿Hemos aprendido algo durante este tiempo? Yo, al menos, sí: de Fiori, de SAP UI5, de Sap Screen Personas, de SAP Cloud Platform... Y es que cada post me obliga a practicar lo poco que ya sé, aprender muchas cosas nuevas y tener que estar más al día. Es una exigencia dura, sobre todo el intentar hacer un post semanal. Pero bueno, de momento el objetivo de llegar a un añito se ha cumplido. Y seguro que alguno que otro de vosotros, aparte de cosas de SAP UX, también ha aprendido alguna cosilla friki.

miércoles, 13 de diciembre de 2017

Cursos de iniciación a la programación: Para mayores y para niños

Espera, espera, ¿no estarás leyendo mi blog de vez en cuando y resulta que no sabes nada de programación, que eres un funcional puro y que los loop y los while te dan miedo? ¿O quizá conoces a alguien que siempre te pregunta por dónde comenzar con la programación y no sabes qué decirle? Por todos los pedúnculos del Gran Contemplador, ¿y ahora qué hacemos?

Bueno, a lo mejor tenemos una solución para que tú, tu amigo o incluso tus hijos deis el primer paso en estas historias de programación. Lo digo porque Miríadax va a comenzar un curso básico de programación el 19 de diciembre. ¿En qué lenguaje? No se especifica, pero la idea será adquirir los conocimientos básicos que luego podrás aplicar a cualquier (o casi cualquier) lenguaje de programación. Puedes echarle un ojo a la estructura del curso en este enlace.

Eso sí, seguro que no es un curso de ABAP, claro, en Miríadax de momento no gastan de eso.

Editado: El curso finalmente es de Javascript, "programando" directamente en la consola del navegador. Supongo que para no tener líos de instalaciones o herramientas que usar y así centrarse sólo en el aprendizaje básico.

Y si lo que quieres es que sean tus hijos los que aprendan a programar y el ABAP te parece muy duro (a quién no), prueba a echarle un ojo a estos dos cursos de OpenSAP, donde, siguiendo la iniciativa Code Week para que los más jóvenes aprendan a programar, se enseña a usar el Scratch, gratuito y muy intuitivo. La verdad es que, cuando se dieron ambos cursos, no les presté atención, pero ahora les he echado un ojo y me resultan más que interesantes para adquirir las habilidades básicas de programación, usando para ello etiquetas de colores que puedes ir enlazando y agrupando para generar las rutinas correspondientes.

El primer curso es Teaching Programming to Young Learners, donde enseñan el uso general de la herramienta.

El segundo es Teens Get Coding!, donde se aprende a desarrollar juegos interactivos mediante la creación de una versión del Pong.

Ambos cursos están en inglés, así que siempre puedes aprenderlo tú para luego enseñar a tus hijos.



martes, 28 de noviembre de 2017

ABAP en SAP Cloud Platform

Imaginadme a mí, andando como pollo sin cabeza por el TechEd de Barcelona, buscando alguna presentación o roadmap para empaparme algo de una de las grandes novedades que van a llegar en 2018 a SAP Cloud Platform: La posibilidad de poder crear aplicaciones en ABAP.

Sí, eso es, esa noticia quiere decir que vamos a poder hacer nuestros pinitos en SAP CP utilizando nuestro lenguaje favorito. Vale, no hace falta estar de acuerdo con esta última frase :D.

Así que podremos aprovecharnos del mogollón de cosas que ya hemos aprendido de ABAP para usarlo en la nube (¿quién dijo que ABAP estaba muerto?), reutilizar el código que ya hayamos tirado en nuestros servidores on-premise, crear extensiones para SAP S/4HANA Cloud y utilizar los servicios que nos proporciona SAP CP (destinations, autorizaciones, gestión de documentos, IoT, etc).


viernes, 17 de noviembre de 2017

Visitando el SAP Teched: Tenemos mucho por delante para aprender

He tenido la gran suerte de poder visitar el SAP Teched de Barcelona este año. Una convención que ha estado genial, en la que he intentado empaparme de todo lo posible para que, al menos, me fuesen sonando las cosas nuevas que han aparecido y van apareciendo en SAP. Siempre orientado a temas relacionados con UX, por supuesto.

Y es que no dejan de aparecer novedades, cambios y mejoras y, cuando uno cree que sabe un poquito, descubre que cada vez sabe menos. Siempre tenemos a Antonio de Ancos como referencia para ir enterándonos de las novedades, como por ejemplo en su post de Conceptos básicos de SAP en 2017, pero es que tenemos para dar y tomar.

En mis paseos de un lado a otro de la convención, pude ver cosas sobre Workflows en SAP Cloud Platform, crear aplicaciones Fiori sobre un servicio oData basado en una vista CDS, ver las novedades que nos trae el Gateway tirando por fin de oData V4, entender el concepto de ABAP en Cloud Platform, ampliar el Fiori Launchpad, descubrir las novedades en rendimiento que vendrán con el SAP UI 1.52, practicar con los flavors adaptativos en SAP Screen Personas para que se adapten al tamaño de la pantalla, ver información adicional sobre despliegues de Fiori (las consultas analíticas de SAP S/4HANA usando CDS en lugar de tener que tirar de XS Engine). Como diría Cortocircuito, ¡Datos, más datos!

Ya veis, un montón de nuevas cosas raras. Tengo que reorganizar mis apuntes y el cerebro para saber casi de lo que hablo.

Como primera tarea que me traigo pendiente, me voy a obligar a hacer algo que realmente no va a ser nada novedoso: Comenzar a programar en ABAP con Eclipse. Sí, es algo que debería haber hecho hace tiempo, pero es que la SE80 tiene su encanto vintage. Pero me ha dado ya envidia al ver todas las sesiones programadas con Eclipse... excepto una presentación que tenía capturas de la SE24, pero también mencionaban el SAP HCP, así que a esa presentación le faltaba una buena revisión ;).

miércoles, 8 de noviembre de 2017

Navegación OBN y Fiori

Ay, la navegación OBN, cuántos buenos y malos momentos nos ha dado en los portales de SAP. Que si abre esta web dynpro cuando pulso aquí, que si qué pasa que no me la abre... diversión garantizada.

Si no sabes lo que es la navegación OBN, no te preocupes, que te lo voy a explicar rápidamente. De momento, no estamos en Fiori, sino en SAP Portal o en NetWeaver Business Client (NWBC). Pero luego más adelante vamos a ver qué tiene esto que ver con Fiori.

La navegación OBN (Object Based Navigation) consiste, básicamente, en determinar qué aplicación se abre mediante dos elementos: Un Business Object y una acción.

Lo que tendremos será una aplicación o iView origen, que mediante código hace la llamada OBN, y otra aplicación o iView destino, que habremos configurado para que esté escuchando esa llamada y, cuando se produce, ¡zas!, se abre.

¿Y para que sirve? Para poder crear múltiples configuraciones de una misma aplicación Web Dynpro y, dependiendo de quién la abra, se cargara una u otra. Eso lo determinaremos mediante los roles que tenga el usuario asignado. Cuando se produce la navegación OBN de la primera aplicación, buscamos entre los roles del usuario qué aplicación está configurada para abrirse con esa llamada.

miércoles, 1 de noviembre de 2017

Grupos sin catálogos en Fiori, ¿se puede o no se puede?

Tenemos dos tipos de objeto que podemos asignar a los usuarios en portal: Catálogos y Grupos. El caso es que, en Fiori on-premise, si nos asignan un grupo que tiene varios tiles, pero no nos asignan los catálogos donde están esos mismos tiles (y los correspondientes target-mappings), no podemos acceder a la aplicación correspondiente. En el Fiori Launchpad ni siquiera nos salen los tiles para los que no tenemos un catálogo enlazado en nuestras autorizaciones.

Incluso me suena (que a lo mejor me equivoco, oye) que en versiones anteriores sí que nos aparecían los tiles del grupo pero, al pulsarlos, si no teníamos el catálogo correspondiente, nos daba error. Básicamente, porque no tenemos un target-mapping al que invocar y la llamada hecha por el tile se queda en el limbo.

En resumen, que en Fiori on-premise tenemos que crear la asignación de grupos y catálogos con coherencia, sincronizando el contenido que existe entre ambos en los roles que asignemos.

¿Pero qué ocurre en el portal de SAP Cloud Platform? Porque ahí no tenemos ni tiles ni target-mappings, sino aplicaciones que agrupan toda esa información. ¡Pues vamos a probar!

lunes, 30 de octubre de 2017

Lo que nos molan los cursos

El caso es que, preparando otro post que nada tiene que ver con éste, me da por mirar las estadísticas y veo que el post que más visitas ha recibido, ¡acaba de llegar a las 1000! Cifra redonda.

¿Y qué post es ese? Pues con el título del presente post, al menos está claro de qué hablará. Se trata del post Cursos Interesantes, que es de finales de enero. Sólo han pasado nueve meses y parece que ya está anticuado :D.

La verdad es que mola ver las ganas que hay de aprender cosas nuevas en esto que llaman SAP.

En total, hay cinco posts en los que hemos ido viendo distintos cursos que se han publicado relacionados con SAP UX, no sólo en openSAP sino también de MiriadaX (de forma indirecta, ya que no son cursos de SAP pero sí de cosas relacionadas, como HTML5). Puedes verlos pulsando aquí.

La cuestión es que, aunque los cursos tengan un plazo de "ejecución", los puedes seguir haciendo, pero no podrás hacer los exámenes para obtener el certificado correspondiente. ¡Pero lo importante es aprender!

De todas maneras, en openSAP tenemos la opción de pagar para que nos den un período de tiempo adicional, en cursos ya cerrados, durante el cual podemos obtener el certificado correspondiente.

¿Y qué cursos interesantes hay ahora? Pues, la verdad, casi prefiero no saberlo, porque luego los quiero hacer todos. Pero tengo que ponerme al día para ver que cosas interesantes hay y habrá.

Relacionado con SAP UX y HCM si que podemos destacar uno que acaba de comenzar, el de Extender aplicaciones de SuccessFactors con SAP Cloud Platform. Empezó ya el día 25 de octubre, ¡así que ya estamos llegando tarde!

miércoles, 25 de octubre de 2017

Primero de Fiori: Los palabros

En los posts que van apareciendo en este blog como por arte de magia, voy mencionando términos de forma espontánea, creyendo que cualquiera que llega aquí los conoce. Pero claro, a lo mejor hay alguien que no sabe ni papa del tema y todo esto le suena a sindarín.

Por eso voy a hacer en este post un glosario de los términos más comunes con los que nos podemos encontrar relacionados con Fiori, para orientarnos un poco si hace falta. Ojo, explicados a mi manera. Así que estamos en el curso de...


Debemos recordar que tenemos tres posibles escenarios con Fiori: El clásico (Fiori instalado en un front-end ABAP), un SAP Portal con el desktop de Fiori (que, por detrás, atacará realmente al front-end clásico) y Fiori en la nube con el portal de SAP Cloud Platform. Algunos de los términos de este post pueden ser técnicamente diferentes para cada uno de estos entornos, pudiendo incluso no existir en algunos de ellos.


miércoles, 18 de octubre de 2017

ESS: Migrando el recibo de nómina de WD ABAP a Fiori

Hoy os voy a contar una anécdota, una chorradilla sobre una aplicación muy específica: My Paystubs. Mis recibos de nómina, que diríamos en español, la aplicación de Fiori de HCM, con la que podemos ver las monedas de oro que hemos cobrado cada mes. Se trata de una aplicación del Autoservicio del Empleado de SAP (Employee Self-Service o ESS).


El ESS viene de antiguo: Tuvo una versión en Web Dynpro Java, otra en Web Dynpro ABAP (a partir del EHP5) y ahora la tiene en Fiori. Nada nuevo que no sepáis ya, que eso nos lo contó Miguel en tres post muy interesantes (orígenes y Java, Web Dynpro ABAP y HR Renewal y Fiori).

Una de las cosas buenas que tiene cuando migramos del ESS en Web Dynpro ABAP a Fiori, es que se reutiliza gran parte de la parametrización, BAdIs incluidas. Esto ocurre, para poner el ejemplo más común, con la aplicación para solicitud de absentismos, que utiliza la misma tabla para determinar que absentismos y presencias se pueden solicitar desde el portal, entre otras cosas.

Claro, si hemos hecho ampliaciones en las WD, nos va a tocar replicarlas en SAPUI5 y en sus servicios oData. Pero, ¿y lo bonitas que quedan las aplicaciones nuevas aunque nos toque currar un poco más? Así, además, aprovechamos para limpiar código (guiño risita guiño).

Ahora pongámonos en el contexto del ejemplo particular. Tenemos nuestro ESS en Web Dynpro ABAP implementado y estamos migrando a Fiori. Una de las aplicaciones es el socorrido recibo de nómina, que lo pasamos a la versión 1 o la versión 2 del recibo de nómina en Fiori (a estas alturas deberíamos estar ya con la 2). De la versión 3 no puedo decir nada porque aún no la he podido probar.

Pues cuanto nos toca probar las aplicaciones, vemos que la nueva del recibo de nómina no pasa por la BAdI que ya habíamos implementado. Ponemos unos cuantos breakpoint pero nada, nos hace menos caso que Sauron a un par de hobbits. ¿Qué es lo que está ocurriendo?

miércoles, 11 de octubre de 2017

Target mapping sin LPD_CUST

Una de las cosas con las que nos liamos cuando comenzamos a pelearnos con Fiori es cómo saber qué aplicación se ejecuta al pulsar un tile. Podrá ser una aplicación SAPUI5, una Web Dynpro, una transacción o una URL, pero el procedimiento es el mismo, aunque en este post nos centraremos en aplicaciones SAPUI5.

Y es que esto no es "asignar una url y punto, tirando millas". Tenemos que seguir una serie de pasos: Crear el tile que se muestra, crear el target mapping que determina la aplicación y guardar en algún sitio la ubicación de la aplicación a ejecutar. Ojo, que no tiene por qué ser en ese orden, pero lo explico así porque parece más natural, aunque a la hora de hacerlo se haga al revés.

Y "ese sitio para guardar la ubicación" no es ni más ni menos que el launchpad del front-end (o rampa de lanzamiento), la transacción LPD_CUST. Ojo, no confundirlo con el Fiori Launchpad porque no tiene nada que ver aunque tenga el mismo nombre. El Launchpad es el "García" de SAP.

La configuración mediante la LPD_CUST


Esta es la configuración tradicional, aquella con la que nos hemos peleado siempre. No entraremos en detalle, porque esto es muy básico y el objetivo es otro, pero hagamos un breve resumen.

Lo primero que tenemos es el tile, con la correspondiente navegación por intención (mediante un objeto semántico y una acción). Esto no nos cambia en ninguna de las dos configuraciones mencionadas en este post.

Después tenemos el target mapping, que está atento a que se solicite esa "navegación por intención" para ver qué aplicación carga.

¿Y cómo determina el target mapping la aplicación? Consultándolo en la LPD_CUST.


Para ello, dentro del target mapping indicamos el launchpad (transacción LPD_CUST) dónde está guardada la información de la aplicación. Así que, básicamente con este método, el target mapping no sabe "qué aplicación se ejecuta" sino que sabe "dónde buscar la aplicación que se ejecuta".

Los parámetros son:

  • Launchpad Role y Launchpad Instance para saber qué entrada de la LPD_CUST tiene que leer.
  • Application Alias para buscar, dentro de ese launchpad, la aplicación que tenga este alias asignado.

Que el Launchpad Role se llame "Role" no tiene nada que ver con autorizaciones...
ya le podían haber puesto otro nombre, que luego uno siempre tiene que estar explicándolo

Con esa información nuestro target mapping ya sabe dónde tiene que buscar:


La configuración sin LPD_CUST


Pero ahora vamos al objetivo del post, que me enrollo más que Deadpool rompiendo la cuarta pared. ¿Por qué narices tenemos que guardar las cosas en la LPD_CUST? ¿No sería más sencillo guardarlo en el propio target maping?

Esto viene de antiguo... ojo, que decir "esto viene de antiguo" de una tecnología de 4 años tiene su tela. Está claro que se necesitaba un sitio donde guardar las apps. Y como la LPD_CUST ya estaba ahí (que ha sido muy útil para el Employee Self-Service y el Manager Self-Service en Web Dynpro ABAP, por mencionar algo), pues supongo que se decidieron a aprovecharla.

Pero, a partir del SAP UI Add-On 2.0 (la librería de SAP UI5 de la 1.30 para arriba), para nuestro Fiori Launchpad ya podemos configurar el target mapping sin necesidad de usar la LPD_CUST.


Simplemente, al crear el target mapping, en el desplegable Application Type elegimos la opción "SAPUI5 Fiori App". Ahora nos olvidamos del launchpad e indicamos los dos siguientes parámetros:

  • URL: Para indicar la url relativa de la aplicación, incluyendo el path que siempre asigna SAP para sus aplicaciones SAP UI5: /sap/bc/ui5_ui5/sap/<nombre_de_la_app>.
  • ID: Para indicar el nombre del componente, que podemos descubrir en el código del Component.js. en el declare (quitándole el .Component del final).


Así que si nos creamos un tile y un target mapping sin pasar por la LPD_CUST... ¿realmente funcionará?

La aplicación Ejemplo 1 no está configurada con la LPD_CUST

Pues sí, parece que funciona.


Ojo, que esto nos vale no sólo para las aplicaciones SAP UI5. También tenemos una entrada para poder configurar Web Dynpros, URLs y transacciones sin tener que recurrir a la LPD_CUST. En estos casos, si el back-end es distinto del front-end, nos tocará crearnos una RFC de tipo H que usaremos después como System Alias. Su nombre será <System_Alias>_HTTP o  <System_Alias>_HTTPS, según corresponda.

miércoles, 4 de octubre de 2017

Configurar SAP Cloud Portal para Fiori: Crear catálogos y asignarlos

Imaginaos que nos hemos creado un sitio web, en pan Fiori, en el portal de SAP Cloud Platform. Es fácil de imaginar si revisamos los post anteriores, cómo activar el servicio de Portal de SAP CP y cómo crear un sitio nuevo.

¿Qué tendríamos que hacer después? Cualquiera que sepa algo de Fiori lo tiene claro: Crear los catálogos y grupos y asignarle los mosaicos (los famosos tiles).

Pues eso es lo que vamos a hacer en este post, para que al final podamos obtener algo como lo siguiente:

Mi Fiori Launchpad con tres tiles

miércoles, 27 de septiembre de 2017

Configurar SAP Cloud Portal para Fiori: Crear sitio

Si queremos montar Fiori en la nube, podemos utilizar el servicio Portal de SAP Cloud Platform.

En el post anterior habíamos visto cómo activar el servicio y corregir posibles errores. Ahora vamos a crear el sitio y en el siguiente (cuando me dé por publicarlo), crearemos los catálogos, grupos y esas cositas.

Crear un nuevo sitio


Lo primero es acceder al servicio de Portal de SAP Cloud Platform, como ya vimos en el post anterior, para poder acceder al espacio de administración. Venga, que ya casi lo tenemos.



Ahí elegimos Directorio del sitio, donde vamos a ver todos los portales que tenemos creados. ¡Yo ya tenía uno creado! Es que soy todo un currante.


miércoles, 20 de septiembre de 2017

Configurar SAP CP Portal para Fiori

Cuando queremos montar el portal de SAP Fiori para nuestra empresa, podemos plantearnos tener un front-end on-premise, y en ese caso tendremos dos opciones: Montar un Fiori tradicional con un servidor ABAP que usemos como front-end, o usar el framework de Fiori que nos proporciona SAP Portal.

Pero también podemos elegir no tener que pelearnos con el front-end y montar un Fiori en cloud. ¿Quién nos va a permitir esto? Pues SAP Cloud Platform con su servicio de Portal, por supuesto.

Podemos ver la arquitectura repasando este post en el que contaba dónde se podía tener el Gateway con el que, de forma indirecta, hablo de los distintos posibles portales.

Lo bueno es que si tenemos una cuenta trial de SAP Cloud Platform (¿cómo que todavía no te la has creado?), podemos hacer la prueba en dicha cuenta para ver cómo nos quedaría (por si queremos preparar una demo) o incluso para tener organizadas nuestras aplicaciones que hayamos desarrollado en el Web IDE.


Ya después, si gusta el resultado, podemos plantearnos lo de pedir licencias de SAP Cloud Platform para poder montar un portal productivo.

¿Y cómo podemos montar nuestro portal de ejemplo? Pues para eso estamos aquí, para aprender esas cosas básicas:

  • En el post actual, activaremos el servicio y comprobaremos que todo funciona bien, no sea que haya algún error.
  • En el siguiente post, nos crearemos un sitio de tipo Fiori.
  • En el último post, crearemos los catálogos y grupos del sitio y veremos cómo asignárselos a los usuarios.


miércoles, 13 de septiembre de 2017

La nueva web de SAPUI5 SDK

¿Os habíais dado cuenta de que la web del SDK de SAPUI5 ha cambiado? ¿Ah, sí? ¡Pues yo me acabo de enterar! Que con el veranito de por medio, llevaba algo de tiempo sin visitarla. El caso es que ya había leído algún tuit al respecto, pero me ha cogido por sorpresa, la verdad.

Le han hecho un lavado de cara completo, basándose en la última librería de SAPUI5, la 1.48. Mucho cambio de colores y de organización, pero afortunadamente la funcionalidad es la misma, así que no nos va a costar ponernos al día.

Bienvenido a SAP UI5

miércoles, 6 de septiembre de 2017

Cuánto cuesta SAP Cloud Platform

La mayoría de las veces que se le pregunta a un consultor funcional o técnico sobre precios de algún producto de SAP, nunca lo tienen nada claro. Yo me incluyo el primero. Eso siempre lo acaban gestionando "entre los comerciales". El consultor llega "cuando ya está el pescao vendío".

Pero con SAP Cloud Platform todos podemos acceder más fácilmente a la información, porque aquí si que tenemos un sitio oficial donde ver precios. Ojo, que al final en la web el consejo es "Contacta con SAP", pero al menos podemos obtener la cifra gorda. Que no es lo mismo interesarse por el precio de un anillo en la feria del pueblo que por el de un anillo de oro que muestre una inscripción en la lengua negra de Mordor cuando se lanza al fuego.

Vamos a hablar de pasta

Y el enlace de precios está muy accesible, en la página de SAP Cloud Platform, sección Pricing. O, para ponerlo más fácil, aquí.

Ahora sólo queda escoger la modalidad que más se amoldará a la empresa, según sus necesidades: Licencias por número de usuario o sin limitación, tamaño de base de datos, servicios adicionales como el oData Provisioning (el Gateway en la nube) o el API Management, ancho de banda, visitas mensuales al SAP CP Portal...

lunes, 4 de septiembre de 2017

A seguir estudiando después del veranito: Miríada X

Hace poco comenté los cursos relacionados de alguna manera con SAP UX que OpenSAP tenía preparados para septiembre. El de Crear aplicaciones nativas Fiori para iOS ya han comenzado, y la repetición del curso de SAP Cloud Platform Essentials comienza mañana, día 5 de septiembre. Un curso obligatorio para ponerse a día si aún no sabes que es eso de SAP "en la nube".

Pero lo que no mencioné son los cursos que comienzan en otro portal de cursos online masivos (MOOC) al que suelo acudir para ver novedades, el de Miriada X.


Como ya mencioné tiempo atrás, hace ya casi ocho meses, este portal no es específico para cursos de SAP, pero que nos pueden resultar útiles para todo lo relacionado con la creación web, aplicaciones móviles o que tengan una relación indirecta con nuestro trabajo. Y, ya acabado agosto, me ha dado por revisar el portal y he descubierto los siguientes que me parecen interesantes. Si me despisto, me los pierdo:

miércoles, 30 de agosto de 2017

Cuidado con lo que envías en el servicio oData

Para la mayoría de los lectores, que ya estarán metidos en materia fiorística (término que, por supuesto, me acabo de inventar), puede que este post resulte más que evidente. Pero quizá no lo sea para aquellos que se acaban de sumergir en esta materia del Gateway, los servicios oData y las aplicaciones SAPUI5.

Y es que gracias a los servicios oData podemos enviar información a nuestra aplicación SAPUI5 y luego allí decidimos qué mostramos o que no. ¡Pero la información se sigue enviando! Aunque no la veamos bien pintadita en la pantalla, podemos descubrir fácilmente lo que se ha enviado sin ser unos genios informáticos. ¡Si hasta yo sé cómo hacerlo! Nos basta con una simple tecla: F12.

Así que, cuando creemos nuestro propio servicio oData (proceso que podemos recordar en este post), sólo debemos enviar aquello que el receptor realmente tenga permiso para leer. La parte web sólo se tiene que preocupar en si un dato se pinta o no, pero no en si tienes permiso o no para recibir ese dato.

Veamos lo que no debemos hacer y cómo descubrir toda la información que se envía, aunque la aplicación no nos lo muestre.

miércoles, 23 de agosto de 2017

WebIDE: Desplegar una aplicación SAPUI5 (II, en la nube)

Tras ver cómo desplegar una aplicación SAPUI5 en un servidor SAP onpremise, ahora nos toca ver cómo hacerlo en la nube.

Es decir, vamos a poner nuestra aplicación disponible en nuestra cuenta de Cloud Platform, generando una URL a la que cualquiera podrá acceder, o permitiendo usarla en nuestro Fiori on-cloud.

Bueno, hay que destacar que la aplicación no la va a poder usar cualquiera. Tras el despliegue, tendremos que gestionar las autorizaciones para determinar qué usuarios tendrán acceso o la configuraremos para que sea pública para todo el mundo. Pero este post va en plan sencillito, así que sólo vamos a desplegarla para ser usada por nosotros mismos en nuestra cuenta trial.

jueves, 17 de agosto de 2017

Nuevas aplicaciones para Fiori HCM: Version 3

Andaba yo curioseando sobre la aplicación My Paystubs (mis recibos de nómina) en la librería de aplicaciones de Fiori, cuando descubro que no sólo tenemos una versión 1 y versión 2, ¡sino que hasta aparece una "Version 3"!

Así que me pongo a cotillear más y descubro que SAP ha liberado una nueva versión para varias aplicaciones de SAP HCM, ¡y para SAP Business Suite, no para SAP S4/HANA!

  • Para el Employee Self-Service, tenemos My Leave Requests, My Paystubs, My Time Events (las tres en versión 3), Team Calendar (versión 2) y Employee Look Up (sin especificar versión, así que aparecen dos aplicaciones con el mismo nombre);


La nueva aplicación de My Leave Requests recuerda a la antigua de Web Dynpro ABAP, siendo más accesible,
y yo que me quejaba hace poco de la falta de accesibilidad

miércoles, 16 de agosto de 2017

WebIDE: Desplegar una aplicación (I, en SAP on-premise)

La verdad es que hemos visto como hacer unas cuantas cosillas: crear una aplicación, crear un servicio oData, enlazarlos, configurar el SAP Cloud Connector... ¡Pero no hemos visto cómo desplegar la aplicación! Y digo yo que ya va siendo hora, ¿no?

Eso sí, podemos tener tema para largo, así que lo haremos sencillo y por partes. De momento, hoy vamos a ver cómo desplegar nuestra aplicación en nuestro servidor SAP on-premise, para aquellos que tengan Fiori instalado en sus propias maquinitas y no en la nube. Que, hoy por hoy, serán mayoría. No vamos a hablar de asignar al catálogo, crear autorizaciones, etc. Sólo de mover la aplicación a SAP.

Eso sí, antes de nada, que no se nos olvide comprobar qué versión de SAPUI5 tenemos en nuestro SAP, no sea que luego la aplicación no nos valga y nos llevemos un chasco mayor que cuando Rocky Balboa se enfrentó a M.A. Barracus. Y eso lo podemos descubrir gracias a este post (lo de SAPUI5, no lo de Rocky).

miércoles, 9 de agosto de 2017

Saber que versión de SAPUI5 tenemos instalada

Tras desplegar nuestra aplicación en nuestro servidor ABAP, puede que nos encontremos con la mala experiencia de tener una aplicación que no se ejecuta y comienza a dar errores en Javascript que no entendemos. ¿Qué pasa aquí? ¿Está el destino en nuestra contra?

Puede ser tan simple como que hayamos creado la aplicación en una versión superior a la de nuestro ABAP.

Así que vamos a descubrir qué versión tenemos instalada para así poder elegir la versión correspondiente en el WebIDE, al crear la aplicación.

La versión de la aplicación la podemos elegir cuando la creamos, a partir de una plantilla en el WebIDE

miércoles, 2 de agosto de 2017

SAPUI5: Mostrar el tamaño de una tabla en el IconTabFilter

Cuando tenemos un IconTabBar con una tabla que recupera datos de un servicio oData y no tenemos ni repajolera idea de cuantas entradas tiene la tabla, queda muy chulo poder recuperar el número de entradas y mostrarlo en el icono donde esta la tabla. De esta manera tenemos una información visual muy útil.

Así que si partimos de una aplicación como la que hicimos en este post, podríamos querer conseguir algo como lo siguiente:


¿Pero cómo podemos obtener y rellenar ese dato?

¡El Gran Circo de SAPUI5 ya está aquí! ¡Pasen y vean, señoras y señores, pasen y vean!

miércoles, 26 de julio de 2017

SAPUI5: Crear una tabla (III, tabla responsive)

Cuando decimos aquello de que SAPUI5 es responsive, podemos pensar que, mágicamente, la aplicación se va a adaptar al dispositivo. Pero eso no es así de sencillo, tenemos que poner (código) de nuestra parte.

Así que en este post vamos a ver cómo podemos hacer que una tabla sea responsive y se adapte al dispositivo o al tamaño del navegador, ya sea ocultando columnas que nos aportan poca información, o agrupando varias columnas debajo de la primera. Estas operaciones nos permitirán evitar tener columnas de un ancho absurdamente pequeño, tener que usar el scroll horizontal y tener que estar haciendo zoom constantemente.

Partiremos de una tabla de tipo sap.m.Table que habíamos creado en un post anterior, que mostraba el contenido de la colección Employees del servicio oData Northwind.

Esa aplicación la hemos ido creando a lo largo de tres posts (no sólo el que he mencionado antes), que en orden son los siguientes:

Nos centraremos en tres propiedades que se usan en el elemento sap.m.Column para que nuestra tabla se convierta en algo así cuando se reduzca el ancho del navegador:

Sólo vemos tres columnas, pero es que las que nos faltan o se han ocultado (el título),
o se han colocado debajo de la primera (el nombre y el id).

miércoles, 19 de julio de 2017

SAPUI5: Separar contenido mediante barras de iconos (Icon Tab Bar)

Habíamos estado viendo ejemplos de cómo crear una tabla con contenido estático y con contenido dinámico, obtenido a través de un servicio oData. La primera (la estática) la estábamos utilizando como si fuese una leyenda, para aprender a trabajar con tablas. La segunda nos servía para ver como enlazar una colección con la tabla.

Todavía nos falta hacer la tabla dinámica responsive. Pero hay que admitir que la aplicación quedaba más fea que un goblin con sarna, con las dos tablas juntas y sin separación. Así que en este tutorial vamos a separarlas y así aprendemos a usar un componente, el IconTabBar.

Nuestro objetivo es obtener algo así:

Al pulsar cada icono, veremos una tabla distinta y el resto hará ¡puf! y dejará de verse

De tal forma que, cuando pulsemos un icono, nos muestre sólo la leyenda, y cuando pulsemos el otro, la tabla con los datos. El tercero será para mostrar información adicional.

lunes, 17 de julio de 2017

A seguir estudiando después del veranito

Y yo que pensaba hace unos pocos días que no encontraba ningún curso interesante, y de repente me llega un email de openSAP para ponerme al día.

¿Alguno que me haya llamado la atención relacionado con SAP UX? Pues alguno hay, a ver si os gustan:

- SAP Fiori for iOS: Para finales de agosto de 2017, destinado a aquellos interesados en crear aplicaciones nativas para iOS. Eso sí, aunque no se necesitará obligatoriamente un iPad o un iPhone (ya que se podría usar un simulador), para los ejercicios sí que sera necesario tener un Apple. Digo yo que lógico, ¿no?

- Using SAP Screen Personas for Advanced Scenarios: Para principios de septiembre, un nuevo curso de esta herramienta que sirve para más que pintar las viejas dynpros del ECC y dejarlo cuco. El siguiente paso al curso básico dado anteriormente, Introduction to SAP Screen Personas. Si no diste ese curso, pues aprovecha este veranito antes de que empiece el nuevo ;).

- Basics of Design Research: Porque no todo va a ser picar código, para septiembre tenemos también la nueva edición de este curso donde podemos aprender a obtener la información necesaria para poder crear una aplicación guay, centrada en la persona que va a usarla.

Así que para ponerse al día y aprender un poquito más sólo es necesario ir echando un vistazo de vez en cuando a https://open.sap.com/courses .

O también podéis aprovechar para echar una ojeada a cursos antiguos, que no obsoletos ;).

miércoles, 12 de julio de 2017

SAPUI5: Crear una tabla (II, tabla enlazada con servicio oData)

En un post anterior, estuvimos viendo cómo funcionan las tablas con un ejemplo sencillo, mostrando datos estáticos. Pero claro, eso no nos vale para mucho. Lo que queremos hacer es mostrar los datos de un servicio oData, obteniendo así una tabla dinámica megachula.

Y eso es lo que vamos a hacer ahora. Partiendo de la aplicación del otro día, añadiremos una tabla que consulte la colección Employees del servicio de Northwind.

Los pasos que vamos a seguir son:

  • Modificar la aplicación para cargar el servicio oData. Esto no tiene que ver con tablas, pero nos toca hacerlo.
  • Crearemos una tabla que cargue los datos de la colección Employees.
  • Modificaremos la tabla para darle formato y que quede más guapetona.

miércoles, 5 de julio de 2017

¿Programar en el Web IDE con el móvil? ¡Anda ya!

Pues sí, a ratos uno tiene ideas muy locas, y se me ocurre pensar si sería posible hacer una pequeña aplicación SAPUI5 en el móvil, mientras desde el bar del hotel veo cómo la lluvia me ha estropeado un día de playa. Se podría pensar "bueno, a lo mejor con una tablet y con un teclado externo...", pero no, he dicho ideas muy locas, así que a programar con el móvil.

Partamos de una premisa: Para programar se necesita teclado, pero uno de verdad, no uno virtual, con el que se pueda escribir cómodamente. Y una buena pantalla. Con esto en mente, ya sabemos que un móvil no es, ni de lejos,  lo más idóneo para picar código. Al menos no hasta que los teclados y monitores holográficos sean una realidad.

Mi intención era, sobre todo, probar si es factible hacer en el Web IDE, a través de un móvil decente (con Android en mi caso), alguna pequeña corrección en un código que ya exista, o incluso crear una aplicación a partir de una plantilla sin que se nos complique la existencia. Todo ello sin perder cordura como si estuviésemos invicando al mismísimo Cthulhu. Por ejemplo... no sé... ¿un ejemplo de una tabla en SAPUI5 para escribir un post?  ;)

miércoles, 28 de junio de 2017

SAPUI5: Crear una tabla (I, tabla con datos estáticos)

Uno de los elementos que más podemos usar en SAP UI5 para mostrar mucha información de forma tabulada es una tabla: Nos alinea el contenido y la podemos hacer responsive para que se adapte a las dimensiones del dispositivo.

Así que vamos a seguir una serie de pasos para ver como usar las tablas. Para ello voy a utilizar el elemento sap.m.Table, tabla específica para móviles, que es la que más nos va a convenir cuando queremos que la aplicación se use en cualquier tipo de dispositivo. Si fuésemos a necesitar una tabla más compleja para el ordenador de escritorio, usaríamos sap.ui.table.Table.

Este ejemplo lo haremos en tres artículos consecutivos:

  • En el presente, crearemos una tabla con datos estáticos, es decir, que nunca van a cambiar. De esta manera aprenderemos los conceptos básicos.
  • En el siguiente artículo, enlazaremos una tabla con un servicio oData, para ver como se genera el contenido de la tabla de forma dinámica.
  • En el último artículo, haremos nuestra tabla adaptativa (responsive), para que la información que muestre dependa del dispositivo usado.

miércoles, 21 de junio de 2017

SAP Fiori: Adaptabilidad sí, ¿pero accesibilidad?

Siempre que se habla de Fiori y de sus aplicaciones SAP UI5, se resalta aquello de que son aplicaciones adaptables al dispositivo que se usa (aquello de responsive), así que lo vas a poder usar en el pc, la tablet o el móvil.

Pero, ¿tenemos claro si Fiori y las aplicaciones SAP UI5 pueden ser usados por cualquiera, sin estar pensando en compatibilidades con dispositivos? Aquí entra en juego otra variable de la que a lo mejor no se habla demasiado en las presentaciones tradicionales de Fiori: La accesibilidad.

Es importante destacar que de temas de accesibilidad no sé nada. Bueno, lo digo como si del resto supiese gran cosa... El caso es que lo he descubierto de rebote, porque hasta ahora no iba más allá de pensar que "existía un tema de escritorio de alto contraste para la gente con problemas visuales". La ignorancia, nuestra gran virtud :(.

Así que este post es únicamente una reflexión, ya que tras un tiempo desarrollando aplicaciones Web Dynpro ABAP y SAP UI5, es la primera vez que me encuentro con este tema. Sólo voy a hablar de curiosidades, de mi primer contacto y de algo que tengo que aprender y que, además, me interesa hacerlo.

Porque muchas veces, hasta que no te encuentras con la situación particular, no te das cuenta de que detrás de estos temas hay todo un gran mundo. Y yo era (y soy) un completo zoquete en este ámbito. Si digo alguna barbaridad, perdonadme, pues esto va dirigido a aquellos que estén tan pez como yo en esta materia y para que lo que sepan algo nos puedan guiar.

miércoles, 14 de junio de 2017

OData Provisioning: Configurar el Gateway en la nube

Hace un tiempo vimos las distintas ubicaciones en las que podíamos tener el Gateway. Una de las posibilidades era tener el Gateway en la nube, y eso lo conseguimos gracias a un servicio que nos proporciona el Cloud Platform: OData Provisioning (a partir de ahora, ODP, para no escribir tanto).

Venga, vamos a pelearnos un poco para ver cómo activamos este servicio. Lo básico, sólo conseguir que nos funcione.

Los pasos que vamos a tener que seguir son:
  • Activar el servicio oData Provisioning en Cloud Platform.
  • Crear las autorizaciones necesarias para poder administrarlo y usarlo.
  • Activar el servicio IWBEP en el back-end.
  • Crear un destination que apunte al componente IWBEP del back-end.
  • Registrar los servicios oData que queramos utilizar en el ODP.
  • Crear un destination que apunte al ODP.
  • Crea la aplicación que usará dicho destination.
  • Tomarnos unas cervezas para celebrarlo.

miércoles, 7 de junio de 2017

Cómo configurar el servicio oData de Northwind

En los post que hemos ido viendo, siempre creábamos un servicio oData en nuestro Back-End. Lo cual es normal, todo sea dicho, ya que estamos aprendiendo a hacer cosas tanto en el Front-End como en el Back-End.

¿Pero qué pasa si no tenemos acceso a un SAP en el que poder hacer nuestras prácticas o que simplemente le tenemos tirria al ABAP y sólo queremos aprender un poquinín de SAP UI5? En ese caso, podemos usar el servicio de Northwind.

Este servicio está disponible en la siguiente URL: http://services.odata.org/V2/Northwind/Northwind.svc/

Hay también una versión 3 y versión 4 de oData, pero para el Web IDE sólo podemos usar hasta la versión 2.

miércoles, 31 de mayo de 2017

Fiori roadmap y aplicaciones para SAP HCM "en nombre de"

De rebote, a raíz de un tweet de Nis Boy Naeve (jefazo de la parte de UI en SAP), me dio por echarle un ojo a la actualización del roadmap de Fiori del segundo trimestre de este año, que podéis descargar en la página de roadmaps de productos de SAP.

Un documento extenso, muy extenso (más que el hobbit, que no sé como le dio a Peter Jackson para sacar tres películas), en el que nos cuentan cómo mola Fiori, las mejoras que aporta Fiori 2.0 (tanto las que ya hay como las que vendrán) y las posibles arquitecturas que podemos tener, para luego comenzar con las innovaciones venideras de los productos relacionados: SAP UI5 (donde abunda el 2.0 y el oData V4), Fiori Launchpad, HANA Enterprise Search, SAP Smart Business, SAP Fiori for S/4HANA, Fiori Cloud y otros servicios de Cloud Platform relacionados. Vamos, básicamente todo aquello a lo que le podáis poner la etiqueta Fiori (incluyendo SAP Screen Personas).

Y tras todo este mogollón genérico (digamos más bien cross), entra al detalle con cada línea de negocio: Nuevas aplicaciones y mejoras de las existentes.

Pues yo, como consultor de SAP HCM que soy, voy y me planto en directo en la sección de aplicaciones para recursos humanos. Es lo suyo, ¿no? Y es que se van echando en falta algunas mejoras. Todo ello sin entrar en detalle de hacía donde va SAP HCM (eso nos lo cuenta mejor Antonio de Ancos en este post).

lunes, 29 de mayo de 2017

Retiro Temporal


Hola a todos!

Os escribo este post para disculparme por no haber escrito en estas últimas semanas.

Acabo de cambiar de empresa y llevo unas semanas centrado únicamente en el nuevo trabajo y en aprender lo más posible.

Es algo que llevaba mucho tiempo buscando y al final me he decidido a cambiar y ojala que salga bien.

Debido a este cambio durante una temporada voy a tener más difícil colaborar con Jorge en este blog.

El rol que tengo en mi nueva empresa está más centrado en temas de programación y por ahora voy a dejar el trabajo de consultor, sobretodo la parte de nómina.

En el futuro si voy encontrando tiempo para seguir colaborando en este blog, intentaré centrarme en temas de programación ABAP y en la parte de Fiori.

Muchas gracias a todos por leerme y sobretodo a Jorge por dejarme colaborar con él en este blog.

Saludos y si puedo, volveré jejeje.

miércoles, 24 de mayo de 2017

SAP UI5 y oData: Asociaciones, navegación y expand (y III, usar en SAP UI5)

En capítulos anteriores...

Habíamos visto la teoría para intentar entender qué es eso de las asociaciones, las navegaciones y el expand. Para ello nos habíamos basado en un ejemplo, una aplicación friki para mostrar series de ciencia ficción y sus personajes, en plan Master and Detail.

Después, nos habíamos peleado con SAP para crear, mediante las transacciones SEGW y SE24, el servicio oData.

Ahora nos toca desarrollar la aplicación en SAP UI5, una de tipo Master-Detail que consuma el servicio creado en el paso anterior.


Pero vamos a ver varias formas de hacerlo, dónde y cómo podemos navegar y expandir la navegación. Tanto añadiendo código en la vista (como hace el Web IDE) como en el controller (por si queremos realizar algún tratamiento especial al resultado, más allá de recuperar los datos).

NOTA: Si la parte de crear el oData en ABAP os la saltasteis, podéis recurrir al servicio odata de Northwind. Por ejemplo, con la colección Regions y la navegación Territories, http://services.odata.org/Northwind/Northwind.svc/Regions?$expand=Territories&$format=json


miércoles, 10 de mayo de 2017

SAP UI5 y oData: Asociaciones, navegación y expand (II, oData y ABAP)




Habíamos estado hablando de lo que eran las asociaciones, la navegación y el expand en los servicios oData. Así, en plan teórico. Y poníamos como ejemplo una posible aplicación para mostrar los personajes de las películas de ciencia ficción.

Esta es la aplicación que queríamos crear... a ver cómo creamos el servicio oData


Pues ahora nos vamos a poner con la parte práctica, vamos a meterle mano a la máquina. Lo primero es crear el servicio oData, y eso es lo que vamos a hacer aquí. En el siguiente post ya lo enlazaremos con la aplicación en SAP UI5.

Si nunca has creado un servicio oData en SAP, quizá te interese revisar este post anterior.

Es importante destacar que la asociación la vamos a crear relacionando propiedades. Esto no siempre es necesario, pero a la hora de codificar en ABAP nos va a facilitar mucho el trabajo. Me dejaré pendiente hacer un post para explicar otra manera de codificar las navegaciones.

Este ejemplo de aplicación hecho en el Web IDE hace los siguientes tipos de llamada, que nos sirve como idea para determinar lo básico que necesitamos implementar.

  • Servicio_de_saga/Sagas
  • Servicio_de_saga/Sagas('STARWARS')
  • Servicio_de_saga/Sagas('STARWARS')/LosPersonajesDeEsaSaga

 Pero nos complicaremos un poco más la vida para obtener más información y aprender más:

  • Servicio_de_saga/LosPersonajes?$expand=SuSaga

Los pasos que seguiremos son:

  • Crear las estructuras y tablas que necesitaremos, incluyendo datos (SE11 y SM30).
  • Crear el proyecto en la SEGW y activar el servicio oData en la /IWFND/MAINT_SERVICE.
  • Programar los métodos para permitir la funcionalidad de la aplicación estándar (entidad de saga, entityset de saga y navegación hacia personajes).
  • Reprogramar el método que nos permite expandir la saga de un personaje (navegación de un personaje hacia su saga).

Como he metido mucha chicha, siempre podéis leer en diagonal y prestar atención a las imágenes ;).
 

viernes, 5 de mayo de 2017

Curso de Portal en SAP Cloud Platform

Pues sí, llego un poco tarde, pero más vale tarde que nunca, y es que OpenSAP comenzó la semana pasada su curso de Portal en SAP Cloud Platform. Es decir, el portal en la nube.

El curso está en este enlace y es muy interesante, ya no sólo para administradores de portal, sino incluso para desarrolladores de SAP UI5 que están haciendo sus pinitos con su cuenta trial y quieren saber cómo quedarían sus aplicaciones en un entorno de portal.

A estas alturas (primera semana de mayo) ya van por la segunda semana, aunque eso no implica que los interesados en "graduarse" no puedan hacerlo... simplemente la primera semana no les puntuará.

¿Y cómo encaja este portal en el mundo sapero que ya conocemos?


miércoles, 3 de mayo de 2017

SAP UI5 y oData: Asociaciones, navegación y expand (I, teoría)

Cuando tenemos una tabla sencilla en SAP y queremos mostrar los datos en una aplicación SAP UI5, nos podemos crear una aplicación que consuma un servicio oData sencillito y nos quedamos tan contentos (como podemos hacer viendo los distintos post en la página de tutoriales).

Pero claro, las cosas no son tan sencillas, y seguro que nos toca crear una aplicación que muestre datos de muchas tablas que están relacionadas entre ellas. Manda narices, siempre pidiéndonos cosas complicadas.

Pues para solucionar ese problema, vamos a aprender tres cosas muy importantes en un servicio oData: las asociaciones, las navegaciones y el expand.

Gracias a las asociaciones (y compañía), podremos crearnos una aplicación en SAP UI5 que nos muestre los datos de ambas tablas relacionadas, sin tener que comernos mucho la cabeza para hacer múltiples llamadas al servicio oData y tratar los datos en la aplicación. Con una llamada obtendremos los datos de ambas tablas, de sopetón.


miércoles, 26 de abril de 2017

Posibles escenarios con Fiori en SAP Portal


En el post anterior habíamos hablado sobre el Framework de Fiori para SAP Portal, o lo que viene a llamarse el Fiori Launchpad on SAP Enterprise Portal.

Ahora vamos a ver las opciones que tenemos si queremos usar Fiori o aplicaciones SAP UI5 en nuestro SAP Portal, y nos encontraremos con tres posibles opciones (no voy a contar nada nuevo, pero bueno):

  • Usar SAP Portal con una visualización tipo Fiori. Aquí me explayaré un poco más para entrar más en detalle con los temas técnicos, los nuevos tipos de elementos que tenemos disponibles y cómo usarlos, complementando lo mencionado en el post anterior.
  • Usar SAP Portal tradicional con aplicaciones SAP UI5. Básicamente, no queremos Fiori, pero nos interesan algunas aplicaciones SAP UI5 estándar (o propias).
  • Múltiples escenarios con distintas visualizaciones, si no queremos llevarnos todo el portal a una visualización tipo Fiori (por ejemplo, que el portal de HR sí se vea en Fiori pero el resto no).
  • Dejarnos llevar por la locura (como si fuésemos meros esbirros del gran Cthulhu) e ir directamente a Fiori 2.0... que esto sería compatible con los otros puntos, todo sea dicho.

Usar SAP Portal con una visualización tipo Fiori


El escenario ideal sería tener una visualización de tipo Fiori, accediendo a la URL del portal y viendo los famosos tiles.

Estoy en SAP Portal, ¿a que no lo parece?


Realmente, seguiremos trabajando en SAP Portal, pero con el nuevo framework que nos simula Fiori Launchpad.

A efectos visuales, estaremos rodeados de catálogos y tiles por doquier, en lugar de usar la navegación típica de SAP Portal y los vulgares enlaces tradicionales.

Técnicamente, estaremos asignando un desktop que use dicho framework y un tema compatible con Fiori.

Aquí está el Fiori Desktop estándar. Dentro de él, está escondido el Fiori Framework.

Los catálogos no se crean mediante el Launchpad Designer, como en el front-end. En su lugar, se usarán Categorías, que hacen las veces de catálogos pero funcionan de una forma algo diferente.
Excepto en contadas ocasiones, no necesitamos definir catálogos en el front-end, sino sólo las categorías en SAP Portal. Me dejo pendiente hacer un post futuro para contar cuando pueden hacer falta los catálogos en SAP Portal.

Las categorías se definen en una iView estándar nueva, Fiori Framework Categories, que nos permite crear hasta 20 de ellas (indicando qué posición ocupan en la pantalla, un identificador y el título con el que se muestra la categoría).

Eso sí, si las 20 categorías se nos quedan cortas, siempre podemos aplicar la nota 2214932 (¡cuidado, usando las peligrosas PCD Tools!).

Aquí definimos las categorías, asignando un ID, la posición y el título que se muestra en el Launchpad

Y para poder mostrar los tiles, lo que hacemos es... ¡usar iViews! Sí, como no, recordemos que estamos en SAP Portal, ¿qué íbamos a usar si no?

Para las aplicaciones SAP UI5 en Fiori, usaremos el nuevo tipo SAP Fiori iView, que es la que nos permite indicar los datos de la aplicación (nombre y componente) y dónde está ubicado el Fiori Launchpad (recuerda, según el post anterior, que nos sigue haciendo falta el Launchpad real para ejecutar las aplicaciones en modo standalone).

Pero, además, podemos crear tiles enlazando iViews de otros tipo, no sólo Fiori. Al hacerlo, se verán como un tile normal pero luego se abrirá la "tecnología" correspondiente (una URL, una web dynpro...). De esta manera, podemos rescatar las aplicaciones no-SAPUI5, teniendo en cuenta que no serán adaptativas, claro.

Todos (o al menos muchos) de los tipos de iViews disponen de varias propiedades nuevas para poder usarlas como tiles, que nos permitirán indicar:
  • En qué categorías (catálogos) se muestran. Aquí indicaremos los identificadores de las distintas categorías en las que se verán.
  • En qué dispositivo se puede usar la aplicación: Gracias a esta propiedad, podemos definir aplicaciones que sólo se podrán ver en un pc (por ejemplo, las Web Dynpro) y aquellas que se pueden usar en otros (móviles y/o tablets). Una iView con este parámetro en blanco nunca se verá en el framework de Fiori.
  • Si se muestra anclada al escritorio por defecto o hay que seleccionarla del catálogo.
  • El icono de SAP UI5 con el que se muestran.
  • Y otras distintas propiedades menores, que tampoco me voy a liar a contar.
¿Y entonces cómo se determinan los tiles que ve el usuario? ¿Le asignamos las categorías de alguna forma y ya está?

Pues no, en SAP Portal no va así. Realmente vamos a seguir trabajando como siempre se ha hecho en SAP Portal, mediante la asignación de grupos y roles de portal. Una vez asignados los roles, al acceder a la visualización de tipo Fiori Launchpad sólo se mostrarán aquellas iViews que tengan asignado el tipo de dispositivo correspondiente (desktop, tablet y/o móvil). El resto, simplemente se ignorarán. Además, se agruparán en categorías (aka catálogos), que las hemos asignado en la propiedad correspondiente de cada iView.

Luego: Rol de portal determina mis iViews => Propiedad de dispositivo de cada iView determina si se ven en mi dispositivo actual => Propiedad Categoría de cada iView determina cómo se agrupan.

Eso sí, para que una iView se vea, tiene que estar marcada como visible, y el rol o workset correspondiente debe ser punto de entrada... vamos, que no cuento nada nuevo para alguien que sepa de SAP Portal ;).

¡Este rol está listo para ser usado en Fiori!

Usar SAP Portal tradicional con aplicaciones SAP UI5


Otra posibilidad es utilizar el framework tradicional de SAP Portal (el clásico o el modo Ajax) e integrar las aplicaciones de tipo Fiori (o las aplicaciones SAP UI5 que tengan un punto de entrada -index.html o similar-, ya sea como URL o desplegándolas en SAP Portal... nivel Dios, ojo).

Con esto lo único que conseguimos realmente es aprovechar las nuevas aplicaciones (adaptativas) que nos da SAP y las que hayamos creado con el Web IDE. Pero eso no hará que el propio portal sea responsive, así que queda un poco chapucilla en ese sentido. Tampoco nos libramos de tener que usar otro front-end a no ser que la despleguemos en el propio SAP Portal.

Eso sí, al menos está bien saber que podemos integrar una aplicación SAP UI5 en SAP Portal y que no nos obligue a visualizar el Fiori Launchpad.

A tener en cuenta para los más valientes, que si queremos abrir la aplicación integrada en el portal (no como una ventana aparte), éste tiene que ser en modo estándar, así que habría que usar el framework de tipo Ajax.

Múltiples escenarios, distintas visualizaciones


Esta opción es la que nos permite usar el framework de Fiori sólo en unos casos, manteniendo el framework clásico (tradicional o tipo Ajax) en otros.

¿Y por qué puede ser esto necesario? Pues porque se esté migrando por departamentos/sociedades, poco a poco, o porque el portal esté apuntando a varios servidores (por ejemplo, si migramos a Fiori HCM pero no lo hacemos en CRM).

En ese caso, podemos usar las triquiñuelas propias de SAP Portal para determinar que desktop (y, por tanto, framework) se va a utilizar. En este caso la triquiñuela se llama Master Rule Collection.

Ese pequeño elemento no es más que una especie de "CASE" (llámese case, if-else-elseif, switch) que determina que desktop vamos a usar en cada situación.

En la Master Rule Collection asignamos las reglas para determinar el Desktop a usar

Con ello podríamos tener opciones como las siguientes:
  • Si accedes al servidor con la url http(s)://mi_servidor:puerto/irj/portal/fiori, accedes a la visualización de Fiori.
  • Si tu usuario de SAP Portal está asignado al grupo de portal "Fiori", accedes a la visualización de Fiori.
  • Si tu usuario de SAP Portal tiene asignado el rol de portal "Fiori_ESS", accedes a la visualización de Fiori.
  • Si tu usuario es Pepito, accedes a la visualización de Fiori.
  • En cualquier otro caso, accedes a la visualización tradicional.
Este ejemplo cutrecillo nos vale para podernos hacer una idea de la potencia de este elemento: Podríamos elegir que con la url por defecto (irj/portal) se acceda a Fiori y mediante distintos alias (irj/portal/antiguo, irj/portal/crm, etc.) se navegaría al portal tradicional.

O podríamos ir migrando por departamentos/sociedades poco a poco, haciéndolo transparente a los usuarios (le asignaríamos el grupo "Fiori" a los usuarios que tienen que acceder al framework nuevo y no se lo asignaríamos al resto).

O lo que os podáis imaginar. No me voy a poner a dar aquí ideas como un loco, que cada uno se dé a sus propias locuras.

SAP Fiori 2.0 en SAP Portal


Pues sí, los catálogos nos limitan mucho si tenemos una navegación compleja en SAP Portal, ya que sólo hay un "nivel" de agrupación y con SAP Portal podemos liarnos a crear worksets, carpetas, iViews de tipo mapa de servicios y crear una estructura "como de carpetas".

Pero bueno, para eso está SAP Fiori 2.0, ¿no? Porque a partir del SAP NetWeaver 7.5 para portal, si no hemos dado el salto a Fiori por culpa de los niveles de navegación, quizá ya podamos plantearnos dar el pasito al 2.0.

De aquí poco más puedo contar que lo que he leído, así que para mentir, mejor os pongo un enlace para que vosotros le echéis un vistazo.

Porque técnicamente todo no es tan sencillo...


Como último detalle, contar que no todo es tan fácil. No, no, no, no quiero decir que es complicadísimo, ni de lejos. Pero, como os podéis imaginar, siempre van saliendo problemillas  técnicos al montar Fiori en portal. Pero es que de eso vivimos, oye, de resolver cosas.

Problemas con la caché del navegador al subir versiones nuevas de aplicaciones, tener que configurar el tema para Fiori en el front-end y en portal, crear catálogos para las aplicaciones accesibles desde otra aplicación, los líos de trabajar con modo Quirk y modo Standard (¡malditos navegadores modernos!), protecciones anti-clickjacking y de navegación entre distintos dominios, querer ocultar los roles de Fiori en la vista tradicional (para que no se vea en el TLN)... vamos, que no os vais a aburrir.

Pero todo se va solucionando. Intentaré contar algunas cosillas en post futuros, por si a alguien les sirve (y si no, ya me servirá como mínimo a mí, entro de un tiempo, cuando se me hayan olvidado las cosas que ya he hecho y tenga que volver a hacerlas).

lunes, 24 de abril de 2017

Centro de Control de Nómina: Fin Ejemplo de Uso (Parte 4 de 4)


En este ya que si que si último post del CCN, voy a finalizar con este ejemplo interminable pero incompleto, del proceso que se podría realizar un mes cualquiera en una empresa, que utilizase esta herramienta para lanzar sus procesos de nómina (Links pasados para que os quiero: parte1, parte2 y parte3).
 
Previously en Trasteando con SAP UX nos quedamos viendo un ejemplo de uso en la etapa de lanzamiento del calendario personal de los empleados.

Lo normal sería lanzar una etapa de cliente para la estimación del IRPF pero no me ha dado tiempo así que os la tenéis que imaginar XD.

A continuación el proceso de ejemplo lanzaría la nómina a estos empleados. En los detalles (en el link Véase detalles) de la ejecución de la etapa se pueden visualizar las órdenes de spool que indican como ha ido el lanzamiento de estas nóminas.



Una vez que se realiza este paso, yo he incluido una etapa de lanzamiento de validaciones post-nómina. al igual que dije en el post anterior para mi este tipo de etapas es muy interesante para ayudar a identificar errores y puede aportar una ayuda que no existe en el ECC.

Una vez lanzada esta etapa, se pasa a la siguiente que es de supervisión de los errores.

También insisto en el tema de que SAP ha creado ciertos ejemplos, que en este caso de la verificación de los resultados de nómina, la documentación dice que es necesario tener los datos del clúster de nómina, desclusterizados para poder utilizar estas validaciones estándar.

Por esta razón, recomiendan que si se quieren utilizar estas validaciones sólo se haga si se está utilizando como base de datos HANA para evitar problemas de rendimiento.

En este ejemplo, yo que no tengo HANA y que quería hacer una prueba sencilla, me he creado una validación de cliente en la que leo los datos del clúster de nómina. Es cierto que el rendimiento no es muy espectacular pero a modo de ejemplo me vale (y dejándolo en fondo si fuese necesario, más).

En esta pantalla vemos como ahora volvemos a tener 6 errores pero uno de ellos es relacionado con los resultados de nómina.


Antes de pasar a la etapa siguiente quiero comentar que una opción que me parece interesante es la opción que tiene esta herramienta para visualizar las etapas que se han realizado y la opción que te ofrece para repetir una etapa ya procesada si fuese necesario. Por ejemplo, una vez que se corrigiesen los datos para solucionar los errores post-nómina se podría volver a lanzar la etapa de validaciones.



Una vez hecho esto, se va a lanzar la etapa que genera cierra el registro de gestión, y posteriormente se lanza la etapa que calcula la contabilidad de la nómina.



Si se accede a la transacción PCP0 en el ECC se puede ver el asiento contable que se ha creado:


El siguiente paso que he introducido en el proceso es uno que permite liberar el asiento contable.



Por último, se ha introducido una etapa para la creación de las transferencias bancarias (la primera fase para la generación de las transferencias).



Con este último paso el proceso queda concluido y se podría dar por cerrada todos los pasos de la nómina de abril.

Cuando se accede a la aplicación, este proceso aparece en la pestaña de la derecha como Concluido.


Con esto ya por fin termino el ejemplo de uso y espero que os haya parecido interesante.

Quiero insistir que este es un ejemplo basado en lo que he ido investigando por mi cuenta, sin haber aplicado los últimos cambios y mejoras y sin haber visto lo que ofrece el RDS. Esta herramienta puede dar más de si y necesitaría más tiempo para investigar.

Muchas gracias por leernos y a ver de que escribo próximamente.

Saludos!