miércoles, 4 de enero de 2017

Acceso al servicio oData desde HCP: Crear destination

Habíamos creado un servicio oData con el Gateway de nuestro sistema SAP y lo habíamos probado con el Gateway Client o haciendo consultas directas en el navegador. ¡Ya estábamos obteniendo datos!

¿Pero cómo vamos a consultar este servicio mientras desarrollamos nuestra aplicación SAPUI5 en el Web IDE? ¿Y si la queremos poner disponible en el portal del SAP HCP? En ambos casos necesitamos una manera de "poner en contacto" la aplicación con el servidor SAP, y eso lo vamos a conseguir creándonos un destination.


Crear el destination

Los destinations son las conexiones que tiene nuestra cuenta de SAP HCP para comunicarse con otros servidores remotos, ya sean nuestras propias máquinas (on-premise) o alguna situada en la nube (on-cloud). Aquellos que tenemos un pensamiento sapero podemos comparar los destinations con las conexiones RFC (que levante la mano el que no haya accedido nunca a la transacción SM59).

Para poder usar el servicio oData, el destination tiene que apuntar a nuestro front-end (en este post podemos ver las posibles disposiciones). Esto se hace en nuestra cuenta HCP, opción Connectivity -> Destinations.

Vamos a crear nuestro destination

Allí, crearemos una nueva entrada, donde indicaremos los siguientes valores:
  • Un nombre identificativo que usaremos en la aplicación. Podemos poner el que nos venga en gana, pero cumpliendo con las típicas exigencias de estos casos: Sin espacios, sin letras raras, etc.
  • El tipo, que será HTTP.
  • La URL del servidor (o la IP y el puerto). Indica primero el protocolo adecuado (http o https).
    Si no te conoces la url de tu servidor SAP y/o el puerto, lo puedes consultar en la transacción SMICM, menú Pasar a -> Servicios.
    O también puedes ejecutar el servicio oData desde el Gateway en el navegador a ver que url te abre. 
  • Proxy Type será Internet, a no ser que para poder acceder al servicio necesitemos usar el SAP Cloud Connector (ver apartado Intranet inaccesible), en cuyo caso será OnPremise.
  • El tipo de autenticación. Si entras a SAP con un usuario-contraseña, puedes seleccionar autenticación básica y después indicar dicho usuario-contraseña.
    Con ese usuario podremos debuggear el servicio oData cuando sea invocado, si tenemos una sesión de SAP abierta. Y si tenemos los permisos apropiados, claro.
  • Una propiedad adicional, WebIDEEnabled con valor true.
    Esto es necesario para que el destination esté disponible en la selección de servicios oData al crear una aplicación en el Web IDE.
  • Una propiedad adicional, WebIDESystem, con las tres letras del sistema SAP al que nos conectamos.
  • Una propiedad adicional, WebIDEUsage, para indicar la disponibilidad del destination. Ahí podemos indicar para un uso cotidiano la cadena odata_abap,ui5_execute_abap,dev_abap. Podemos consultar los posibles valores en la ayuda de HCP, y representan, respectivamente: servicios oData en ABAP, ejecutar aplicaciones SAPUI5 desde un repositorio ABAP y proyectos de ampliación (extensibility). Si, por ejemplo, no ponemos odata_abap, cuando tengamos que seleccionar el servicio oData al crear un proyecto, no nos aparecerá este Destination.
Al final le di al destination el nombre UXSAP

Una vez creado el destination, podemos chequear si la conexión funciona bien con el botón Check Destination. Si es así, ¡enhorabuena!  ¡Ya tienes la conexión para permitir que tus aplicaciones SAPUI5 obtengan datos de un sistema SAP!

Vamos a chequear la conexión
¡Eureka!

Intranet inaccesible

Si nuestro front-end no está expuesto al exterior (necesitamos tener el culo sentado en la oficina o acceder mediante VPN), nuestro pobre SAP HCP no podrá llegar hasta él, ya que aunque trabajemos desde dentro de la intranet ¡SAP HCP esta fuera!

Cuando esto ocurra, lo podemos arreglar pidiéndole al departamento/compañero responsable de los peliagudos temas de seguridad que nos permita la exposición del servicio oData al exterior. Ante esta solicitud podemos recibir tres respuestas:
  • Ok, yo te lo hago (poco probable).
  • Habla con tu jefe para que hable con el mío, con los de sistemas, con los de arquitectura y con el del fondo de la sala que nadie sabe a qué se dedica (¿has leído las doce pruebas de Astérix?) (probable).
  • Que directamente nos manden a la m... (también probable).
Afortunadamente, tenemos otra posibilidad, también segura y que no requiere abrir puertos en el firewall de la empresa: Usar el SAP Cloud Connector.

Esto lo veremos más adelante, ya que ahora no es el tema del tutorial. De momento nos vale con saber que existe esta opción. Además, nuestro destination debe ser creado con la propiedad Proxy Type con valor OnPremise.

En cualquier caso, si necesitamos hacer pruebas con una aplicación SAPUI5 y un servicio oData cualquiera, podemos crearnos un destination para apuntar al servicio gratuito de Northwind. En este caso las propiedades adicionales cambian:

  • La url es http://services.odata.org/V3/Northwind/Northwind.svc/, que es la url del propio servicio oData.
  • No necesitamos usar la propiedad adicional WebIDESystem.
  • El valor WebIDEUsage tendrá la cadena odata_gen (según se ve en la imagen):


Valores para el destination de Northwind

4 comentarios:

  1. creo que hay un problema con el servidor de northwind porque me trato de conectar y me dice Failure reason: "Not Implemented" Received status code: "501" ;(

    ResponderEliminar
    Respuestas
    1. Mira este post a ver si lo has configurado bien: https://uxsap.blogspot.com.es/2017/06/configurar-odata-northwind.html

      Eliminar
    2. lo elimine y lo volvi a crear y me funciono :D gracias !

      Eliminar
    3. una pregunta una vesz configure esto y suba mi aplicacion al servidor cuando un usuario se conecta al launchpad e ingresa su suario y por consiguiente a la aplicacion le pediria los datos para conectarse con los suyos al servidor? o hay una forma que detecte este usuario ? y sabras si puedo conectarme igualmente desde sap web ide enterprise edition a un servidor?

      Eliminar