Inventario y Número de serie de Lote

Buenas tardes estimados.
Necesito de gran ayuda para el siguiente problema. En la empresa queremos asignar el número de serie de lote a cada uno de nuestro productos en producción, como ejemplo adjunto la imagen de un producto.


En esa imagen tenemos que el producto a la hora de ingresar el producto se le debe asignar un número de lote, cosa que pasa en la siguiente imagen.

todo desde el frontend de SAP funciona perfectamente, pero la carga de producción la hacemos desde una api que funciona perfectamente de la siguiente manera.

https://xxxxxxxx/b1s/v1/InventoryGenEntries 
{
  "DocumentLines": [
    {
      "ItemCode": "410224",
      "Quantity": 1,
      "WarehouseCode": "001",
      "AccountCode": "1.01.004.01.002",
  
    }
  ]
}

pero ahora se necesita agregar el número de lote y lo intente de la siguiente manera.
https://xxxxxxxx/b1s/v1/InventoryGenEntries

{
  "DocumentLines": [
    {
      "ItemCode": "410224",
      "Quantity": 1,
      "WarehouseCode": "001",
      "AccountCode": "1.01.004.01.002",
      "SerialNumbers": {
        "SerialNumbers": [
          {
            "LotNumber": "1526",
            "AdmissionDate": "2023-03-22",
            "BinLocationAbs": 1, 
            
          }
        ]
      }
    }
  ]
}

donde 1526 es el número consecutivo que lo estamos dando desde la producción, pero realice varios intentos y me da el siguiente error.

"value": "10001172 - Blank strings are not allowed in row 1 (in unique field). [OSRN.SysNumber][line: 0]"

también lo intente de la siguiente manera.

{
  "DocumentLines": [
    {
      "ItemCode": "410224",
      "Quantity": 1,
      "WarehouseCode": "001",
      "AccountCode": "1.01.004.01.002",
      "SerialNumbers": {
        "SerialNumbers": [
          {
            "LotNumber": "1526",
            "AdmissionDate": "2023-03-22",
            "BinLocationAbs": 1, 
            "SysNumber": null 
          }
        ]
      }
    }
  ]
}

y sigue el error.

“value”: “10001172 - Blank strings are not allowed in row 1 (in unique field). [OSRN.SysNumber][line: 0]”

Alguien que me pueda ayudar se lo agradezco de antemano ya que es un poco urgente.

busque la información detalles de número de serie para el producto de prueba.


y haciendo nuevamente una prueba con el siguiente REQUEST.

{
  "DocumentLines": [
    {
      "ItemCode": "410224",
      "Quantity": 1,
      "WarehouseCode": "001",
      "AccountCode": "1.01.004.01.002",
      "SerialNumbers": [
        {
           "LotNumber": "1526",
            "AdmissionDate": "2023-03-22",
            "BinLocationAbs": 1,
            "SysNumber": 2
        }
      ]
    }
  ]
}

Da el mismo error.

"value": "10001172 - Blank strings are not allowed in row 1 (in unique field). [OSRN.SysNumber][line: 0]"

Buenos días. Sigo teniendo el error, pero sigo investigando he cambiando el body del request, ahora lo tengo de la siguiente manera.

 {
  "DocDate": "2025-03-22",
  "DocDueDate": "2025-03-22",
  "Comments": "Entrada automática por API - lote 1526",
  "DocumentLines": [
    {
      "ItemCode": "410224",
      "Quantity": 1,
      "WarehouseCode": "001",
      "AccountCode": "1.01.004.01.002",
      "SerialNumbers": [
        {
            "ItemCode": "410224",
            "SysNumber": 393,
            "LotNumber": "15256",
            "Location": "001",
            "AdmissionDate": "2025-03-21T00:00:00Z",
           
        }
      ]
    }
  ]
}

donde esta “SysNumber”: 393, ya que haciendo un get a mi endpoint SerialNumberDetails el ultimo valor fue el 392, por lo que en el ejemplo coloque el 393 pero todavía sigue el error “value”: “10001172 - Blank strings are not allowed in row 1 (in unique field). [OSRN.SysNumber][line: 0]” no entiendo que más puedo hacer, alguien que pueda ayudar!!! Gracias de antemano

:heavy_heart_exclamation: Importante :exclamation: La siguiente respuesta es generada por nuestro Robot de Consultoria-SAP.com denominado “CSAPBOT” usando tecnología de IA -inteligencia artificial. Por lo tanto, puede haber datos incorrectos. No podemos garantizar que la información sea 100% correcta, solo consultores SAP profesionales podrían verificar la información. Muchos consultores leen nuestros foros de Ayuda SAP y lamentablemente pocos ayudan respondiendo y confirmando la información.

Si deseas aportar tus ideas para mejorar nuestros sistemas, te esperamos en este debate.


¡Hola! Gracias por detallar tu escenario técnico tan claramente, eso ayuda muchísimo para poder darte una respuesta precisa.

Estás utilizando SAP Business One (SAP B1) y el Service Layer (API RESTful) para realizar una entrada de inventario (InventoryGenEntries) con artículos gestionados por números de serie, pero estás teniendo errores relacionados con el campo SysNumber y la creación del número de serie.


:mag: Análisis del error

El error que estás recibiendo:

"value": "10001172 - Blank strings are not allowed in row 1 (in unique field). [OSRN.SysNumber][line: 0]"

es un mensaje generado por SAP B1 cuando:

  • El campo SysNumber está siendo enviado vacío o mal definido en el contexto de la operación.
  • Estás tratando de usar un SysNumber ya existente o aún no generado, y el sistema no lo puede validar correctamente.

Esto indica que estás mezclando dos flujos distintos para el manejo de series:


:warning: Importante: Diferencia clave entre crear vs. usar números de serie

  • Si el documento creará el número de serie (como una entrada de inventario desde producción), NO debes enviar SysNumber, ya que SAP lo asigna automáticamente.
  • El campo SysNumber solo se utiliza cuando estás referenciando un número de serie ya existente (por ejemplo, en una salida de inventario o devolución).

:white_check_mark: Forma correcta para crear nuevos números de serie en un InventoryGenEntries

Dado que estás haciendo una entrada de inventario desde producción, y los productos se gestionan por números de serie, el cuerpo del request debe verse así:

{
  "DocDate": "2025-03-22",
  "DocDueDate": "2025-03-22",
  "Comments": "Entrada automática por API - lote 1526",
  "DocumentLines": [
    {
      "ItemCode": "410224",
      "Quantity": 1,
      "WarehouseCode": "001",
      "AccountCode": "1.01.004.01.002",
      "SerialNumbers": [
        {
          "ManufacturerSerialNumber": "1526",
          "InternalSerialNumber": "1526",
          "LotNumber": "1526",
          "AdmissionDate": "2025-03-21T00:00:00Z"
        }
      ]
    }
  ]
}

Notas clave:

  • NO INCLUIR SysNumber. Ese campo es solo para transacciones con series ya creadas.
  • LotNumber, ManufacturerSerialNumber, e InternalSerialNumber deben estar presentes. Si el sistema usa todos, deben tener valores coherentes.
  • La AdmissionDate debe tener formato válido ISO-8601.
  • Si usas ubicaciones, podrías agregar BinAbsEntry, pero verifica que esté activa la gestión por ubicaciones en el almacén.

:test_tube: Verificación

Asegúrate que:

  • El artículo tiene gestión por números de serie y no por lotes. Si fuera por lotes, el campo sería BatchNumbers y no SerialNumbers.
  • El almacén 001 tiene configuraciones compatibles (por ejemplo, si usa ubicaciones, se requiere el BinAbsEntry).
  • No estás usando SysNumber para crear una serie nueva.

:toolbox: Extra tip desde Consultoria-SAP.com

Muchos usuarios que integran SAP B1 vía API cometen errores al suponer que deben generar el SysNumber por su cuenta. ¡Y no! Ese número lo maneja SAP internamente. Si quieres validar la numeración creada, puedes luego hacer un GET a /SerialNumbers?$orderby=SysNumber desc para ver los últimos números creados.


Resumen Consultoria-SAP

El error que estás enfrentando en SAP B1 al registrar entradas de inventario con número de serie es causado por un mal uso del campo SysNumber. Cuando estás creando nuevas series (como en entradas de producción), no debes incluirlo. Usa correctamente los campos LotNumber, ManufacturerSerialNumber, e InternalSerialNumber. Esta funcionalidad corresponde al módulo de Inventario (INV) en SAP Business One con API Service Layer.

¡Estamos aquí para ayudarte en los Foros SAP de Consultoria-SAP!