Hoy vamos a ver una manera rápida de generar y exponer un servicio desde nuestro servidor ABAP.
Muchas veces tenemos la necesidad de que alguna aplicación llame a nuestro servidor ABAP para ofrecerles algunos datos o que realice alguna operación, por lo que debemos generar un servicio que atienda esa llamada.
Como ya hemos visto en alguna ocasión, tenemos la opción de generar un servicio oData a través del Gateway, pero hoy vamos a ver otra forma, vamos a ello:
Lo primero que vamos a hacer es crear una clase, que sea la que va a manejar la petición HTTP, y para ello nuestra clase debe implementar la interfaz IF_HTTP_EXTENSION (supongo que de esto de clases, objetos, interfaces ya pilotáis un poco ;-D).

Esta interfaz tiene un método (HANDLE_REQUEST) con el que vamos a poder manejar las solicitudes gracias al parámetro de entrada (server), en el que tenemos toda la información de la solicitud HTTP.


Ahora lo que tenemos que hacer es implementar dicho método para actuar y responder en base a la petición recibida.
En nuestro ejemplo para este post, hemos hecho una implementación que únicamente atiende al método GET, recibe un parámetro con el identificador del empleado y devuelve un JSON con una serie de datos del empleado.
Para poder manejar la solicitud tenemos que ser capaces de, por ejemplo, saber el método de la solicitud o los parámetros que se envían.
Para todo esto tenemos el parámetro de entrada server que es un objeto que aporta mucha información con sus atributos (entre ellos la request y la response) y muchas funcionalidades con sus métodos.
Por ejemplo para obtener el método de la solicitud o los datos de cabecera:

Una vez que tenemos los datos necesarios implementamos la lógica para extraer los datos del empleado, generar el JSON (con la ayuda de la clase /ui2/cl_json) y rellenamos los datos de la respuesta (atributo response del parámetro server).

Una vez que tenemos toda la lógica implementada tenemos que permitir la entrada de la solicitud en un determinado endpoint que vamos a exponer. Para ello accedemos a la transacción SICF y generamos un nuevo nodo, que será el que dependiendo de dónde lo creemos y el nombre que se asigne, generará el endpoint al que se tendrá que llamar.

Y en el nodo que hemos creado, accedemos a la pestaña de la lógica de control e indicamos el nombre de la clase que hemos generado anteriormente para manejar las peticiones en dicho endpoint.

Ya únicamente nos quedaría activar el nodo, y podemos hacer una prueba desde Postman a nuestra API para probar si funciona.
Nos autenticamos con autorización básica con el usuario y contraseña de SAP, le pasamos el parámetro necesario (en este caso lo he hecho por datos de cabecera) y efectivamente recibimos los datos de nuestro empleado.

Y hasta aquí el post de hoy, espero que os sirva.
Deja una respuesta