Paginación OData de SAP en n8n: limita y concilia los pedidos de Business One
Planifica la paginación OData de Orders en Business One 10.0: revisa enlaces de continuación, limita solicitudes y comprueba recuentos antes de enviar registros.

Comprobado con las fuentes citadas el .
Define el objetivo y los requisitos de la paginación OData de SAP

Este tutorial aborda la paginación OData de SAP para extraer Orders en modo de solo lectura desde una implementación existente de SAP Business One 10.0 Service Layer. El objetivo es seguir los enlaces de continuación con límites explícitos de solicitudes y después comprobar las filas y las claves de documento antes del procesamiento posterior. La documentación proporcionada respalda los controles individuales, pero no un flujo de trabajo completo y ejecutable que cubra autenticación, resolución de enlaces relativos, configuración de finalización y bloqueo del procesamiento posterior; esos detalles requieren una verificación específica de cada implementación.
Anota el nivel de parche real de Business One, la modalidad de alojamiento, el endpoint de Service Layer y la versión del nodo HTTP Request de n8n. La referencia de SAP Business One 10.0 indica que OData V3 está obsoleto desde FP 2405 y mantiene las indicaciones para OData V4. SAP muestra la recuperación de Orders mediante /b1s/v2/Orders.
Parte de una solicitud de lectura aprobada y autenticada que ya funcione en n8n. SAP documenta HTTPS y la continuidad de sesión mediante las cookies SessionID y ROUTEID; n8n requiere el método de autenticación que espere el servicio de destino. Este tutorial da por hecho que esa continuidad ya está establecida para las solicitudes sucesivas.
Sources: Service Layer API Reference, Logging In and Out Using Basic Authentication with Service Layer, n8n-docs/docs/integrations/builtin/credentials/httprequest.md at main · n8n-io/n8n-docs · GitHub, Exploring Various Data Retrieval Options Using GET request
Elige la consulta e inspecciona una respuesta de Orders

Para este ejemplo de paginación OData de SAP, utiliza un contrato de extracción propuesto para este tutorial: un filtro aprobado de Orders, DocEntry junto con los campos necesarios para el procesamiento posterior, ordenación por DocEntry y una solicitud de recuento independiente con el mismo filtro. SAP documenta $select, $orderby y los recuentos de colecciones mediante /Orders/$count.
Sigue estos pasos de preparación antes de habilitar las solicitudes repetidas. La documentación de SAP Business One 10.0 DI API identifica DocEntry como una clave de documento única; por su parte, la lección de SAP sobre Service Layer muestra cómo acceder a un pedido mediante esa clave. Confirma que esté presente en tu respuesta real de Orders.
- Anota el filtro de extracción y reutilízalo sin cambios en las solicitudes de datos y de recuento.
- Selecciona DocEntry y los campos necesarios para el procesamiento posterior; ordena la extracción por DocEntry.
- Obtén una página de Orders con una solicitud aprobada e inspecciona su array value y su anotación de continuación.
- Registra el recuento correspondiente en origen y la estructura de respuesta observada para la conciliación.
Inspecciona la anotación de continuación en lugar de copiar su nombre de un ejemplo. Las indicaciones de SAP para cada protocolo utilizan @odata.nextLink para V4 y odata.nextLink para V3, mientras que su lección sobre recuperación emplea una terminología inconsistente. Consideramos que inspeccionar el contenido devuelto es un mejor punto de partida que adaptar una plantilla de paginación conocida.
Sources: Exploring Various Data Retrieval Options Using GET request, Paginate the Selected Orders | SAP Help Portal, Query Options | SAP Help Portal, Documents Object Members - SAP B1 SDK Help
Configura una paginación por enlaces de continuación con límites

En HTTP Request, activa Pagination y elige Response Contains Next URL. Introduce una expresión en Next URL que lea el campo de continuación observado en tu respuesta. Conserva los parámetros de consulta de continuación proporcionados por el servidor. Si el enlace es relativo, verifica cómo se resuelve en tu implementación antes de continuar; la documentación proporcionada no establece cómo gestionar tanto los enlaces relativos a la raíz como los relativos al servicio.
Para una página final con datos pero sin anotación de continuación, la referencia de n8n recomienda una condición de finalización personalizada basada en la ausencia de ese campo. Esa misma referencia ofrece indicaciones contradictorias sobre la finalización automática cuando la siguiente URL tiene un valor falsy. Verifica la configuración de finalización en la versión del nodo que tienes instalada, en lugar de considerar suficiente una siguiente URL vacía.
Establece límites explícitos con los controles siguientes. Acuerda sus valores con el responsable del servicio SAP. Nuestra preferencia práctica es detener e investigar una ejecución que haya alcanzado el límite en lugar de enviar su salida parcial al procesamiento posterior.
| Control | Propósito | Limitación |
|---|---|---|
| limitPagesFetched y maxRequests | Habilitar un límite máximo de solicitudes | No demuestra que la extracción haya finalizado |
| requestInterval | Introducir una espera entre solicitudes | No está documentado como comprobación de finalización |
| Timeout | Limitar la espera de las cabeceras de respuesta | No es un plazo máximo para todo el flujo de trabajo |
Conserva las evidencias de cada página antes de separar sus registros: si queda un enlace de continuación, qué valores de continuación se han observado y si se ha alcanzado el límite configurado.
Sources: Paginate the Selected Orders | SAP Help Portal, n8n-docs/docs/build/code-in-n8n/cookbook/http-request-node/pagination.md at main · n8n-io/n8n-docs · GitHub, skills/skills/n8n-loops-official/references/HTTP_PAGINATION.md at main · n8n-io/skills · GitHub, HTTP Request | Nodes | n8n Docs
Concilia los pedidos y resuelve los problemas antes de enviarlos

Tras conservar las evidencias de paginación, utiliza Split Out con Field to Split Out establecido en value para separar el array de pedidos de cada página. Las respuestas envueltas en un objeto requieren este tratamiento explícito. El nodo Code de n8n admite JavaScript y Run Once for All Items, por lo que puede ser un lugar adecuado para implementar lógica de conciliación personalizada; la documentación proporcionada no establece una implementación completa para recopilar los datos, gestionar resultados vacíos y bloquear el procesamiento posterior.
Utiliza esta regla de aceptación propuesta para este tutorial sobre paginación OData de SAP: envía los datos al procesamiento posterior solo cuando la paginación haya finalizado, todas las filas tengan DocEntry, el número de filas recuperadas coincida con el de valores distintos de DocEntry y ambos coincidan con el recuento correspondiente en origen. Superar estas comprobaciones no demuestra que se haya obtenido una instantánea transaccionalmente coherente. Consideramos la conciliación una condición para enviar los datos, no una garantía de integridad de la extracción.
Las siguientes son comprobaciones sugeridas para resolver problemas, no resultados probados. Si la extracción está vacía, exige una finalización explícita de la paginación y un recuento correspondiente de cero en origen antes de aceptarla.
Sources: Paginate the Selected Orders | SAP Help Portal, Query Options | SAP Help Portal, skills/skills/n8n-loops-official/references/HTTP_PAGINATION.md at main · n8n-io/skills · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.splitout.md at main · n8n-io/n8n-docs · GitHub, Documents Object Members - SAP B1 SDK Help, Using the Code node | Build | n8n Docs


