¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como resolver o erro [Microsoft][SQL Native Client][SQL Server] String or binary data would be truncated. (CINF) ao modificar dados em uma tabela de usuário no SAP.

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

Tenho uma tabela definida pelo usuário (Material) que, por algum motivo, sempre que meu usuário tenta modificar os dados em um campo, recebe a mensagem de erro "[Microsoft][SQL Native Client][SQL Server]String or binary data would be truncated. (CINF)" e os dados não são atualizados. Sou novo no SAP e estou procurando ajuda para resolver isso. Funcionava no passado. Existem outras tabelas vinculadas a algumas das colunas que fornecem listas suspensas das quais é possível selecionar.

Saudações

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

4 Respuestas

0
Cargando...

Olá,

Por favor, utilize a seguinte consulta para encontrar em qual campo, tamanho de dados e tamanho real estão definidos no SAP B1.

Por favor, atualize o valor ou aumente o tamanho para esse campo em 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;

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

Obrigado,

Tushar

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

Olá,

Por favor, utilize a seguinte consulta para encontrar em qual campo, tamanho de dados e tamanho real está definido no SAP B1.

Por favor, atualize seu valor ou aumente o tamanho para esse campo em 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;

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

Obrigado,

Tushar

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

Olá a todos,

Depois de analisar as declarações T-SQL através do Profiler de SQL, descobrimos que esse erro estava relacionado ao SBO_SP_TransactionNotification. Em algum lugar havia uma declaração que atualizava uma UDF com uma string maior do que podia armazenar.

Este código pertence a um plugin, então "ajustamos" a string para o tamanho necessário.

Cumprimentos,

Vítor

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

Olá Ernie,

Normalmente os dados são inseridos na tabela:

1) Diretamente (ou seja, sem nenhum processamento)

2) Depois de serem processados como normalmente é feito através de procedimentos armazenados.

No caso (1) é fácil verificar o tamanho dos valores que estão sendo inseridos e os tamanhos dos campos correspondentes.

No caso (2) você deve verificar o tamanho dos valores que estão sendo inseridos e os tamanhos dos campos correspondentes, bem como todas as variáveis que são utilizadas no processamento antes ou depois da inserção.

Se houver algum trigger associado à INSERÇÃO ou ATUALIZAÇÃO dessa tabela, então você deve fazer o mesmo para esse trigger também. Porque em casos normais, os triggers são a melhor maneira de fazer registros de logs, backups, replicação manual, etc.

Espero que isso resolva o seu problema.

Saudações,

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?