cancel
Showing results for 
Search instead for 
Did you mean: 

Como obter o Código de Barras (EAN13 e DUN14) do Cadastro do Item em uma Consulta Formatada

Former Member
0 Kudos

Pessoal, bom dia.

   Estou montando via Select umas consultas formatadas para gravar em formato Excel um modelo de planilha que servirá como base para geração de impressão de etiquetas via o programa By Label da Elgin L42. Nesses layouts preciso utilizar os dois códigos de barras do cadastro do item (EAN13 e DUN14), porém ao utilizar o campo "CodeBars" da tabela "OITM", só me retorna a primeira linda, o EAN13. Alguém conhece alguma dica ou instrução SQL Server que possa utilizar no Select para obter como retorno na mesma linha os dois códigos de barras do Item?

  Segue abaixo a instrução Select utilizado:

SELECT

T1.[ItemCode] as CodItm,

T1.[Dscription] as Descrição,

--T0.NumAtCard as Pedido,

'Estados Unidos' as PaísdeOrigem,

T3.[CodeBars] as EAN13,

T3.[CodeBars] as DUN14,

'09.203.831/0001-35' as CNPJ,

T3.[U_Composicao] as Composição,

T3.[U_Advertencia] as Advertência,

T3.[U_Garantia] as Garantia

FROM ORDR T0 

INNER JOIN RDR1 T1 ON T0.[DocEntry] = T1.[DocEntry]

INNER JOIN RDR12 T2 ON T0.[DocEntry] = T2.[DocEntry]

INNER JOIN OITM T3 ON T1.[ItemCode] = T3.[ItemCode]

WHERE T0.[CANCELED] ='N' and T0.[DocEntry] = [%0]

Agradeço de forma antecipada.

Atc,

Accepted Solutions (1)

Accepted Solutions (1)

rodrigofeula
Active Contributor
0 Kudos

Boa tarde Néliton.

Na OITM fica gravado apenas o código de barras padrão para o item, quando você possui mais de um código de barras cadastrado para um item deve verificar esta informação na OBCD.

Abaixo fiz uma consulta para retornar uma linha por item, mostrando em uma coluna o código EAN13 e na outra o DUN14, mas para isso será importante padronizar as descrições de criação de códigos de barras, conforme por exemplo no print abaixo:

SELECT T0.[ItemCode], T0.[ItemName], T1.[BcdCode] AS 'EAN13', T2.[BcdCode] as 'DUN14'

FROM OITM T0 

LEFT JOIN OBCD T1 ON T0.[ItemCode] = T1.[ItemCode] AND T1.[BcdName] = 'EAN13'

LEFT JOIN OBCD T2 ON T0.[ItemCode] = T2.[ItemCode] AND T2.[BcdName] = 'DUN14'

Recomendo que faça os "joins" usando o LEFT JOIN para retornar inclusive as linhas que não possuam códigos de barras e acrescente uma condição adicional para cada JOIN condicionando um teste na descrição de cada tipo de código de barras. Para exibir as duas colunas, foi preciso fazer duas vezes JOIN com a tabela OBCD, a primeira para apresentar o EAN13 e a segunda para exibir o DUN14.

Espero ter colaborado.

Abraço,

Rodrigo da Costa Feula

Former Member
0 Kudos

Rodrigo, bom dia!

    Funcionou perfeitamente. Quero agradecer pelo apoio e colaboração na resolução e por repassar mais esse conhecimento. Como já utilizarmos como descrição dos códigos de barras "EAN13" e "DUN14", a consulta formata utilizando este Select ficou perfeito.

    Só tenho mais uma necessidade para concluir 100% as consultas formatas e gostaria de saber se alguém da comunidade, conhece alguma função ou dica que possa ser aplicada para resolução. O problema é o seguinte:

   Após executar a consulta formata em tela, a coluna EAN13 retorna o código de barra perfeitamente (todos os dígitos), porém quando exporto para Excel utilizando o botão MS-EXCEL da barra de ferramentas do SAP B1, o processo ignora os dois primeiros dígitos do código de barras por ser "00".

Exemplo: Código EAN13 correto: 0071160067042 (resultado da consulta formata em tela)

       

                Código EAN13 exportado errado para o Excel: 71160067042

    Mesmo o tipo do campo sendo String na exportação para Excel são ignorados os dois primeiros dígitos por ser "00".

     Se alguém souber alguma solução para esse caso, agradeço deste já.

Abraços!

rodrigofeula
Active Contributor
0 Kudos

Olá Néliton, existe funcionalidade no próprio excel.

Abra o CSV no "bloco de notas" do Windows e salve como TXT, ou renomeie o arquivo de *.CSV para *.TXT.

Depois no Excel, vá em abrir e utilize a opção de "Todos os tipos de arquivos".

Selecione o TXT.

Será iniciado o assistente de importação de texto.

No passo 1, use a opção "Delimitado"

No passo 2, use a opção "ponto e vírgula"

No passo 3, selecione a coluna e use a opção "Texto"

Prontinho, deve ter carregado os dados sem alterar a formatação.

Ah, curso de excel é um pouco mais caro...abraços.

Rodrigo da Costa Feula

fbio_bilicki
Active Contributor
0 Kudos

Bom dia,

Você também pode fazer assim:

1) Alterar o SQL pra usar a função texto, assim quando for exportado para o Excel, será apresentado corretamente.


SELECT

T0.[ItemCode],

T0.[ItemName],

('=TEXTO('+T1.[BcdCode]+';"0000000000000")' ) AS 'EAN13',

T2.[BcdCode] as 'DUN14'

FROM OITM T0

LEFT JOIN OBCD T1 ON T0.[ItemCode] = T1.[ItemCode] AND T1.[BcdName] = 'EAN13'

LEFT JOIN OBCD T2 ON T0.[ItemCode] = T2.[ItemCode] AND T2.[BcdName] = 'DUN14'

order by t0.itemcode

2) Dentro do Excel, se você tiver acesso ao banco de dados, pode criar uma planilha conectada ao BD com a opção na aba Dados, Consultas.

Eu isso isso em algumas planilhas

Atenção!, fale com o pessoal da TI antes para criar um usuário somente leitura no banco de dados para não executar comandos proibidos ou que destruam os dados, muito cuidado com essa opção.

Att,

Fabio.

SAP 9.0 PL15 / SAP 9.1 PL8

Former Member
0 Kudos

Pessoal, boa tarde.

   Apliquei os procedimentos orientados por Rodrigo e Fábio e ambos resolveram o problema. Quero mais uma vez agradecer pelo apoio e empenho de ambos em ajudar a fechar 100% a resolução do caso.

   Como o uso da função indicada por Fábio é direto no Select, acabei adotando sua sugestão, visando otimizar o operacional dos nossos usuários finais.

Dica: Com o uso da função =TEXTO direto no Select após executar a consulta formatada, o usuário deverá usar o botão Copiar dado e usar um CTRL+V na planilha Excel. Caso o usuário exporte para Excel utilizando o botão MS-EXCEL da barra de ferramentas, o conteúdo do campo (EAN13) não é copiado corretamente.

Abraços a todos!

Answers (0)