Consumo de servicio Web API REST

La intención de este contenido es compartir un recurso para consumir un servicio web desde SAP. Para este caso obtendremos información de un servicio API REST en formato JSON donde tomaremos datos informativos del día en el momento de ejecutar un programa y la reflejaremos en un sencillo ALV, dentro del servicio se nos proporcionan los siguientes datos:

  • Abreviatura
  • IP cliente
  • Fecha-Hora
  • Día de la semana
  • Día del año
  • Datos de horario de verano
    • Indicador de hora de verano (Si aplica)
    • Origen horario de verano (Si aplica)
    • Desfase de horario de verano (Si aplica)
    • Hasta que fecha y hora va el horario de verano (Si aplica)
  • Compensación
  • Zona Horaria
  • Tiempo Unix
  • Fecha y hora universal
  • Desfase con hora universal
  • Número de la semana

Para poder obtener esta información, utilizaremos una API gratuita sin usuario ni contraseña ni certificado SSL, esta URL principal es siguiente:

Esta página nos proporciona varias opciones de zonas horarias por continentes en la siguiente URL:

Allí podemos seleccionar la dirección de la zona horaria que queramos, para este caso usaremos la zona horaria de Bogotá y de Londres, con las siguientes direcciones:

Para estar seguros que los servicios funcionan, tenemos dos opciones. La primera es acceder directamente desde la URL por un navegador y ver el resultado:

  • Datos procesados por el navegador
  • Datos sin procesar

Podemos apreciar que los distintos navegadores nos pueden mostrar la información procesada o no procesada, pero en ambos casos nos arroja un resultado funcional donde se puede apreciar que la información suministrada es en formato JSON.

La segunda opción es enviar la petición del servicio por medio de herramientas que cumplan dicha función, en este caso usaremos la herramienta POSTMAN, que puede ser usada como una extensión de Google Chrome o como una aplicación independiente.

Por medio del POSTMAN recibimos información con la petición que realizamos y ya tenemos la certeza que los servicios funcionan adecuadamente y podemos comenzar con el consumo del servicio en SAP.

Para consumir el servicio REST API desde SAP implementaremos un programa ejecutable, donde ingresaremos la URL por parámetro e ingresaremos una opción por “Radio Button” indicando de cuál de las dos zonas horarias obtendremos información por medio del servicio web y proyectaremos en el ALV.

Creamos un programa tipo ejecutable y procedemos a implementar nuestro código. La primera parte constará de la creación de los parámetros de entrada donde se ingresarán los datos del servicio web. A la definición del parámetro de la URL adicionamos la sentencia LOWER CASE para que el programa nos respete la dirección en minúscula y no nos genere inconveniente en el consumo del servicio.

Ahora declaramos de un tipo con el cual posteriormente crearemos una estructura y una tabla interna que nos recibirán la información convertida desde JSON a ABAP. Este tipo debe contener los nombres de los campos similares a los del formato JSON.

A continuación, creamos las variables, estructuras, tablas e instancias necesarias para la implementación a lo largo del programa tanto para el consumo del servicio web como para la implementación y proyección del ALV.

Aquí ya podemos apreciar que realizamos una instancia a la interfaz if_http_client, esta interfaz es una de las herramientas que usaremos para generar la petición y recepción del servicio web junto con la clase cl_http_client la cual veremos más adelante.

Ya podemos implementar la lógica necesaria para el funcionamiento del programa. Primero debemos armar la dirección completa para la solicitud del servicio, validando la zona horaria que solicitamos y concatenarla con la URL, también asignamos texto a una variable que nos servirá para el título del ALV.

Procedemos a crear el cliente por medio del método cl_http_client=>create_by_url, a este método se le debe enviar la URL final y el resultado será recibido por la instancia de la interfaz ya creada http_client.

Ahora realizamos la petición del servicio y la obtenemos la respuesta del mismo, en caso de ser fallida la respuesta se captura una excepción y se obtiene el motivo del error y se genera un mensaje indicando lo ocurrido y regresa a la pantalla inicial.

Con la respuesta exitosa, procedemos a obtener la información, pero se recibe en una variable de tipo string.

En este punto ya contamos con la información que nos proporciona el servicio web y debemos organizarla en una estructura donde llevaremos los datos en el mismo orden proporcionado por el servicio, para esto usaremos el método /ui2/cl_json=>deserialize y se procede a ingresar la información en la tabla interna correspondiente para la proyección del ALV.

Por último, realizamos la configuración y proyección del ALV.

Ejecutamos el programa con la opción de Bogotá.

Hora de la prueba

Resultado

Comparando con POSTMAN.

Ejecutamos el programa con la opción de Londres.

Hora de la prueba

Resultado

Comparando con POSTMAN.

Comparando los datos del servicio web con los datos tomados por el SAP, podemos darnos cuenta que la información obtenida es la correcta y el servicio funciona adecuadamente.

Así vemos la industria

Extractor BW a partir de un reporte ALV

La creación de fuentes desde un SAP ECC a BW puede ser variada, desde una...

Más información

Evolución de la prestación de servicios desde la comunidad IT ALLIANCE

En aras de participar en la creación de nuevos modelos de trabajo para hacer más...

Más información

Devops Realidad

¿Qué son los DevOps? DevOps es un término que está tomando mucha fuerza en el...

Más información
Más artículos