Crear una solicitud de Compra Usando ServiceLayer

He estado mandando la solicitud con Postman y da error.

Este es mi código:
{
“DocumentLines”: [
{
“ItemCode”: “SGE-001”,
“LineVendor”: “E000001”,
“Quantity”: “11”,

}

], “RequiredDate”: “2024-10-18”
}

En SAP Business One (B1), al trabajar con el Service Layer y realizar solicitudes con Postman, el formato JSON es crítico para evitar errores. En tu código, hay algunos errores en la estructura JSON que pueden estar causando el problema. Aquí te doy las correcciones necesarias y algunos consejos.

1. Correcciones en el Código JSON

  • Asegúrate de usar comillas dobles (") en lugar de comillas anguladas (“ ”).
  • Remueve la coma adicional después del campo "Quantity": "11".
  • Si estás utilizando el Service Layer para crear documentos en SAP Business One, asegúrate de que todos los campos sean compatibles y que la estructura esté completa.

El JSON corregido quedaría de la siguiente forma:

{
    "DocumentLines": [
        {
            "ItemCode": "SGE-001",
            "LineVendor": "E000001",
            "Quantity": "11"
        }
    ],
    "RequiredDate": "2024-10-18"
}

2. Verificaciones Adicionales

  • Formato de Fecha: Verifica que el campo "RequiredDate" tenga el formato correcto. En SAP Business One, generalmente acepta fechas en formato YYYY-MM-DD.
  • Campos Obligatorios: Asegúrate de que los campos esenciales para el documento que estás intentando crear (como Orden de Compra, Oferta de Venta, etc.) estén incluidos. Por ejemplo, para crear una orden de compra, puede que necesites incluir otros campos obligatorios como "CardCode" para el código de proveedor.
  • Tipo de Datos: Asegúrate de que los valores para campos como "Quantity" sean del tipo correcto. Aunque es posible enviar números como cadenas ("11"), es preferible que los valores numéricos se envíen sin comillas (11).

Ejemplo Completo (Orden de Compra)

Si estás creando una Orden de Compra (Purchase Order), el JSON puede necesitar campos adicionales. Un ejemplo de JSON completo para una Orden de Compra sería:

{
    "CardCode": "C00001",
    "DocumentLines": [
        {
            "ItemCode": "SGE-001",
            "LineVendor": "E000001",
            "Quantity": 11
        }
    ],
    "RequiredDate": "2024-10-18",
    "DocDueDate": "2024-10-18"
}

En este ejemplo:

  • "CardCode" es el código del proveedor.
  • "DocDueDate" es la fecha de vencimiento del documento (especifica cuándo se espera recibir el pedido).

3. Configuración de Headers en Postman

Asegúrate de que los headers en Postman estén correctamente configurados:

  • Content-Type: application/json
  • Accept: application/json

También es importante que estés autenticado en el Service Layer de SAP Business One. Asegúrate de haber iniciado sesión y obtenido un SessionId válido si tu entorno lo requiere.

4. Verificar el Mensaje de Error

Si sigues obteniendo un error, verifica el mensaje de error detallado que te devuelve SAP Business One Service Layer. Esto te dará pistas sobre campos faltantes o formatos incorrectos.

Resumen Consultoria-SAP

Para enviar correctamente una solicitud a SAP Business One a través del Service Layer, revisa la estructura JSON para asegurar que no haya comas adicionales ni comillas incorrectas, y verifica los headers en Postman. Utiliza el formato de fecha correcto y asegúrate de que todos los campos requeridos para el documento estén presentes en el JSON.

¡Estamos aquí para ayudarte en Consultoria-SAP.com!

Hola , Gracias por tu aporte , pero el error persiste:

Código de la Solicitud:

{
    "CardCode": "P000001",
    "DocumentLines": [
        {
            "ItemCode": "SGE-001",
            "LineVendor": "E000001",
            "Quantity": 11,
            "Required": "2024-11-18"
        }
    ],"DocumentDate": "2024-11-14",
    "RequiredDate": "2024-11-18",
    "DocDueDate": "2024-11-18"
}

Error:

{
    "error": {
        "code": -5002,
        "message": {
            "lang": "en-us",
            "value": "Required date is missing (1)."
        }
    }
}

El error “Required date is missing (1)” indica que SAP Business One está buscando el campo de fecha RequiredDate en la línea del documento, pero no lo está reconociendo con el nombre proporcionado en tu solicitud. A continuación, te explico cómo solucionar este problema.

Solución

Para la fecha de requerimiento en las líneas del documento, SAP Business One espera un campo llamado RequiredDate en lugar de Required. Asegúrate de que la estructura de tu solicitud esté correcta en cuanto a los nombres de los campos.

Prueba el siguiente JSON actualizado:

{
    "CardCode": "P000001",
    "DocumentLines": [
        {
            "ItemCode": "SGE-001",
            "LineVendor": "E000001",
            "Quantity": 11,
            "RequiredDate": "2024-11-18"  // Cambiado de "Required" a "RequiredDate"
        }
    ],
    "DocumentDate": "2024-11-14",
    "RequiredDate": "2024-11-18",
    "DocDueDate": "2024-11-18"
}

Explicación de los Cambios

  • RequiredDate en las líneas del documento: Cambié "Required" por "RequiredDate" en el objeto de "DocumentLines". SAP Business One espera este nombre específico para identificar la fecha requerida en cada línea de documento.

Revisión de los Campos en el JSON

Después de corregir el nombre del campo, asegúrate de que todos los demás campos están con los nombres y tipos esperados en el JSON, especialmente en los campos de fecha. La estructura que tienes debería funcionar si el Service Layer de SAP Business One está configurado correctamente.

Verificación en Postman

Antes de enviar la solicitud, verifica que en Postman:

  • Estás autenticado correctamente y tienes un SessionId válido.
  • Tienes los headers configurados como:
    • Content-Type: application/json
    • Accept: application/json

Esta corrección debería resolver el problema de “Required date is missing (1)”. Si el error persiste, puede ser útil revisar el log del Service Layer o la documentación del API para verificar que no haya cambios en la estructura esperada para el endpoint que estás utilizando.

¡Espero que esta corrección funcione! Si tienes más dudas, recuerda que estamos aquí para ayudarte en Consultoria-SAP.com.

Aunque hice los cambios, sigue presentando el error del RequiredDate o un error:

{
    "error": {
        "code": -2028,
        "message": {
            "lang": "en-us",
            "value": "No matching records found (ODBC -2028)"
        }
    }
}

Danos más detalles, qué versión de sistema es. Qué envías, para qué, etc.