Las funciones de los servicios oData permiten ser redefinidas para lograr funcionalidades que, de otro modo, no serían posibles. En esta serie de artículos veremos cómo hacer uso de las redefiniciones para tratar ficheros tanto desde el Cliente SAP Gateway como desde una aplicación SAPUI5.

Servicio oData

Para comenzar, en el servicio oData creamos una entidad (tras crear previamente su correspondiente tabla de base de datos y estructura) para almacenar los datos de los ficheros. Se tienen las siguientes propiedades:

A continuación, nos aseguramos de dejar marcado el tipo “Media” en la entidad e implementamos las funciones GetEntity y GetEntitySet.

Redefinición de funciones

Para lograr el tratamiento de ficheros vamos a redefinir varias funciones.

Al crearse un servicio oData, SAP genera automáticamente cuatro clases:

  • ZCL_NOMBRE_ODATA_DPC (Data Provider Class)
  • ZCL_NOMBRE_ODATA_MPC (Model Provider Class)
  • ZCL_NOMBRE_ODATA_DPC_EXT
  • ZCL_NOMBRE_ODATA_MPC_EXT

Cada vez que, desde la transacción SEGW, se genera el servicio oData, las clases DPC y MPC se crean de nuevo. Por ello, la redefinición se realiza en las clases de extensión _EXT, ya que, si se hiciese en las otras, se borraría lo que hemos implementado en cuanto activemos el servicio.

La clase MPC contiene los metadatos del servicio, es decir, trata sobre las entidades y sus propiedades.

La clase DPC contiene la implementación del servicio, es decir, aquí se encuentran, por ejemplo, los métodos GetEntity, Update, Create… También se emplea para implementar los Function Import.

Una vez conocidos los conceptos generales sobre estas clases, podemos comenzar con las redefiniciones necesarias para el tratamiento de ficheros.

Primero, en la transacción SE80 buscamos la clase MPC_EXT de nuestro oData y redefinimos el método DEFINE.

Indicamos el nombre de nuestra entidad (Fichero) y el nombre de la propiedad que almacena su contenido (Content).

Activamos los cambios y accedemos a la clase DPC_EXT, donde redefinimos el método /IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_STREAM, gracias al cual podremos descargar ficheros.

Por último, redefinimos el método /IWBEP/IF_MGW_APPL_SRV_RUNTIME~CREATE_STREAM, gracias al cual podremos subir ficheros.

No te pierdas el próximo artículo sobre tratamiento de ficheros, veremos qué representan los parámetros slug y mimetype mediante ejemplos tanto en el Cliente SAP Gateway como en una aplicación Fiori.