Tempo aproximado para leitura: 00:03:00 min
Dúvida
Como informar o campo COD_PART no ponto de entrada SPDFISBLCK?
Ambiente
Cross Segmento - Backoffice (Linha Protheus) – ADVPL – A partir da versão 12.1.17
Solução
Ao utilizar o ponto de entrada SPDFISBLCK é necessário observar que toda a confecção do bloco K é desconsiderada no padrão e substituída pela que foi definida no PE, de forma totalmente manual, desde a criação das tabelas temporárias até a quantidade e informações de cada campo e registro do bloco em questão. As tabelas temporárias necessária são criadas neste PE, então primeiramente observe o tamanho do campo em questão, linha:
AADD(aCampos,{"COD_PART" ,"C",11,0}) //Campo 06 do registro K200
Neste caso defini com 11, a composição seria 'SA1' + Código(neste ambiente é padrão tamanho 6) + Loja do cliente.
Ao adicionar a informação no campo, ficaria:
(cAliasK200)->COD_PART := 'SA100000101'
O campo 6 COD_PART somente será emitido com o valor de um cliente devidamente cadastrado no Protheus.
O exemplo documentado deve ser utilizado somente como referência, pois foi confeccionado com base na estrutura do ambiente do responsável pela documentação.
O tamanho do campo COD_PART na tabela temporária deve ser criado com base no tamanho da sua tabela SA1/SA2.
O seek que a rotina padrão realiza é:
SA1->(MsSeek (xFilial ("SA1")+Substr((aAlias[K200])->COD_PART,4,Len((aAlias[K200])->COD_PART))))
A ordem de pesquisa do índice neste momento é a 1, Filial+Código+Loja, portanto caso o campo esteja saindo em branco, esteja emitindo um cliente ou fornecedor diferente do que foi informado no ponto de entrada, ou gerando o erro 'array out of bounds ( 1 of 0 ) on BLOCOK(SPEDXFUN.PRW)', valide o seek acima no ponto de entrada, com o COD_PART informado, para ter certeza de que a composição é a correta para esta busca.
Saiba mais
SPDFISBLCK Geração do bloco K no SPED Fiscal - ALIAS no Banco de Dados
0 Comentários