Vou detalhar aqui um problema que já enfrentei em três diferentes empresas com relação a aplicação das notas do ECD para o layout 3.00.
Problema:
O arquivo é gerado com sucesso no SAP, porém ao submeter o arquivo no Validador da receita, na versão 3.18, é apresentado o seguinte erro: java.lang.StringIndexOutOfBoundsException: String index out of range: 1 ...
Causa:
Há um erro na geração da linha I010, onde a versão do layout não está sendo informada e este erro não é tratado pelo validador.
Linha gerada pelo SAP: |I010|G||
Linha esperada pelo validador: |I010|G|3.00|
Origem do problema:
As notas SAP, quando aplicadas manualmente, recomendam logar no idioma EN para criação e modificação de objetos. Desta forma não é realizada a tradução dos objetos para o idioma PT.
Nos passos manuais da Sapnote 2154499, há a alteração do domínio J_1BECD_COD_VER. Nesta modificação deve ser incluído um novo valor individual na aba Intervalos de Valores.
Val. Fixo | Descrição Breve |
---|
003 | 3.00 |
De acordo com a versão informada na tela de seleção do extrator, o campo da linha I010 será preenchido com a descrição breve contida neste domínio. Até aí tudo perfeito.
O que ocorre é que a modificação foi feita no idioma EN, e quando o usuário está executando o extrator, provavelmente está fazendo no idioma PT. (Referência: FORM get_domain_text, Include J_1BECD_MAIN_F04) Com isso, já que não existe a tradução do texto no idioma PT, o campo fica com o valor branco.
Solução
É bem simples: basta traduzir o domínio para o idioma PT. :smile:
Abaixo vou detalhar como realizar a tradução, e mais importante, como incluí-la em uma request para transporte.
A primeira parte do processo também pode ser feita na SE63, mas optei pela SE11 por considerar mais simples.
Na transação SE11, marcar a opção Domínio e preencher com o nome J_1BECD_COD_VER. Depois ir no menu Ir Para > Tradução.
No popup que abrir, preencher o idioma de destino PT.
Na tela seguinte, deve aparecer um item em vermelho, dentro de <VALU> Valores Fixos:
Clicar duas vezes no nome do domínio J_1BECD_COD_VER para ir na tela de tradução.
Com isso basta preencher a tradução com o mesmo texto 3.00 e clicar no botão Salvar.
Dessa forma a tradução está pronta, mas precisamos incluí-la em uma request para transportar aos outros ambientes.
Abrir a transação SLXT.
Bem em cima há um campo fechado para digitação com o idioma de destino. Porém é possível alterá-lo clicando no Search Help (F4).
Selecione o idioma ptBR:
Preencher o texto descritivo da request que será criada. É possível escolher o tipo de request também, sugiro manter transporte de cópias.
Para filtrar apenas o objeto traduzido, é possível filtrar pela data do processamento e informar o Tipo de Objeto "VALU" (Valores do Domínio) e também o seu usuário.
Feito isso, basta executar o programa que a request será criada.
Você pode então consultar a request na transação SE10 para conferir se o objeto foi incluído corretamente.
Dependendo da configuração do seu ambiente, você precisa definir na aba Caracts dessa request o destino, para que ao liberá-la o transporte seja feito corretamente para os outros ambientes.
Os passos descritos acima podem ser utilizados, com algumas poucas alterações, para traduzir outros textos do programa J_1BECD_MAIN ou dos domínios criados.
Espero ter ajudado.
Frisoni