Si has trabajado con OData en SAP (SEGW), seguro que te has preguntado ¿Para qué sirve un Function Import? ¿No puedo hacer lo mismo con una entidad normal? ¿Cuándo uso cada uno?
La respuesta es simple: Las entidades son para operaciones CRUD estándar sobre tus datos. Los Function Imports representan acciones o lógica de negocio.
Y entender bien esta diferencia es clave para diseñar servicios OData limpios y escalables.
¿Qué es una Entidad en OData?
Una entidad representa un objeto de negocio (Cliente, Pedido, Producto, etc.). Para cada entidad, OData genera automáticamente 4 operaciones CRUD estándar:
| Operación | Método HTTP | URL ejemplo | ¿Qué hace? |
|---|---|---|---|
| Create | POST | POST /CustomerSet | Crear un nuevo cliente |
| Read (single) | GET | GET /CustomerSet('100') | Leer un cliente por clave |
| Read (collection) | GET | GET /CustomerSet | Leer lista de clientes |
| Update | PUT/PATCH | PUT /CustomerSet('100') | Modificar un cliente |
| Delete | DELETE | DELETE /CustomerSet('100') | Borrar un cliente |
Estas operaciones están pensadas para trabajar directamente con datos, sin lógica compleja.
¿Qué es un Function Import?
Un Function Import es una acción u operación personalizada que ejecuta lógica de negocio y no encaja en las operaciones estándar (Create, Read, Update, Delete). No está limitado a CRUD y se usa cuando necesitas hacer algo más que simplemente leer o modificar datos.
Se usa para:
La diferencia clave
| Aspecto | Entidad (CRUD estándar) | Function Import |
|---|---|---|
| Propósito | Operaciones CRUD sobre un objeto de negocio | Operaciones personalizadas que no son CRUD |
| Operaciones disponibles | Create, Read, Update, Delete | Las que tú definas |
| ¿Está ligado a una entidad? | ✅ Sí (siempre) | ❌ No necesariamente (puede ser bound o unbound) |
| ¿Modifica datos? | Sí (Create, Update, Delete) | Sí (puede, pero no es obligatorio) |
| Ejemplo | Crear un pedido, leer un cliente | Aprobar un pedido, calcular total |
¿Cuándo usar un Function Import o una Entidad?
Usa una Entidad (CRUD estándar) cuando…
Usa Function Import cuando…
La diferencia no es solo técnica, es de diseño:
Elegir bien entre ambos no solo mejora tu backend, sino también cómo aplicaciones como SAP Fiori consumen tu servicio.


