¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo solucionar el error [Microsoft][SQL Native Client][SQL Server]String or binary data would be truncated. (CINF) al modificar datos en una tabla de usuario en SAP

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 122 Vistas
0
Cargando...

Tengo una tabla definida por el usuario (Material) que, por alguna razón, cada vez que mi usuario intenta modificar los datos en un campo, recibe el mensaje de error "[Microsoft][SQL Native Client][SQL Server]String or binary data would be truncated. (CINF)" y los datos no se actualizan. Soy nuevo en SAP y estoy buscando ayuda para resolver esto. Funcionaba en el pasado. Hay otras tablas vinculadas a algunas de las columnas que proporcionan listas desplegables de las que se puede seleccionar.

Saludos

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola,

Por favor, utiliza la siguiente consulta para encontrar para qué campo, tamaño de datos y tamaño real están definidos en SAP B1.

Por favor, actualiza tu valor o aumenta el tamaño para ese campo en particular.

----------------------------

declare @TableID nvarchar(20);

declare @AliasId nvarchar(18);

declare @EditSize smallint;

declare @RealSize smallint;

declare @statement nvarchar(max);

declare @params nvarchar(max);

declare alfa_udfs cursor for

select TableID, AliasID, EditSize from cufd where TypeID = 'A';

open alfa_udfs;

FETCH NEXT FROM alfa_udfs

INTO @TableID, @AliasId, @EditSize;

WHILE @@FETCH_STATUS = 0

BEGIN

IF EXISTS (SELECT * FROM sys.tables WHERE name = @TableId)

BEGIN

set @RealSize = 0

set @params = '@RealSizeOut smallint output';

set @statement = 'select @RealSizeOut = max(len(U_' + @AliasID + ')) from [' + @TableId + '] where U_' + @AliasID +' is not null';

EXECUTE sp_executesql @statement, @params, @RealSizeOut = @RealSize OUTPUT;

if @RealSize is not null

BEGIN

if @EditSize < @RealSize

BEGIN

select @TableID As TableName, 'U_' + @AliasId As UDFName, @RealSize As RealSize, @EditSize As DefinedSize

END

END

END

FETCH NEXT FROM alfa_udfs

INTO @TableID, @AliasId, @EditSize;

END

CLOSE alfa_udfs;

DEALLOCATE alfa_udfs;

----------------

Gracias,

Tushar

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola,

Por favor, utiliza la siguiente consulta para encontrar en qué campo, tamaño de datos y tamaño real está definido en SAP B1.

Por favor, actualiza tu valor o aumenta el tamaño para ese campo en particular.

----------------------------

declare @TableID nvarchar(20);

declare @AliasId nvarchar(18);

declare @EditSize smallint;

declare @RealSize smallint;

declare @statement nvarchar(max);

declare @params nvarchar(max);

declare alfa_udfs cursor for

select TableID, AliasID, EditSize from cufd where TypeID = 'A';

open alfa_udfs;

FETCH NEXT FROM alfa_udfs

INTO @TableID, @AliasId, @EditSize;

WHILE @@FETCH_STATUS = 0

BEGIN

IF EXISTS (SELECT * FROM sys.tables WHERE name = @TableId)

BEGIN

set @RealSize = 0

set @params = '@RealSizeOut smallint output';

set @statement = 'select @RealSizeOut = max(len(U_' + @AliasID + ')) from [' + @TableId + '] where U_' + @AliasID +' is not null';

EXECUTE sp_executesql @statement, @params, @RealSizeOut = @RealSize OUTPUT;

if @RealSize is not null

BEGIN

if @EditSize < @RealSize

BEGIN

select @TableID As TableName, 'U_' + @AliasId As UDFName, @RealSize As RealSize, @EditSize As DefinedSize

END

END

END

FETCH NEXT FROM alfa_udfs

INTO @TableID, @AliasId, @EditSize;

END

CLOSE alfa_udfs;

DEALLOCATE alfa_udfs;

----------------

Gracias,

Tushar

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola a todos,

Después de analizar las declaraciones T-SQL a través del Perfilador de SQL, encontramos que este error estaba relacionado con SBO_SP_TransactionNotification. En algún lugar había una declaración que actualizaba una UDF con una cadena más grande de lo que podía almacenar.

Este código pertenece a un complemento, así que "dejamos" la cadena al tamaño requerido.

Saludos cordiales,

Vítor

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Ernie,

Normalmente los datos se insertan en la tabla:

1) Directamente (es decir, sin ningún procesamiento)

2) Después de ser procesados como normalmente se hace a través de procedimientos almacenados.

En el caso (1) es fácil verificar el tamaño de los valores que se están insertando y los tamaños de los campos correspondientes.

En el caso (2) debes verificar el tamaño de los valores que se están insertando y los tamaños de los campos correspondientes, así como todas las variables que se utilizan en el procesamiento antes o después de la inserción.

Si hay algún desencadenante asociado con la INSERCIÓN o ACTUALIZACIÓN de esa tabla, entonces debes hacer lo mismo para ese desencadenante también. Porque en casos normales, los desencadenantes son la mejor manera de hacer registros de logs, copias de seguridad, replicación manual, etc.

Espero que esto resuelva tu problema.

Saludos,

Shehzad

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?