lunes, 24 de diciembre de 2018

Cuando SAP comprueba si IF 1 = 2

Hoy toca una pequeña pildorita para ABAP. Bueno, no es una pildorita, es más un descubrimiento que he hecho, pero que seguro que todos vosotros ya sabíais y no me habíais contado. ¡Me siento como el Hulk Hogan de Muchachada Nuí! ¿No me lo podíais haber dicho antes?

Y es que, muchas veces, cuando debuggeaba código estándar de SAP, descubría bloques raros condicionales en los que se comprobaba si 1 era igual a 2.

¿Cómo? ¿Pero esa locura a qué viene? La verdad es que nunca le había hecho caso, no me había molestado en ver el contenido. Siempre había supuesto que era código de prueba al que incorporaban un IF cuando ya no querían usarlo, para que nunca se ejecutase. No sé, habría sido más lógico comentarlo, pero tampoco le quise dar más vueltas.

Que sí, que sí, que SAP comprueba si 1 es igual a 2

lunes, 17 de diciembre de 2018

SAP Cloud Platform: Migrar a Web IDE Full-Stack

Sí, ya se acerca la fecha límite para el cierre del Web IDE de SAP Cloud Platform y toca mover todas las chorradas que hemos ido haciendo hasta ahora al servicio hermano, el Web IDE Full-Stack. Ya nos lo estaban advirtiendo, y el 31 de diciembre de 2018 será el último día. ¿Pero quién quiere el Web IDE si vamos a poder hacer lo mismo y más con el Web IDE Full-Stack.

Si es que ya llevan tiempo anunciándolo y lo dejamos para el último día

Así que, antes de llevarnos una desagradable sorpresa, movamos nuestros desarrollos de un servicio a otro. Pulsemos el camioncito de la esquina superior derecha para comenzar el transporte.


Claro que, previamente, tendremos que haber activado el servicio del Web IDE Full-Stack, ya que el transporte realmente lo vamos a hacer dentro de este segundo servicio, pulsando de nuevo sobre el camión. Si pulsamos en el cambio del Web IDE simplón, nos redirigirá al Web IDE Full-Stack.

Después, nos permitirá elegir qué proyectos queremos mover y ya todo es tirar para adelante.

Eso sí, puede que nos interese primero seleccionar el workspace donde vamos a volcar cada una de nuestras aplicaciones, uno de los beneficios que tenía el Full-Stack y no la versión primitiva.

Elijamos el workspace donde volcaremos las aplicaciones antes de comenzar la migración

Y a seguir experimentando.

viernes, 14 de diciembre de 2018

Trasteando con SAP UX cumple dos años

De nuevo, nos ponemos de celebración, porque hoy el blog cumple 2 añitos.

Sí, es verdad que ha sufrido un bajón estos últimos meses, necesitaba un descanso y, cuando me he querido dar cuenta, me costaba retomar el blog. Pero ya vuelvo a estar en marcha.

La verdad es que últimamente no le puedo dedicar a SAPUI5, Screen Personas o Gateway todo el tiempo que me gustaría, pero intentaré usar el blog para seguir aprendiendo y enseñando cosas y "anotar mis apuntes" para que luego no me olvide de lo que aprendo. ¿Sabéis la de veces que he recurrido ya al blog para recordar cómo hacer algunas cosas?

Con este post incluido, serán un total de 113 artículos publicados. Entre ellos están incluidas las inestimables colaboraciones de Miguel Rodriguez y Carlos Blanco, a los que siempre espero con los brazos abiertos para cualquier nueva aportación ;).

Como eso del ascii art no se me da muy bien,
tendré que hacerme una tarta en pixel art

miércoles, 12 de diciembre de 2018

Crear un gráfico en SAPUI5 (I)

Una de las cosas más resultonas que se puede aplicar a una aplicación, es la posibilidad de mostrar gráficos (charts). Una tarea que puede parecer compleja cuando nos toca pegarnos con ella en SAPUI5... porque lo es, para que vamos a engañarnos.

Así que vamos a ver si aprendemos a crear nuestros propios gráficos poco a poco, para llegar a construir cosas más complejas.

La verdad es que hay mucha documentación que mirar, y yo apenas he aprendido más que lo básico, así que espero que pueda ser útil para que podamos ir aprendiendo poco a poco. Primero crearemos un ejemplo muy sencillo y luego lo íremos ampliando en artículos posteriores.

¿Y qué ejemplo puede resultarnos interesante? ¿Quizá uno que nos muestre los ingresos de la compañía año tras año, o la venta de materiales por país? No, uno más interesante aún, ver cómo se distribuye la probabilidad de resultados en una tirada de dos dados de seis caras (lo que los frikis llamamos 2d6). Por si nos da por jugar al Dungeon World.

Menudo frikazo, ¿verdad?

miércoles, 28 de noviembre de 2018

SAP HCM y Portal: Vacaciones a final y principio de año

Está claro que una de las principales aplicaciones a utilizar cuando se monta el portal del empleado (el Employee Self-Service, ya sea el de WebDynpro como el de Fiori), es la que nos va a permitir solicitar absentismos, My Leave Requests. Una utilidad que tiene alguna carencia, pero que siempre resulta muy interesante. En este artículo, voy a contar una curiosidad específica de esta aplicación, así que va destinado específicamente a aquellos consultores de SAP HCM que se pelean con el portal.

Vamos a ver cómo se comporta la aplicación a finales de año, cuando tenemos que coger las vacaciones de navidades y se nos solapa el contingente/derecho del presente año (que a lo mejor podemos gastarlo, por ejemplo, hasta el 31 de enero del año siguiente) con el derecho del año siguiente.


miércoles, 21 de noviembre de 2018

Un período de descanso

No, no, no he dejado el blog en el olvido. Ya han pasado dos meses desde que publiqué el último artículo, pero estoy en una época en la que, por falta de tiempo y un poco de ganas, me cuesta ponerme a escribir un post. Tengo varias ideas en mente, cosas sencillas, como siempre, relacionadas con gráficas, con servicios oData, con workflows (de los antiguos y temidos workflows), con SAP HCM, también quería cambiar la visualización de la web, pero había querido darme un descanso y, cuando me he querido dar cuenta, ya cuesta coger la dinámica.

Pero todo es ponerse. Espero poder publicar pronto, y volver a cogerlo con ganas.

miércoles, 19 de septiembre de 2018

Crear un portal freestyle con SAP Cloud Platform (y III): Menú y Fiori Launchpad

En artículos anteriores, nos habíamos propuesto montar un portal con SAP Cloud Platform. Le habíamos dado forma y contenido, pero sólo teníamos una única página.

Esta vez vamos a mejorar un poco más el sitio web: Vamos a añadir varias páginas más y las pondremos accesibles mediante un menú. Además, una de esas páginas será un Fiori Launchpad y otra será un acceso directo a una aplicación SAPUI5.

En resumen, con estos tres artículos el resultado habrá sido el siguiente:

  • En el primer post, vimos cómo crear una página inicial y darle forma.
  • En el segundo post, vimos como modificar el contenido con el editor de contenidos.
  • En este post, aprenderemos a crear menús y añadir un acceso a aplicaciones SAPUI5 que hayamos creado e incluso a un Fiori Launchpad.

Siempre con nuestro objetivo en mente:


viernes, 7 de septiembre de 2018

Cursos para septiembre de 2018

Hacía tiempo que no revisaba los cursos que hay en mis dos plataformas de cursos online (MOOC) de referencia, OpenSAP (con ese nombre, lógicamente, relacionados con SAP) y Miríadax, ambas plataformas gratuitas.

Así que, acabadas ya las vacaciones y antes de que se hiciese tarde, les he pegado una revisión a ver qué cursos nos podemos encontrar, relacionados con desarrollo y experiencia de usuario... y alguna cosa friki, por supuesto.

miércoles, 5 de septiembre de 2018

Crear un portal freestyle con SAP Cloud Platform (II): Editar contenido


SAP Cloud Platform nos permite crear un sitio web, aprovechando la tecnología de SAPUI5 pero sin tener que restringirnos al Fiori Launchpad, y eso habíamos comenzado a hacer en el post anterior: Una página inicial, con el formato básico pero aún sin chicha, sin contenido.

Eso es lo que vamos a hacer en este artículo, ver las herramientas que podemos utilizar para editar las imágenes y los textos. Porque podríamos pensar que eso lo va a hacer el Administrador del sitio, pero eso no es necesario, ya que tendremos un rol específico para ese trabajo: El editor de contenido web.

Resumiendo lo que estamos viendo en esta serie de artículos:

  • En el post anterior, vimos cómo crear una página inicial y darle forma.
  • En este post, veremos el papel del editor de contenidos.
  • En el último post, aprenderemos a crear menús y añadir un acceso a aplicaciones SAPUI5 que hayamos creado e incluso a un Fiori Launchpad.
Para obtener algo como lo siguiente:



miércoles, 29 de agosto de 2018

Crear un portal freestyle con SAP Cloud Platform (I): Página inicial

Cuando pensamos en el Portal de SAP, siempre nos va a venir a la mente el Fiori Launchpad, que podemos montar en nuestro propio servidor on-premise, o utilizar el servicio de Portal de SAP Cloud Platform, como vimos en la serie de post que comienza con el post Configurar SAP CP Portal para Fiori.

Pero si queremos ofrecer algo más que un montón de tiles con aplicaciones, por ejemplo, para mostrar novedades, noticias, páginas informativas... lo que cualquier otro sitio web, vaya, entonces el Fiori Launchpad se nos va a quedar corto.

Podríamos pensar en usar otro servidor web y enlazarlo luego con nuestro Fiori Launchpad. Pero si ya disponemos de cuenta en SAP CP, no nos va a hacer falta, podemos crear un sitio web, darle el formato que queramos y, si luego nos interesa, incluso añadirle un acceso a las aplicaciones de SAP mediante el correspondiente Fiori Launchpad. Eso es lo que vamos a aprender a hacer trasteando durante los siguientes artículos, a crear un sitio freestyle:

  • En el artículo actual, veremos cómo crear una página inicial y darle forma.
  • En el siguiente post, editaremos el contenido web del sitio: Textos, imágenes, listas de noticias.
  • En el último post, aprenderemos a crear menús, añadir un acceso a aplicaciones SAPUI5 que hayamos creado e incluso a un Fiori Launchpad.
Y al final conseguiremos algo tal que así:


miércoles, 8 de agosto de 2018

Integrar OpenUI5 en nuestro blog (y V): Página principal de Blogger responsive

Hasta ahora, hemos ido añadiendo controles OpenUI5 en nuestro blog de Blogger, pero no hemos dejado muy bonita la página principal: Un tile debajo de otro, todo amontonado, que ni es responsive ni nada, y eso siempre resulta interesante, ¿no?

Eso es lo que vamos a hacer ahora: La página principal, que nos mostraba el listado de artículos mediante tiles, va a ser responsive, de tal manera que, dependiendo del tamaño de la ventana, mostrará más o menos tiles en cada línea.

Para eso, tenemos que investigar los siguientes puntos:

  • Cómo añadir un Grid de OpenUI5 en la página principal.
  • Cómo cambiar el ancho mínimo y máximo de Blogger, ya que por defecto nos fuerza a un ancho fijo.

Y así, nuestra página principal ya será responsive.


El resultado se puede ver en https://jgctest3.blogspot.com/

miércoles, 1 de agosto de 2018

Integrar OpenUI5 en nuestro blog (IV): Página principal sólo con tiles

Habíamos creado nuestra página inicial de Blogger para mostrar los artículos como Tiles, pero de momento no nos había quedado muy bonito. Es como si quisiésemos hacer una web élfica y sólo hubiésemos conseguido crear una web orca, todo aún muy feo. Los tiles aparecían tanto en la entrada principal como en cada artículo, y ni siquiera podíamos navegar con ellos. Así que vamos a cambiar esa funcionalidad. Para ello, nuestros objetivos son:

  • Al pulsar un tile, se navegará al artículo correspondiente.
  • En la página principal sólo se verán los tiles.
  • En cada artículo, no se verán los tiles.

Para obtener algo como lo siguiente:


Y diréis, "oye, que todavía queda feo". Pues sí, ¿pero a que no tanto como antes? Poquito a poco vamos mejorando.

miércoles, 18 de julio de 2018

Integrar OpenUI5 en nuestro blog (III): Usando agregaciones

Estamos integrando la librería OpenUI5 en nuestro blog, que nada tiene que ver con SAP. En nuestro ejemplo en particular, se trata de un blog de Blogger (Google). En los dos artículos anteriores habíamos aprendido:

  1. Lo básico, con un artículo introductorio;
  2. A crear un Hola Mundo en versión friki y con OpenUI5, para invocar a Cthulhu.
Ahora vamos a ver cómo podemos avanzar. Como siempre, haremos algo básico para ir aprendiendo conceptos técnicos.

Lo que vamos a hacer es añadir, en la página principal, cada artículo en un Tile con el título y la primera imagen. En posteriores artículos dejaremos sólo los tiles y con ellos navegaremos al artículo en sí. El ejemplo se puede ver en https://jgctest2.blogspot.com/

Sí, de momento es cutrecillo, pero es el primer paso
para conseguir algo más grande: ¡La Estrella de la Muerte! 

Con este proceso aprenderemos dos cosas:

  • A localizar en Blogger dónde podemos tratar nuestros posts y las etiquetas básicas: Buscaremos el LOOP.
  • A usar agregaciones en OpenUI5 mediante HTML declarativo.

Oye, que eso no es moco de pavo.

lunes, 9 de julio de 2018

TechEd 2017 en openSAP

¿No tuviste la suerte de visitar el TechEd 2017? Pues es la ocasión de poder ver algunas de las sesiones que se grabaron en el curso openSAP SAP TechEd 2017 Recap, sesiones aún aplicables hoy en día, que está abierto desde el 18 de junio.

No es que sea mucha cantidad, sólo 12 sesiones, principalmente sesiones introductorias, pero menos da una piedra. Son vídeos con las transparencias proyectadas y la voz del presentador de fondo.

miércoles, 13 de junio de 2018

Integrar OpenUI5 en nuestro blog (II)

En el artículo anterior, habíamos establecido unos objetivos, un poco vagamente, para ver qué nos encontrábamos: Aprender a utilizar OpenUI5 en una web normal.

Así que ahora nos toca llevar a cabo la parte práctica, en plan básico: Añadir la librería en nuestro sitio web y poner un simple botón que nos soltará un "Hola, mundo". Por supuesto, lo vamos a hacer un poco más friki y vamos a intentar invocar a Cthulhu.

El Hola mundo friki

La web que vamos a utilizar será un simple blog de Blogger (de Google), aunque este artículo sería aplicable a otros sitios web (excepto, claro está, la parte específica de Blogger).

Y los pasos que vamos a seguir son los siguientes:


Se puede ver el resultado en el blog https://jgctest1.blogspot.com.

martes, 12 de junio de 2018

Cambiando a 3 dígitos

Teniendo preparado ya el próximo artículo, me doy cuenta de que ¡iba a ser el número 100! Y yo sin celebrarlo.

Así que he adelantado este, simplemente para decirle a mi blog, ¡feliz 100 artículos! Se me hace mayorcito, el pobre.

Pero para llegar a esta cifra, he contado con la inestimable ayuda de Miguel y Carlos, que también han aportado su granazo de arena, ¡muchas gracias a los dos!

Gracias a estos artículos he podido aprender bastante, con todo lo que he tenido que trastear para cada uno. También he olvidado mucho de lo que he aprendido, que tengo memoria de pez,  pero por eso tengo el blog, para que me haga las veces de apuntes :D.

Ahora, a soplar las velas entre todos.


miércoles, 6 de junio de 2018

Integrar OpenUI5 en nuestro blog (I)

Un día, un tal aancos me decía que si mi web hablaba de UX, que si no debería ser más amigable, más moderna, más usable... Y no le faltaba razón. La verdad es que mi objetivo en el blog es aprender, sobre todo, la parte técnica relacionada con SAP UX. No me he preocupado demasiado en darle un formato más bonito al propio blog, sólo en publicar lo que voy aprendiendo.

Y ahí pensé, que anda que no quedaría chulo "fiorizar" el propio blog. No sé, ponerle botones típicos de SAPUI5, añadirle tiles, crear mallas que se adapten a la resolución.

Ya había hecho alguna prueba con Blogger (de Google, donde tengo este blog) para poder crear navegaciones de más de un nivel, ya que por defecto Blogger sólo permite un nivel. Para ello, había utilizado la librería jQuery, que había cargado en el propio blog.

Así que, ya con esa idea en la mente, integrar SAPUI5 no podía ser muy difícil. ¿Qué debería tener en cuenta?

viernes, 25 de mayo de 2018

El RGPD / GDPR ya está aquí

Pues sí, hoy era la fecha límite para adaptarse al RGPD (en español, Reglamento General de Protección de Datos) o GDPR (en inglés, General Data Protection Regulation), una normativa a nivel europeo para la gestión/tratamiento de los datos personales de los usuarios, que en el caso de España reemplaza a la existente, la LOPD (Ley Orgánica de Protección de Datos).

La ley ya llevaba dos años en vigor, pero hoy era el último día para ceñirse a ella. ¡El mismo día del orgullo friki! Por cierto, ¡feliz día del orgullo friki!

No voy a contar nada que no sepáis, porque ya habréis recibido un trillón de emails al respecto.

¿Y cómo nos afecta a los bloggers?

jueves, 10 de mayo de 2018

Aplicación SAPUI5 para ver un PDF: Creando la app (y III)

En post anteriores, habíamos visto los pasos necesarios para crear un servicio oData en el Gateway que nos devolviese un PDF.

  • En un primer post, habíamos creado un report de ejemplo que nos devolvía un listado ABAP y lo transformábamos en PDF mediante el SPOOL. Era un modo un poco cutre, lo suyo sería crear un Adobe form o un smartform, pero como no era el objetivo del post, lo hicimos en plan rápido.

  • En el segundo post vimos cómo teníamos que crear el proyecto en la SEGW para poder generar el servicio oData que nos devolverá el contenido de un PDF, así como tratar las clases ABAP para devolver el PDF.

Así que ya tenemos preparada la parte de SAP al completo. ¿Qué nos toca ahora? Pelearnos con el SAP Web IDE para crear la aplicación SAPUI5. Será una aplicación de tipo Master-Detail, en la que mostraremos un listado de autores en la parte del Master y un PDF con sus libros en la parte del Detail.

Y el resultado que buscamos será algo como lo siguiente:



sábado, 28 de abril de 2018

Dominio nuevo: uxsap.com

Pues nada, estrenamos dominio nuevo, uxsap.com. Más fácil de recordar, aunque como sigo utilizando blogger (a ver durante cuanto), se podrá seguir accediendo desde la url antigua, uxsap.blogspot.com.

Este post ha sido cortito, ¿verdad? ;)

miércoles, 25 de abril de 2018

OpenSAP cumple cinco añitos

El 29 de abril, OpenSAP cumple ya cinco añitos, que nos puede parecer poco tiempo pero gracias a ellos hemos aprendido mucho. ¡Felicidades, OpenSAP!


Y lo celebra añadiendo una nueva característica cada día, durante cinco días, comenzando desde este lunes pasado. Son pequeños detalles que no están nada mal.

miércoles, 18 de abril de 2018

Aplicación SAPUI5 para ver un PDF: Servicio oData (II)

En el post anterior, nos habíamos comenzado a pelear con la visualización de un PDF, generándolo desde SAP, ya fuese mediante un Smartform, un Adobe Form o la salida de un informe ABAP.

Pero ese PDF en SAP no nos vale para mucho, y para poder mostrarlo en una aplicación SAPUI5 necesitamos exponerlo de alguna forma. ¿Cómo lo vamos a hacer? Pues claro, mediante un servicio oData.

El objetivo final es crear una aplicación de tipo Master-Detail para mostrar un listado de autores en la parte maestra y un PDF con su bibliografía en la parte del detalle. Es ese PDF el que recuperaremos del formulario anterior y exponemos con nuestro servicio.

Así que vamos a tener que realizar los siguientes pasos:

  • Crear un servicio oData con una entidad de tipo Media.
  • Redefinir el método DEFINE de la Model Provider Class (XXX_MPC_EXT) para indicar qué propiedad será la que identifique el tipo de contenido.
  • En la Data Provider Class (XXX_DPC_EXT), implementar el método XXX_GET_ENTITYSET para devolver el listado de autores.
  • Si quisiésemos mostrar todos los datos de un único autor (aparte de un empleado), implementaríamos también el método XXX_GET_ENTITY, pero para este ejemplo esto NO lo vamos a hacer.
  • Implementar el método /IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_STREAM, que será donde devolveremos el contenido del PDF. ¿Y cuándo será invocado este método? Cuando solicitemos una entidad específica, añadiendo la opción $value.



lunes, 16 de abril de 2018

Curso de Git en OpenSAP

Hace unas cuantas semanas, veíamos los cursos que teníamos por delante en febrero del 2018. Uno de ellos era de Miríadax, y nos contaban cómo gestionar proyectos con Git y GitHub. No hacía referencia a SAP, por supuesto, pero nos podía ser útil para comprender y aprender a usar Git, la herramienta de control de versiones que nos viene integrada en el SAP WebIDE.

Pues ese curso ya ha finalizado, y por desgracia parece que no está abierto para consulta. Así que si al final no lo hicimos, ya es tarde para nosotros. Yo, por mi parte, entre la familia, el trabajo, otros cursos y actividades frikis varias, sólo pude hacer el primer módulo :(. Tengo que ver dónde solicitar días de más de 24 horas.

Pero nunca es tarde si la dicha es buena, ya que en OpenSAP ha comenzado un curso que nos va a ser todavía más útil, SAP Cloud Platform Version Control with Git.

Es decir, que esta vez si que vamos a aprender a usar la herramienta directamente en nuestra cuenta de SAP Cloud Platform.


El curso ya está abierto en su semana 0 (de preparación), y el martes (17 de abril de 2018) comienza la primera semana. A ver si esta vez, habiendo acabado ya otros cursos (o a punto de ello), me da tiempo a hacer éste.

jueves, 12 de abril de 2018

Aplicación SAPUI5 para ver un PDF: Introducción (I)

Una aplicación muy común que nos van a pedir en algún momento, es aquella que nos permitirá visualizar un PDF. Pero no un PDF cualquiera, no, nada de un archivo que hemos creado y colgado en algún repositorio, sino un smartform o un adobe form que ya tenemos en SAP y que queremos mostrar. O incluso algún report estándar que se usa mucho y queremos colgarlo en el portal. Nos puede venir a la mente aplicaciones estándar como la del recibo de nómina (my paystubs), donde vamos a ver las monedas de oro que cobramos mensualmente mediante la visualización de un PDF.

Pues nada, eso es lo que vamos a aprender en esta ocasión, la creación de un servicio oData que nos devolverá el contenido de un PDF y visualizaremos en una aplicación SAPUI5.

Lo veremos en tres post, que son los siguientes:

  • En el primero (en este), no jugaremos aún con Fiori. Lo que haremos será generar, en ABAP, el contenido de un PDF en una variable de tipo XSTRING, que es con lo que vamos a trabajar. Para ello, vamos a ver los pasos a seguir para smatforms y adobe forms y haremos un ejemplo más detallado con un report, del que recuperaremos la salida para generar más tarde el PDF. Ojo, que esto del report es sólo para tener un punto de partida, ser tan cutre no debería ser la norma.

  • En el siguiente post, crearemos un servicio oData para poner accesible el contenido del PDF: Aprenderemos a usar entidades de tipo "media" y a saber para qué sirve la opción $value, tocaremos la model provider class (MPC_EXT... sí, esa clase que nunca hace falta tocar) y pondremos disponible el contenido del PDF en la data provider class (DPC_EXT) mediante el método GET_STREAM, usando la función que hemos creado en el punto uno.

  • En el último post, mostraremos el PDF en nuestra aplicación SAPUI5. Para ello, usaremos un componente de tipo sap.ui.core.HTML, donde añadiremos el código HTML estándar que nos permita incrustar el PDF en la página. La URL a usar será la del servicio oData con la opción $value.

martes, 10 de abril de 2018

Extender un control UI estándar

Introducción

Buenas, perdonad la tardanza en realizar mi segundo post en el blog pero los proyectos y un enano de 15 días apenas me dejan tiempo (😉)

Hoy voy a mostraros cómo ampliar la funcionalidad de un control UI de una biblioteca estándar (sin destruir cosas 😏).

En nuestro caso vamos a cambiar la funcionalidad del control ViewSettingsDialog, que se encuentra en la librería sap.m.  Este control se trata de un popover y varias listas internas en pestañas diferentes para realizar operaciones de ordenar, agrupar o filtrar. Dentro de esas listas internas puede existir una barra de búsqueda para encontrar cualquier elemento de esas listas.

miércoles, 4 de abril de 2018

SAP Web IDE: Varios workspaces

Dentro del SAP Web IDE, cuando has hecho un montón de aplicaciones chorras para hacer posts y pruebas, comienzas a tener el área de trabajo (el workspace) hecho un asco, con más carpetas que uruk hai en casa de Saruman. Todo un lío, vaya. Y si encima mezclamos aplicaciones SAPUI5, Java... pues la liamos.

Que sí, que podemos descargar las aplicaciones en local o subirlas al Git... pero nos da pereza borrar y el número de carpetas en el workspace comienza a crecer. Yo soy muy cutre, y tengo una carpeta llamada "Almacén de aplicaciones" para mover ahí las aplicaciones y borrarlas del workspace general.

Pues ahora tenemos una nueva solución: En la última actualización del Web IDE (podemos ver las cosicas nuevas de marzo de 2018 en este vídeo), nos encontramos con una mejora interesante: La posibilidad de tener varios workspaces. Y para eso, vamos a tener acceso a una nueva herramienta: el Workspace Manager.


Entiendo que la idea de esta función es poder tener un workspace específico para cada tipo de aplicación: un workspace para aplicaciones HTML5 y uno o varios para aplicaciones multitarget (MTA, que podrían ser aplicaciones Java, módulos HDB. extensión de servicios S/4HANA o una combinación de varios). Aunque también nos va a permitir tener uno para, por ejemplo, aplicaciones de prueba y test y otro para desarrollos "reales", ¡hasta donde nos lleve la imaginación!

miércoles, 21 de marzo de 2018

Fiori y el baile de números de versiones

En su momento, cuando se nos quedaba corta la librería 1.28 de SAPUI5 en nuestro pobre SAP on-premise, nos tocaba instalarnos el Fiori Front-End Server 2.0 (FES 2.0). Este componente nos incluía el componente SAP_UI 7.50, que nos permitía usar las librerías más modernas, de la 1.30 hasta la 1.38, con los nuevos cambios que nos traía para realizar nuevos desarrollos. La aparición del archivo manifest, la posibilidad de utilizar los modelos de datos del component controller desde otro controlador o  usar el this.byId en lugar del this.getView().byId. Bueno, eso son chorradillas varias.

Entonces entraba en juego el Fiori 2.0, con todas sus novedades. Y claro, pensábamos "ojo, que ya nos hemos instalado el FES 2.0, vamos a activar el Fiori 2.0".

Y descubríamos que no podíamos. ¿Pero no tenemos el Fiori Front-End Server 2.0? ¿Dónde está el Fiori Launchpad 2.0?

Pues no, no lo íbamos a encontrar. Fiori 2.0 no está en el FES 2.0. ¡Estamos confundiéndonos con tantos términos y tantos números! Esto es más complicado que la prueba de Asterix para encontrar la Forma A 38.

Si queremos tener Fiori 2.0, nuestro servidor debe ganar muchos puntos de experiencia y subir al menos un nivel, al Fiori Front-End Server 3.0. O al 4.0, que ya está disponible desde septiembre de 2017.

miércoles, 28 de febrero de 2018

Programación para niños

Hace unas cuantas semanas hablábamos de unos cursos que podían servir para iniciar en la programación tanto a mayores (mediante un curso de Miríadax) como a pequeños (mediante dos cursos de OpenSAP, ambos de introducción a Scratch).

Seguro que ya habéis convencido a cientos de miles de millones de amigos (adultos y niños) para que se inicien en la programación.

A raíz de ese post, y del doodle que puso Google para celebrar el 50 aniversario de la programación para niños, comencé a cotillear sobre este tema, y la verdad que tiene para dar y tomar: Logo, Scratch, Snap!, Kodable, Tynker, Code.org, JSRobot... y muchos más lenguajes o herramientas de programación, pero esta vida no me da para tanto.

Pero es que, además, no tenemos por qué quedarnos ahí, sentados delante de un ordenador, para desarrollar el pensamiento computacional, sino que también podemos conseguirlo gracias a los juegos de mesa.

Yo, de mayor, quiero ser doodler

Así que vamos a ver qué herramientas nos permiten mejorar ese pensamiento computacional en los peques, pero con programas o webs en las que no se necesite tirar ni una línea de código o, si hay que hacerlo, que sea fácil y para jugar. Así que nada de picar palabrejas raras sin parar, que eso es muy aburrido.

Además, os recomiendo escuchar este podcast en iVoox de la UNED sobre pensamiento computacional que está realmente interesante.

Y sí, confirmado, hoy no veremos nada de SAPUI5. Hoy vamos a trastear con programación para niños.

miércoles, 21 de febrero de 2018

Crear una aplicación SAPUI5 responsive con Grid (y II)

Para poder hacer una aplicación SAPUI5 responsive a nuestro gusto, podíamos usar el componente Grid, como vimos en el post anterior. Lo malo de esa aplicación que nos creamos, es que todos los elementos ocupaban el mismo número de columnas.

Teníamos dos elementos, los datos de un autor y su bibliografía. ¿Pero qué pasa si queremos que los primeros ocupen menos ancho en la malla que los segundos? Pues que vamos a tener que aprender a usar un nuevo elemento de layout, el sap.ui.layout.GridData.

Este elemento nos va a permitir definir el comportamiento específico de un componente dentro de un elemento Grid, mediante los atributos:

  • span, spanXL, spanL, spanM y spanS para el ancho de columnas.
  • indent, indentXL, indentL, indentM e indentS para el sangrado.
  • visibleXL, visibleL, visibleM y visibleS para ocultar elementos.

Para ello, dentro del propio componente, le añadimos el elemento GridData de la siguiente forma:

<Componente >
   <Elementos dentro del componente >
   <Más elementos>
   <layoutData>
      <l:GridData span="XL3 L3 M6 S12" indent="XL0 L0 M0 S0" visibleS="false"/>
   </layoutData>
</Componente>

NOTA: Como en el post anterior, <l:GridData> usa l: porque he definido la abreviatura xmlns:l="sap.ui.layout".

Nuestro objetivo: Conseguir resultados como el siguiente:



miércoles, 14 de febrero de 2018

Crear una aplicación SAPUI5 responsive con Grid (I)

Siempre nos han dicho eso de que SAPUI5 es responsive, que sus aplicaciones se van a adaptar a las dimensiones de nuestro dispositivo. Pero debemos tener una cosa clara: Para que eso ocurra, el comportamiento lo debemos programar nosotros.

No, no vale con hacer una aplicación con muchos campos y esperar que ellos se muevan y se remuevan para adaptarse. Puede que lo hagan, pero no como nosotros queramos. Algo tendremos que hacer.

Pues eso es lo que vamos a ver, cómo crear una aplicación sencilla, para mostrar a nuestros autores favoritos y algunos de sus libros. Va a ser una aplicación estática, no vamos a pelearnos con llamadas a servicios oData ni nada de eso, pero con el ejemplo luego lo podríamos adaptar a cualquier cosa que queramos.

Y nos quedará algo como esto:


¿Y qué elemento vamos a utilizar para ello? Uno de tipo layout llamado sap.ui.layout.Grid.

Los pasos serán:


  • Crear el elemento sap.ui.layout.Grid y asignarle dentro el contenido.
  • Definir cuanto ocupa cada elemento dentro del Grid con defaultSpan="XL3 L3 M4 S12".
  • Agrupar los elementos que van dentro de una misma columna mediante un contenedor (List, Form, VerticalBox, etc.).
  • Definir el sangrado de cada elemento dentro del Grid con defaultIndent="XL2 L2 M1 S0".
  • Definir en ancho de cada elemento de forma individual, pero eso ya lo veremos en el siguiente post.

martes, 13 de febrero de 2018

Navegando entre apps

Presentación


Hola a todos, mi nombre es Carlos Blanco. Lo primero que me gustaría hacer es agradecer a Jorge la posibilidad de colaborar en este blog, en mi opinión de lo mejorcito que hay sobre SAPUX en castellano. 

Voy a tratar de aportar mi granito de arena explicando cómo implementar determinadas casuísticas que se me han ido presentando en mis ya más de 3 años de experiencia peleándome con todo lo relacionado con SAPUX.

En este mi primer post, os voy a hablar acerca de la navegación entre aplicaciones SAPUI5. Vamos a utilizar como ejemplo una aplicación de cliente que muestra un listado de pedidos realizados y sobre el que podemos realizar una serie de filtrados sobre determinadas características de la entidad relacionada. Al presionar sobre cualquiera de los pedidos vamos a navegar a otra aplicación de cliente donde se ve el pedido más en detalle e incluso podemos realizar acciones de modificación o copia del pedido. 


Un nuevo miembro más en la familia: Carlos Blanco

Mi antiguo compañero de trabajo y amigo (pero no antiguo amigo, que lo de antiguo se aplica sólo a compañero) Carlos Blanco se nos une para contar sus experiencias en estas cosas de SAPUI5, Fiori y demás, con un artículo muy interesante para navegar entre aplicaciones.

Así que, ¡bienvenido Carlos!

Por favor, os pido que votéis su aportación eligiendo una de las dos siguientes opciones:

  1. El artículo SI ha sido muy interesante y queremos que siga publicando más.
  2. El artículo NO tiene desperdicio y no queremos que deje de publicar.

Gracias por unirte al club, Carlos.

miércoles, 31 de enero de 2018

SAPUI5: Varios botones usando el mismo onPress

En el post anterior, vimos cómo crear un botón mediante Javascript, en lugar de hacerlo en la vista XML. Le añadimos un texto y una función que se ejecutaba cuando se pulsaba el botón, con el evento press.

Ahora vamos a ir un paso más allá, vamos a crear dos botones que hacen prácticamente lo mismo: Al pulsar cada uno de ellos, crea un nuevo botón con un texto. Si hemos pulsado el primer botón, el texto del botón será "Hola" y si hemos pulsado el segundo botón, el texto será "Mundo".

Además, si pulsamos alguno de los botones recién creados, mostrarán el texto "Hola" o "Mundo", respectivamente.



La funcionalidad para cada botón es, a todos los efectos, la misma, y sólo cambia el texto mostrado. Si vamos a añadir una funcionalidad nueva en un futuro, habrá que aplicarla igualmente a los dos botones.

El siguiente código haría lo que estamos buscando. A cada uno de los dos botones le añadimos como manejador del evento press una función específica (ver attachPress). Por tanto, si queremos añadir una nueva funcionalidad, habrá que replicarla dos veces.



miércoles, 24 de enero de 2018

SAPUI5: Crear un elemento dinámicamente

Hasta ahora, en los ejemplos que hemos ido viendo para crear aplicaciones en SAPUI5, siempre hemos creado los objetos en la vista.

Pero resulta que podemos crear los objetos dinámicamente en el controlador mediante Javascript (o en una vista de tipo JS, claro). Esto nos va a permitir tener aplicaciones más complejas, en las que podamos decidir cuando hay que crear, modificar o eliminar un elemento y, además, no tenemos que definirlo obligatoriamente en la vista.

Vamos a verlo con un ejemplo facilito, y luego ya podremos buscar cosas más complicadas en posteriores posts. Partimos de una vista XML en la que sólo tenemos una página (sap.m.Page) y, en dicha página, añadiremos un botón que, al pulsar, nos mostrará un mensaje. Casi tan sencillo como destruir una Estrella de la Muerte.

¿Dónde vamos a codificar la creación del objeto? Pues como la vista es XML pero para crearlo necesitamos javascript, no nos queda otra que hacerlo en el controller.

Qué necesitamos saber


Para poder crear un objeto dinámicamente, tendremos que conocer el código (métodos, propiedades, eventos) que nos permita construir el objeto y modificar sus características. ¿Dónde podemos obtener esa información? Cómo no, en la SDK de SAPUI5. Ahí vamos a tener la información necesaria:

  • La definición del constructor para crear el objeto: new sap.m.Button.

  • Los métodos que podemos usar para modificar propiedades. Haremos una primera versión de la aplicación modificando las propiedades mediante estos métodos:
    • setText para asignar el texto;
    • attachPress para asignar una función que se ejecutará cuando salte el evento press. A este tipo de funciones se les llama manejadores, handlers.

  • Las propiedades y eventos que podemos asignar a la función cuando se crea el objeto. Haremos una segunda versión de la aplicación asignando las propiedades dentro del propio constructor.

Ante cualquier duda, a tirar de la documentación de SAPUI5, ahí se va la mitad de nuestro trabajo

miércoles, 17 de enero de 2018

Cursos febrero 2018

Hoy llega otro post más de cursos, vamos a ver qué cursos interesantes nos podemos encontrar estos días, que puedan estar relacionados con SAP UX, HTML5 o incluso para gestionar los proyectos con los que tengamos que lidiar.

Como siempre, tengo dos sitios web de referencia, con MOOCs gratuitos: OpenSAP y Miríadax. El primero, cursos relacionados con SAP, en inglés y, si nos hace falta, con subtítulos. El segundo, cursos en español, que no tienen que ver con SAP pero que nos pueden interesar.

Me tengo que buscar algún sitio más de referencia...

lunes, 15 de enero de 2018

Estimando precios para SAP CP

Hace unos meses hablábamos del tema de precios de SAP Cloud Platform, donde contábamos cómo podíamos hacernos una idea de lo que nos iba a costar la broma de usar SAP CP.

El enlace sigue siendo el mismo, no ha cambiado, https://cloudplatform.sap.com/pricing.html, aunque desde entonces la cosa ha cambiado un poco. Claro, es que ya han pasado tres meses, el post anterior está más obsoleto que la película de Tron.

¿Con qué nos encontramos ahora? Con dos formas de soltar la pasta:


  • Mediante subscripción, donde podemos utilizar un pdf con los distintos paquetes ofrecidos, que es lo que ya había antes. Eliges un contrato y lo que firmas es lo que pagas. Si quieres algún servicio adicional, tienes que modificar el contrato.
  • Basado en consumo, donde (entiendo) pagas una cantidad y, a cambio, te dan "Cloud Credits" (cual jueguecito de móvil), que se van reduciendo según consumas servicios. Puedes coger los servicios que te apetezcan y se te irá reduciendo el crédito.


¿Y cómo saber cuánto vas a pagar en "créditos nebulosos"? Esto lo podemos descubrir gracias a una calculadora que han puesto en la propia página, la "Estimator".

Dentro de la sección de "Consumption-based" puedes listar los servicios, acceder a uno de ellos y ahí te informarán del propi servicio y de su coste.

Coste para el servicio de Workflow, por usuario

Desde ahí, podemos añadirlo a la Estimator, donde tendrás el coste total de todos los servicios que hemos elegido, para poder hacernos una idea.

Planeando hacer algo chulo con el servicio de gamificación

Ojo, que no todos los servicios se pueden coger mediante el modelo basado en consumo. Por ejemplo, podemos ver que el oData Provisioning sólo se puede coger por subscripción. En el propio servicio nos informan.


Por último, la web nos ofrece una tercera opción... bueno, no es una opción como más, sino un apartado donde nos aconsejan qué servicios contratar, dependiendo del grupo de casos de uso que tengamos: Internet of Things, Big Data, UX... Por si, con tantos servicios, no tenemos muy claro cuál necesitamos.


miércoles, 10 de enero de 2018

SAP Screen Personas 3.0: Flavors adaptativas

SAP Screen Personas 3.0 es una herramienta de la que se oye menos de lo que se debería, sobre todo teniendo en cuenta que es gratuita (¡si tienes SAP, claro!). A mí me parece un bombazo, pero depende para qué, claro. Tiene su nicho de uso, un grupo de usuarios especialistas con un número limitado de transacciones.

Es una herramienta que te permite preparar una demo rápida para mostrar su potencia, pero que luego requiere un análisis más detallado de lo que el usuario va a querer hacer. Al final, lo que menos lleva es hacer las variantes (las flavors) y lo que más lleva es aprender cómo trabaja el usuario para poder diseñar lo que necesita.

Una de las pegas que tiene (debido al "público objetivo" que tiene la herramienta), es que está orientada a escritorio, pese a usarse con un navegador web, que hoy por hoy nos hace pensar en aplicaciones "utilizables en cualquier dispositivo" (aunque no siempre sea cierto).

En Screen Personas no tenemos eso de aplicaciones responsive como en Fiori: Donde pongamos los controles, ahí se quedarán, y si la ventana del navegador web es más pequeña que la variante, nos aparecerá el odioso scroll horizontal que nadie quiere ver en un dispositivo pequeño.

Pues ya podemos dejar de preocuparnos por eso, porque a partir del SAP Screen Personas 3.0 SP05, la cosa ha cambiado. Ahora SAP nos presenta las adaptive flavors, variantes adaptativas. Por fin vamos a poder adaptar la misma variante de una dynpro a varios tamaños de pantalla.



Así que vamos a ver cómo funcionan en los siguientes apartados:
  • Primero veremos que son las adaptive flavors.
  • Después echaremos un ojo a las notas que necesitamos o que deberíamos revisar.
  • Vamos a trastear con un ejemplo curradísimo (pero muy, muy currado).
  • Y finalmente veremos qué podemos hacer si no podemos pasarnos a SP05 pero queremos adaptabilidad.

viernes, 5 de enero de 2018

Fiori, ESS/MSS y la SPRO

Andaba yo navegando por la SPRO, en Gestión de personal (estamos hablando de SAP HCM), para revisar la configuración de los absentismos disponibles en portal (para que la gente pueda pedir vacaciones y cosas de esas), cuando me ha venido a la mente un problema que a veces nos ocurre cuando a uno le toca trastear, por primera vez, con las aplicaciones de HCM para Fiori: Volvernos locos con las entradas disponibles en la SPRO.

Los que ya hayáis configurado alguna vez algo del Employee/Manager Self-Service en Web Dynpro ABAP (con EHP5) ya sabéis en qué punto de la parametrización nos encontraremos. Si tenemos instalado al menos un EHP6, puede que veamos algo así:


¡Si es que tenemos donde elegir! Que si SAPUI5, que si Web Dynpro ABAP, que si Java...

Pues la pildorita de hoy dice: La entrada de SAPUI5 no es de Fiori, quitáoslo de la cabeza. Es específica de HR Renewal.