Módulo: INTEGRAÇÃO
Funcionalidade: Pacote Base
Data/Hora da Publicação: 20/07/2021 16:06:27
Data/Hora Última Alteração: 11/08/2021 09:18:23
Descrição da Nota: Componente Abap Extrator Indiretos - Trat. para somatório do FECP; Trat. no contador do Log; Vlr ICMS Desonerado no item; Verificação de permissões do RFC; Trat. no campo NUM_PARC_DUPLIC na tabela de Duplicatas de saída e entrada; Trat. na regra de ICMS e outras ICMS; Criação de novos campos; Aumento do tamanho dos campos ID_NF_ENTRADA e ID_NF_SERVICO; Componente Abap Extrator Diretos- Criação de novos campos; Componente Abap Extrator Exportação - Execução processo Normal
Sintoma
As Requests anexadas à essa Nota, são Pacotes bases, portanto contemplam os principais programas Extratores, tais como: Indiretos ZLFR000, Diretos ZLFR012 e ZLFR014, Inventário ZLFR007, Exportação ZLFR015 entre outras transações gerais.
Componente Abap Extrator Exportação:
Componente Abap Extrator Indiretos:
>> Error entry 2021-04-19 15:34:15.590 [Thread 4]
SAP.Middleware.Connector.RfcTypeConversionException: FIELD NUM_PARC_DUPLIC of STRUCTURE ZLFT_S_DUPL (GETTER): cannot convert CHAR2 into Decimal ---> SAP.Middleware.Connector.RfcTypeConversionException: CHAR cannot be converted into decimal
at SAP.Middleware.Connector.RfcScalarMetadata.GetDecimal(Object& value)
at SAP.Middleware.Connector.RfcDataContainer`1.GetDecimal(Int32 index)
--- End of inner exception stack trace ---
at SAP.Middleware.Connector.RfcDataContainer`1.GetDecimal(Int32 index)
Solução
Componente Abap Extrator Exportação:
Componente Abap Extrator Indiretos:
EVOLUÇÕES
Esta nota possui a(s) seguinte(s) melhoria(s):
Componente Abap Extrator de Impostos Diretos:
Tipo | Tam. | Descrição | |
FORMA_TRIB | CHAR | 2 | Forma de Tributação – Informação para Beneficiário do Exterior para Dirf e Reinf |
FONTE_PAGD | CHAR | 3 | Relação da Fonte Pagadora – Informação para Beneficiário do Exterior para Dirf e Reinf |
BENEF_REND | CHAR | 3 | Tipo de Rendimento – Informação para Beneficiário do Exterior para Dirf e Reinf |
DOCTO_CE | CHAR | 1 | Documento Contabilizado de Retenção do CE. Módulo de Comércio Exterior. |
Componente Abap Extrator Indiretos:
Obs: Caso o cliente queira utilizar outros campos como origem para o preenchimento, poderá utilizar a exit ZYLFPREFNO para o preenchimento dos seguintes campos:
TABLE_NOT_FOUND_CR: Se utilizada como parâmetro uma tabela não tratada na função Z_SATI_RFC_CONTA_REG.
AUTH_CHK_FAIL_CR: Sempre que houver um erro de autorização nas funções consumidas pelo RFC.
RFC_USER_NO_AUTHORITY: Usuário sem acesso a tabela.
Observação: É importante salientar que os campos, nos quais citamos, são muito importantes para relações entre as informações de Capa e suas respectivas filiações, tais como item, imposto, duplicata, entre outras, por se tratar de um campo de chave primária (Notas de Entrada - ZLFR000 e Entradas com ISS - ZLFR100). Logo, caso tenha um programa Z especifico em processo de Exit nos Extratores, é necessário que ele seja revisado e retestado, para que não hajam impactos no processo de extração.
Segue abaixo as regras de preenchimento adotadas:
Apenas para clientes na Versão 4.7 ou superior do SAP:
1º Nível: Até o valores dos campos ID_NF_ENTRADA e ID_NF_SERVICO atingirem de forma singular o número 9999999 (9.999.999) o programa sequencia os campos citados como um contador numérico incremental gravado para cada capa de nota de entrada processada. No campo das tabelas de entrada mercantil o valor é gravado do mesmo modo que está parametrizado no campo ID NF de Entrada na transação ZLFM000. Quanto as notas fiscais de serviço o último ID gravado para o campo ID_NF_SERVICO pode ser verificado na tabela ZLFT_PARAMETROS (somente via tabela).
2º Nível: Quando o ID de um dos campos atingir o valor de 10000000 (10.000.000) o campo em questão passará a ter o dado convertido de decimal para hexadecimal. Para identificar que a conversão foi realizada a letra H é adicionada ao valor do campo, independente da parametrização de SYSID (ZLFM079) ser utilizada ou não pelo cliente. Exemplo de número hexadecimal: H0989680 = “H” acrescentado pelo programa + 0989680 (Hexadecimal)
A partir da nota 013537, criamos uma proteção para quando o cliente atingir o número máximo de ID_NF_ENTRADA travar a extração gerando um DUMP e assim evitando uma duplicidade de IDs, portanto seguem abaixo as regras:
Quando a transação ZLFM079 (SYSID) não é utilizada, o valor máximo para o campo ID_NF_ENTRADA e para o campo ID_NF_SERVICO de forma singular, será igual a 999999999999999 (999.999.999.999.999). Caso o valor a ser gerado para o campo seja maior do que o número acima citado ocorrerá o DUMP CX_SY_CONVERSION_NO_NUMBER.
O último ID que pode ser gerado para os campos no formato Hexadecimal a ser convertido pelo sistema nessa modalidade será o 038D7EA4C67FFF, correspondente ao valor máximo 999999999999999. Exemplo:
3º Nível: Parametrização do SYSID (adição de uma letra ao contator), através da transação ZLFM079
Quando houver a parametrização no cliente do SYSID, a letra indicada na parametrização por si só já ocupa uma casa decimal utilizada para geração do ID_NF_ENTRADA e do ID_NF_SERVICO, conforme já ocorre atualmente. Exemplos:
Quando é necessário utilizar a parametrização de SYSID, o valor máximo que ambos os campos citados podem alcançar é 281474976710655 (281.474.976.710.655). Caso o sistema tente gerar um valor maior que o citado acima será gerado o DUMP do tipo CX_ID_NF_LETRA_OVERFLOW, conforme exemplo abaixo:
Apenas para os cliente na Versão 4.6 do SAP:
1º Nível: Até o valores dos campos ID_NF_ENTRADA e ID_NF_SERVICO atingirem de forma singular o número 9999999 (9.999.999) o programa sequencia os campos citados como um contador numérico incremental gravado para cada capa de nota de entrada processada. No campo das tabelas de entrada mercantil o valor é gravado do mesmo modo que está parametrizado no campo ID NF de Entrada na transação ZLFM000. Quanto as notas fiscais de serviço o último ID gravado para o campo ID_NF_SERVICO pode ser verificado na tabela ZLFT_PARAMETROS (somente via tabela).
2º Nível: Quando o ID de um dos campos atingir o valor de 10000000 (10.000.000) o campo em questão passará a ter o dado convertido de decimal para hexadecimal. Para identificar que a conversão foi realizada a letra H é adicionada ao valor do campo, independente da parametrização de SYSID (ZLFM079) ser utilizada ou não pelo cliente. Exemplo de número hexadecimal: H0989680 = “H” acrescentado pelo programa + 0989680 (Hexadecimal)
Desde da nota 013537, criamos uma proteção para quando o cliente atingir o número máximo de ID_NF_ENTRADA travar a extração gerando um DUMP e assim evitando uma duplicidade de IDs, portanto seguem abaixo as regras:
Quando a transação ZLFM079 (SYSID) não é utilizada, o valor máximo para o campo ID_NF_ENTRADA e para o campo ID_NF_SERVICO de forma singular, será igual a 000000235558530 (235.558.530). Caso o valor a ser gerado para o campo seja maior do que o número acima citado ocorrerá o DUMP CX_SY_CONVERSION_NO_NUMBER.
O último ID que pode ser gerado para os campos no formato Hexadecimal a ser convertido pelo sistema nessa modalidade será o HE0A5682, correspondente ao valor máximo 235.558.530. Exemplo:
3º Nível: Parametrização do SYSID (adição de uma letra ao contator), através da transação ZLFM079
Quando houver a parametrização no cliente do SYSID, a letra indicada na parametrização por si só já ocupa uma casa decimal utilizada para geração do ID_NF_ENTRADA e do ID_NF_SERVICO, conforme já ocorre atualmente. Exemplos:
Quando é necessário utilizar a parametrização de SYSID, o valor máximo que ambos os campos citados podem alcançar é 16777215 (16.777.215). Caso o sistema tente gerar um valor maior que o citado acima será gerado o DUMP do tipo CX_ID_NF_LETRA_OVERFLOW, conforme exemplo abaixo:
1.52.0000
Produto:
Nota
Descrição
Arquivo
Informações Complementares
Procedimentos e Pacotes de Atualização
OU
Para clientes que utilizam o controle de encapsulamento de request é necessário alterar a camada de transporte para a camada própria do ambiente do cliente.