jueves, 17 de julio de 2014

SAPUI5. Arquitectura

En este post vamos a comentar la arquitectura de SAPUI5, como funciona por dentro esta nueva herramienta que nos proporciona SAP.

  • Las aplicación SAPUI5 se ejecutan en un browser o en un componente browser
  • La página de inicio de una aplicación SAPUI5 es una página HTML (por ejemplo: index.html)
  • SAPUI5 usa el concepto Modelo-Vista-Controlador para las pantallas y la lógica de la aplicación
  • Las aplicaciones SAPUI5 están formadas por:
    • Las librerías estándar de SAPUI5
    • Ficheros de configuración (Javascript, XML, CSS…)
 

Las aplicaciones SAPUI5 pueden ser desplegadas en una gran variedad de servers:
  • SAP HANA Cloud
  • SAP NW ABAP Server
  • SAP NW Java Server
  • Otros servidores de aplicaciones Java
  • Otros servidores web

Ahora voy a describir dos escenarios de ejemplo:
  • SAPUI5 en Portal accediendo a servicios ECC publicados en Gateway
Desarrollo
  1. Desarrollo DCs SAPUI5
  2. Desarrollo Servicio GW Project
 
Ejecución
  1. Inicio sesión contra SAP NW Portal
  2. Acceso a iView APP SAPUI5
  3. El navegador descarga recursos HTML+JS aplicación
  4. APP SAPUI5 consume oDATA/REST GW Services con SSO
  5. GW accede a BAPIs de negocio en sistema ABAP con SSO
  • SAPUI5 en Stack ABAP accediendo a servicios ECC publicados en Gateway

Desarrollo
  1. Desarrollo SAPUI5 Project
  2. Desarrollo Servicio GW Project

Ejecución
  1. Acceso a URL APP SAPUI5
  2. Inicio sesión contra stack ABAP.
  3. El navegador descarga recursos HTML+JS aplicación
  4. APP SAPUI5 consume oDATA/REST GW Services
  5. GW accede a BAPIs de negocio en sistema ABAP

miércoles, 16 de julio de 2014

SAPUI5. Construcciones de aplicaciones enriquecidas basadas en HTML5

En este post os voy a hablar de SAPUI5. Una nueva tecnología que SAP pone a nuestra disposición.
SAPUI5 es un framework de trabajo para la construcción de frontend . En tiempo de ejecución toda la lógica de vista es llevada a cabo por la parte cliente (desktop, mobile, tablet) en HTML5.

Su principal objetivo es diseñar una UIs ligeras. Sus principales características son:
  • Uso de estándares HTML5, CSS3, JavaScript.
  • Uso y/o extensión de software Opensource jQuery, QUnit, jQueryUI, jQuery Mobile, cubiq, Zynga Scroller, LESS, DataJS, D3, JSZip, Google-Caja JS HTML Sanitizer, MobiScroll, SinonJS, URI.js, Flexis.js.
  • Entre cliente y servidor sólo viajan datos de negocio mediante los estándares de comunicación OData, REST, jSON, Atom, XML.
  • Entorno de desarrollo sobre Netweaver Developer Studio 7.3, 7.4. Consiste en un plugin de Eclipse.
  • Modelo vista controllador – MVC. Define una serie de clases JavaScript genéricas para ello.
SAPUI5 es la apuesta de SAP como nueva interfaz de usuario. Es incluída en SAP Netweaver Portal 7.3 SP9, SAP Netweaver 7.4 Stacks ABAP / JAVA , SAP Business by Design, SAP HANA XS SP5/SP6, SAP Sybase 2.2.1


Beneficios

Como beneficios de esta nueva tecnología podemos destacar los siguientes:

  • Platform – Independent. Desktop, Mobile o Tablet. Look and Feel nativo en cada dispositivo.
  • Browser – Independent. Optimizado para diferentes navegadores.
  • Deployment Options. NW ABAP, NW JAVA, NW Cloud, servidor WAS Java, servidor WEB.
  • Uso de estándares y opensource. HTML5, CSS, JavaScript, jSON, REST, XML, Atom, jQuery, jQueryMobile, etc.
  • Curva de aprendizaje. Los recursos necesarios para su uso sólo deben conocer el desarrollo web (sin Java / ABAP).
  • Ágil y usable. Parte servidora sólo para servir recursos y datos de negocio. Es muy ágil y ligera con una buena User eXperience.
  • Rica en componentes. Dispone de una gran variedad de componentes gráficos y además se permite la extensión de los mismos.
  • Personalizable. Existe una variedad de temas o la posibilidad de crear temas propios.
  • La nueva apuesta UI de SAP. Existen diferentes productos de SAP basados en esta tecnología o bien la ofrecen como complemento.
  • Sin coste adicional. El uso de la suite de productos SAP Netweaver en stacks ABAP, JAVA o Cloud permite su uso sin cargo adicional.
Pasamos de un entorno rígido...


...a un entorno agradable y usable



SAPUI5 dispone de una extensa galería de componentes configurables y extensibles. Os dejo el link para que podais acceder. Podeis encontrar muchisima información y ejcutar diferentes demos que estan disponibles. Es una buena forma de poder "tocar" esta nueva tecnología.

 
 
 
 
En el siguiente post hablaremos sobre la arquitectura y el entorno de desarrollo.


viernes, 11 de julio de 2014

Novedades SAP. SAP Fiori, Cloud y el soporte al estándar Unicode (SAP GUGO)

El discurso inaugural de Bill McDermott, CEO de SAP, en el SAPPHIRE NOW de Orlando, que se celebró entre los días 3 y 5 de junio, dejó un mensaje claro: la apuesta de SAP por la simplicidad. Como muestra de este esfuerzo de simplificación, el directivo anunció que SAP Fiori y el software SAP Screen Personas se incluirán dentro de las licencias de software de SAP. Para los actuales clientes, SAP proporcionará un crédito de software canjeable para futuras ventas de software. Además, SAP ofrecerá un catálogo de servicios UX (Customer Experience), que incluye diseño, implementación rápida y desarrollo a medida, para mejorar la conexión o engagement con los clientes.

McDermott subrayó que SAP quiere que todos sus clientes dispongan de forma sencilla de una experiencia de primera categoría. Según sus palabras, “a juzgar por el éxito comercial de SAP Fiori, está claro que nuestros clientes están de acuerdo. Algunos clientes y nuestros Grupos de Usuarios creen que no deberíamos cobrar por SAP Fiori. Les hemos escuchado, yo estoy de acuerdo con ellos y ahora SAP Fiori está incluida en el software SAP”.

Otro de las novedades que se presentaron, se produjo en el ámbito Cloud. McDermott anunció SAP Simple Finance, un conjunto de soluciones que corren sobre SAP HANA, que llevarán la simplicidad de la nube SAP a las finanzas. Así, los departamentos financieros podrán ejecutar sus procesos de misión crítica en tiempo real en Cloud. El producto está disponible para 25 sectores en más de 60 países.

Otro anuncio nos llegaba a través de SAP GUGO (Global User Group Organization), que informó a los Grupos de Usuarios de un importante cambio relacionado con el soporte a los sistemas SAP no-Unicode, basados en tecnología SAP NetWeaver.

Unicode es un estándar de la industria orientado a la representación y manipulación consistente de texto expresado en la mayoría de los sistemas de escritura del mundo, y reemplaza a una multitud de formas complejas y propietarias de manejar diferentes conjuntos de caracteres en un sistema. Cualquier sistema informático moderno tiene que soportarlo y, como la mayoría de los proveedores de software, SAP ha habilitado sus sistemas para Unicode desde hace bastantes años. Empezando con SAP NetWeaver 7.0, Unicode se convirtió en la única opción de instalación para los nuevos sistemas.

Actualmente Unicode ha conseguido una amplia adopción entre los clientes de SAP, lo que permite a la compañía anunciar un nuevo paso : las nuevas versiones de SAP NetWeaver y los productos basados en esta solución serán sólo Unicode, por lo que los upgrades de sistemas no-Unicode a versiones superiores a SAP NetWeaver 7.40 sin previa conversión a Unicode no serán soportadas.

Según el comunicado, los actuales sistemas no-Unicode puede convertirse a Unicode con herramientas de SAP y remite a la URL service.sap.com/Unicode para acceder a los procedimientos de conversión, así como a la siguiente dirección para posibles cuestiones: globalization@sap.com.

Al cierre de esta edición, han llegado también vía SAP GUGO más detalles sobre las soluciones de implantación rápida de apps SAP Fiori, una forma sencilla para que los usuarios aprovechen la próxima generación de experiencia de usuario.

De momento, hay cuatro soluciones orientadas a la implantación rápida de apps SAP Fiori, al despliegue rápido de infraestructura SAP Fiori, y las pensadas para implementar rápido SAPUI5 Design y SAP Screen Personas.

Según esta comunicación, cada solución de despliegue rápido incluye en detalle las mejores prácticas para desplegar los servicios de experiencia de usuario de SAP y un enfoque aplicable para los clientes en escenarios cloud, on-premise o híbridos. Tanto si es una única aplicación o una plataforma completa, las empresas pueden desplegar nuevas soluciones o migrar desde las existentes utilizando esta aproximación.

SAP planea capacitar a clientes y partners a través de la plataforma openSAP, que dispone de multitud de cursos online para que se beneficien de la mejora de la experiencia de usuario. 

jueves, 10 de julio de 2014

Como enviar Citas para Outlook (Archivos ICS) usando ABAP

En este post os voy a explicar como podemos generar y enviar mediante email citas para que agreguen al nuestro calendario de Outlook. Es algo sencillo y a la vez muy util que nos puede dar mucho juego a la hora de hacer nuestros desarrollos.

Muchas veces nos envian email o nos apuntamos a Webinars que nos permiten agregar el evento a nuestro calendario de Outlook directamente, pues bien, nosotros podemos hacer lo mismo mediante código.

Para realizar este ejemplo vamos a utilizar la clase CL_APPOINTMENT. A continuación os dejo el código de ejemplo:

    INCLUDE <cntn01>.
  TYPE-POOLS: sccon.

  DATA lo_appointment TYPE REF TO cl_appointment.
  DATA ls_participant TYPE scspart.
  DATA lv_address TYPE swc_object.
  DATA ls_address_container LIKE swcont OCCURS 0 WITH HEADER LINE.
  DATA lt_text TYPE so_txttab.
  DATA ls_text LIKE LINE OF lt_text.
  DATA lv_location LIKE scsappt-room.
  DATA lo_send_request TYPE REF TO cl_bcs.
  DATA lv_sent_to_all TYPE os_boolean.

  CREATE OBJECT lo_appointment.

* Add multiple attendees
  CLEAR ls_participant.
  swc_create_object lv_address 'ADDRESS' space.
  swc_set_element ls_address_container 'AddressString' 'email@email.com'.
  swc_set_element ls_address_container 'TypeId' 'U'.
  swc_call_method lv_address 'Create' ls_address_container.
  CHECK sy-subrc = 0.

* * get key and type of object
  swc_get_object_key lv_address ls_participant-objkey.
  CHECK sy-subrc = 0.
  swc_get_object_type lv_address ls_participant-objtype.
  CHECK sy-subrc = 0.
  MOVE sccon_part_sndmail_with_ans TO ls_participant-send_mail.
  ls_participant-comm_mode = 'INT'.
  lo_appointment->add_participant( participant = ls_participant ).

* Sample Appointment for All-Day-Event
  lo_appointment->set_date( date_from = fini
                            date_to = ffin ).

* Make appointment appear "busy"
  lo_appointment->set_busy_value( sccon_busy_busy ).

* Set Location
  lo_appointment->set_location_string( 'Location' ).

* Set Organizer
  lo_appointment->set_organizer( sy-uname ).

* "Type of Meeting" (value picked from table SCAPPTTYPE)
  lo_appointment->set_type( 'ABSENT' ).

* Make this an all day event
  lo_appointment->set_view_attributes( show_on_top = 'X').

* Set Meeting body text
  ls_text = 'This is the Body Text of the Appointment'.
  APPEND ls_text TO lt_text.
  lo_appointment->set_text( lt_text ).

* Set Meeting Subject
  lo_appointment->set_title( 'This is the Appointment Subject' ).

* Important to set this one to space. Otherwise SAP will send a not user-friendly e-mail
  lo_appointment->save( send_invitation = space ).

* Now that we have the appointment, we can send a good one for outlook by switching to BCS
  lo_send_request = lo_appointment->create_send_request( ).

* don't request read/delivery receipts
  lo_send_request->set_status_attributes( i_requested_status = 'N'
                                          i_status_mail = 'N' ).

* Send it to the world
  lv_sent_to_all = lo_send_request->send( i_with_error_screen = 'X' ).

  COMMIT WORK AND WAIT.

Como veis el código es muy sencillo. Si lo ejecutamos veremos como nos llega una cita a nuestro Outllook, o al de las personas que pongamos como destinatarios de la misa.


Como reto o duda que planteo, estoy intentando que en la misma cita puedan ir adjuntos documentos (Por ejemplo PDF). Aun no lo he conseguido, pero os animo a intentarlo y si sois capaces a compartirlo con todo el mundo.

miércoles, 9 de julio de 2014

Function Builder. Crear secuencias de Funciones

Cuando se está desarrollando en ABAP, en determinadas situaciones resulta necesario ejecutar dos o más funciones en secuencia. La idea en estos casos es que las funciones secuenciadas operen como una unidad, de manera que el output de la precendente sirva de input a la siguiente, y se garantice la ejecución conjunta de las mismas para llegar al resultado deseado.

Entre inumerables ejemplos, un caso clásico son las actualizaciones a las bases de datos. Por ejemplo, si se utiliza una BAPI para dar un alta en una base de datos NO se verá el registro agregado hasta que otra BAPI que ejecute un COMMIT. Si la aplicación requiere la disponibilidad inmediata del registro puede asegurarse la secuencia de BAPIS utilizando una secuencia de funciones que incluya primero el alta, e inmediatamente, el COMMIT.

La transacción SE37 (Function Builder) ofrece la herramienta “Test Sequence” que permite armar y “Testear” secuencias de funciones con este fin.

Ejemplo de Function Module Test Sequence

La idea es dar de alta un registro a una base de datos y hacerlo inmediatamente disponible a la aplicación.
Para ello, se requerirán dos BAPIs en secuencia:
  • BAPI_FLCUST_CREATEFROMDATA (que dará de alta un cliente)
  • BAPI_TRANSACTION_COMMIT.
En este caso, si se ejecuta sólo BAPI_FLCUST_CREATEFROMDATA, los cambios realizados por la misma, no serían inmediatamente visibles a la aplicación en curso. Las altas a una base de datos NO se reflejan en forma inmediata, sino recién cuando se halla ejecutado el COMMIT de dicha operación. Por lo tanto, para que el registro se haga visible, se requiere la ejecución exitosa de toda la secuencia de funciones, como si fueran una unidad.

Para realizar este ejemplo debemos seguir los siguientes pasos:

1) Acceder a la transacción SE37. Una vez allí, seleccionar de la barra de menú de SAP, la opción Function Module, luego “Test” y finalmente “Test Sequences”.


2) En la ventana de selección se ingresan las dos BAPIS a secuenciar, en este caso BAPI_FLCUST_CREATEFROMDATA y BAPI_TRANSACTION_COMMIT, obviamente en el orden deseado.


3) Al aceptar con Execute, el sistema abrirá la Initial Screen para esta función.
Debemos los parámetros para la función, que en este caso serán los campos necesarios para el alta de un cliente. Desde la Initial Screen, utilizando el ícono "Details View Edit" se abre la interfaz del "Structure Editor", donde se procederá a completar los datos.


En la pantalla de Structure Editor es conveniente presionar las teclas SHIFT + F7 para tener una mejor visión (vertical!) de los datos y que el ingreso sea más sencillo, como se muestra en la figura anterior.

Finalizada la entrada de datos con el icono de “Aceptar”, se desplegará el registro con los datos de testeo cargados, tal como vemos a continuación. Desde acá, se debe regresar a la Initial Screen de la función, utlizando el botón señalado en la misma figura.

4) Luego desde la Inicial Screen, se procede a su ejecución a través de la tecla F8 (o el ícono correspodiente)


Completada la ejecución, el sistema volverá a la Initial Screen. Sin embargo, se observará en la zona de tablas, la referencia a una nueva entrada con un mensaje. El número ("1" en este caso) informa cuántos mensajes o advertencias se han generado como resultado de la ejecución. Para acceder a la interfaz con el resultado de la ejecución, se deberá hacer click sobre esta referencia.


Allí, se puede verificar que la primera BAPI ejecutada en la secuencia haya operado correctamente, es decir, que el registro haya sido dado de alta. Aparecerá el mensaje correspondiente indicando que el cliente ha sido creado, como se muestra en la figura:

5) Para continuar el procedimiento debemos regresar hasta la Initial Screen de la segunda BAPI (BAPI_TRANSACTION_COMMIT). Presionar el botón "Atrás" dos veces para continuar con el procedimiento.

6) Se observa en la Inicial Screen para esta BAPI , que no hay parámetros para ingresar, ya que el resultado de la ejecución de la primera BAPI está sirviendo como input para esta otra. En la posición del cursor colocar una “x” y luego presionar F8 para ejecutar:

7) Al igual que en el caso anterior, el sistema nos llevará a la pantalla de resultados una vez completada.
De esta manera se ha creado una nueva entrada para el cliente ingresado recientemente en la tabla SCUSTOM utilizando la BAPI BAPI_FLCUST_CREATEFROMDATA para la creación del cliente y BAPI_TRANSACTION_COMMIT para que sea grabada en la Base de Datos.

martes, 8 de julio de 2014

Shortcuts. Trucos del teclado en SAP

En este post os voy a hablar de los Shortcuts o atajos de teclado, que son aquellas combinaciones de teclas que desatan alguna acción en SAP y hacen que no haga falta que recurramos al ratón. Evidentemente son una herramienta muy util que nos va a facilitar y agilizar el trabajo muchisimo. Si somos capaces de dominarlas, nos daremos cuenta de los rápido que podemos llegar a trabajar. Os dejo una selección de los mas importantes.

Algunos "atajos" usados en la Barra de Funciones del sistema (de pantallas SAP en general)

La tabla siguiente muestra una lista de los botones (íconos) comunes que se pueden encontrar en la barra de herramientas standard (la barra de Funciones del sistema) de las distintas pantallas de uso general en SAP y el "shortcut" (atajo) correspondiente con su acción asociada:


"Atajos" útiles usados en la edición de programas ABAP

La siguiente es una lista de algunas combinaciones de teclas ("shortcuts") más usadas en la edición de programas ABAP y la tarea que cada una de ellas permite realizar:


Integración SAP

Cuando hablamos de SAP como sistema integrado que cubre toda la casuística de nuestro negocio estamos siendo bastante osados. Casi cualquier...